netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=f9acb87411884d4f6a8c47b29460392e581b0652

commit f9acb87411884d4f6a8c47b29460392e581b0652
Author: Alastair Poole <nets...@gmail.com>
Date:   Wed Apr 22 10:10:02 2020 +0100

    proc: add free api and command line.
---
 src/bin/process.c | 29 ++++++++++++++++-----
 src/bin/process.h | 11 +++++++-
 src/bin/ui.c      | 78 ++++++++++++++++++++++++++++++++++---------------------
 src/bin/ui.h      |  1 +
 4 files changed, 82 insertions(+), 37 deletions(-)

diff --git a/src/bin/process.c b/src/bin/process.c
index 5bc4a4e..9e212db 100644
--- a/src/bin/process.c
+++ b/src/bin/process.c
@@ -198,6 +198,9 @@ _process_list_linux_get(void)
 
         fclose(f);
 
+        Proc_Info *p = calloc(1, sizeof(Proc_Info));
+        if (!p) return NULL;
+
         link = ecore_file_readlink(eina_slstr_printf("/proc/%d/exe", pid));
         if (link)
           {
@@ -213,6 +216,7 @@ _process_list_linux_get(void)
                     {
                        if (ecore_file_exists(line))
                          snprintf(program_name, sizeof(program_name), "%s", 
ecore_file_file_get(line));
+                       p->arguments = strdup(line);
                     }
                  fclose(f);
                }
@@ -221,13 +225,11 @@ _process_list_linux_get(void)
 
         char *end = strchr(program_name, ' ');
         if (end) *end = '\0';
-        Proc_Info *p = calloc(1, sizeof(Proc_Info));
-        if (!p) return NULL;
 
         p->pid = pid;
         p->uid = uid;
         p->cpu_id = psr;
-        snprintf(p->command, sizeof(p->command), "%s", program_name);
+        p->command = strdup(program_name);
         p->state = _process_state_name(state);
         p->cpu_time = utime + stime;
         p->mem_size = mem_size;
@@ -285,6 +287,9 @@ proc_info_by_pid(int pid)
      }
    fclose(f);
 
+   Proc_Info *p = calloc(1, sizeof(Proc_Info));
+   if (!p) return NULL;
+
    link = ecore_file_readlink(eina_slstr_printf("/proc/%d/exe", pid));
    if (link)
      {
@@ -300,18 +305,16 @@ proc_info_by_pid(int pid)
                {
                   if (ecore_file_exists(line))
                     snprintf(program_name, sizeof(program_name), "%s", 
ecore_file_file_get(line));
+                  p->arguments = strdup(line);
                }
              fclose(f);
           }
       }
 
-   Proc_Info *p = calloc(1, sizeof(Proc_Info));
-   if (!p) return NULL;
-
    p->pid = pid;
    p->uid = uid;
    p->cpu_id = psr;
-   snprintf(p->command, sizeof(p->command), "%s", program_name);
+   p->command = strdup(program_name);
    p->state = _process_state_name(state);
    p->cpu_time = utime + stime;
    p->mem_size = mem_size;
@@ -734,6 +737,18 @@ proc_info_by_pid(int pid)
 
 #endif
 
+void
+proc_info_free(Proc_Info *proc)
+{
+   if (!proc) return;
+
+   if (proc->command)
+     free(proc->command);
+   if (proc->arguments)
+     free(proc->arguments);
+   free(proc);
+}
+
 Eina_List *
 proc_info_all_get(void)
 {
diff --git a/src/bin/process.h b/src/bin/process.h
index 7407ce2..67c1787 100644
--- a/src/bin/process.h
+++ b/src/bin/process.h
@@ -37,7 +37,8 @@ typedef struct _Proc_Info
    int64_t     mem_size;
    int64_t     mem_rss;
    double      cpu_usage;
-   char        command[CMD_NAME_MAX];
+   char       *command;
+   char       *arguments;
    const char *state;
 
    // Not used yet in UI.
@@ -62,6 +63,14 @@ Eina_List *
 Proc_Info *
  proc_info_by_pid(int pid);
 
+/**
+ * Free a Proc_Info * pointer;
+ *
+ * @param proc The object to free.
+ */
+void
+  proc_info_free(Proc_Info *proc);
+
 /**
  * @}
  */
diff --git a/src/bin/ui.c b/src/bin/ui.c
index 9e8b961..a777930 100644
--- a/src/bin/ui.c
+++ b/src/bin/ui.c
@@ -144,7 +144,7 @@ _icon_path_get(const char *name)
 }
 
 static void
-_battery_list_add(Evas_Object *box, power_t *power)
+_battery_usage_add(Evas_Object *box, power_t *power)
 {
    Evas_Object *frame, *vbox, *hbox, *progress, *ic, *label;
    for (int i = 0; i < power->battery_count; i++)
@@ -295,7 +295,7 @@ _tab_misc_update(Ui *ui, results_t *results)
    evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_show(box);
 
-   _battery_list_add(box, &results->power);
+   _battery_usage_add(box, &results->power);
    _network_usage_add(ui, box, results->incoming, EINA_TRUE);
    _network_usage_add(ui, box, results->outgoing, EINA_FALSE);
 
@@ -808,7 +808,7 @@ static void
 _item_del(void *data, Evas_Object *obj EINA_UNUSED)
 {
    Proc_Info *proc = data;
-   free(proc);
+   proc_info_free(proc);
    proc = NULL;
 }
 
@@ -1079,7 +1079,7 @@ _process_list_feedback_cb(void *data, Ecore_Thread 
*thread EINA_UNUSED, void *ms
            strncasecmp(proc->command, ui->search_text, 
strlen(ui->search_text))) ||
            (!ui->show_self && proc->pid == ui->program_pid))
          {
-            free(proc);
+            proc_info_free(proc);
             list = eina_list_remove_list(list, l);
          }
         else
@@ -1349,7 +1349,7 @@ _process_panel_pids_update(Ui *ui)
 
         item = elm_list_item_append(ui->list_pid, eina_slstr_printf("%d", 
proc->pid), NULL, NULL, NULL, pid);
         elm_object_item_del_cb_set(item, _list_item_del_cb);
-        free(proc);
+        proc_info_free(proc);
      }
 
    elm_list_go(ui->list_pid);
@@ -1397,6 +1397,9 @@ _process_panel_update(void *data)
    if (pwd_entry)
      elm_object_text_set(ui->entry_pid_user, pwd_entry->pw_name);
 
+   if (proc->arguments)
+     elm_object_text_set(ui->entry_pid_cmd_args, proc->arguments);
+
    elm_object_text_set(ui->entry_pid_pid, eina_slstr_printf("%d", proc->pid));
    elm_object_text_set(ui->entry_pid_uid, eina_slstr_printf("%d", proc->uid));
    elm_object_text_set(ui->entry_pid_cpu, eina_slstr_printf("%d", 
proc->cpu_id));
@@ -1414,7 +1417,7 @@ _process_panel_update(void *data)
 
    ui->pid_cpu_time = proc->cpu_time;
 
-   free(proc);
+   proc_info_free(proc);
 
    return ECORE_CALLBACK_RENEW;
 }
@@ -1926,12 +1929,13 @@ _ui_process_panel_add(Ui *ui)
    elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
    elm_table_pack(table, entry, 1, 0, 1, 1);
 
+
    label = elm_label_add(parent);
-   elm_object_text_set(label, "PID:");
+   elm_object_text_set(label, "Command line:");
    evas_object_show(label);
    elm_table_pack(table, label, 0, 1, 1, 1);
 
-   ui->entry_pid_pid = entry = elm_entry_add(parent);
+   ui->entry_pid_cmd_args = entry = elm_entry_add(parent);
    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
    elm_entry_single_line_set(entry, EINA_TRUE);
@@ -1941,12 +1945,13 @@ _ui_process_panel_add(Ui *ui)
    elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
    elm_table_pack(table, entry, 1, 1, 1, 1);
 
+
    label = elm_label_add(parent);
-   elm_object_text_set(label, "Username:");
+   elm_object_text_set(label, "PID:");
    evas_object_show(label);
    elm_table_pack(table, label, 0, 2, 1, 1);
 
-   ui->entry_pid_user = entry = elm_entry_add(parent);
+   ui->entry_pid_pid = entry = elm_entry_add(parent);
    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
    elm_entry_single_line_set(entry, EINA_TRUE);
@@ -1957,11 +1962,11 @@ _ui_process_panel_add(Ui *ui)
    elm_table_pack(table, entry, 1, 2, 1, 1);
 
    label = elm_label_add(parent);
-   elm_object_text_set(label, "UID:");
+   elm_object_text_set(label, "Username:");
    evas_object_show(label);
    elm_table_pack(table, label, 0, 3, 1, 1);
 
-   ui->entry_pid_uid = entry = elm_entry_add(parent);
+   ui->entry_pid_user = entry = elm_entry_add(parent);
    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
    elm_entry_single_line_set(entry, EINA_TRUE);
@@ -1971,6 +1976,21 @@ _ui_process_panel_add(Ui *ui)
    elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
    elm_table_pack(table, entry, 1, 3, 1, 1);
 
+   label = elm_label_add(parent);
+   elm_object_text_set(label, "UID:");
+   evas_object_show(label);
+   elm_table_pack(table, label, 0, 4, 1, 1);
+
+   ui->entry_pid_uid = entry = elm_entry_add(parent);
+   evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_entry_single_line_set(entry, EINA_TRUE);
+   elm_entry_scrollable_set(entry, EINA_TRUE);
+   elm_entry_editable_set(entry, EINA_FALSE);
+   evas_object_show(entry);
+   elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
+   elm_table_pack(table, entry, 1, 4, 1, 1);
+
    label = elm_label_add(parent);
 #if defined(__MacOS__)
    elm_object_text_set(label, "WQ #:");
@@ -1978,7 +1998,7 @@ _ui_process_panel_add(Ui *ui)
    elm_object_text_set(label, "CPU #:");
 #endif
    evas_object_show(label);
-   elm_table_pack(table, label, 0, 4, 1, 1);
+   elm_table_pack(table, label, 0, 5, 1, 1);
 
    ui->entry_pid_cpu = entry = elm_entry_add(parent);
    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -1988,12 +2008,12 @@ _ui_process_panel_add(Ui *ui)
    elm_entry_editable_set(entry, EINA_FALSE);
    evas_object_show(entry);
    elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
-   elm_table_pack(table, entry, 1, 4, 1, 1);
+   elm_table_pack(table, entry, 1, 5, 1, 1);
 
    label = elm_label_add(parent);
    elm_object_text_set(label, "Threads:");
    evas_object_show(label);
-   elm_table_pack(table, label, 0, 5, 1, 1);
+   elm_table_pack(table, label, 0, 6, 1, 1);
 
    ui->entry_pid_threads = entry = elm_entry_add(parent);
    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -2003,12 +2023,12 @@ _ui_process_panel_add(Ui *ui)
    elm_entry_editable_set(entry, EINA_FALSE);
    evas_object_show(entry);
    elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
-   elm_table_pack(table, entry, 1, 5, 1, 1);
+   elm_table_pack(table, entry, 1, 6, 1, 1);
 
    label = elm_label_add(parent);
    elm_object_text_set(label, "Total memory:");
    evas_object_show(label);
-   elm_table_pack(table, label, 0, 6, 1, 1);
+   elm_table_pack(table, label, 0, 7, 1, 1);
 
    ui->entry_pid_size = entry = elm_entry_add(parent);
    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -2018,12 +2038,12 @@ _ui_process_panel_add(Ui *ui)
    elm_entry_editable_set(entry, EINA_FALSE);
    evas_object_show(entry);
    elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
-   elm_table_pack(table, entry, 1, 6, 1, 1);
+   elm_table_pack(table, entry, 1, 7, 1, 1);
 
    label = elm_label_add(parent);
    elm_object_text_set(label, " Reserved memory:");
    evas_object_show(label);
-   elm_table_pack(table, label, 0, 7, 1, 1);
+   elm_table_pack(table, label, 0, 8, 1, 1);
 
    ui->entry_pid_rss = entry = elm_entry_add(parent);
    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -2033,12 +2053,12 @@ _ui_process_panel_add(Ui *ui)
    elm_entry_editable_set(entry, EINA_FALSE);
    evas_object_show(entry);
    elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
-   elm_table_pack(table, entry, 1, 7, 1, 1);
+   elm_table_pack(table, entry, 1, 8, 1, 1);
 
    label = elm_label_add(parent);
    elm_object_text_set(label, "Nice:");
    evas_object_show(label);
-   elm_table_pack(table, label, 0, 8, 1, 1);
+   elm_table_pack(table, label, 0, 9, 1, 1);
 
    ui->entry_pid_nice = entry = elm_entry_add(parent);
    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -2048,12 +2068,12 @@ _ui_process_panel_add(Ui *ui)
    elm_entry_editable_set(entry, EINA_FALSE);
    evas_object_show(entry);
    elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
-   elm_table_pack(table, entry, 1, 8, 1, 1);
+   elm_table_pack(table, entry, 1, 9, 1, 1);
 
    label = elm_label_add(parent);
    elm_object_text_set(label, "Priority:");
    evas_object_show(label);
-   elm_table_pack(table, label, 0, 9, 1, 1);
+   elm_table_pack(table, label, 0, 10, 1, 1);
 
    ui->entry_pid_pri = entry = elm_entry_add(parent);
    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -2063,12 +2083,12 @@ _ui_process_panel_add(Ui *ui)
    elm_entry_editable_set(entry, EINA_FALSE);
    evas_object_show(entry);
    elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
-   elm_table_pack(table, entry, 1, 9, 1, 1);
+   elm_table_pack(table, entry, 1, 10, 1, 1);
 
    label = elm_label_add(parent);
    elm_object_text_set(label, "State:");
    evas_object_show(label);
-   elm_table_pack(table, label, 0, 10, 1, 1);
+   elm_table_pack(table, label, 0, 11, 1, 1);
 
    ui->entry_pid_state = entry = elm_entry_add(parent);
    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -2078,12 +2098,12 @@ _ui_process_panel_add(Ui *ui)
    elm_entry_editable_set(entry, EINA_FALSE);
    evas_object_show(entry);
    elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
-   elm_table_pack(table, entry, 1, 10, 1, 1);
+   elm_table_pack(table, entry, 1, 11, 1, 1);
 
    label = elm_label_add(parent);
    elm_object_text_set(label, "CPU %:");
    evas_object_show(label);
-   elm_table_pack(table, label, 0, 11, 1, 1);
+   elm_table_pack(table, label, 0, 12, 1, 1);
 
    ui->entry_pid_cpu_usage = entry = elm_entry_add(parent);
    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -2093,14 +2113,14 @@ _ui_process_panel_add(Ui *ui)
    elm_entry_editable_set(entry, EINA_FALSE);
    evas_object_show(entry);
    elm_entry_line_wrap_set(entry, ELM_WRAP_NONE);
-   elm_table_pack(table, entry, 1, 11, 1, 1);
+   elm_table_pack(table, entry, 1, 12, 1, 1);
 
    hbox = elm_box_add(parent);
    evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
    elm_box_horizontal_set(hbox, EINA_TRUE);
    evas_object_show(hbox);
-   elm_table_pack(table, hbox, 1, 12, 1, 1);
+   elm_table_pack(table, hbox, 1, 13, 1, 1);
 
    border = elm_frame_add(parent);
    evas_object_size_hint_weight_set(border, EVAS_HINT_EXPAND, 0);
diff --git a/src/bin/ui.h b/src/bin/ui.h
index af7c5b1..d9db242 100644
--- a/src/bin/ui.h
+++ b/src/bin/ui.h
@@ -104,6 +104,7 @@ typedef struct Ui
    Evas_Object  *genlist_procs;
 
    Evas_Object  *entry_pid_cmd;
+   Evas_Object  *entry_pid_cmd_args;
    Evas_Object  *entry_pid_user;
    Evas_Object  *entry_pid_pid;
    Evas_Object  *entry_pid_uid;

-- 


Reply via email to