X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fcgroup-show.c;h=979fa8fddf6e776fa1db2b70e261e36f866f6582;hb=a8ccacf5344c4434b1d5ff3837307acb8fcf93d2;hp=9ee532ca22271c3dee9f5d0385668975b7f9d4a5;hpb=7027ff61a34a12487712b382a061c654acc3a679;p=elogind.git diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c index 9ee532ca2..979fa8fdd 100644 --- a/src/shared/cgroup-show.c +++ b/src/shared/cgroup-show.c @@ -40,21 +40,12 @@ static int compare(const void *a, const void *b) { return 0; } -static unsigned ilog10(unsigned long ul) { - int n = 0; - - while (ul > 0) { - n++; - ul /= 10; - } - - return n; -} - static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsigned n_columns, bool extra, bool more, bool kernel_threads, OutputFlags flags) { unsigned i, m, pid_width; pid_t biggest = 0; + assert(n_pids > 0); + /* Filter duplicates */ m = 0; for (i = 0; i < n_pids; i++) { @@ -71,12 +62,12 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi pids[m++] = pids[i]; } n_pids = m; - pid_width = ilog10(biggest); + pid_width = DECIMAL_STR_WIDTH(biggest); /* And sort */ qsort(pids, n_pids, sizeof(pid_t), compare); - if(flags & OUTPUT_FULL_WIDTH) + if (flags & OUTPUT_FULL_WIDTH) n_columns = 0; else { if (n_columns > pid_width+2) @@ -85,7 +76,7 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi n_columns = 20; } for (i = 0; i < n_pids; i++) { - char *t = NULL; + _cleanup_free_ char *t = NULL; get_process_cmdline(pids[i], n_columns, true, &t); @@ -96,8 +87,6 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi pid_width, (unsigned long) pids[i], strna(t)); - - free(t); } } @@ -107,7 +96,7 @@ static int show_cgroup_one_by_path(const char *path, const char *prefix, unsigne _cleanup_fclose_ FILE *f = NULL; size_t n = 0, n_allocated = 0; _cleanup_free_ pid_t *pids = NULL; - char *p = NULL; + _cleanup_free_ char *p = NULL; pid_t pid; int r; @@ -115,13 +104,8 @@ static int show_cgroup_one_by_path(const char *path, const char *prefix, unsigne if (r < 0) return r; - fn = strappend(p, "/cgroup.procs"); - free(p); - if (!fn) - return -ENOMEM; - + fn = strappenda(p, "/cgroup.procs"); f = fopen(fn, "re"); - free(fn); if (!f) return -errno; @@ -248,11 +232,10 @@ int show_cgroup(const char *controller, const char *path, const char *prefix, un } static int show_extra_pids(const char *controller, const char *path, const char *prefix, unsigned n_columns, const pid_t pids[], unsigned n_pids, OutputFlags flags) { - pid_t _cleanup_free_ *copy = NULL; + _cleanup_free_ pid_t *copy = NULL; unsigned i, j; int r; - assert(controller); assert(path); if (n_pids <= 0) @@ -268,7 +251,7 @@ static int show_extra_pids(const char *controller, const char *path, const char return -ENOMEM; for (i = 0, j = 0; i < n_pids; i++) { - char _cleanup_free_ *k = NULL; + _cleanup_free_ char *k = NULL; r = cg_pid_get_path(controller, pids[i], &k); if (r < 0)