1 |
solar 12/01/08 09:53:35 |
2 |
|
3 |
Modified: qpkg.c |
4 |
Log: |
5 |
Add basic PKG_INSTALL_MASK support for qpkg |
6 |
|
7 |
Revision Changes Path |
8 |
1.37 portage-utils/qpkg.c |
9 |
|
10 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?rev=1.37&view=markup |
11 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?rev=1.37&content-type=text/plain |
12 |
diff : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/qpkg.c?r1=1.36&r2=1.37 |
13 |
|
14 |
Index: qpkg.c |
15 |
=================================================================== |
16 |
RCS file: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v |
17 |
retrieving revision 1.36 |
18 |
retrieving revision 1.37 |
19 |
diff -u -r1.36 -r1.37 |
20 |
--- qpkg.c 18 Dec 2011 06:31:29 -0000 1.36 |
21 |
+++ qpkg.c 8 Jan 2012 09:53:35 -0000 1.37 |
22 |
@@ -1,14 +1,16 @@ |
23 |
/* |
24 |
* Copyright 2005-2010 Gentoo Foundation |
25 |
* Distributed under the terms of the GNU General Public License v2 |
26 |
- * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.36 2011/12/18 06:31:29 vapier Exp $ |
27 |
+ * $Header: /var/cvsroot/gentoo-projects/portage-utils/qpkg.c,v 1.37 2012/01/08 09:53:35 solar Exp $ |
28 |
* |
29 |
- * Copyright 2005-2010 Ned Ludd - <solar@g.o> |
30 |
+ * Copyright 2005-2010 Ned Ludd - <solar@g.o> |
31 |
* Copyright 2005-2010 Mike Frysinger - <vapier@g.o> |
32 |
*/ |
33 |
|
34 |
#ifdef APPLET_qpkg |
35 |
|
36 |
+#include <fnmatch.h> |
37 |
+ |
38 |
#define QPKG_FLAGS "cEpP:" COMMON_FLAGS |
39 |
static struct option const qpkg_long_opts[] = { |
40 |
{"clean", no_argument, NULL, 'c'}, |
41 |
@@ -24,7 +26,7 @@ |
42 |
"alternate package directory", |
43 |
COMMON_OPTS_HELP |
44 |
}; |
45 |
-static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.36 2011/12/18 06:31:29 vapier Exp $"; |
46 |
+static const char qpkg_rcsid[] = "$Id: qpkg.c,v 1.37 2012/01/08 09:53:35 solar Exp $"; |
47 |
#define qpkg_usage(ret) usage(ret, QPKG_FLAGS, qpkg_long_opts, qpkg_opts_help, lookup_applet_idx("qpkg")) |
48 |
|
49 |
extern char pretend; |
50 |
@@ -42,8 +44,8 @@ |
51 |
/* checks to make sure this is a .tbz2 file. used by scandir() */ |
52 |
int filter_tbz2(const struct dirent *dentry) |
53 |
{ |
54 |
- if (dentry->d_name[0] == '.') |
55 |
- return 0; |
56 |
+ if (dentry->d_name[0] == '.') |
57 |
+ return 0; |
58 |
if (strlen(dentry->d_name) < 6) |
59 |
return 0; |
60 |
return !strcmp(".tbz2", dentry->d_name + strlen(dentry->d_name) - 5); |
61 |
@@ -198,6 +200,29 @@ |
62 |
return qpkg_bindir; |
63 |
} |
64 |
|
65 |
+int check_pkg_install_mask(char *name); |
66 |
+int check_pkg_install_mask(char *name) |
67 |
+{ |
68 |
+ int i, iargc, ret; |
69 |
+ char **iargv; |
70 |
+ |
71 |
+ i = iargc = ret = 0; |
72 |
+ |
73 |
+ if (*name != '/') |
74 |
+ return ret; |
75 |
+ |
76 |
+ makeargv(pkg_install_mask, &iargc, &iargv); |
77 |
+ |
78 |
+ for (i = 1; i < iargc; i++) { |
79 |
+ if (fnmatch(iargv[i], name, 0) != 0) |
80 |
+ continue; |
81 |
+ ret = 1; |
82 |
+ break; |
83 |
+ } |
84 |
+ freeargv(iargc, iargv); |
85 |
+ return ret; |
86 |
+} |
87 |
+ |
88 |
int qpkg_make(depend_atom *atom) |
89 |
{ |
90 |
FILE *fp, *out; |
91 |
@@ -237,6 +262,8 @@ |
92 |
e = contents_parse_line(buf); |
93 |
if (!e || e->type == CONTENTS_DIR) |
94 |
continue; |
95 |
+ if (check_pkg_install_mask(e->name) != 0) |
96 |
+ continue; |
97 |
fprintf(out, "%s\n", e->name+1); /* dont output leading / */ |
98 |
if (e->type == CONTENTS_OBJ && verbose) { |
99 |
char *hash = (char *)hash_file(e->name, HASH_MD5); |