]> granicus.if.org Git - strace/commitdiff
Simplify parse_fault_expression
authorDmitry V. Levin <ldv@altlinux.org>
Thu, 24 Nov 2016 21:35:05 +0000 (21:35 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 24 Nov 2016 21:35:05 +0000 (21:35 +0000)
* syscall.c (parse_fault_expression): Rewrite iterator over strtok_r
in a more concise way.

syscall.c

index 2e9b2e344475abb28e9863d489a36582ec4c9a8b..4143bc0cfdd2e65acb16bdb67b426d68b23c9fed 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -632,21 +632,21 @@ static const char *
 parse_fault_expression(const char *const s, char **buf,
                       struct fault_opts *const fopts)
 {
-       const char *name;
-       const char *token;
        char *saveptr = NULL;
+       const char *name = NULL;
+       const char *token;
 
        *buf = xstrdup(s);
-       name = strtok_r(*buf, ":", &saveptr);
-       if (!name || !*name)
-               goto parse_error;
-
-       while ((token = strtok_r(NULL, ":", &saveptr))) {
-               if (!parse_fault_token(token, fopts))
+       for (token = strtok_r(*buf, ":", &saveptr); token;
+            token = strtok_r(NULL, ":", &saveptr)) {
+               if (!name)
+                       name = token;
+               else if (!parse_fault_token(token, fopts))
                        goto parse_error;
        }
 
-       return name;
+       if (name)
+               return name;
 
 parse_error:
        free(*buf);