diff options
Diffstat (limited to 'lib/init.c')
-rw-r--r-- | lib/init.c | 27 |
1 files changed, 23 insertions, 4 deletions
@@ -1,7 +1,7 @@ /* * The PCI Library -- Initialization and related things * - * Copyright (c) 1997--2018 Martin Mares <mj@ucw.cz> + * Copyright (c) 1997--2024 Martin Mares <mj@ucw.cz> * * Can be freely distributed and used under the terms of the GNU GPL v2+. * @@ -406,6 +406,27 @@ pci_init_name_list_path(struct pci_access *a) #endif +#ifdef PCI_USE_DNS + +static void +pci_init_dns(struct pci_access *a) +{ + pci_define_param(a, "net.domain", PCI_ID_DOMAIN, "DNS domain used for resolving of ID's"); + a->id_lookup_mode = PCI_LOOKUP_CACHE; + + char *cache_dir = getenv("XDG_CACHE_HOME"); + if (!cache_dir) + cache_dir = "~/.cache"; + + int name_len = strlen(cache_dir) + 32; + char *cache_name = pci_malloc(NULL, name_len); + snprintf(cache_name, name_len, "%s/pci-ids", cache_dir); + struct pci_param *param = pci_define_param(a, "net.cache_name", cache_name, "Name of the ID cache file"); + param->value_malloced = 1; +} + +#endif + struct pci_access * pci_alloc(void) { @@ -415,9 +436,7 @@ pci_alloc(void) memset(a, 0, sizeof(*a)); pci_init_name_list_path(a); #ifdef PCI_USE_DNS - pci_define_param(a, "net.domain", PCI_ID_DOMAIN, "DNS domain used for resolving of ID's"); - pci_define_param(a, "net.cache_name", "~/.pciids-cache", "Name of the ID cache file"); - a->id_lookup_mode = PCI_LOOKUP_CACHE; + pci_init_dns(a); #endif #ifdef PCI_HAVE_HWDB pci_define_param(a, "hwdb.disable", "0", "Do not look up names in UDEV's HWDB if non-zero"); |