diff options
author | Fabian Groffen <grobian@gentoo.org> | 2020-01-01 20:52:01 +0100 |
---|---|---|
committer | Fabian Groffen <grobian@gentoo.org> | 2020-01-01 20:52:01 +0100 |
commit | 6d6c6c1c7c066ce642b58190c4d6df5a6e5e1a40 (patch) | |
tree | ed4324f10beba6c1d0d77e6183225f6a9f219508 | |
parent | *: use new PF in places were it was simulated (diff) | |
download | portage-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.md | 3 | ||||
-rw-r--r-- | libq/dep.c | 14 |
2 files changed, 11 insertions, 6 deletions
@@ -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 @@ -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; |