Gentoo Archives: gentoo-commits

From: "Ned Ludd (solar)" <solar@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-projects commit in portage-utils: qpkg.c
Date: Sun, 08 Jan 2012 09:53:47
Message-Id: 20120108095335.B63F42004B@flycatcher.gentoo.org
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);