diff options
author | Ondrej Čerman <ondrej.cerman@gmail.com> | 2019-06-30 00:50:29 +0200 |
---|---|---|
committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2019-06-30 08:15:00 -0700 |
commit | 8566bac1587d0c2cba28484ea3bc04dfe6e207fe (patch) | |
tree | 7f1a0e003bfaefb6fd31f93be220ee3764e36d8a /modules/devices | |
parent | 2bf1a0317f479ee32f3a16be3f1bc22a99709da7 (diff) |
devices/storage: Better storage media labels
Diffstat (limited to 'modules/devices')
-rw-r--r-- | modules/devices/storage.c | 91 |
1 files changed, 73 insertions, 18 deletions
diff --git a/modules/devices/storage.c b/modules/devices/storage.c index 0a86ec24..db48b6c2 100644 --- a/modules/devices/storage.c +++ b/modules/devices/storage.c @@ -28,19 +28,50 @@ gboolean __scan_udisks2_devices(void) { GSList *node, *drives; udiskd *disk; gchar *udisks2_storage_list = NULL, *features = NULL, *moreinfo = NULL; - gchar *devid, *label; - const gchar *url, *vendor_str, *icon; - int n = 0, i; + gchar *devid, *label, *media_comp = NULL; + const gchar *url, *vendor_str, *media_label, *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 static struct { - char *media_prefix; + char *media; + char *label; char *icon; - } media2icon[] = { - { "thumb", "usbfldisk"}, - { "flash", "usbfldisk"}, - { "floppy", "media-floppy"}, - { "optical", "cdrom"}, - { NULL, NULL} + } media_info[] = { + { "thumb", "Thumb-drive", "usbfldisk" }, + { "flash", "Flash Card", "usbfldisk" }, + { "flash_cf", "CompactFlash", "usbfldisk" }, + { "flash_ms", "MemoryStick", "usbfldisk" }, + { "flash_sm", "SmartMedia", "usbfldisk" }, + { "flash_sd", "SD", "usbfldisk" }, + { "flash_sdhc", "SDHC", "usbfldisk" }, + { "flash_sdxc", "SDXC", "usbfldisk" }, + { "flash_mmc", "MMC", "usbfldisk" }, + { "floppy", "Floppy Disk", "media-floppy" }, + { "floppy_zip", "Zip Disk", "media-floppy" }, + { "floppy_jaz", "Jaz Disk", "media-floppy" }, + { "optical", "Optical Disc", "cdrom" }, + { "optical_cd", "CD-ROM", "cdrom" }, + { "optical_cd_r", "CD-R", "cdrom" }, + { "optical_cd_rw", "CD-RW", "cdrom" }, + { "optical_dvd", "DVD-ROM", "cdrom" }, + { "optical_dvd_r", "DVD-R", "cdrom" }, + { "optical_dvd_rw", "DVD-RW", "cdrom" }, + { "optical_dvd_ram", "DVD-RAM", "cdrom" }, + { "optical_dvd_plus_r", "DVD+R" , "cdrom" }, + { "optical_dvd_plus_rw", "DVD+RW" , "cdrom" }, + { "optical_dvd_plus_r_dl", "DVD+R DL", "cdrom" }, + { "optical_dvd_plus_rw_dl", "DVD+RW DL", "cdrom" }, + { "optical_bd", "BD-ROM", "cdrom" }, + { "optical_bd_r", "BD-R", "cdrom" }, + { "optical_bd_re", "BD-RE", "cdrom" }, + { "optical_hddvd", "HD DVD-ROM", "cdrom" }, + { "optical_hddvd_r", "HD DVD-R", "cdrom" }, + { "optical_hddvd_rw", "HD DVD-RW", "cdrom" }, + { "optical_mo", "MO Disc", "cdrom" }, + { "optical_mrw", "MRW Media", "cdrom" }, + { "optical_mrw_w", "MRW Media (write)", "cdrom" }, + { NULL, NULL } }; moreinfo_del_with_prefix("DEV:UDISKS"); @@ -61,15 +92,38 @@ gboolean __scan_udisks2_devices(void) { } icon = NULL; - if (disk->media_compatibility){ - for (i = 0; media2icon[i].media_prefix != NULL; i++) { - if (g_str_has_prefix(disk->media_compatibility, - media2icon[i].media_prefix)) { - icon = media2icon[i].icon; + + if (disk->media){ + media_curr = disk->media_compatibility[i]; + for (j = 0; media_info[j].media != NULL; j++) { + if (g_strcmp0(disk->media, media_info[j].media) == 0) { + media_curr = media_info[j].label; break; } } } + + if (disk->media_compatibility){ + for (i = 0; disk->media_compatibility[i] != NULL; i++){ + media_label = disk->media_compatibility[i]; + + for (j = 0; media_info[j].media != NULL; j++) { + if (g_strcmp0(disk->media_compatibility[i], media_info[j].media) == 0) { + media_label = media_info[j].label; + if (icon == NULL) + icon = media_info[j].icon; + break; + } + } + + if (media_comp == NULL){ + media_comp = g_strdup(media_label); + } + else{ + media_comp = h_strdup_cprintf(", %s", media_comp, media_label); + } + } + } if (icon == NULL && disk->ejectable && g_strcmp0(disk->connection_bus, "usb") == 0) { icon = "usbfldisk"; } @@ -128,12 +182,12 @@ gboolean __scan_udisks2_devices(void) { if (disk->rotation_rate > 0) { moreinfo = h_strdup_cprintf(_("Rotation Rate=%d\n"), moreinfo, disk->rotation_rate); } - if (disk->media_compatibility || disk->media) { + if (media_comp || media_curr) { moreinfo = h_strdup_cprintf(_("Media=%s\n" "Media compatibility=%s\n"), moreinfo, - disk->media ? disk->media : _("(None)"), - disk->media_compatibility ? disk->media_compatibility : _("(Unknown)")); + media_curr ? media_curr : _("(None)"), + media_comp ? media_comp : _("(Unknown)")); } if (disk->connection_bus && strlen(disk->connection_bus) > 0) { moreinfo = h_strdup_cprintf(_("Connection bus=%s\n"), moreinfo, disk->connection_bus); @@ -163,6 +217,7 @@ gboolean __scan_udisks2_devices(void) { g_free(devid); g_free(features); g_free(label); + g_free(media_comp); features = NULL; moreinfo = NULL; |