[ltrace-commits] 02/03: Use try_parse_kwd to when parsing built-in types

Petr Machata pmachata-guest at moszumanska.debian.org
Mon Apr 20 07:48:00 UTC 2015


This is an automated email from the git hooks/post-receive script.

pmachata-guest pushed a commit to branch master
in repository ltrace.

commit ea8c09d8e79f47a61517388fa7fccfaec82e4b7b
Author: Petr Machata <pmachata at redhat.com>
Date:   Mon Apr 20 09:46:06 2015 +0200

    Use try_parse_kwd to when parsing built-in types
---
 read_config_file.c | 32 ++++++++++----------------------
 1 file changed, 10 insertions(+), 22 deletions(-)

diff --git a/read_config_file.c b/read_config_file.c
index 6c48b38..fc90ebd 100644
--- a/read_config_file.c
+++ b/read_config_file.c
@@ -81,21 +81,19 @@ static struct arg_type_info *parse_lens(struct protolib *plib,
 static int parse_enum(struct protolib *plib, struct locus *loc,
 		      char **str, struct arg_type_info **retp, int *ownp);
 
+static int try_parse_kwd(char **str, const char *kwd);
+
 struct prototype *list_of_functions = NULL;
 
 static int
 parse_arg_type(char **name, enum arg_type *ret)
 {
-	char *rest = NULL;
-	enum arg_type candidate;
-
-#define KEYWORD(KWD, TYPE)						\
-	do {								\
-		if (strncmp(*name, KWD, sizeof(KWD) - 1) == 0) {	\
-			rest = *name + sizeof(KWD) - 1;			\
-			candidate = TYPE;				\
-			goto ok;					\
-		}							\
+#define KEYWORD(KWD, TYPE)					\
+	do {							\
+		if (try_parse_kwd(name, KWD) >= 0) {		\
+			*ret = TYPE;				\
+			return 0;				\
+		}						\
 	} while (0)
 
 	KEYWORD("void", ARGTYPE_VOID);
@@ -114,19 +112,9 @@ parse_arg_type(char **name, enum arg_type *ret)
 	/* Misspelling of int used in ltrace.conf that we used to
 	 * ship.  */
 	KEYWORD("itn", ARGTYPE_INT);
-
-	assert(rest == NULL);
-	return -1;
-
 #undef KEYWORD
 
-ok:
-	if (isalnum(CTYPE_CONV(*rest)) || *rest == '_')
-		return -1;
-
-	*name = rest;
-	*ret = candidate;
-	return 0;
+	return -1;
 }
 
 static void
@@ -697,7 +685,7 @@ parse_alias(struct protolib *plib, struct locus *loc,
 
 		return build_printf_pack(loc, extra_param, param_num);
 
-	} else if (try_parse_kwd(str, "enum") >=0) {
+	} else if (try_parse_kwd(str, "enum") >= 0) {
 
 		return parse_enum(plib, loc, str, retp, ownp);
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/ltrace.git



More information about the ltrace-commits mailing list