chiark / gitweb /
Revert "extras/keymap: Fix case matching for Micro-Star"
[elogind.git] / udev / udev-rules.c
index 7db890fed91166869cee5699d1eb83fb83f45053..eeb71bc87b9d6eb0906b671bb7ab81f64495d79e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008-2009 Kay Sievers <kay.sievers@vrfy.org>
+ * Copyright (C) 2003-2009 Kay Sievers <kay.sievers@vrfy.org>
  * Copyright (C) 2008 Alan Jenkins <alan-jenkins@tuffmail.co.uk>
  *
  * This program is free software: you can redistribute it and/or modify
@@ -270,7 +270,7 @@ static const char *token_str(enum token_type type)
                [TK_M_PROGRAM] =                "M PROGRAM",
                [TK_M_IMPORT_FILE] =            "M IMPORT_FILE",
                [TK_M_IMPORT_PROG] =            "M IMPORT_PROG",
-               [TK_M_IMPORT_PARENT] =          "M MPORT_PARENT",
+               [TK_M_IMPORT_PARENT] =          "M IMPORT_PARENT",
                [TK_M_RESULT] =                 "M RESULT",
                [TK_M_MAX] =                    "M MAX",
 
@@ -718,8 +718,9 @@ static int import_property_from_string(struct udev_device *dev, char *line)
                struct udev_list_entry *entry;
 
                entry = udev_device_add_property(dev, key, val);
-               /* store in db */
-               udev_list_entry_set_flag(entry, 1);
+               /* store in db, skip private keys */
+               if (key[0] != '.')
+                       udev_list_entry_set_flag(entry, 1);
        }
        return 0;
 }
@@ -785,8 +786,9 @@ static int import_parent_into_properties(struct udev_device *dev, const char *fi
 
                        dbg(udev, "import key '%s=%s'\n", key, val);
                        entry = udev_device_add_property(dev, key, val);
-                       /* store in db */
-                       udev_list_entry_set_flag(entry, 1);
+                       /* store in db, skip private keys */
+                       if (key[0] != '.')
+                               udev_list_entry_set_flag(entry, 1);
                }
        }
        return 0;
@@ -1338,7 +1340,7 @@ static int add_rule(struct udev_rules *rules, char *line,
 
                                /* allow programs in /lib/udev called without the path */
                                if (value[0] != '/')
-                                       util_strscpyl(file, sizeof(file), UDEV_PREFIX "/lib/udev/", value, NULL);
+                                       util_strscpyl(file, sizeof(file), LIBEXECDIR "/", value, NULL);
                                else
                                        util_strscpy(file, sizeof(file), value);
                                pos = strchr(file, ' ');
@@ -1377,7 +1379,7 @@ static int add_rule(struct udev_rules *rules, char *line,
                        int flag = 0;
 
                        attr = get_key_attribute(rules->udev, key + sizeof("RUN")-1);
-                       if (attr != NULL && strstr(attr, "ignore_error"))
+                       if (attr != NULL && strstr(attr, "fail_event_on_error"))
                                flag = 1;
                        rule_add_key(&rule_tmp, TK_A_RUN, op, value, &flag);
                        continue;
@@ -1404,6 +1406,9 @@ static int add_rule(struct udev_rules *rules, char *line,
                        } else {
                                if (value[0] == '\0')
                                        info(rules->udev, "name empty, node creation suppressed\n");
+                               else if (strcmp(value, "%k") == 0)
+                                       err(rules->udev, "NAME=\"%%k\" is superfluous and breaks "
+                                           "kernel supplied names, please remove it from %s:%u\n", filename, lineno);
                                rule_add_key(&rule_tmp, TK_A_NAME, op, value, NULL);
                                attr = get_key_attribute(rules->udev, key + sizeof("NAME")-1);
                                if (attr != NULL) {
@@ -1506,7 +1511,7 @@ static int add_rule(struct udev_rules *rules, char *line,
                                int tout = atoi(&pos[strlen("event_timeout=")]);
 
                                rule_add_key(&rule_tmp, TK_A_EVENT_TIMEOUT, 0, NULL, &tout);
-                               dbg(rules->udev, "event timout=%i\n", tout);
+                               dbg(rules->udev, "event timeout=%i\n", tout);
                        }
                        pos = strstr(value, "string_escape=");
                        if (pos != NULL) {
@@ -1734,7 +1739,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
                add_matching_files(udev, &sort_list, filename, ".rules");
 
                /* read default rules */
-               add_matching_files(udev, &sort_list, UDEV_PREFIX "/lib/udev/rules.d", ".rules");
+               add_matching_files(udev, &sort_list, LIBEXECDIR "/rules.d", ".rules");
 
                /* sort all rules files by basename into list of files */
                udev_list_entry_foreach_safe(sort_loop, sort_tmp, udev_list_get_entry(&sort_list)) {
@@ -1793,7 +1798,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
                if (stat(filename, &statbuf) == 0 && statbuf.st_size > 0)
                        parse_file(rules, filename, filename_off);
                else
-                       info(udev, "can not read '%s'\n", filename);
+                       err(udev, "can not read '%s'\n", filename);
                udev_list_entry_delete(file_loop);
        }
 
@@ -2374,8 +2379,9 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
 
                                        udev_event_apply_format(event, value, temp_value, sizeof(temp_value));
                                        entry = udev_device_add_property(event->dev, name, temp_value);
-                                       /* store in db */
-                                       udev_list_entry_set_flag(entry, 1);
+                                       /* store in db, skip private keys */
+                                       if (name[0] != '.')
+                                               udev_list_entry_set_flag(entry, 1);
                                } else {
                                        udev_device_add_property(event->dev, name, NULL);
                                }