diff --git a/NEWS b/NEWS index fc0a3d7..baacd5d 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,7 @@ Evisum 0.4.0 * Use object caching where applicable. * Remove redundant code. * FreeBSD et al. Get process arguments akin to Linux. + * Process command-line (new field). * Other stuff. ============ diff --git a/src/bin/process.h b/src/bin/process.h index 4d7b4d4..040b88e 100644 --- a/src/bin/process.h +++ b/src/bin/process.h @@ -24,8 +24,6 @@ # define PID_MAX 99999 #endif -#define CMD_NAME_MAX 1024 - typedef struct _Proc_Info { pid_t pid; diff --git a/src/bin/ui.c b/src/bin/ui.c index ef40b88..941a008 100644 --- a/src/bin/ui.c +++ b/src/bin/ui.c @@ -79,15 +79,20 @@ _system_stats(void *data, Ecore_Thread *thread) } } -static unsigned long -_mem_adjust(Data_Unit unit, unsigned long value) +static const char * +_mem_format(Data_Unit unit, unsigned long value) { - if (unit == DATA_UNIT_MB) - value >>= 10; - else if (unit == DATA_UNIT_GB) - value >>= 20; + double res = value; - return value; + if (unit == DATA_UNIT_MB) + res /= (1024); + else if (unit == DATA_UNIT_GB) + res /= (1024 * 1024); + + if (unit == DATA_UNIT_KB) + return eina_slstr_printf("%1.0f %c", res, unit); + + return eina_slstr_printf("%1.1f %c", res, unit); } static char * @@ -309,17 +314,19 @@ _tab_misc_update(Ui *ui, results_t *results) elm_box_pack_end(ui->misc_activity, frame); } -static unsigned long +static double _disk_adjust(Data_Unit unit, unsigned long value) { - if (unit == DATA_UNIT_KB) - value >>= 10; - else if (unit == DATA_UNIT_MB) - value >>= 20; - else if (unit == DATA_UNIT_GB) - value >>= 30; + double res = value; - return value; + if (unit == DATA_UNIT_KB) + res /= (1024); + else if (unit == DATA_UNIT_MB) + res /= (1024 * 1024); + else if (unit == DATA_UNIT_GB) + res /= (1024 * 1024 * 1024); + + return res; } static void @@ -336,7 +343,7 @@ _ui_disk_add(Ui *ui, const char *path, const char *mount, unsigned long total, u label = elm_label_add(box); evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_object_text_set(label, eina_slstr_printf("%s
mounted at %s
%lu%c of %lu%c", path, mount, + elm_object_text_set(label, eina_slstr_printf("%s
mounted at %s
%1.1f%c of %1.1f%c", path, mount, _disk_adjust(ui->data_unit, used), ui->data_unit, _disk_adjust(ui->data_unit, total), ui->data_unit)); evas_object_show(label); elm_box_pack_end(box, label); @@ -405,51 +412,57 @@ _tab_memory_update(Ui *ui, results_t *results) if (!ui->mem_visible) return; - elm_object_text_set(ui->title_mem, eina_slstr_printf("Memory
" \ - "Physical %lu %c
" \ - "Swap %lu %c", - _mem_adjust(ui->data_unit, results->memory.total), ui->data_unit, - _mem_adjust(ui->data_unit, results->memory.swap_total), ui->data_unit)); + elm_object_text_set(ui->title_mem, eina_slstr_printf( + "Memory
" \ + "Physical %s
" \ + "Swap %s", + _mem_format(ui->data_unit, results->memory.total), + _mem_format(ui->data_unit, results->memory.swap_total))); progress = ui->progress_mem_used; ratio = results->memory.total / 100.0; value = results->memory.used / ratio; elm_progressbar_value_set(progress, value / 100); - elm_progressbar_unit_format_set(progress, eina_slstr_printf("%lu %c / %lu %c (%1.0f %)", - _mem_adjust(ui->data_unit, results->memory.used), ui->data_unit, - _mem_adjust(ui->data_unit, results->memory.total), ui->data_unit, value)); + elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s (%1.0f %)", + _mem_format(ui->data_unit, results->memory.used), + _mem_format(ui->data_unit, results->memory.total), + value)); progress = ui->progress_mem_cached; ratio = results->memory.total / 100.0; value = results->memory.cached / ratio; elm_progressbar_value_set(progress, value / 100); - elm_progressbar_unit_format_set(progress, eina_slstr_printf("%lu %c / %lu %c (%1.0f %)", - _mem_adjust(ui->data_unit, results->memory.cached), ui->data_unit, - _mem_adjust(ui->data_unit, results->memory.total), ui->data_unit, value)); + elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s (%1.0f %)", + _mem_format(ui->data_unit, results->memory.cached), + _mem_format(ui->data_unit, results->memory.total), + value)); progress = ui->progress_mem_buffered; ratio = results->memory.total / 100.0; value = results->memory.buffered / ratio; elm_progressbar_value_set(progress, value / 100); - elm_progressbar_unit_format_set(progress, eina_slstr_printf("%lu %c / %lu %c (%1.0f %)", - _mem_adjust(ui->data_unit, results->memory.buffered), ui->data_unit, - _mem_adjust(ui->data_unit, results->memory.total), ui->data_unit, value)); + elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s (%1.0f %)", + _mem_format(ui->data_unit, results->memory.buffered), + _mem_format(ui->data_unit, results->memory.total), + value)); progress = ui->progress_mem_shared; ratio = results->memory.total / 100.0; value = results->memory.shared / ratio; elm_progressbar_value_set(progress, value / 100); - elm_progressbar_unit_format_set(progress, eina_slstr_printf("%lu %c / %lu %c (%1.0f %)", - _mem_adjust(ui->data_unit, results->memory.shared), ui->data_unit, - _mem_adjust(ui->data_unit, results->memory.total), ui->data_unit, value)); + elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s (%1.0f %)", + _mem_format(ui->data_unit, results->memory.shared), + _mem_format(ui->data_unit, results->memory.total), + value)); progress = ui->progress_mem_swap; ratio = results->memory.swap_total / 100.0; value = results->memory.swap_used / ratio; elm_progressbar_value_set(progress, value / 100); - elm_progressbar_unit_format_set(progress, eina_slstr_printf("%lu %c / %lu %c (%1.0f %)", - _mem_adjust(ui->data_unit, results->memory.swap_used), ui->data_unit, - _mem_adjust(ui->data_unit, results->memory.swap_total), ui->data_unit, value)); + elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s (%1.0f %)", + _mem_format(ui->data_unit, results->memory.swap_used), + _mem_format(ui->data_unit, results->memory.swap_total), + value)); } static void @@ -472,32 +485,6 @@ _tab_cpu_update(Ui *ui, results_t *results) } } -static const char * -_mem_total(Ui *ui, unsigned long total) -{ - const char *res; - - if (total > 1048576) - res = eina_slstr_printf("%1.2f G",(double) total / (1048576)); - else - res = eina_slstr_printf("%lu %c", _mem_adjust(ui->data_unit, total), ui->data_unit); - - return res; -} - -static const char * -_mem_used(Ui *ui, unsigned long total) -{ - const char *res; - - if (total < 1048576 && ui->data_unit == DATA_UNIT_GB) - res = eina_slstr_printf("%1.2f %c",(double) total / (1048576), DATA_UNIT_GB); - else - res = eina_slstr_printf("%lu %c", _mem_adjust(ui->data_unit, total), ui->data_unit); - - return res; -} - static void _system_stats_feedback_cb(void *data, Ecore_Thread *thread, void *msg) { @@ -532,8 +519,8 @@ _system_stats_feedback_cb(void *data, Ecore_Thread *thread, void *msg) value = results->memory.used / ratio; elm_progressbar_value_set(progress, value / 100); elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s", - _mem_used(ui, results->memory.used), - _mem_total(ui, results->memory.total))); + _mem_format(ui->data_unit, results->memory.used), + _mem_format(ui->data_unit, results->memory.total))); out: free(results->cores); free(results); @@ -1008,7 +995,7 @@ _content_get(void *data, Evas_Object *obj, const char *source) evas_object_geometry_get(ui->btn_size, NULL, NULL, &w, NULL); l = evas_object_data_get(it->obj, "proc_size"); - elm_object_text_set(l, eina_slstr_printf("%lu %c ", _mem_adjust(ui->data_unit, proc->mem_size >> 10), ui->data_unit)); + elm_object_text_set(l, _mem_format(ui->data_unit, proc->mem_size >> 10)); evas_object_geometry_get(l, NULL, NULL, &ow, NULL); if (ow > w) evas_object_size_hint_min_set(ui->btn_size, w, 1); r = evas_object_data_get(l, "rect"); @@ -1016,7 +1003,7 @@ _content_get(void *data, Evas_Object *obj, const char *source) evas_object_geometry_get(ui->btn_rss, NULL, NULL, &w, NULL); l = evas_object_data_get(it->obj, "proc_rss"); - elm_object_text_set(l, eina_slstr_printf("%lu %c ", _mem_adjust(ui->data_unit, proc->mem_rss >> 10), ui->data_unit)); + elm_object_text_set(l, _mem_format(ui->data_unit, proc->mem_rss >> 10)); evas_object_geometry_get(l, NULL, NULL, &ow, NULL); if (ow > w) evas_object_size_hint_min_set(ui->btn_rss, w, 1); r = evas_object_data_get(l, "rect"); @@ -1421,9 +1408,9 @@ _process_panel_update(void *data) 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)); elm_object_text_set(ui->entry_pid_threads, eina_slstr_printf("%d", proc->numthreads)); - elm_object_text_set(ui->entry_pid_virt, eina_slstr_printf("%lld bytes", proc->mem_virt)); - elm_object_text_set(ui->entry_pid_rss, eina_slstr_printf("%lld bytes", proc->mem_rss)); - elm_object_text_set(ui->entry_pid_size, eina_slstr_printf("%lld bytes", proc->mem_size)); + elm_object_text_set(ui->entry_pid_virt, _mem_format(ui->data_unit, proc->mem_virt >> 10)); + elm_object_text_set(ui->entry_pid_rss, _mem_format(ui->data_unit, proc->mem_rss >> 10)); + elm_object_text_set(ui->entry_pid_size, _mem_format(ui->data_unit, proc->mem_size >> 10)); elm_object_text_set(ui->entry_pid_nice, eina_slstr_printf("%d", proc->nice)); elm_object_text_set(ui->entry_pid_pri, eina_slstr_printf("%d", proc->priority)); elm_object_text_set(ui->entry_pid_state, proc->state);