aboutsummaryrefslogtreecommitdiffstats
path: root/lib/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/init.c')
-rw-r--r--lib/init.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/lib/init.c b/lib/init.c
index 3476681..943321b 100644
--- a/lib/init.c
+++ b/lib/init.c
@@ -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");