diff options
| author | Leandro Pereira <leandro@hardinfo.org> | 2012-01-07 17:31:46 -0200 | 
|---|---|---|
| committer | Leandro Pereira <leandro@hardinfo.org> | 2012-01-07 17:33:12 -0200 | 
| commit | 75848a2ccdcb1985180bf026da3f39405851a6d9 (patch) | |
| tree | f9b900ccf034c1b6733b8d5c3aa5f0a07d156ff6 /modules | |
| parent | b58f976580d40ef6dfa33cc111253e3c549ca049 (diff) | |
Show moterboard information in the new summary screen
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/computer.c | 1 | ||||
| -rw-r--r-- | modules/devices.c | 20 | ||||
| -rw-r--r-- | modules/devices/dmi.c | 20 | 
3 files changed, 37 insertions, 4 deletions
| diff --git a/modules/computer.c b/modules/computer.c index cb349408..de4e8abe 100644 --- a/modules/computer.c +++ b/modules/computer.c @@ -611,6 +611,7 @@ gchar *hi_module_get_summary(void)                      "Method=devices::getMemoryTotal\n"                      "[Motherboard]\n"                      "Icon=module.png\n" +                    "Method=devices::getMotherboard\n"                      "[Graphics]\n"                      "Icon=monitor.png\n"                      "Method=computer::getDisplaySummary\n" diff --git a/modules/devices.c b/modules/devices.c index 0fd797c0..b7286f8a 100644 --- a/modules/devices.c +++ b/modules/devices.c @@ -180,6 +180,25 @@ gchar *get_memory_total(void)      return hi_more_info("Total Memory");      } +gchar *get_motherboard(void) +{ +    char *board_name, *board_vendor; + +    scan_dmi(FALSE); + +    board_name = (gchar *)g_hash_table_lookup(moreinfo, "DMI:Board:Name"); +    board_vendor = (gchar *)g_hash_table_lookup(moreinfo, "DMI:Board:Vendor"); +     +    if (board_name && board_vendor && *board_name && *board_vendor) +       return g_strconcat(board_vendor, " ", board_name, NULL); +    else if (board_name && *board_name) +       return g_strconcat(board_name, " (vendor unknown)", NULL); +    else if (board_vendor && *board_vendor) +       return g_strconcat(board_vendor, " (model unknown)", NULL); +     +    return g_strdup("Unknown"); +} +  ShellModuleMethod *hi_exported_methods(void)  {      static ShellModuleMethod m[] = { @@ -191,6 +210,7 @@ ShellModuleMethod *hi_exported_methods(void)  	{"getPrinters", get_printers},  	{"getInputDevices", get_input_devices},  	{"getPCIDeviceDescription", get_pci_device_description}, +	{"getMotherboard", get_motherboard},  	{NULL}      }; diff --git a/modules/devices/dmi.c b/modules/devices/dmi.c index 8cc45462..9d54fa9c 100644 --- a/modules/devices/dmi.c +++ b/modules/devices/dmi.c @@ -43,10 +43,17 @@ DMIInfo dmi_info_table[] = {  gchar *dmi_info = NULL; +static void add_to_moreinfo(const char *group, const char *key, char *value) +{ +  char *new_key = g_strconcat("DMI:", group, ":", key, NULL); +  g_hash_table_replace(moreinfo, new_key, g_strdup(g_strstrip(value))); +} +  gboolean dmi_get_info_dmidecode()  {    FILE *dmi_pipe;    gchar buffer[256]; +  const gchar *group;    DMIInfo *info;    gboolean dmi_failed = FALSE;    gint i; @@ -60,8 +67,8 @@ gboolean dmi_get_info_dmidecode()      info = &dmi_info_table[i];      if (*(info->name) == '$') { -      dmi_info = h_strdup_cprintf("[%s]\n", dmi_info, -                                  (info->name) + 1); +      group = info->name + 1; +      dmi_info = h_strdup_cprintf("[%s]\n", dmi_info, group);      } else {        gchar *temp; @@ -77,6 +84,8 @@ gboolean dmi_get_info_dmidecode()            dmi_failed = TRUE;            break;          } +         +        add_to_moreinfo(group, info->name, buffer);          const gchar *url = vendor_get_url(buffer);          if (url) { @@ -121,6 +130,7 @@ gboolean dmi_get_info_sys()  {    FILE *dmi_file;    gchar buffer[256]; +  const gchar *group;    DMIInfo *info;    gboolean dmi_failed = FALSE;    gint i; @@ -134,8 +144,8 @@ gboolean dmi_get_info_sys()      info = &dmi_info_table[i];      if (*(info->name) == '$') { -      dmi_info = h_strdup_cprintf("[%s]\n", dmi_info, -                                  (info->name) + 1); +      group = info->name + 1; +      dmi_info = h_strdup_cprintf("[%s]\n", dmi_info, group);      } else {        if (!info->file)          continue; @@ -143,6 +153,8 @@ gboolean dmi_get_info_sys()        if ((dmi_file = fopen(info->file, "r"))) {          (void)fgets(buffer, 256, dmi_file);          fclose(dmi_file); + +        add_to_moreinfo(group, info->name, buffer);          const gchar *url = vendor_get_url(buffer);          if (url) { | 
