Messages in this thread | | | Subject | Re: [PATCH v2] dynamic_debug: add wildcard support to filter files/functions/modules | From | Joe Perches <> | Date | Mon, 28 Oct 2013 09:30:11 -0700 |
| |
On Mon, 2013-10-28 at 23:29 +0800, Du, Changbin wrote: > From: "Du, Changbin" <changbin.du@gmail.com>
trivial notes:
> This patch add wildcard '*'(matches zero or more characters) and '?' > (matches one character) support when qurying debug flags.
> diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c [] > @@ -127,6 +127,41 @@ static void vpr_info_dq(const struct ddebug_query *query, const char *msg) > query->first_lineno, query->last_lineno); > } > > +/* check if the string matches given pattern which includes wildcards */ > +static int match_pattern(const char *pattern, const char *string)
bool match_pattern
> +{ > + const char *s, *p; > + int star = 0;
bool star = false;
> + > +loop: > + for (s = string, p = pattern; *s; ++s, ++p) { > + switch (*p) { > + case '?': > + break; > + case '*': > + star = 1; > + string = s; > + pattern = p; > + if (!*++pattern) > + return 1; > + goto loop; > + default: > + if (*s != *p) > + goto star_check;
star = false;
> + break; > + } > + } > + if (*p == '*') > + ++p; > + return (!*p);
Don't need parentheses.
> + > +star_check: > + if (!star) > + return 0; > + string++; > + goto loop; > +}
The star_check: label block seems like it'd be better in the switch case as it's only used once.
Maybe the thing would be more readable with a while loop
| |