diff options
| -rw-r--r-- | includes/devices.h | 1 | ||||
| -rw-r--r-- | modules/devices.c | 46 | 
2 files changed, 37 insertions, 10 deletions
diff --git a/includes/devices.h b/includes/devices.h index 602024b0..0699032c 100644 --- a/includes/devices.h +++ b/includes/devices.h @@ -40,6 +40,7 @@ GSList *processor_scan(void);  void get_processor_strfamily(Processor * processor);  gchar *processor_get_detailed_info(Processor * processor);  gchar *processor_get_info(GSList * processors); +gchar *processor_describe(GSList * processors);  /* Memory */  void init_memory_labels(void); diff --git a/modules/devices.c b/modules/devices.c index 0984851c..d3fd1110 100644 --- a/modules/devices.c +++ b/modules/devices.c @@ -126,19 +126,45 @@ gchar *lginterval = NULL;  #include <vendor.h> +gint proc_cmp (Processor *a, Processor *b) { +    return g_strcmp0(a->model_name, b->model_name); +} + +gchar *processor_describe(GSList * processors) +{ +    gchar *ret = g_strdup(""); +    GSList *tmp, *l; +    Processor *p; +    gchar *cur_str = NULL; +    gint cur_count = 0; + +    tmp = g_slist_copy(processors); +    tmp = g_slist_sort(tmp, (GCompareFunc)proc_cmp); + +    for (l = tmp; l; l = l->next) { +        p = (Processor*)l->data; +        if (cur_str == NULL) { +            cur_str = p->model_name; +            cur_count = 1; +        } else { +            if(g_strcmp0(cur_str, p->model_name)) { +                ret = h_strdup_cprintf("%s%dx %s", ret, strlen(ret) ? " + " : "", cur_count, cur_str); +                cur_str = p->model_name; +                cur_count = 1; +            } else { +                cur_count++; +            } +        } +    } +    ret = h_strdup_cprintf("%s%dx %s", ret, strlen(ret) ? " + " : "", cur_count, cur_str); +    g_slist_free(tmp); +    return ret; +} +  gchar *get_processor_name(void)  {      scan_processors(FALSE); - -    Processor *p = (Processor *) processors->data; - -    if (g_slist_length(processors) > 1) { -	return idle_free(g_strdup_printf("%dx %s", -					 g_slist_length(processors), -					 p->model_name)); -    } else { -	return p->model_name; -    } +    return processor_describe(processors);  }  gchar *get_storage_devices(void)  | 
