chiark / gitweb /
shared/util: Fix glob_extend() argument
[elogind.git] / src / shared / cgroup-show.c
index 9ee532ca22271c3dee9f5d0385668975b7f9d4a5..979fa8fddf6e776fa1db2b70e261e36f866f6582 100644 (file)
@@ -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)