diff options
author | Filipe Brandenburger <filbranden@google.com> | 2015-11-06 06:41:04 +0100 |
---|---|---|
committer | Filipe Brandenburger <filbranden@google.com> | 2015-11-06 06:41:04 +0100 |
commit | 93de9eb76d628cf731120d97332e03600c167271 (patch) | |
tree | ce7e6e0831848996f50dd1060b1c5cc4fd9bb50a /src/basic/extract-word.c | |
parent | extract-word: Check for early bail out before inspecting separators (diff) | |
download | systemd-93de9eb76d628cf731120d97332e03600c167271.tar.xz systemd-93de9eb76d628cf731120d97332e03600c167271.zip |
extract-word: increment pointer p and keep c in sync in for loop
This will make it easier to use inner loops to keep looping in the same
state, by just updating p and c in the same way in the inner loops.
Tested that no regressions were created in test-extract-word.
Diffstat (limited to 'src/basic/extract-word.c')
-rw-r--r-- | src/basic/extract-word.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/basic/extract-word.c b/src/basic/extract-word.c index b08851b89b..b0056a8485 100644 --- a/src/basic/extract-word.c +++ b/src/basic/extract-word.c @@ -42,6 +42,7 @@ int extract_first_word(const char **p, char **ret, const char *separators, Extra /* Bail early if called after last value or with no input */ if (!*p) goto finish_force_terminate; + c = **p; if (!separators) separators = WHITESPACE; @@ -55,14 +56,14 @@ int extract_first_word(const char **p, char **ret, const char *separators, Extra if (!GREEDY_REALLOC(s, allocated, sz+1)) return -ENOMEM; - for (;;) { - c = **p; + for (;; (*p) ++, c = **p) { if (c == 0) goto finish_force_terminate; else if (strchr(separators, c)) { - (*p) ++; - if (flags & EXTRACT_DONT_COALESCE_SEPARATORS) + if (flags & EXTRACT_DONT_COALESCE_SEPARATORS) { + (*p) ++; goto finish_force_next; + } } else { /* We found a non-blank character, so we will always * want to return a string (even if it is empty), @@ -73,9 +74,7 @@ int extract_first_word(const char **p, char **ret, const char *separators, Extra } } - for (;;) { - c = **p; - + for (;; (*p) ++, c = **p) { if (backslash) { if (!GREEDY_REALLOC(s, allocated, sz+7)) return -ENOMEM; @@ -163,8 +162,6 @@ int extract_first_word(const char **p, char **ret, const char *separators, Extra s[sz++] = c; } } - - (*p) ++; } finish_force_terminate: |