return 0;
}
-#define RULE_MATCH(s,r) rule_match((s), (r), sizeof (r) - 1)
+#define RULE_STRCMP(s,r) rule_strcmp((s), (r), sizeof (r) - 1)
-static const char *rule_match(const char *str, const char *rule, int rule_len)
+static const char *rule_strcmp(const char *str, const char *rule, int rule_len)
{
if (strncmp(str, rule, rule_len) != 0)
return NULL;
char ch = 0, *mods = "";
switch (*s) {
case 'c':
- if ((s = RULE_MATCH(s, "clear")) != NULL)
+ if ((s = RULE_STRCMP(s, "clear")) != NULL)
ch = '!';
break;
case 'd':
- if ((s = RULE_MATCH(s, "dir-merge")) != NULL)
+ if ((s = RULE_STRCMP(s, "dir-merge")) != NULL)
ch = ':';
break;
case 'e':
- if ((s = RULE_MATCH(s, "exclude")) != NULL)
+ if ((s = RULE_STRCMP(s, "exclude")) != NULL)
ch = '-';
break;
case 'i':
- if ((s = RULE_MATCH(s, "include")) != NULL)
+ if ((s = RULE_STRCMP(s, "include")) != NULL)
ch = '+';
break;
case 'm':
- if ((s = RULE_MATCH(s, "merge")) != NULL)
+ if ((s = RULE_STRCMP(s, "merge")) != NULL)
ch = '.';
break;
default:
ch = *s;
+ if (s[1] == ',')
+ s++;
break;
}
switch (ch) {