- if (!strcasecmp(module, "PATTERN")) {
- vlog_set_pattern(e_facility, save_ptr);
- break;
- } else {
- char *level;
- enum vlog_level e_level;
-
- if (!strcasecmp(module, "ANY")) {
- e_module = NULL;
- } else {
- e_module = vlog_module_from_name(module);
- if (!e_module) {
- char *msg = xasprintf("unknown module \"%s\"", module);
- free(s);
- return msg;
+ facility = (!strcasecmp(word, "ANY")
+ ? VLF_ANY_FACILITY
+ : vlog_get_facility_val(word));
+ if (facility == VLF_N_FACILITIES) {
+ msg = xasprintf("unknown facility \"%s\"", word);
+ goto exit;
+ }
+ vlog_set_pattern(facility, save_ptr);
+ } else {
+ struct vlog_module *module = NULL;
+ enum vlog_level level = VLL_N_LEVELS;
+ enum vlog_facility facility = VLF_N_FACILITIES;
+
+ for (; word != NULL; word = strtok_r(NULL, " ,:\t", &save_ptr)) {
+ if (!strcasecmp(word, "ANY")) {
+ continue;
+ } else if (vlog_get_facility_val(word) != VLF_N_FACILITIES) {
+ if (facility != VLF_N_FACILITIES) {
+ msg = xstrdup("cannot specify multiple facilities");
+ goto exit;