bool GetInfo_PCI(QTreeWidget* tree) { int num; #ifdef HAVE_PCIUTILS if ( (num = GetInfo_PCIUtils(tree))) { return num; } #endif //HAVE_PCIUTILS tree->setHeaderHidden(true); tree->setSortingEnabled(false); /* try to get the output of the lspci package first */ if ((num = GetInfo_ReadfromPipe(tree, "lspci -v", true)) || (num = GetInfo_ReadfromPipe(tree, "/sbin/lspci -v", true)) || (num = GetInfo_ReadfromPipe(tree, "/usr/sbin/lspci -v", true)) || (num = GetInfo_ReadfromPipe(tree, "/usr/local/sbin/lspci -v", true)) || (num = GetInfo_ReadfromPipe(tree, "/usr/bin/lspci -v", true))) return num; /* if lspci failed, read the contents of /proc/pci */ return GetInfo_ReadfromFile(tree, INFO_PCI, 0); }
bool GetInfo_PCI (QListView *lbox) { FILE *pipe; QFile *pcicontrol; QString s, cmd; QListViewItem *olditem = 0; pcicontrol = new QFile("/usr/sbin/pciconf"); if (!pcicontrol->exists()) { delete pcicontrol; pcicontrol = new QFile("/usr/X11R6/bin/scanpci"); if (!pcicontrol->exists()) { delete pcicontrol; pcicontrol = new QFile("/usr/X11R6/bin/pcitweak"); if (!pcicontrol->exists()) { QString s; s = i18n("Could not find any programs with which to query your system's PCI information"); (void) new QListViewItem(lbox, 0, s); delete pcicontrol; return true; } else { cmd = "/usr/X11R6/bin/pcitweak -l 2>&1"; } } else { cmd = "/usr/X11R6/bin/scanpci"; } } else { cmd = "/usr/sbin/pciconf -l -v 2>&1"; } delete pcicontrol; if ((pipe = popen(cmd.latin1(), "r")) == NULL) { s = i18n ("PCI subsystem could not be queried: %1 could not be executed").arg(cmd); olditem = new QListViewItem(lbox, olditem, s); } else { /* This prints out a list of all the pci devies, perhaps eventually we could parse it as opposed to schlepping it into a listbox */ pclose(pipe); GetInfo_ReadfromPipe(lbox, cmd.latin1(), true); } if (!lbox->childCount()) { s = i18n("The PCI subsystem could not be queried, this may need root privileges."); olditem = new QListViewItem(lbox, olditem, s); return true; } return true; }