diff options
| author | Ondrej Čerman <ondrej.cerman@gmail.com> | 2020-01-01 13:49:35 +0100 | 
|---|---|---|
| committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2020-01-03 09:31:10 -0800 | 
| commit | fb5e67746f5eccd07293411ff09a1120c4dcd00b (patch) | |
| tree | 90e52eb48ce79da8f7849bd81483bc60bda42aed | |
| parent | 627ebd31f52762c24d11dcb7f6f732999e334960 (diff) | |
storage: updated list
| -rw-r--r-- | hardinfo/info.c | 2 | ||||
| -rw-r--r-- | includes/info.h | 1 | ||||
| -rw-r--r-- | modules/computer.c | 2 | ||||
| -rw-r--r-- | modules/devices.c | 41 | ||||
| -rw-r--r-- | modules/devices/storage.c | 30 | 
5 files changed, 55 insertions, 21 deletions
| diff --git a/hardinfo/info.c b/hardinfo/info.c index af3af60f..f888ddac 100644 --- a/hardinfo/info.c +++ b/hardinfo/info.c @@ -109,7 +109,7 @@ struct InfoField info_field_printf(const gchar *name, const gchar *format, ...)      };  } -static void info_group_strip_extra(struct InfoGroup *group) +void info_group_strip_extra(struct InfoGroup *group)  {      guint fi;      char *val, *oldval; diff --git a/includes/info.h b/includes/info.h index 14e1b9eb..794e3679 100644 --- a/includes/info.h +++ b/includes/info.h @@ -76,6 +76,7 @@ struct InfoField {  struct Info *info_new(void);  struct InfoGroup *info_add_group(struct Info *info, const gchar *group_name, ...); +void info_group_strip_extra(struct InfoGroup *group);  void info_add_computed_group(struct Info *info, const gchar *name, const gchar *value);  void info_add_computed_group_wo_extra(struct Info *info, const gchar *name, const gchar *value); diff --git a/modules/computer.c b/modules/computer.c index 284e44a7..67ce2d21 100644 --- a/modules/computer.c +++ b/modules/computer.c @@ -1009,7 +1009,7 @@ gchar *hi_module_get_summary(void)                      "Method=computer::getDisplaySummary\n"                      "[%s]\n"                      "Icon=hdd.png\n" -                    "Method=devices::getStorageDevices\n" +                    "Method=devices::getStorageDevicesSimple\n"                      "[%s]\n"                      "Icon=printer.png\n"                      "Method=devices::getPrinters\n" diff --git a/modules/devices.c b/modules/devices.c index 850dd9d4..429dd6b6 100644 --- a/modules/devices.c +++ b/modules/devices.c @@ -272,6 +272,44 @@ gchar *get_processor_name_and_desc(void)      return nd;  } +gchar *get_storage_devices_simple(void) +{ +    scan_storage(FALSE); + +    struct Info *info = info_unflatten(storage_list); +    if (!info) { +        return ""; +    } + +    int i, fi; +    struct InfoGroup *group; +    struct InfoField *field; +    gchar *storage_devs = NULL, *tmp; +    const gchar *dev_label, *model_wo_tags; + +    GRegex *regex; +    regex = g_regex_new ("<.*>", 0, 0, NULL); + +    for (i = 0; i < info->groups->len; i++) { +        group = &g_array_index(info->groups, struct InfoGroup, info->groups->len - 1); +        if (!group) +            continue; + +        info_group_strip_extra(group); +        for (fi = 0; fi < group->fields->len; fi++) { +            field = &g_array_index(group->fields, struct InfoField, fi); +            if (!field->value) +                continue; + +            tmp = g_regex_replace(regex, field->value, -1, 0, "", 0, NULL); // remove html tags +            storage_devs = h_strdup_cprintf("%s\n", storage_devs, tmp); +            g_free(tmp); +        } +    } +    g_free(info); + +    return storage_devs; +}  gchar *get_storage_devices(void)  { @@ -515,6 +553,7 @@ ShellModuleMethod *hi_exported_methods(void)  	{"getProcessorFrequency", get_processor_max_frequency},  	{"getProcessorFrequencyDesc", get_processor_frequency_desc},  	{"getStorageDevices", get_storage_devices}, +	{"getStorageDevicesSimple", get_storage_devices_simple},  	{"getPrinters", get_printers},  	{"getInputDevices", get_input_devices},  	{"getMotherboard", get_motherboard}, @@ -745,7 +784,7 @@ gchar *callback_storage()          "ColumnTitle$Value=%s\n"          "ColumnTitle$Extra1=%s\n"          "ShowColumnHeaders=true\n" -        "ViewType=1\n%s", storage_list, _("Model"), _("Vendor"), _("Size"), storage_icons); +        "ViewType=1\n%s", storage_list, _("Device"), _("Size"), _("Model"), storage_icons);  }  gchar *callback_input() diff --git a/modules/devices/storage.c b/modules/devices/storage.c index b4e34994..aef282f5 100644 --- a/modules/devices/storage.c +++ b/modules/devices/storage.c @@ -81,8 +81,8 @@ gboolean __scan_udisks2_devices(void) {      udiskp *part;      udisksa *attrib;      gchar *udisks2_storage_list = NULL, *features = NULL, *moreinfo = NULL; -    gchar *devid, *label, *size, *tmp = NULL, *media_comp = NULL, *ven_tag = NULL; -    const gchar *url, *vendor_str, *media_label, *alabel, *icon, *media_curr = NULL; +    gchar *devid, *size, *tmp = NULL, *media_comp = NULL, *ven_tag = NULL; +    const gchar *url, *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 @@ -195,13 +195,6 @@ gboolean __scan_udisks2_devices(void) {          disk = (udiskd *)node->data;          devid = g_strdup_printf("UDISKS%d", n++); -        if (disk->vendor && strlen(disk->vendor) > 0) -            vendor_str = disk->vendor; -        else -            vendor_str = _("(Unknown)"); - -        label = g_strdup(disk->model); -          icon = NULL;          media_curr = disk->media; @@ -245,8 +238,8 @@ gboolean __scan_udisks2_devices(void) {          size = size_human_readable((gfloat) disk->size);          ven_tag = vendor_list_ribbon(disk->vendors, 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); +        udisks2_storage_list = h_strdup_cprintf("$%s$%s=%s|%s %s\n", udisks2_storage_list, devid, disk->block_dev, size, ven_tag ? ven_tag : "", disk->model); +        storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid, disk->model, icon);          features = h_strdup_cprintf("%s", features, disk->removable ? _("Removable"): _("Fixed"));          if (disk->ejectable) { @@ -267,11 +260,13 @@ gboolean __scan_udisks2_devices(void) {          moreinfo = g_strdup_printf(_("[Drive Information]\n"                                     "Model=%s\n"), -                                   label); +                                   disk->model); -        moreinfo = h_strdup_cprintf("$^$%s=%s\n", -                                     moreinfo, -                                     _("Vendor"), vendor_str); +        if (disk->vendor && *disk->vendor) { +            moreinfo = h_strdup_cprintf("$^$%s=%s\n", +                                        moreinfo, +                                        _("Vendor"), disk->vendor); +        }          moreinfo = h_strdup_cprintf(_("Revision=%s\n"                                      "Block Device=%s\n" @@ -391,7 +386,6 @@ gboolean __scan_udisks2_devices(void) {          moreinfo_add_with_prefix("DEV", devid, moreinfo);          g_free(devid);          g_free(features); -        g_free(label);          g_free(media_comp);          media_comp = NULL; @@ -497,7 +491,7 @@ void __scan_scsi_devices(void)                  }                  gchar *devid = g_strdup_printf("SCSI%d", n); -                scsi_storage_list = h_strdup_cprintf("$%s$%s=\n", scsi_storage_list, devid, model); +                scsi_storage_list = h_strdup_cprintf("$%s$scsi%d=|%s\n", scsi_storage_list, devid, scsi_controller, model);                  storage_icons = h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons, devid, model, icon);                  gchar *strhash = g_strdup_printf(_("[Device Information]\n" @@ -694,7 +688,7 @@ void __scan_ide_devices(void)  	    gchar *devid = g_strdup_printf("IDE%d", n); -	    ide_storage_list = h_strdup_cprintf("$%s$%s=\n", ide_storage_list, devid, model); +	    ide_storage_list = h_strdup_cprintf("$%s$%hd%c=|%s\n", ide_storage_list, devid, iface, model);  	    storage_icons =  		h_strdup_cprintf("Icon$%s$%s=%s.png\n", storage_icons,  				 devid, model, g_str_equal(media, "cdrom") ? "cdrom" : "hdd"); | 
