diff options
Diffstat (limited to 'modules/devices/dmi.c')
-rw-r--r-- | modules/devices/dmi.c | 20 |
1 files changed, 16 insertions, 4 deletions
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) { |