From e941b2ada4ef3cad921d0fe87dcc75baf2cdcb73 Mon Sep 17 00:00:00 2001 From: Ondrej Čerman Date: Sat, 16 Oct 2021 22:30:58 +0200 Subject: devices/storage - refactoring - all code that is extending udisks2 information has been moved to separate file. --- hardinfo/udisks2_util.c | 138 ------------------------------------------------ 1 file changed, 138 deletions(-) (limited to 'hardinfo/udisks2_util.c') diff --git a/hardinfo/udisks2_util.c b/hardinfo/udisks2_util.c index c45b8f8d..e86e59d3 100644 --- a/hardinfo/udisks2_util.c +++ b/hardinfo/udisks2_util.c @@ -1,7 +1,5 @@ #include #include "udisks2_util.h" -#include "hardinfo.h" -#include "util_ids.h" #define UDISKS2_INTERFACE "org.freedesktop.UDisks2" #define UDISKS2_MANAGER_INTERFACE "org.freedesktop.UDisks2.Manager" @@ -19,109 +17,6 @@ GDBusConnection* udisks2_conn = NULL; -gchar *sdcard_ids_file = NULL; - -void find_sdcard_ids_file() { - if (sdcard_ids_file) return; - char *file_search_order[] = { - g_build_filename(g_get_user_config_dir(), "hardinfo", "sdcard.ids", NULL), - g_build_filename(params.path_data, "sdcard.ids", NULL), - NULL - }; - int n; - for(n = 0; file_search_order[n]; n++) { - if (!sdcard_ids_file && !access(file_search_order[n], R_OK)) - sdcard_ids_file = file_search_order[n]; - else - g_free(file_search_order[n]); - } -} - -void check_sdcard_vendor(udiskd *d) { - if (!d) return; - if (!d->media) return; - if (! (g_str_has_prefix(d->media, "flash_sd") - || g_str_has_prefix(d->media, "flash_mmc") )) return; - if (d->vendor && d->vendor[0]) return; - if (!d->block_dev) return; - - if (!sdcard_ids_file) - find_sdcard_ids_file(); - - gchar *qpath = NULL; - ids_query_result result = {}; - - gchar *oemid_path = g_strdup_printf("/sys/block/%s/device/oemid", d->block_dev); - gchar *manfid_path = g_strdup_printf("/sys/block/%s/device/manfid", d->block_dev); - gchar *oemid = NULL, *manfid = NULL; - g_file_get_contents(oemid_path, &oemid, NULL, NULL); - g_file_get_contents(manfid_path, &manfid, NULL, NULL); - - unsigned int id = strtol(oemid, NULL, 16); - char c2 = id & 0xff, c1 = (id >> 8) & 0xff; - - qpath = g_strdup_printf("OEMID %02x%02x", (unsigned int)c1, (unsigned int)c2); - scan_ids_file(sdcard_ids_file, qpath, &result, -1); - g_free(oemid); - if (result.results[0]) - oemid = g_strdup(result.results[0]); - else - oemid = g_strdup_printf("OEM %02x%02x \"%c%c\"", - (unsigned int)c1, (unsigned int)c2, - isprint(c1) ? c1 : '.', isprint(c2) ? c2 : '.'); - g_free(qpath); - - id = strtol(manfid, NULL, 16); - qpath = g_strdup_printf("MANFID %06x", id); - scan_ids_file(sdcard_ids_file, qpath, &result, -1); - g_free(manfid); - if (result.results[0]) - manfid = g_strdup(result.results[0]); - else - manfid = g_strdup_printf("MANF %06x", id); - g_free(qpath); - - vendor_list vl = NULL; - const Vendor *v = NULL; - v = vendor_match(oemid, NULL); - if (v) vl = vendor_list_append(vl, v); - v = vendor_match(manfid, NULL); - if (v) vl = vendor_list_append(vl, v); - vl = vendor_list_remove_duplicates_deep(vl); - d->vendors = vendor_list_concat(d->vendors, vl); - - g_free(d->vendor); - if (g_strcmp0(oemid, manfid) == 0) - d->vendor = g_strdup(oemid); - else - d->vendor = g_strdup_printf("%s / %s", oemid, manfid); - - g_free(oemid); - g_free(manfid); - g_free(oemid_path); - g_free(manfid_path); - - if (d->revision && d->revision[0]) return; - - /* bonus: revision */ - gchar *fwrev_path = g_strdup_printf("/sys/block/%s/device/fwrev", d->block_dev); - gchar *hwrev_path = g_strdup_printf("/sys/block/%s/device/hwrev", d->block_dev); - gchar *fwrev = NULL, *hwrev = NULL; - g_file_get_contents(fwrev_path, &fwrev, NULL, NULL); - g_file_get_contents(hwrev_path, &hwrev, NULL, NULL); - - unsigned int fw = fwrev ? strtol(fwrev, NULL, 16) : 0; - unsigned int hw = hwrev ? strtol(hwrev, NULL, 16) : 0; - g_free(d->revision); - d->revision = g_strdup_printf("%02x.%02x", hw, fw); - - g_free(fwrev); - g_free(hwrev); - g_free(fwrev_path); - g_free(hwrev_path); - -} - GVariant* get_dbus_property(GDBusProxy* proxy, const gchar *interface, const gchar *property) { GVariant *result, *v = NULL; @@ -375,7 +270,6 @@ void udiskd_free(udiskd *u) { udisksa_free(u->smart_attributes); g_free(u->media); g_strfreev(u->media_compatibility); - pcid_free(u->nvme_controller); g_free(u); } } @@ -708,37 +602,6 @@ gpointer get_udisks2_drive_info(const char *blockdev, GDBusProxy *block, g_variant_unref(v); } - if (!u->vendor || !*u->vendor) { - const Vendor *v = vendor_match(u->model, NULL); - if (v) - u->vendor = g_strdup(v->name); - } - - check_sdcard_vendor(u); - - u->vendors = vendor_list_append(u->vendors, vendor_match(u->vendor, NULL)); - - /* NVMe PCI device */ - if (strstr(u->block_dev, "nvme")) { - gchar *path = g_strdup_printf("/sys/block/%s/device/device", u->block_dev); - gchar *systarget = g_file_read_link(path, NULL); - gchar *target = systarget ? g_filename_to_utf8(systarget, -1, NULL, NULL, NULL) : NULL; - gchar *pci_addy = target ? g_path_get_basename(target) : NULL; - u->nvme_controller = pci_addy ? pci_get_device_str(pci_addy) : NULL; - g_free(path); - g_free(systarget); - g_free(target); - g_free(pci_addy); - if (u->nvme_controller) { - u->vendors = vendor_list_append(u->vendors, - vendor_match(u->nvme_controller->vendor_id_str, NULL)); - u->vendors = vendor_list_append(u->vendors, - vendor_match(u->nvme_controller->sub_vendor_id_str, NULL)); - } - } - u->vendors = gg_slist_remove_null(u->vendors); - u->vendors = vendor_list_remove_duplicates_deep(u->vendors); - return u; } @@ -761,5 +624,4 @@ void udisks2_shutdown(){ g_object_unref(udisks2_conn); udisks2_conn = NULL; } - g_free(sdcard_ids_file); } -- cgit v1.2.3