GL_SPLIT, /* multi-value A|B */
GL_SPLIT_GLOB, /* multi-value with glob A*|B* */
GL_SOMETHING, /* commonly used "?*" */
- GL_FORMAT,
};
/* tokens of a rule are sorted/handled in this order */
[GL_SPLIT] = "split",
[GL_SPLIT_GLOB] = "split-glob",
[GL_SOMETHING] = "split-glob",
- [GL_FORMAT] = "format",
};
return string_glob_strs[type];
}
glob = GL_PLAIN;
- if (value != NULL) {
- if (type < TK_M_MAX) {
- /* check if we need to split or call fnmatch() while matching rules */
- int has_split;
- int has_glob;
-
- has_split = (strchr(value, '|') != NULL);
- has_glob = (strchr(value, '*') != NULL || strchr(value, '?') != NULL ||
- strchr(value, '[') != NULL || strchr(value, ']') != NULL);
- if (has_split && has_glob) {
- glob = GL_SPLIT_GLOB;
- } else if (has_split) {
- glob = GL_SPLIT;
- } else if (has_glob) {
- if (strcmp(value, "?*") == 0)
- glob = GL_SOMETHING;
- else
- glob = GL_GLOB;
- }
- } else {
- /* check if we need to substitute format strings for matching rules */
- if (strchr(value, '%') != NULL || strchr(value, '$') != NULL)
- glob = GL_FORMAT;
+ if (value != NULL && type < TK_M_MAX) {
+ /* check if we need to split or call fnmatch() while matching rules */
+ int has_split;
+ int has_glob;
+
+ has_split = (strchr(value, '|') != NULL);
+ has_glob = (strchr(value, '*') != NULL || strchr(value, '?') != NULL ||
+ strchr(value, '[') != NULL || strchr(value, ']') != NULL);
+ if (has_split && has_glob) {
+ glob = GL_SPLIT_GLOB;
+ } else if (has_split) {
+ glob = GL_SPLIT;
+ } else if (has_glob) {
+ if (strcmp(value, "?*") == 0)
+ glob = GL_SOMETHING;
+ else
+ glob = GL_GLOB;
}
}
if (get_key(rules->udev, &linepos, &key, &op, &value) != 0)
break;
- if (strcasecmp(key, "ACTION") == 0) {
+ if (strcmp(key, "ACTION") == 0) {
if (op > OP_MATCH_MAX) {
err(rules->udev, "invalid ACTION operation\n");
goto invalid;
continue;
}
- if (strcasecmp(key, "DEVPATH") == 0) {
+ if (strcmp(key, "DEVPATH") == 0) {
if (op > OP_MATCH_MAX) {
err(rules->udev, "invalid DEVPATH operation\n");
goto invalid;
continue;
}
- if (strcasecmp(key, "KERNEL") == 0) {
+ if (strcmp(key, "KERNEL") == 0) {
if (op > OP_MATCH_MAX) {
err(rules->udev, "invalid KERNEL operation\n");
goto invalid;
continue;
}
- if (strcasecmp(key, "SUBSYSTEM") == 0) {
+ if (strcmp(key, "SUBSYSTEM") == 0) {
if (op > OP_MATCH_MAX) {
err(rules->udev, "invalid SUBSYSTEM operation\n");
goto invalid;
continue;
}
- if (strcasecmp(key, "DRIVER") == 0) {
+ if (strcmp(key, "DRIVER") == 0) {
if (op > OP_MATCH_MAX) {
err(rules->udev, "invalid DRIVER operation\n");
goto invalid;
continue;
}
- if (strncasecmp(key, "ATTR{", sizeof("ATTR{")-1) == 0) {
+ if (strncmp(key, "ATTR{", sizeof("ATTR{")-1) == 0) {
attr = get_key_attribute(rules->udev, key + sizeof("ATTR")-1);
if (attr == NULL) {
err(rules->udev, "error parsing ATTR attribute\n");
continue;
}
- if (strcasecmp(key, "KERNELS") == 0 ||
- strcasecmp(key, "ID") == 0) {
+ if (strcmp(key, "KERNELS") == 0 ||
+ strcmp(key, "ID") == 0) {
if (op > OP_MATCH_MAX) {
err(rules->udev, "invalid KERNELS operation\n");
goto invalid;
continue;
}
- if (strcasecmp(key, "SUBSYSTEMS") == 0 ||
- strcasecmp(key, "BUS") == 0) {
+ if (strcmp(key, "SUBSYSTEMS") == 0 ||
+ strcmp(key, "BUS") == 0) {
if (op > OP_MATCH_MAX) {
err(rules->udev, "invalid SUBSYSTEMS operation\n");
goto invalid;
continue;
}
- if (strcasecmp(key, "DRIVERS") == 0) {
+ if (strcmp(key, "DRIVERS") == 0) {
if (op > OP_MATCH_MAX) {
err(rules->udev, "invalid DRIVERS operation\n");
goto invalid;
continue;
}
- if (strncasecmp(key, "ATTRS{", sizeof("ATTRS{")-1) == 0 ||
- strncasecmp(key, "SYSFS{", sizeof("SYSFS{")-1) == 0) {
+ if (strncmp(key, "ATTRS{", sizeof("ATTRS{")-1) == 0 ||
+ strncmp(key, "SYSFS{", sizeof("SYSFS{")-1) == 0) {
if (op > OP_MATCH_MAX) {
err(rules->udev, "invalid ATTRS operation\n");
goto invalid;
continue;
}
- if (strncasecmp(key, "ENV{", sizeof("ENV{")-1) == 0) {
+ if (strncmp(key, "ENV{", sizeof("ENV{")-1) == 0) {
attr = get_key_attribute(rules->udev, key + sizeof("ENV")-1);
if (attr == NULL) {
err(rules->udev, "error parsing ENV attribute\n");
continue;
}
- if (strcasecmp(key, "PROGRAM") == 0) {
+ if (strcmp(key, "PROGRAM") == 0) {
rule_add_key(&rule_tmp, TK_M_PROGRAM, op, value, NULL);
continue;
}
- if (strcasecmp(key, "RESULT") == 0) {
+ if (strcmp(key, "RESULT") == 0) {
if (op > OP_MATCH_MAX) {
err(rules->udev, "invalid RESULT operation\n");
goto invalid;
continue;
}
- if (strncasecmp(key, "IMPORT", sizeof("IMPORT")-1) == 0) {
+ if (strncmp(key, "IMPORT", sizeof("IMPORT")-1) == 0) {
attr = get_key_attribute(rules->udev, key + sizeof("IMPORT")-1);
if (attr != NULL && strstr(attr, "program")) {
dbg(rules->udev, "IMPORT will be executed\n");
continue;
}
- if (strncasecmp(key, "TEST", sizeof("TEST")-1) == 0) {
+ if (strncmp(key, "TEST", sizeof("TEST")-1) == 0) {
mode_t mode = 0;
if (op > OP_MATCH_MAX) {
continue;
}
- if (strncasecmp(key, "RUN", sizeof("RUN")-1) == 0) {
+ if (strncmp(key, "RUN", sizeof("RUN")-1) == 0) {
int flag = 0;
attr = get_key_attribute(rules->udev, key + sizeof("RUN")-1);
continue;
}
- if (strcasecmp(key, "WAIT_FOR") == 0 || strcasecmp(key, "WAIT_FOR_SYSFS") == 0) {
+ if (strcmp(key, "WAIT_FOR") == 0 || strcmp(key, "WAIT_FOR_SYSFS") == 0) {
rule_add_key(&rule_tmp, TK_M_WAITFOR, 0, value, NULL);
continue;
}
- if (strcasecmp(key, "LABEL") == 0) {
+ if (strcmp(key, "LABEL") == 0) {
rule_tmp.rule.rule.label_off = add_string(rules, value);
continue;
}
- if (strcasecmp(key, "GOTO") == 0) {
+ if (strcmp(key, "GOTO") == 0) {
rule_add_key(&rule_tmp, TK_A_GOTO, 0, value, NULL);
continue;
}
- if (strncasecmp(key, "NAME", sizeof("NAME")-1) == 0) {
+ if (strncmp(key, "NAME", sizeof("NAME")-1) == 0) {
if (op < OP_MATCH_MAX) {
rule_add_key(&rule_tmp, TK_M_NAME, op, value, NULL);
} else {
continue;
}
- if (strcasecmp(key, "SYMLINK") == 0) {
+ if (strcmp(key, "SYMLINK") == 0) {
if (op < OP_MATCH_MAX)
rule_add_key(&rule_tmp, TK_M_DEVLINK, op, value, NULL);
else
continue;
}
- if (strcasecmp(key, "OWNER") == 0) {
+ if (strcmp(key, "OWNER") == 0) {
uid_t uid;
char *endptr;
continue;
}
- if (strcasecmp(key, "GROUP") == 0) {
+ if (strcmp(key, "GROUP") == 0) {
gid_t gid;
char *endptr;
continue;
}
- if (strcasecmp(key, "MODE") == 0) {
+ if (strcmp(key, "MODE") == 0) {
mode_t mode;
char *endptr;
continue;
}
- if (strcasecmp(key, "OPTIONS") == 0) {
+ if (strcmp(key, "OPTIONS") == 0) {
const char *pos;
if (strstr(value, "last_rule") != NULL) {
if (strcmp(ext, suffix) != 0)
continue;
}
- dbg(udev, "put file '%s/%s' into list\n", dirname, dent->d_name);
-
- snprintf(filename, sizeof(filename), "%s/%s", dirname, dent->d_name);
- filename[sizeof(filename)-1] = '\0';
+ util_strscpyl(filename, sizeof(filename), dirname, "/", dent->d_name, NULL);
+ dbg(udev, "put file '%s' into list\n", filename);
udev_list_entry_add(udev, file_list, filename, NULL, 1, 1);
}
case GL_SOMETHING:
match = (val[0] != '\0');
break;
- case GL_FORMAT:
case GL_UNSET:
return -1;
}