Gentoo Archives: gentoo-commits

From: Fabian Groffen <grobian@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage-utils:master commit in: libq/
Date: Sun, 28 Apr 2019 17:10:21
Message-Id: 1556471391.8b633323765e129644ad9a4d93e0d6c467927aa4.grobian@gentoo
1 commit: 8b633323765e129644ad9a4d93e0d6c467927aa4
2 Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
3 AuthorDate: Sun Apr 28 16:49:37 2019 +0000
4 Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
5 CommitDate: Sun Apr 28 17:09:51 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=8b633323
7
8 libq/vdb: implement q_vdb_filter_pkg following PMS
9
10 exclude things like Metadata.gz and other random cruft by following PMS
11 package name descriptions
12
13 Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
14
15 libq/vdb.c | 30 +++++++++++++++++++++++++++---
16 1 file changed, 27 insertions(+), 3 deletions(-)
17
18 diff --git a/libq/vdb.c b/libq/vdb.c
19 index 34edfd2..447bd6f 100644
20 --- a/libq/vdb.c
21 +++ b/libq/vdb.c
22 @@ -88,6 +88,7 @@ q_vdb_filter_cat(const struct dirent *de)
23 bool founddash;
24
25 #ifdef DT_UNKNOWN
26 + /* cat must be a dir */
27 if (de->d_type != DT_UNKNOWN &&
28 de->d_type != DT_DIR &&
29 de->d_type != DT_LNK)
30 @@ -204,10 +205,33 @@ q_vdb_close_cat(q_vdb_cat_ctx *cat_ctx)
31 int
32 q_vdb_filter_pkg(const struct dirent *de)
33 {
34 - if (de->d_name[0] == '.' || de->d_name[0] == '-')
35 - return 0;
36 + int i;
37 + bool founddash = false;
38
39 - return 1;
40 + /* PMS 3.1.2 */
41 + for (i = 0; de->d_name[i] != '\0'; i++) {
42 + switch (de->d_name[i]) {
43 + case '_':
44 + break;
45 + case '-':
46 + founddash = true;
47 + /* fall through */
48 + case '+':
49 + if (i)
50 + break;
51 + return 0;
52 + default:
53 + if ((de->d_name[i] >= 'A' && de->d_name[i] <= 'Z') ||
54 + (de->d_name[i] >= 'a' && de->d_name[i] <= 'z') ||
55 + (de->d_name[i] >= '0' && de->d_name[i] <= '9'))
56 + break;
57 + if (founddash)
58 + return 1;
59 + return 0;
60 + }
61 + }
62 +
63 + return i;
64 }
65
66 q_vdb_pkg_ctx *