diff options
Diffstat (limited to 'modules/devices')
| -rw-r--r-- | modules/devices/dmi.c | 42 | 
1 files changed, 25 insertions, 17 deletions
| diff --git a/modules/devices/dmi.c b/modules/devices/dmi.c index 800b5bd6..55b55245 100644 --- a/modules/devices/dmi.c +++ b/modules/devices/dmi.c @@ -32,6 +32,11 @@ struct _DMIInfo {  };  DMIInfo dmi_info_table[] = { +  { N_("Product"), NULL, 1 }, +  { N_("Name"), "system-product-name", 0 }, +  { N_("Family"), "system-product-family", 0 }, +  { N_("Vendor"), "system-manufacturer", 0 }, +  { N_("Version#1"), "system-version", 0 },    { N_("BIOS"), NULL, 1 },    { N_("Date"), "bios-release-date", 0 },    { N_("Vendor"), "bios-vendor", 0 }, @@ -39,10 +44,9 @@ DMIInfo dmi_info_table[] = {    { N_("Board"), NULL, 1 },    { N_("Name"), "baseboard-product-name", 0 },    { N_("Vendor"), "baseboard-manufacturer", 0 }, -  { N_("Product"), NULL, 1 }, -  { N_("Name"), "system-product-name", 0 }, -  { N_("Family"), "system-product-family", 0 }, -  { N_("Version#1"), "system-product-version", 0 }, +  { N_("Version"), "baseboard-version", 0 }, +  { N_("Serial Number"), "baseboard-serial-number", 0 }, +  { N_("Asset Tag"), "baseboard-asset-tag", 0 },    { N_("Chassis"), NULL, 1 },    { N_("Vendor"), "chassis-manufacturer", 0 },    { N_("Type"), "chassis-type", 0 }, @@ -73,15 +77,21 @@ char *dmi_get_str(const char *id_str) {      char *id;      char *path;    } tab_dmi_sysfs[] = { +    /* dmidecode -> sysfs */      { "bios-release-date", "id/bios_date" },      { "bios-vendor", "id/bios_vendor" },      { "bios-version", "id/bios_version" },      { "baseboard-product-name", "id/board_name" },      { "baseboard-manufacturer", "id/board_vendor" }, +    { "baseboard-version", "id/board_version" }, +    { "baseboard-serial-number", "id/board_serial" }, +    { "baseboard-asset-tag", "id/board_asset_tag" },      { "system-product-name", "id/product_name" },      { "system-manufacturer", "id/sys_vendor" }, +    { "system-serial-number", "id/product_serial" },      { "system-product-family", "id/product_family" }, -    { "system-product-version", "id/product_version" }, +    { "system-version", "id/product_version" }, +    { "system-uuid", "product_uuid" },      { "chassis-type", "id/chassis_type" },      { "chassis-serial-number", "id/chassis_serial" },      { "chassis-manufacturer", "id/chassis_vendor" }, @@ -90,24 +100,22 @@ char *dmi_get_str(const char *id_str) {      { NULL, NULL }    };    const gchar *dmi_root = dmi_sysfs_root(); -  gchar *path = NULL, *full_path = NULL, *ret = NULL; +  gchar *full_path = NULL, *ret = NULL;    gboolean spawned;    gchar *out, *err;    int i = 0; -  while (tab_dmi_sysfs[i].id != NULL) { -    if (strcmp(id_str, tab_dmi_sysfs[i].id) == 0) { -      path = tab_dmi_sysfs[i].path; -      break; -    } -    i++; -  }    /* try sysfs first */ -  if (dmi_root && path) { -    full_path = g_strdup_printf("%s/%s", dmi_root, path); -    if (g_file_get_contents(full_path, &ret, NULL, NULL) ) -      goto dmi_str_done; +  if (dmi_root) { +    while (tab_dmi_sysfs[i].id != NULL) { +      if (strcmp(id_str, tab_dmi_sysfs[i].id) == 0) { +        full_path = g_strdup_printf("%s/%s", dmi_root, tab_dmi_sysfs[i].path); +        if (g_file_get_contents(full_path, &ret, NULL, NULL) ) +          goto dmi_str_done; +        } +      i++; +    }    }    /* try dmidecode, but may require root */ | 
