Gentoo Archives: gentoo-commits

From: "Mike Frysinger (vapier)" <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in sys-fs/udev/files: udev-175-zlib.patch
Date: Mon, 02 Jan 2012 22:10:37
Message-Id: 20120102221027.6D5DF2004C@flycatcher.gentoo.org
1 vapier 12/01/02 22:10:27
2
3 Added: udev-175-zlib.patch
4 Log:
5 Support reading of compressed pci/usb databases #360849 by Samuli Suominen.
6
7 (Portage version: 2.2.0_alpha81/cvs/Linux x86_64)
8
9 Revision Changes Path
10 1.1 sys-fs/udev/files/udev-175-zlib.patch
11
12 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-fs/udev/files/udev-175-zlib.patch?rev=1.1&view=markup
13 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-fs/udev/files/udev-175-zlib.patch?rev=1.1&content-type=text/plain
14
15 Index: udev-175-zlib.patch
16 ===================================================================
17 https://bugs.gentoo.org/360849
18
19 support opening the compressed pci/usb databases
20
21 --- a/extras/usb-db/usb-db.c
22 +++ b/extras/usb-db/usb-db.c
23 @@ -90,19 +90,60 @@
24 #define HEXCHARS "0123456789abcdefABCDEF"
25 #define WHITESPACE " \t\n\r"
26
27 +#ifdef USE_ZLIB
28 +
29 +#include <zlib.h>
30 +
31 +static ssize_t gz_getline(char **lineptr, size_t *n, void *stream)
32 +{
33 + if (!*lineptr)
34 + *lineptr = malloc(*n = 4096);
35 + if (!*lineptr)
36 + return -1;
37 + if (gzgets(stream, *lineptr, *n - 1)) {
38 + (*lineptr)[*n - 1] = '\0';
39 + /* should return strlen(*lineptr), but caller doesn't care */
40 + return 0;
41 + }
42 + return -1;
43 +}
44 +static int gz_fclose(void *stream)
45 +{
46 + return gzclose(stream);
47 +}
48 +
49 +static ssize_t stdio_getline(char **lineptr, size_t *n, void *stream)
50 +{
51 + return getline(lineptr, n, stream);
52 +}
53 +static int stdio_fclose(void *stream)
54 +{
55 + return fclose(stream);
56 +}
57 +
58 +#endif
59 +
60 static int lookup_vid_pid(
61 uint16_t vid,
62 uint16_t pid,
63 char **vendor,
64 char **product) {
65
66 - FILE *f;
67 + void *f;
68 int ret = -1;
69 int found_vendor = 0;
70 char *line = NULL;
71
72 *vendor = *product = NULL;
73
74 +#ifdef USE_ZLIB
75 + ssize_t (*getline)(char **lineptr, size_t *n, void *stream) = stdio_getline;
76 + int (*fclose)(void *stream) = stdio_fclose;
77 + if ((f = gzopen(DATABASE ".gz", "r"))) {
78 + getline = gz_getline;
79 + fclose = gz_fclose;
80 + } else
81 +#endif
82 if (!(f = fopen(DATABASE, "r"))) {
83 fprintf(stderr, "Failed to open database file "DATABASE": %s\n", strerror(errno));
84 return -1;
85 @@ -111,11 +152,6 @@
86 for (;;) {
87 size_t n;
88
89 - if (line) {
90 - free(line);
91 - line = NULL;
92 - }
93 -
94 if (getline(&line, &n, f) < 0)
95 break;
96
97 --- a/Makefile.in
98 +++ b/Makefile.in
99 @@ -987,7 +987,7 @@
100 # ------------------------------------------------------------------------------
101 @ENABLE_HWDB_TRUE@extras_usb_db_usb_db_SOURCES = extras/usb-db/usb-db.c
102 -@ENABLE_HWDB_TRUE@extras_usb_db_usb_db_CPPFLAGS = $(AM_CPPFLAGS) -DUSB_DATABASE=\"$(USB_DATABASE)\" -DBUILD_FOR_USB
103 +@ENABLE_HWDB_TRUE@extras_usb_db_usb_db_CPPFLAGS = $(AM_CPPFLAGS) -DUSB_DATABASE=\"$(USB_DATABASE)\" -DBUILD_FOR_USB -DUSE_ZLIB
104 -@ENABLE_HWDB_TRUE@extras_usb_db_usb_db_LDADD = libudev/libudev-private.la
105 +@ENABLE_HWDB_TRUE@extras_usb_db_usb_db_LDADD = libudev/libudev-private.la -lz
106 @ENABLE_HWDB_TRUE@extras_usb_db_pci_db_SOURCES = extras/usb-db/usb-db.c
107 -@ENABLE_HWDB_TRUE@extras_usb_db_pci_db_CPPFLAGS = $(AM_CPPFLAGS) -DPCI_DATABASE=\"$(PCI_DATABASE)\" -DBUILD_FOR_PCI
108 +@ENABLE_HWDB_TRUE@extras_usb_db_pci_db_CPPFLAGS = $(AM_CPPFLAGS) -DPCI_DATABASE=\"$(PCI_DATABASE)\" -DBUILD_FOR_PCI -DUSE_ZLIB
109 -@ENABLE_HWDB_TRUE@extras_usb_db_pci_db_LDADD = libudev/libudev-private.la
110 +@ENABLE_HWDB_TRUE@extras_usb_db_pci_db_LDADD = libudev/libudev-private.la -lz