aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Groffen <grobian@gentoo.org>2020-01-01 20:52:01 +0100
committerFabian Groffen <grobian@gentoo.org>2020-01-01 20:52:01 +0100
commit6d6c6c1c7c066ce642b58190c4d6df5a6e5e1a40 (patch)
treeed4324f10beba6c1d0d77e6183225f6a9f219508
parent*: use new PF in places were it was simulated (diff)
downloadportage-utils-6d6c6c1c7c066ce642b58190c4d6df5a6e5e1a40.tar.gz
portage-utils-6d6c6c1c7c066ce642b58190c4d6df5a6e5e1a40.tar.bz2
portage-utils-6d6c6c1c7c066ce642b58190c4d6df5a6e5e1a40.zip
libq/dep: fix parsing of USE-deps
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
-rw-r--r--TODO.md3
-rw-r--r--libq/dep.c14
2 files changed, 11 insertions, 6 deletions
diff --git a/TODO.md b/TODO.md
index cd4f2b26..191e91cc 100644
--- a/TODO.md
+++ b/TODO.md
@@ -48,9 +48,6 @@
# qdepends
-- add -S/-v/-R behavior like qlist #574934
-- bring back -k? (but seems solved by using qlist -IF%{SLOT} pkg)
-- -Qt acts weird (if not, incorrect)
- -v should lookup whether packages are installed for || cases/colouring
# qpkg
diff --git a/libq/dep.c b/libq/dep.c
index 49edf103..05073268 100644
--- a/libq/dep.c
+++ b/libq/dep.c
@@ -110,7 +110,8 @@ dep_grow_tree(const char *depend)
#define _maybe_consume_word(t) \
do { \
- if (!word) break; \
+ if (word == NULL) \
+ break; \
new_node = _dep_grow_node(t, word, ptr-word); \
if (!ret) \
ret = curr_node = new_node; \
@@ -124,8 +125,8 @@ dep_grow_tree(const char *depend)
} while (0)
saw_whitespace = true;
- for (ptr = depend; *ptr; ++ptr) {
- if (isspace(*ptr)) {
+ for (ptr = depend; *ptr != '\0'; ptr++) {
+ if (isspace((int)*ptr)) {
saw_whitespace = true;
_maybe_consume_word(DEP_NORM);
continue;
@@ -185,6 +186,13 @@ dep_grow_tree(const char *depend)
curr_attach = _DEP_NEIGH;
break;
}
+ case '[': {
+ /* USE-dep, seek to matching ']', since they cannot be
+ * nested, this is simple */
+ while (*ptr != '\0' && *ptr != ']')
+ ptr++;
+ break;
+ }
default:
if (!word)
word = ptr;