X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fproc.c;h=cb9d08d17768dd1379849ca505d58ebe33067fae;hb=9f9e373b17f1bc7363cc43aff0ad024eae0c5c36;hp=e9ca24d019f40f93bcc40fd0136dd4caa921fafb;hpb=caeac5c38e34c5282a0646a697acaa1fea22ddb7;p=pciutils.git diff --git a/lib/proc.c b/lib/proc.c index e9ca24d..cb9d08d 100644 --- a/lib/proc.c +++ b/lib/proc.c @@ -130,6 +130,15 @@ proc_setup(struct pci_dev *d, int rw) a->error("File name too long"); a->fd_rw = a->writeable || rw; a->fd = open(buf, a->fd_rw ? O_RDWR : O_RDONLY); + if (a->fd < 0) + { + e = snprintf(buf, sizeof(buf), "%s/%04x:%02x/%02x.%d", + pci_get_param(a, "proc.path"), + d->domain, d->bus, d->dev, d->func); + if (e < 0 || e >= (int) sizeof(buf)) + a->error("File name too long"); + a->fd = open(buf, a->fd_rw ? O_RDWR : O_RDONLY); + } if (a->fd < 0) a->warning("Cannot open %s", buf); a->cached_dev = d;