diff options
author | Burt P <pburt0@gmail.com> | 2018-10-04 18:05:57 -0500 |
---|---|---|
committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2018-11-04 15:02:12 -0800 |
commit | 2316b80c4322e7ab3cb248be6ba72402fa108cff (patch) | |
tree | 1ed86e520a933053284eeb4100ed4894cf8a416f /modules/devices.c | |
parent | 11936f0c93bd0416f5cba22de18228c46864a927 (diff) |
devices: get_motherboard() fixes
Signed-off-by: Burt P <pburt0@gmail.com>
Diffstat (limited to 'modules/devices.c')
-rw-r--r-- | modules/devices.c | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/modules/devices.c b/modules/devices.c index 92215df7..35ded54c 100644 --- a/modules/devices.c +++ b/modules/devices.c @@ -358,7 +358,7 @@ gchar *get_motherboard(void) gchar *board_name, *board_vendor, *board_version; gchar *product_name, *product_vendor, *product_version; gchar *board_part = NULL, *product_part = NULL; - int b = 0, p = 0, iv = 0; + int b = 0, p = 0; gchar *ret; @@ -374,8 +374,18 @@ gchar *get_motherboard(void) product_version = dmi_get_str("system-version"); if (board_vendor && product_vendor && - strcmp(board_vendor, product_vendor) == 0) - iv = 1; + strcmp(board_vendor, product_vendor) == 0) { + /* ignore duplicate vendor */ + g_free(product_vendor); + product_vendor = NULL; + } + + if (board_name && product_name && + strcmp(board_name, product_name) == 0) { + /* ignore duplicate name */ + g_free(product_name); + product_name = NULL; + } if (board_name) b += 1; if (board_vendor) b += 2; @@ -391,6 +401,12 @@ gchar *get_motherboard(void) case 3: /* only name and vendor */ board_part = g_strdup_printf("%s %s", board_vendor, board_name); break; + case 4: /* only version? Seems unlikely */ + board_part = g_strdup(board_version); + break; + case 5: /* only name and version? */ + board_part = g_strdup_printf("%s %s", board_name, board_version); + break; case 6: /* only vendor and version (like lpereira's Thinkpad) */ board_part = g_strdup_printf("%s %s", board_vendor, board_version); break; @@ -407,17 +423,23 @@ gchar *get_motherboard(void) case 1: /* only name */ product_part = g_strdup(product_name); break; + case 2: /* only vendor */ + product_part = g_strdup(product_vendor); + break; case 3: /* only name and vendor */ - if (board_part && iv) - product_part = g_strdup(product_name); - else - product_part = g_strdup_printf("%s %s", product_vendor, product_name); + product_part = g_strdup_printf("%s %s", product_vendor, product_name); + break; + case 4: /* only version? Seems unlikely */ + product_part = g_strdup(product_version); + break; + case 5: /* only name and version? */ + product_part = g_strdup_printf("%s %s", product_name, product_version); + break; + case 6: /* only vendor and version? */ + product_part = g_strdup_printf("%s %s", product_vendor, product_version); break; case 7: /* all */ - if (board_part && iv) - product_part = g_strdup_printf("%s %s", product_name, product_version); - else - product_part = g_strdup_printf("%s %s %s", product_vendor, product_name, product_version); + product_part = g_strdup_printf("%s %s %s", product_vendor, product_name, product_version); break; } |