summaryrefslogtreecommitdiff
path: root/modules/devices.c
diff options
context:
space:
mode:
authorSimon Quigley <tsimonq2@ubuntu.com>2017-11-25 13:35:47 -0600
committerSimon Quigley <tsimonq2@ubuntu.com>2017-11-25 13:35:47 -0600
commit11e616945340e87a1f567ab92e6dfac3068875b1 (patch)
tree451c1385230f29d3f4deef777b41609bed6e8090 /modules/devices.c
parent9a9db98089717990cd5e0eef529f6bb0819ebe46 (diff)
New upstream version 0.5.1+git20171103
Diffstat (limited to 'modules/devices.c')
-rw-r--r--modules/devices.c41
1 files changed, 27 insertions, 14 deletions
diff --git a/modules/devices.c b/modules/devices.c
index 9c7a184d..152b6831 100644
--- a/modules/devices.c
+++ b/modules/devices.c
@@ -359,24 +359,37 @@ gchar *get_memory_total(void)
gchar *get_motherboard(void)
{
- char *board_name, *board_vendor, *product_version;
+ char *board_name, *board_vendor, *system_version;
+ char *ret;
#if defined(ARCH_x86) || defined(ARCH_x86_64)
scan_dmi(FALSE);
- board_name = moreinfo_lookup("DEV:DMI:Board:Name");
- board_vendor = moreinfo_lookup("DEV:DMI:Board:Vendor");
- product_version = moreinfo_lookup("DEV:DMI:Product:Version#1");
-
- if (!board_name || !*board_name)
- board_name = _(" (model unknown)");
- if (!board_vendor || !*board_vendor)
- board_vendor = _(" (vendor unknown)");
-
- if (product_version && *product_version)
- return g_strdup_printf("%s / %s (%s)", product_version, board_name, board_vendor);
-
- return g_strconcat(board_vendor, " ", board_name, NULL);
+ board_name = dmi_get_str("baseboard-product-name");
+ if (board_name == NULL)
+ board_name = dmi_get_str("system-product-name");
+
+ board_vendor = dmi_get_str("baseboard-manufacturer");
+ if (board_vendor == NULL)
+ board_vendor = dmi_get_str("system-manufacturer");
+
+ system_version = dmi_get_str("system-version");
+
+ if (board_name && board_vendor && system_version)
+ ret = g_strdup_printf("%s / %s (%s)", system_version, board_name, board_vendor);
+ else if (board_name && board_vendor)
+ ret = g_strconcat(board_vendor, " ", board_name, NULL);
+ else if (board_name)
+ ret = g_strdup(board_name);
+ else if (board_vendor)
+ ret = g_strdup(board_vendor);
+ else
+ ret = g_strdup(_("(Unknown)"));
+
+ free(board_name);
+ free(board_vendor);
+ free(system_version);
+ return ret;
#endif
/* use device tree "model" */