From: Timo Sirainen Date: Mon, 5 Apr 2010 06:17:31 +0000 (+0300) Subject: var_has_key(): Small code cleanup. X-Git-Tag: 2.0.beta5~201 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=771178a5c5285aa596723591271c8936c4007f1b;p=thirdparty%2Fdovecot%2Fcore.git var_has_key(): Small code cleanup. --HG-- branch : HEAD --- diff --git a/src/lib/var-expand.c b/src/lib/var-expand.c index 5d33f15b2e..2e5fae9a57 100644 --- a/src/lib/var-expand.c +++ b/src/lib/var-expand.c @@ -332,9 +332,27 @@ char var_get_key(const char *str) return *str; } +static bool var_has_long_key(const char **str, const char *long_key) +{ + const char *start, *end; + + start = strchr(*str, '{'); + i_assert(start != NULL); + + end = strchr(++start, '}'); + if (end == NULL) + return FALSE; + + if (strncmp(start, long_key, end-start) == 0 && + long_key[end-start] == '\0') + return TRUE; + + *str = end; + return FALSE; +} + bool var_has_key(const char *str, char key, const char *long_key) { - const char *end; char c; for (; *str != '\0'; str++) { @@ -344,13 +362,9 @@ bool var_has_key(const char *str, char key, const char *long_key) if (c == key) return TRUE; - if (c == '{' && long_key != NULL && - (str = strchr(str, '{')) != NULL && - (end = strchr(++str, '}')) != NULL) { - if (strncmp(str, long_key, end-str) == 0 && - long_key[end-str] == '\0') + if (c == '{' && long_key != NULL) { + if (var_has_long_key(&str, long_key)) return TRUE; - str = end; } } }