dovecot-2.0: var_has_key(): Small code cleanup.

dovecot at dovecot.org dovecot at dovecot.org
Mon Apr 5 09:18:17 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/462376c65e73
changeset: 11073:462376c65e73
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Apr 05 09:17:31 2010 +0300
description:
var_has_key(): Small code cleanup.

diffstat:

 src/lib/var-expand.c |  28 +++++++++++++++++++++-------
 1 files changed, 21 insertions(+), 7 deletions(-)

diffs (48 lines):

diff -r 7d76f4a9c5c8 -r 462376c65e73 src/lib/var-expand.c
--- a/src/lib/var-expand.c	Mon Apr 05 09:16:56 2010 +0300
+++ b/src/lib/var-expand.c	Mon Apr 05 09:17:31 2010 +0300
@@ -332,9 +332,27 @@
 	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 @@
 			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;
 			}
 		}
 	}


More information about the dovecot-cvs mailing list