diff options
-rw-r--r-- | hardinfo/udisks2_util.c | 16 | ||||
-rw-r--r-- | modules/devices.c | 10 | ||||
-rw-r--r-- | modules/devices/storage.c | 9 |
3 files changed, 29 insertions, 6 deletions
diff --git a/hardinfo/udisks2_util.c b/hardinfo/udisks2_util.c index 11e091b9..dfb0b20f 100644 --- a/hardinfo/udisks2_util.c +++ b/hardinfo/udisks2_util.c @@ -2,6 +2,7 @@ #include "udisks2_util.h" #include "hardinfo.h" #include "util_ids.h" +#include "pci_util.h" #define UDISKS2_INTERFACE "org.freedesktop.UDisks2" #define UDISKS2_MANAGER_INTERFACE "org.freedesktop.UDisks2.Manager" @@ -677,6 +678,21 @@ gpointer get_udisks2_drive_info(const char *blockdev, GDBusProxy *block, g_variant_unref(v); } + /* NVMe vendor from PCI device */ + if (strstr(u->block_dev, "nvme") + && (!u->vendor || !*u->vendor) + ) { + gchar *file = g_strdup_printf("/sys/block/%s/device/device/vendor", u->block_dev); + gchar *val = NULL; + if (g_file_get_contents(file, &val, NULL, NULL) ) { + unsigned long int id = strtoul(val, NULL, 16); + if (id) + u->vendor = pci_lookup_ids_vendor_str(id); + } + g_free(file); + g_free(val); + } + check_sdcard_vendor(u); if (!u->vendors) { diff --git a/modules/devices.c b/modules/devices.c index a13213ba..77f5562e 100644 --- a/modules/devices.c +++ b/modules/devices.c @@ -739,9 +739,13 @@ gchar *callback_printers() gchar *callback_storage() { return g_strdup_printf("%s\n" - "[$ShellParam$]\n" - "ReloadInterval=5000\n" - "ViewType=1\n%s", storage_list, storage_icons); + "[$ShellParam$]\n" + "ReloadInterval=5000\n" + "ColumnTitle$TextValue=%s\n" + "ColumnTitle$Value=%s\n" + "ColumnTitle$Extra1=%s\n" + "ShowColumnHeaders=true\n" + "ViewType=1\n%s", storage_list, _("Model"), _("Vendor"), _("Size"), storage_icons); } gchar *callback_input() diff --git a/modules/devices/storage.c b/modules/devices/storage.c index 72d924ce..753246f6 100644 --- a/modules/devices/storage.c +++ b/modules/devices/storage.c @@ -32,7 +32,7 @@ gboolean __scan_udisks2_devices(void) { udisksa *attrib; gchar *udisks2_storage_list = NULL, *features = NULL, *moreinfo = NULL; gchar *devid, *label, *size, *tmp = NULL, *media_comp = NULL; - const gchar *url, *vendor_str, *media_label, *alabel, *icon, *media_curr = NULL; + const gchar *url, *vendor_str, *ven_tag, *media_label, *alabel, *icon, *media_curr = NULL; int n = 0, i, j; // http://storaged.org/doc/udisks2-api/latest/gdbus-org.freedesktop.UDisks2.Drive.html#gdbus-property-org-freedesktop-UDisks2-Drive.MediaCompatibility @@ -196,7 +196,10 @@ gboolean __scan_udisks2_devices(void) { icon = "hdd"; } - udisks2_storage_list = h_strdup_cprintf("$%s$%s=\n", udisks2_storage_list, devid, label); + size = size_human_readable((gfloat) disk->size); + ven_tag = vendor_match_tag(vendor_str, params.fmt_opts); + + udisks2_storage_list = h_strdup_cprintf("$%s$%s=%s|%s\n", udisks2_storage_list, devid, label, ven_tag ? ven_tag : "", size); storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid, label, icon); features = h_strdup_cprintf("%s", features, disk->removable ? _("Removable"): _("Fixed")); @@ -224,7 +227,6 @@ gboolean __scan_udisks2_devices(void) { moreinfo, _("Vendor"), vendor_str); - size = size_human_readable((gfloat) disk->size); moreinfo = h_strdup_cprintf(_("Revision=%s\n" "Block Device=%s\n" "Serial=%s\n" @@ -237,6 +239,7 @@ gboolean __scan_udisks2_devices(void) { size, features); g_free(size); + g_free(ven_tag); if (disk->rotation_rate > 0) { moreinfo = h_strdup_cprintf(_("Rotation Rate=%d RPM\n"), moreinfo, disk->rotation_rate); |