Version bump.
authorMike Frysinger <vapier@gentoo.org>
Sat, 6 Jan 2007 09:02:51 +0000 (09:02 +0000)
committerMike Frysinger <vapier@gentoo.org>
Sat, 6 Jan 2007 09:02:51 +0000 (09:02 +0000)
Package-Manager: portage-2.1.2_rc4-r6

sys-apps/pciutils/ChangeLog
sys-apps/pciutils/Manifest
sys-apps/pciutils/files/digest-pciutils-2.2.4 [new file with mode: 0644]
sys-apps/pciutils/files/pcimodules-pciutils-2.2.4.patch [new file with mode: 0644]
sys-apps/pciutils/pciutils-2.2.4.ebuild [new file with mode: 0644]

index 4b0c505fdbb68e92bd940067439388fe4bcd3d00..e3fd3314381b3496c9702d975abc256e5d353bd7 100644 (file)
@@ -1,6 +1,12 @@
 # ChangeLog for sys-apps/pciutils
 # Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/pciutils/ChangeLog,v 1.87 2007/01/02 13:02:16 gustavoz Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/pciutils/ChangeLog,v 1.88 2007/01/06 09:02:51 vapier Exp $
+
+*pciutils-2.2.4 (06 Jan 2007)
+
+  06 Jan 2007; Mike Frysinger <vapier@gentoo.org>
+  +files/pcimodules-pciutils-2.2.4.patch, +pciutils-2.2.4.ebuild:
+  Version bump.
 
   02 Jan 2007; Gustavo Zacarias <gustavoz@gentoo.org>
   pciutils-2.2.3-r2.ebuild:
index 7493cbe4cf729e2208561adf0585ad8d79216738..729096c2c15049bb0c06229bec1e45ff3308c0d6 100644 (file)
@@ -5,10 +5,10 @@ AUX pcimodules-pciutils-2.2.0.patch 10855 RMD160 3de80ff3017c6582af5d83c1c0e4698
 MD5 7460ee88d1643e8a87d04438bd4f5fdd files/pcimodules-pciutils-2.2.0.patch 10855
 RMD160 3de80ff3017c6582af5d83c1c0e46986abe1b47d files/pcimodules-pciutils-2.2.0.patch 10855
 SHA256 e80acd88775c6ed2af05e751d28aeddfa6836a0465f187a35d7ae9e5224827a5 files/pcimodules-pciutils-2.2.0.patch 10855
-AUX pciutils-2.2.0-shared-lib.patch 511 RMD160 c3d4553bb5a0070f3d0904669e1aff656cee74cc SHA1 f7681c43c229de9e2f2981d962d4f2e65e7f2fd3 SHA256 dcac8dd49d510459afa71addd6fcc3d25868061c8784c14c0bbbae215a19f3c9
-MD5 6c903c6d36593f991a2084d559b6b2cf files/pciutils-2.2.0-shared-lib.patch 511
-RMD160 c3d4553bb5a0070f3d0904669e1aff656cee74cc files/pciutils-2.2.0-shared-lib.patch 511
-SHA256 dcac8dd49d510459afa71addd6fcc3d25868061c8784c14c0bbbae215a19f3c9 files/pciutils-2.2.0-shared-lib.patch 511
+AUX pcimodules-pciutils-2.2.4.patch 11153 RMD160 587b034f79bddc81122b7fc99710f2742aaa7a42 SHA1 a82aec2eef7c9dfb273f3aa7f9b5196af7a1ec8c SHA256 bcbc0632cef5b8d8efb134a28ecbcc71e5cbf42fea3cd370a7c55cfc509d4b0e
+MD5 5ba1e41edbc3665b345226e557e212cb files/pcimodules-pciutils-2.2.4.patch 11153
+RMD160 587b034f79bddc81122b7fc99710f2742aaa7a42 files/pcimodules-pciutils-2.2.4.patch 11153
+SHA256 bcbc0632cef5b8d8efb134a28ecbcc71e5cbf42fea3cd370a7c55cfc509d4b0e files/pcimodules-pciutils-2.2.4.patch 11153
 AUX pciutils-2.2.3-build.patch 863 RMD160 0d3841a3b7893d73a9e08e48b36552b778c022bd SHA1 70aaf33dde28aa1d665eea69103cc119faea8723 SHA256 e05828e160524fd6df83d07520b8dc8e683eb817b48aefe78fb39c4337675cbd
 MD5 fbd8b592c81e7303b70e017701d30bf0 files/pciutils-2.2.3-build.patch 863
 RMD160 0d3841a3b7893d73a9e08e48b36552b778c022bd files/pciutils-2.2.3-build.patch 863
@@ -17,43 +17,34 @@ AUX pciutils.cron 39 RMD160 7dacb4dbca3f070a6d5b345789f693be90f93be2 SHA1 44a1c0
 MD5 c3b62d37547d69b21e95f35ed4c6ed7d files/pciutils.cron 39
 RMD160 7dacb4dbca3f070a6d5b345789f693be90f93be2 files/pciutils.cron 39
 SHA256 22d6d2b7652cbb619cdfcc66ba3c4940a87879e4ec02873aeb87ed90117c8960 files/pciutils.cron 39
-DIST pci.ids-20051015.bz2 98776 RMD160 4d694eab77f8f20c1771f364087b4514acdb16e4 SHA1 cca6215803d836258ef0da465da9b0fe50980d53 SHA256 b090d34b452ed4a37d531948003109e367aa7467f4a3a9a77920bc481cb4e9c9
-DIST pci.ids-20060608.bz2 108285 RMD160 0768e2232a6003711de498ef8e7df805d4c880c7 SHA1 ca8f12a439c422b9248c7bf81f0a228fc8f8d9fd SHA256 81418596523d437b260573d727d77130e91890f84265b58907f1175fa81224ed
-DIST pciutils-2.2.0.tar.gz 194290 RMD160 592666bfa29d750a3f5ad6a022d6951eb5fe4945 SHA1 db71fd2adc52795718ba32b8bf5448635eb38306 SHA256 9eab846b46e07080c5eb7a843a8d8f30d493bca22eb0a36d5c5dc39d426cd43e
 DIST pciutils-2.2.3.tar.gz 1121334 RMD160 429b3b21f4cb079c2f3620a4c4d14c6dc610a098 SHA1 114b811d176c125ebdd3d10b6e7bf6d09686b780 SHA256 e501df7734738d0625a3765498e1c4625a2fbaf408c86599eca2070c57bc4d4b
-EBUILD pciutils-2.2.0-r1.ebuild 1740 RMD160 4e7f6358227393ef1d8dbf2237bfb7df35d45475 SHA1 f93d9e5115453697a5f78bc6098af19fa83ce48a SHA256 984927b59613bf0672e011a79bb13b979c385a66dad1f6a1946e373a3abd441d
-MD5 c2f1bae899506b304ed34399f0d74c8c pciutils-2.2.0-r1.ebuild 1740
-RMD160 4e7f6358227393ef1d8dbf2237bfb7df35d45475 pciutils-2.2.0-r1.ebuild 1740
-SHA256 984927b59613bf0672e011a79bb13b979c385a66dad1f6a1946e373a3abd441d pciutils-2.2.0-r1.ebuild 1740
-EBUILD pciutils-2.2.3-r1.ebuild 1338 RMD160 d535074f58860bb5de46b3a16e78e0bdbfca6899 SHA1 aecc325030e61afb2c5fa6d197fbdeff72cc393a SHA256 a05505cc947b61c086543384643220c6186ce906abd0948fbaeb9d6acba37a63
-MD5 095aa3aa7d9df8465e0b760b00b6f112 pciutils-2.2.3-r1.ebuild 1338
-RMD160 d535074f58860bb5de46b3a16e78e0bdbfca6899 pciutils-2.2.3-r1.ebuild 1338
-SHA256 a05505cc947b61c086543384643220c6186ce906abd0948fbaeb9d6acba37a63 pciutils-2.2.3-r1.ebuild 1338
+DIST pciutils-2.2.4.tar.gz 210706 RMD160 27db4b23a07a02b28b64e01fbe1c74cefa887cc0 SHA1 c20dfa13bbd3d04ce921294c51e3da94140cea8b SHA256 62fc07f688c6d17f0cf8baa540e42be6117530360c2df491ec02031973506a9f
 EBUILD pciutils-2.2.3-r2.ebuild 1105 RMD160 a62ab053b2b06a6c97fd083a547a9109ec0888cb SHA1 21db88f7c178f928b7cac3aaf3f518f052f9038f SHA256 8292bfde52c50795fefc8d0f14a9a6ddd3c4fd628977e94759e33614a2822efb
 MD5 d523189f320d388c4efaebf6b7f96338 pciutils-2.2.3-r2.ebuild 1105
 RMD160 a62ab053b2b06a6c97fd083a547a9109ec0888cb pciutils-2.2.3-r2.ebuild 1105
 SHA256 8292bfde52c50795fefc8d0f14a9a6ddd3c4fd628977e94759e33614a2822efb pciutils-2.2.3-r2.ebuild 1105
-MISC ChangeLog 11321 RMD160 0049edd6bccf204fcde2c9526aeabfcc5f43f202 SHA1 16b58db3d463793d172329672d5d2d6e88f02e62 SHA256 2cef38a9f718b9c7a04191875152ced5086694363a4c76dd3344e3a63620eecb
-MD5 2f31271977eccb3b1eaed9038a460165 ChangeLog 11321
-RMD160 0049edd6bccf204fcde2c9526aeabfcc5f43f202 ChangeLog 11321
-SHA256 2cef38a9f718b9c7a04191875152ced5086694363a4c76dd3344e3a63620eecb ChangeLog 11321
+EBUILD pciutils-2.2.4.ebuild 1096 RMD160 4b6fcde9ea2d383228cfd6fb6befaa71486ae751 SHA1 34d3fed91d96231fcd2f0f1a80e7faec94196f99 SHA256 c4e44746595e48bf5a0ba3810199299b7f54c84340228b053d4bd0019bbd2911
+MD5 30c5fb911f4595f6b71716895c447549 pciutils-2.2.4.ebuild 1096
+RMD160 4b6fcde9ea2d383228cfd6fb6befaa71486ae751 pciutils-2.2.4.ebuild 1096
+SHA256 c4e44746595e48bf5a0ba3810199299b7f54c84340228b053d4bd0019bbd2911 pciutils-2.2.4.ebuild 1096
+MISC ChangeLog 11483 RMD160 b82d1fcf0efb463aa85ccb1ed3ffa2de4655b97d SHA1 b400cf81db9accdbfeeb76bb222b0b8b2d258371 SHA256 81aeb32dd38b3dabae467fa6247bfba7d604b1bddea6013039a740452a74c337
+MD5 9e4edb74b5e033216f510053057122bd ChangeLog 11483
+RMD160 b82d1fcf0efb463aa85ccb1ed3ffa2de4655b97d ChangeLog 11483
+SHA256 81aeb32dd38b3dabae467fa6247bfba7d604b1bddea6013039a740452a74c337 ChangeLog 11483
 MISC metadata.xml 164 RMD160 f43cbec30b7074319087c9acffdb9354b17b0db3 SHA1 9c213f5803676c56439df3716be07d6692588856 SHA256 f5f2891f2a4791cd31350bb2bb572131ad7235cd0eeb124c9912c187ac10ce92
 MD5 9a09f8d531c582e78977dbfd96edc1f2 metadata.xml 164
 RMD160 f43cbec30b7074319087c9acffdb9354b17b0db3 metadata.xml 164
 SHA256 f5f2891f2a4791cd31350bb2bb572131ad7235cd0eeb124c9912c187ac10ce92 metadata.xml 164
-MD5 5829e2afa6c7a703e25c48f9017cc701 files/digest-pciutils-2.2.0-r1 482
-RMD160 af4ed4ff9a655bf533c6bddebd9e97bc72e80fe7 files/digest-pciutils-2.2.0-r1 482
-SHA256 0b225c84d4c88c04a72d3eadebed04f04dcb2f49f80cc36db17dba7b7f04c714 files/digest-pciutils-2.2.0-r1 482
-MD5 b732720cadb97dd00e0795917204fb53 files/digest-pciutils-2.2.3-r1 488
-RMD160 4a75b00875f3a50f155f90f29857e00bd3e970d7 files/digest-pciutils-2.2.3-r1 488
-SHA256 9245c7a384f17782114ee6bcd739fded1c8c250cec9c5ebc560960bf817ffa33 files/digest-pciutils-2.2.3-r1 488
 MD5 7653d8545ad37062f9db5ba2caf4faef files/digest-pciutils-2.2.3-r2 247
 RMD160 cd5d4397f716996230bf7a1e3bbf534071874f9f files/digest-pciutils-2.2.3-r2 247
 SHA256 d324a01ceda5ec89460a4c5691661b105c38966ded150b3146bc00e806912993 files/digest-pciutils-2.2.3-r2 247
+MD5 8047d659733954340720ecb0b723fad1 files/digest-pciutils-2.2.4 244
+RMD160 8349223dbbf327febd748b605899805650b1bb85 files/digest-pciutils-2.2.4 244
+SHA256 ae83c0072554b83b7519828f5470144cfa69ca5605ed319117d5400896258701 files/digest-pciutils-2.2.4 244
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.1 (GNU/Linux)
 
-iD8DBQFFn2OZ8bi6rjpTunYRAonCAJ9XxYdFLIl3eXYtXzho3jYNDNi8ywCdGR+k
-DZVRAyoMbrLOFJWr8YCsioo=
-=OPZl
+iD8DBQFFn2XI8bi6rjpTunYRArWxAJ4lQaUa4VQNakPXeen5fOLKa9+gNACeJELJ
+5yNCCyRL0QELkK/kpvAJNZk=
+=kkse
 -----END PGP SIGNATURE-----
diff --git a/sys-apps/pciutils/files/digest-pciutils-2.2.4 b/sys-apps/pciutils/files/digest-pciutils-2.2.4
new file mode 100644 (file)
index 0000000..1ce6822
--- /dev/null
@@ -0,0 +1,3 @@
+MD5 5629fdb049f189fb853e7021f85553d2 pciutils-2.2.4.tar.gz 210706
+RMD160 27db4b23a07a02b28b64e01fbe1c74cefa887cc0 pciutils-2.2.4.tar.gz 210706
+SHA256 62fc07f688c6d17f0cf8baa540e42be6117530360c2df491ec02031973506a9f pciutils-2.2.4.tar.gz 210706
diff --git a/sys-apps/pciutils/files/pcimodules-pciutils-2.2.4.patch b/sys-apps/pciutils/files/pcimodules-pciutils-2.2.4.patch
new file mode 100644 (file)
index 0000000..369c494
--- /dev/null
@@ -0,0 +1,340 @@
+--- pciutils-2.2.4/lspci.c
++++ pciutils-2.2.4/lspci.c
+@@ -113,8 +113,10 @@ scan_device(struct pci_dev *p)
+   d->config = xmalloc(64);
+   d->present = xmalloc(64);
+   memset(d->present, 1, 64);
+-  if (!pci_read_block(p, 0, d->config, 64))
+-    die("Unable to read the standard configuration space header");
++  if (!pci_read_block(p, 0, d->config, 64)) {
++    fprintf(stderr, "Unable to read the standard configuration space header");
++      return NULL;
++  }
+   if ((d->config[PCI_HEADER_TYPE] & 0x7f) == PCI_HEADER_TYPE_CARDBUS)
+     {
+       /* For cardbus bridges, we need to fetch 64 bytes more to get the
+--- pciutils-2.2.4/Makefile
++++ pciutils-2.2.4/Makefile
+@@ -24,7 +24,7 @@
+ export
+-all: $(PCILIB) lspci setpci lspci.8 setpci.8 update-pciids update-pciids.8 $(PCI_IDS)
++all: $(PCILIB) lspci setpci pcimodules lspci.8 setpci.8 update-pciids update-pciids.8 pcimodules.8 $(PCI_IDS)
+ $(PCILIB): $(PCIINC) force
+       $(MAKE) -C lib all
+@@ -34,9 +34,11 @@
+ lib/config.h lib/config.mk:
+       cd lib && ./configure "$(IDSDIR)" "$(VERSION)" "$(HOST)" "$(RELEASE)" "$(ZLIB)"
++pcimodules: pcimodules.o common.o $(PCILIB)
+ lspci: lspci.o common.o $(PCILIB)
+ setpci: setpci.o common.o $(PCILIB)
++pcimodules.o: pcimodules.c pciutils.h $(PCIINC)
+ lspci.o: lspci.c pciutils.h $(PCIINC)
+ setpci.o: setpci.c pciutils.h $(PCIINC)
+ common.o: common.c pciutils.h $(PCIINC)
+@@ -58,15 +60,15 @@
+ install: all
+ # -c is ignored on Linux, but required on FreeBSD
+       $(DIRINSTALL) -m 755 $(DESTDIR)$(SBINDIR) $(DESTDIR)$(IDSDIR) $(DESTDIR)$(MANDIR)/man8
+-      $(INSTALL) -c -m 755 -s lspci setpci $(DESTDIR)$(SBINDIR)
++      $(INSTALL) -c -m 755 lspci setpci pcimodules $(DESTDIR)$(SBINDIR)
+       $(INSTALL) -c -m 755 update-pciids $(DESTDIR)$(SBINDIR)
+       $(INSTALL) -c -m 644 $(PCI_IDS) $(DESTDIR)$(IDSDIR)
+-      $(INSTALL) -c -m 644 lspci.8 setpci.8 update-pciids.8 $(DESTDIR)$(MANDIR)/man8
++      $(INSTALL) -c -m 644 lspci.8 setpci.8 update-pciids.8 pcimodules.8 $(DESTDIR)$(MANDIR)/man8
+ uninstall: all
+-      rm -f $(DESTDIR)$(SBINDIR)/lspci $(DESTDIR)$(SBINDIR)/setpci $(DESTDIR)$(SBINDIR)/update-pciids
++      rm -f $(DESTDIR)$(SBINDIR)/lspci $(DESTDIR)$(SBINDIR)/setpci $(DESTDIR)$(SBINDIR)/update-pciids $(DESTDIR)$(SBINDIR)/pcimodules
+       rm -f $(DESTDIR)$(IDSDIR)/$(PCI_IDS)
+-      rm -f $(DESTDIR)$(MANDIR)/man8/lspci.8 $(DESTDIR)$(MANDIR)/man8/setpci.8 $(DESTDIR)$(MANDIR)/man8/update-pciids.8
++      rm -f $(DESTDIR)$(MANDIR)/man8/lspci.8 $(DESTDIR)$(MANDIR)/man8/setpci.8 $(DESTDIR)$(MANDIR)/man8/update-pciids.8 $(DESTDIR)$(MANDIR)/man8/pcimodules.8
+ pci.ids.gz: pci.ids
+       gzip -9 <$< >$@
+--- pciutils-2.2.4/pcimodules.c
++++ pciutils-2.2.4/pcimodules.c
+@@ -0,0 +1,184 @@
++/*
++ *    pcimodules:  Load all kernel modules for PCI device currently
++ *      plugged into any PCI slot.
++ *
++ *    Copyright 2000 Yggdrasil Computing, Incorporated
++ *    This file may be copied under the terms and conditions of version 
++ *      two of the GNU General Public License, as published by the Free
++ *      Software Foundation (Cambridge, Massachusetts, USA).
++ *
++ *      This file is based on pciutils/lib/example.c, which has the following
++ *      authorship and copyright statement:
++ *
++ *            Written by Martin Mares and put to public domain. You can do
++ *            with it anything you want, but I don't give you any warranty.
++ */
++
++#include <stdlib.h>
++#include <stdio.h>
++#include <string.h>
++#include <unistd.h>
++#include <sys/utsname.h>
++#include <sys/param.h>
++#include <sys/types.h>
++
++#define _GNU_SOURCE
++#include <getopt.h>
++
++#include "pciutils.h"
++
++#define MODDIR        "/lib/modules"
++#define PCIMAP        "modules.pcimap"
++
++#define LINELENGTH    8000 
++
++#define DEVICE_ANY    0xffffffff
++#define VENDOR_ANY    0xffffffff
++
++#include "lib/pci.h"
++
++struct pcimap_entry {
++      unsigned int vendor, subsys_vendor, dev, subsys_dev, class, class_mask;
++      char *module;
++      struct pcimap_entry *next;
++};
++
++static struct pcimap_entry *pcimap_list = NULL;
++
++const char program_name[] = "pcimodules";
++
++#define OPT_STRING "h"
++static struct option long_options[] = {
++      {"class",       required_argument,      NULL, 'c'},
++      {"classmask",   required_argument,      NULL, 'm'},
++      {"help",        no_argument,            NULL, 'h'},
++      { 0,            0,                      0,      0}
++};
++
++static unsigned long desired_class;
++static unsigned long desired_classmask; /* Default is 0: accept all classes.*/
++
++static void
++read_pcimap(void)
++{
++      struct utsname utsname;
++      char filename[MAXPATHLEN];
++      FILE *pcimap_file;
++      char line[LINELENGTH];
++      struct pcimap_entry *entry;
++      unsigned int driver_data;
++      char *prevmodule = "";
++      char module[LINELENGTH];
++
++      if (uname(&utsname) < 0) {
++              perror("uname");
++              exit(1);
++      }
++      sprintf(filename, "%s/%s/%s", MODDIR, utsname.release, PCIMAP);
++      if ((pcimap_file = fopen(filename, "r")) == NULL) {
++              perror(filename);
++              exit(1);
++      }
++
++      while(fgets(line, LINELENGTH, pcimap_file) != NULL) {
++              if (line[0] == '#')
++                      continue;
++
++              entry = xmalloc(sizeof(struct pcimap_entry));
++
++              if (sscanf(line, "%s 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x",
++                         module,
++                         &entry->vendor, &entry->dev,
++                         &entry->subsys_vendor, &entry->subsys_dev,
++                         &entry->class, &entry->class_mask,
++                         &driver_data) != 8) {
++                      fprintf (stderr,
++                              "modules.pcimap unparsable line: %s.\n", line);
++                      free(entry);
++                      continue;
++              }
++
++              /* Optimize memory allocation a bit, in case someday we
++                 have Linux systems with ~100,000 modules.  It also
++                 allows us to just compare pointers to avoid trying
++                 to load a module twice. */
++              if (strcmp(module, prevmodule) != 0) {
++                      prevmodule = xmalloc(strlen(module)+1);
++                      strcpy(prevmodule, module);
++              }
++              entry->module = prevmodule;
++              entry->next = pcimap_list;
++              pcimap_list = entry;
++      }
++      fclose(pcimap_file);
++}
++
++/* Return a filled in pci_access->dev tree, with the device classes
++   stored in dev->aux.
++*/
++static void
++match_pci_modules(void)
++{
++      struct pci_access *pacc;
++      struct pci_dev *dev;
++      unsigned int class, subsys_dev, subsys_vendor;
++      struct pcimap_entry *map;
++      const char *prevmodule = "";
++
++      pacc = pci_alloc();             /* Get the pci_access structure */
++      /* Set all options you want -- here we stick with the defaults */
++      pci_init(pacc);         /* Initialize the PCI library */
++      pci_scan_bus(pacc);     /* We want to get the list of devices */
++      for(dev=pacc->devices; dev; dev=dev->next) {
++              pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_BASES);
++              class = (pci_read_word(dev, PCI_CLASS_DEVICE) << 8)
++                      | pci_read_byte(dev, PCI_CLASS_PROG);
++              subsys_dev = pci_read_word(dev, PCI_SUBSYSTEM_ID);
++              subsys_vendor = pci_read_word(dev,PCI_SUBSYSTEM_VENDOR_ID);
++              for(map = pcimap_list; map != NULL; map = map->next) {
++                      if (((map->class ^ class) & map->class_mask) == 0 &&
++                          ((desired_class ^ class) & desired_classmask)==0 &&
++                          (map->dev == DEVICE_ANY ||
++                           map->dev == dev->device_id) &&
++                          (map->vendor == VENDOR_ANY ||
++                           map->vendor == dev->vendor_id) &&
++                          (map->subsys_dev == DEVICE_ANY ||
++                           map->subsys_dev == subsys_dev) &&
++                          (map->subsys_vendor == VENDOR_ANY ||
++                           map->subsys_vendor == subsys_vendor) &&
++                          prevmodule != map->module) {
++                              printf("%s\n", map->module);
++                              prevmodule = map->module;
++                      }
++              }
++
++      }
++      pci_cleanup(pacc);
++}
++
++int
++main (int argc, char **argv)
++{
++      int opt_index = 0;
++      int opt;
++
++      while ((opt = getopt_long(argc, argv, OPT_STRING, long_options,
++                         &opt_index)) != -1) {
++              switch(opt) {
++                      case 'c':
++                              desired_class = strtol(optarg, NULL, 0);
++                              break;
++                      case 'm':
++                              desired_classmask = strtol(optarg, NULL, 0);
++                              break;
++                      case 'h':
++                              printf ("Usage: pcimodules [--help]\n"
++                                      "  Lists kernel modules corresponding to PCI devices currently plugged"
++                                      "  into the computer.\n");
++              }
++      }       
++
++      read_pcimap();
++      match_pci_modules();
++      return 0;
++}
+--- pciutils-2.2.4/pcimodules.man
++++ pciutils-2.2.4/pcimodules.man
+@@ -0,0 +1,92 @@
++.TH pcimodules 8 "@TODAY@" "@VERSION@" "Linux PCI Utilities"
++.IX pcimodules
++.SH NAME
++pcimodules \- List kernel driver modules available for all currently plugged
++in PCI devices
++.SH SYNOPSIS
++.B pcimodules
++.RB [ --class class_id ]
++.RB [ --classmask mask ]
++.RB [ --help ]
++.SH DESCRIPTION
++.B pcimodules
++lists all driver modules for all currently plugged in PCI devices.
++.B pcimodules
++should be run at boot time, and whenever a PCI device is "hot plugged"
++into the system.  This can be done by the following Bourne shell syntax:
++.IP
++      for module in $(pcimodules) ; do
++.IP
++              modprobe -s -k "$module"
++.IP
++      done
++.PP
++When a PCI device is removed from the system, the Linux kernel will
++decrement a usage count on PCI driver module.  If this count drops
++to zero (i.e., there are no PCI drivers), then the
++.B modprobe -r
++process that is normally configured to run from cron every few minutes
++will eventually remove the unneeded module.
++.PP
++The --class and --classmask arguments can be used to limit the search
++to certain classes of PCI devices.  This is useful, for example, to
++generate a list of ethernet card drivers to be loaded when the kernel
++has indicated that it is trying to resolve an unknown network interface.
++.PP
++Modules are listed in the order in which the PCI devices are physically
++arranged so that the computer owner can arrange things like having scsi
++device 0 be on a controller that is not alphabetically the first scsi
++controller.
++.SH OPTIONS
++.TP
++.B --class class --classmask mask
++.PP
++--class and --classmask limit the search to PCI
++cards in particular classes.  These arguments are always used together.
++The arguments to --class and --classmask
++can be given as hexadecimal numbers by prefixing a leading "0x".
++Note that the classes used by pcimodules are in "Linux" format,
++meaning the class value that you see with lspci would be shifted
++left eight bits, with the new low eight bits programming interface ID.
++An examples of how to use class and classmask is provided below.
++.B --help, -h
++Print a help message and exit.
++.SH EXAMPLES
++.TP
++pcimodules
++lists all modules corresponding to currently plugged in PCI devices.
++.TP
++pcimodules --class 0x200000 --classmask 0xffff00
++lists all modules corresponding to currently plugged in ethernet PCI devices.
++.SH FILES
++.TP
++.B /lib/modules/<kernel-version>/modules.pcimap
++This file is automatically generated by
++.B depmod,
++and used by
++.B pcimodules
++to determine which modules correspond to which PCI ID's.
++.TP
++.B /proc/bus/pci
++An interface to PCI bus configuration space provided by the post-2.1.82 Linux
++kernels. Contains per-bus subdirectories with per-card config space files and a
++.I devices
++file containing a list of all PCI devices.
++
++.SH SEE ALSO
++.BR lspci (8)
++
++.SH MAINTAINER
++The Linux PCI Utilities are maintained by Martin Mares <mj@suse.cz>.
++
++.SH AUTHOR
++.B pcimodules
++was written by Adam J. Richter <adam@yggdrasil.com>, based on public
++domain example code by Martin Mares <mj@suse.cz>.
++
++.SH COPYRIGHT
++.B pcimodules
++is copyright 2000, Yggdrasil Computing, Incorporated, and may
++be copied under the terms and conditions of version 2 of the GNU
++General Public License as published by the Free Software Foundation
++(Cambrige, Massachusetts, United States of America).
diff --git a/sys-apps/pciutils/pciutils-2.2.4.ebuild b/sys-apps/pciutils/pciutils-2.2.4.ebuild
new file mode 100644 (file)
index 0000000..1f0f501
--- /dev/null
@@ -0,0 +1,39 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/pciutils/pciutils-2.2.4.ebuild,v 1.1 2007/01/06 09:02:51 vapier Exp $
+
+inherit eutils flag-o-matic toolchain-funcs
+
+DESCRIPTION="Various utilities dealing with the PCI bus"
+HOMEPAGE="http://atrey.karlin.mff.cuni.cz/~mj/pciutils.html"
+SRC_URI="ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd"
+IUSE=""
+
+DEPEND=""
+
+src_unpack() {
+       unpack ${A}
+       cd "${S}"
+       epatch "${FILESDIR}"/${PN}-2.2.3-build.patch
+       epatch "${FILESDIR}"/pcimodules-${PN}-2.2.4.patch
+}
+
+src_compile() {
+       tc-export AR CC RANLIB
+       emake OPT="${CFLAGS}" || die "emake failed"
+}
+
+src_install() {
+       emake install DESTDIR="${D}" || die
+
+       dolib lib/libpci.* || die "libpci failed"
+       insinto /usr/include/pci
+       doins lib/{config,header,pci,types}.h || die "headers failed"
+
+       exeinto /etc/cron.monthly
+       newexe "${FILESDIR}"/pciutils.cron update-pciids || die
+}