[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