chiark / gitweb /
man: document sd_journal_get_cursor()
[elogind.git] / src / udev / udev-rules.c
index 22b91c67974cc6004aec3381fa4e4870daa1e2ef..c571c828773f66a75a17c58ec991a46c2112e6c6 100644 (file)
@@ -31,6 +31,8 @@
 #include <time.h>
 
 #include "udev.h"
+#include "path-util.h"
+#include "conf-files.h"
 
 #define PREALLOC_TOKEN          2048
 #define PREALLOC_STRBUF         32 * 1024
@@ -743,7 +745,7 @@ static int import_file_into_properties(struct udev_device *dev, const char *file
         FILE *f;
         char line[UTIL_LINE_SIZE];
 
-        f = fopen(filename, "r");
+        f = fopen(filename, "re");
         if (f == NULL)
                 return -1;
         while (fgets(line, sizeof(line), f) != NULL)
@@ -1643,7 +1645,7 @@ static int parse_file(struct udev_rules *rules, const char *filename)
         }
         log_debug("read rules file: %s\n", filename);
 
-        f = fopen(filename, "r");
+        f = fopen(filename, "re");
         if (f == NULL)
                 return -1;
 
@@ -1763,7 +1765,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
                 log_error("failed to build config directory array");
                 return NULL;
         }
-        if (!strv_path_canonicalize(rules->dirs)) {
+        if (!path_strv_canonicalize(rules->dirs)) {
                 log_error("failed to canonicalize config directories\n");
                 return NULL;
         }
@@ -1856,6 +1858,9 @@ bool udev_rules_check_timestamp(struct udev_rules *rules)
         unsigned int i;
         bool changed = false;
 
+        if (rules == NULL)
+                goto out;
+
         for (i = 0; rules->dirs[i]; i++) {
                 struct stat stats;
 
@@ -1874,7 +1879,7 @@ bool udev_rules_check_timestamp(struct udev_rules *rules)
                 /* update timestamp */
                 rules->dirs_ts_usec[i] = ts_usec(&stats.st_mtim);
         }
-
+out:
         return changed;
 }
 
@@ -2317,7 +2322,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
                         FILE *f;
                         bool imported = false;
 
-                        f = fopen("/proc/cmdline", "r");
+                        f = fopen("/proc/cmdline", "re");
                         if (f != NULL) {
                                 char cmdline[4096];
 
@@ -2602,7 +2607,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
                         log_debug("ATTR '%s' writing '%s' %s:%u\n", attr, value,
                                   &rules->buf[rule->rule.filename_off],
                                   rule->rule.filename_line);
-                        f = fopen(attr, "w");
+                        f = fopen(attr, "we");
                         if (f != NULL) {
                                 if (fprintf(f, "%s", value) <= 0)
                                         log_error("error writing ATTR{%s}: %m\n", attr);