summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS6
-rw-r--r--src/libudev.c10
-rw-r--r--src/udev-rules.c2
-rw-r--r--src/udev.xml14
4 files changed, 19 insertions, 13 deletions
diff --git a/NEWS b/NEWS
index 00ee648ca3..b19cf7b508 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,12 @@ The udev-acl tool is no longer provided, it will be part of a future
ConsoleKit release. On systemd systems, advanced ConsoleKit and udev-acl
functionality are provided by systemd.
+Rules files in /etc/udev/rules.s/ with the same name as rules files in
+/run/udev/rules.d/ now always have precedence. The stack of files is now:
+/usr/lib (package), /run (runtime, auto-generated), /etc (admin), while
+the later ones override the earlier ones. In other words: the admin has
+always the last say.
+
udev 181
========
diff --git a/src/libudev.c b/src/libudev.c
index be24329adc..d954daef68 100644
--- a/src/libudev.c
+++ b/src/libudev.c
@@ -236,7 +236,7 @@ UDEV_EXPORT struct udev *udev_new(void)
fclose(f);
}
- /* environment overwrites config */
+ /* environment overrides config */
env = getenv("UDEV_LOG");
if (env != NULL)
udev_set_log_priority(udev, util_log_priority(env));
@@ -260,15 +260,15 @@ UDEV_EXPORT struct udev *udev_new(void)
if (!udev->rules_path[0])
goto err;
+ /* /run/udev -- runtime rules */
+ if (asprintf(&udev->rules_path[2], "%s/rules.d", udev->run_path) < 0)
+ goto err;
+
/* /etc/udev -- local administration rules */
udev->rules_path[1] = strdup(SYSCONFDIR "/udev/rules.d");
if (!udev->rules_path[1])
goto err;
- /* /run/udev -- runtime rules */
- if (asprintf(&udev->rules_path[2], "%s/rules.d", udev->run_path) < 0)
- goto err;
-
udev->rules_path_count = 3;
}
diff --git a/src/udev-rules.c b/src/udev-rules.c
index a5b4b7306a..8a85eae717 100644
--- a/src/udev-rules.c
+++ b/src/udev-rules.c
@@ -1737,7 +1737,7 @@ static int add_matching_files(struct udev *udev, struct udev_list *file_list, co
dbg(udev, "put file '%s' into list\n", filename);
/*
* the basename is the key, the filename the value
- * identical basenames from different directories overwrite each other
+ * identical basenames from different directories override each other
* entries are sorted after basename
*/
udev_list_entry_add(file_list, dent->d_name, filename);
diff --git a/src/udev.xml b/src/udev.xml
index 4de434ee51..8eb583a823 100644
--- a/src/udev.xml
+++ b/src/udev.xml
@@ -72,15 +72,15 @@
<refsect2><title>Rules files</title>
<para>The udev rules are read from the files located in the
system rules directory <filename>/usr/lib/udev/rules.d</filename>,
- the local administration directory <filename>/etc/udev/rules.d</filename>
- and the volatile runtime directory <filename>/run/udev/rules.d</filename>.
+ the volatile runtime directory <filename>/run/udev/rules.d</filename>
+ and the local administration directory <filename>/etc/udev/rules.d</filename>.
All rules files are collectively sorted and processed in lexical order,
regardless of the directories in which they live. However, files with
- identical file names replace each other. Files in <filename>/run</filename>
- have the highest priority, files in <filename>/etc</filename> take precedence
+ identical file names replace each other. Files in <filename>/etc</filename>
+ have the highest priority, files in <filename>/run</filename> take precedence
over files with the same name in <filename>/lib</filename>. This can be
- used to overwrite a system rules file if needed; a symlink in
- <filename>/etc</filename> with the same name as a rules file in
+ used to override a system-supplied rules file with a local file if needed;
+ a symlink in <filename>/etc</filename> with the same name as a rules file in
<filename>/lib</filename>, pointing to <filename>/dev/null</filename>,
disables the rules file entirely.</para>
@@ -343,7 +343,7 @@
<varlistentry>
<term><option>OWNER, GROUP, MODE</option></term>
<listitem>
- <para>The permissions for the device node. Every specified value overwrites
+ <para>The permissions for the device node. Every specified value overrides
the compiled-in default value.</para>
</listitem>
</varlistentry>