On Thu, 2013-07-25 at 21:02 +0800, Du, Changbin wrote:From: "Du, Changbin" <changbin.du@xxxxxxxxx>Seems very useful. Caveat below.
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,21 @@ static void vpr_info_dq(const struct ddebug_query *query, const char *msg)What's the maximum length string used today?
query->first_lineno, query->last_lineno);
}
+static int match_pattern(char *pat, char *str)
+{
+ switch (*pat) {
+ case '\0':
+ return !*str;
+ case '*':
+ return match_pattern(pat+1, str) ||
+ (*str && match_pattern(pat, str+1));
+ case '?':
+ return *str && match_pattern(pat+1, str+1);
+ default:
+ return *pat == *str && match_pattern(pat+1, str 1);
+ }
+}
On a very long pattern, can this recursion cause stack overflow?
Other than that, I like it.