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 | |
parent | b58f976580d40ef6dfa33cc111253e3c549ca049 (diff) |
Show moterboard information in the new summary screen
-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) { |