@@ -4,14 +4,17 @@ The old udev 182 supported $UDEV_CONFIG_FILE, which in turn allowed
the search path to be customized, but eudev no longer has this, hence
this hack.
---- eudev-3.1.5/src/udev/udev-rules.c 2015-10-13 06:22:14.000000000 +0800
-+++ eudev-3.1.5/src/udev/udev-rules.c 2015-10-16 20:45:38.491934336 +0800
-@@ -47,15 +47,11 @@
+Index: eudev/src/udev/udev-rules.c
+===================================================================
+--- eudev.orig/src/udev/udev-rules.c
++++ eudev/src/udev/udev-rules.c
+@@ -48,15 +48,11 @@ struct uid_gid {
};
};
-static const char* const rules_dirs[] = {
+static const char* rules_dirs[] = {
++ NULL, /* placeholder for $EUDEV_RULES_DIRECTORY */
UDEV_CONF_DIR "/rules.d",
UDEV_RULES_DIR,
- UDEV_ROOT_RUN "/udev/rules.d",
@@ -20,17 +23,44 @@ this hack.
- "/lib/udev/rules.d",
- "/usr/lib/udev/rules.d",
-#endif
-+ NULL, /* placeholder for $EUDEV_RULES_DIRECTORY */
NULL};
struct udev_rules {
-@@ -1704,6 +1700,9 @@
+@@ -1691,6 +1687,14 @@ static int parse_file(struct udev_rules
+ return 0;
+ }
+
++static const char** rules_dirs_real()
++{
++ if (rules_dirs[0])
++ return rules_dirs;
++ else
++ return rules_dirs + 1;
++}
++
+ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names) {
+ struct udev_rules *rules;
+ struct udev_list file_list;
+@@ -1717,7 +1721,10 @@ struct udev_rules *udev_rules_new(struct
udev_rules_check_timestamp(rules);
+- r = conf_files_list_strv(&files, ".rules", NULL, rules_dirs);
+ /* Allow the user to specify an additional rules directory. */
-+ rules_dirs[3] = getenv("EUDEV_RULES_DIRECTORY");
++ rules_dirs[0] = getenv("EUDEV_RULES_DIRECTORY");
+
- r = conf_files_list_strv(&files, ".rules", NULL, rules_dirs);
++ r = conf_files_list_strv(&files, ".rules", NULL, rules_dirs_real ());
if (r < 0) {
log_error_errno(r, "failed to enumerate rules files: %m");
+ return udev_rules_unref(rules);
+@@ -1776,7 +1783,9 @@ bool udev_rules_check_timestamp(struct u
+ if (!rules)
+ return false;
+
+- return paths_check_timestamp(rules_dirs, &rules->dirs_ts_usec, true);
++ return paths_check_timestamp(rules_dirs_real (),
++ &rules->dirs_ts_usec,
++ true);
+ }
+
+ static int match_key(struct udev_rules *rules, struct token *token, const char *val) {