From bb0745f432fcbebd7866f55ea246bae7a484504b Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Fri, 9 Apr 2010 13:17:23 +0400 Subject: nasmlib: Introduce nasm_trim_spaces and nasm_opt_val helpers Signed-off-by: Cyrill Gorcunov --- nasmlib.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'nasmlib.c') diff --git a/nasmlib.c b/nasmlib.c index 22d3b62..550c42d 100644 --- a/nasmlib.c +++ b/nasmlib.c @@ -690,6 +690,41 @@ char *nasm_zap_spaces_rev(char *p) return p; } +/* zap leading and trailing spaces */ +char *nasm_trim_spaces(char *p) +{ + p = nasm_zap_spaces_fwd(p); + nasm_zap_spaces_fwd(nasm_skip_word(p)); + + return p; +} + +/* + * extract option and value from a string formatted as "opt = val" + * and return pointer to the next string or NULL on empty string + * passed or if nothing left for handling + */ +char *nasm_opt_val(char *p, char **opt, char **val) +{ + char *q, *next; + + p = nasm_skip_spaces(p); + if (!p || (p && !*p)) + return NULL; + + q = strchr(p, '='); + if (q) { + *q++ = '\0'; + next = nasm_skip_spaces(nasm_skip_word(nasm_skip_spaces(q))); + } else + next = nasm_skip_spaces(nasm_skip_word(nasm_skip_spaces(p))); + + *opt = nasm_trim_spaces(p); + *val = nasm_trim_spaces(q); + + return next; +} + /* * initialized data bytes length from opcode */ -- cgit v1.2.3