chiark / gitweb /
cgls: beef up control group dumping and introduce cgls tool
[elogind.git] / src / util.c
index 6cbc7ce4770c5e232ae72fd54b48b6b1ffc45283..2e5827f32dcf3671a26545d5250312e265bcb8c3 100644 (file)
@@ -609,6 +609,9 @@ int get_process_cmdline(pid_t pid, size_t max_length, char **line) {
 
         fclose(f);
 
+        if (r[0] == 0)
+                return get_process_name(pid, line);
+
         *line = r;
         return 0;
 }
@@ -2798,6 +2801,30 @@ char **replace_env_argv(char **argv, char **env) {
         return r;
 }
 
+int columns(void) {
+        static __thread int parsed_columns = 0;
+        const char *e;
+
+        if (parsed_columns > 0)
+                return parsed_columns;
+
+        if ((e = getenv("COLUMNS")))
+                parsed_columns = atoi(e);
+
+        if (parsed_columns <= 0) {
+                struct winsize ws;
+                zero(ws);
+
+                if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) >= 0)
+                        parsed_columns = ws.ws_col;
+        }
+
+        if (parsed_columns <= 0)
+                parsed_columns = 80;
+
+        return parsed_columns;
+}
+
 static const char *const ioprio_class_table[] = {
         [IOPRIO_CLASS_NONE] = "none",
         [IOPRIO_CLASS_RT] = "realtime",