chiark / gitweb /
tmpfiles: also look in /lib/tmpfiles.d on split /usr systems
[elogind.git] / src / tmpfiles / tmpfiles.c
index 841d1635239e25a81fc596c99dadb594be013f4d..45125b7b946ee7a2bf59d1b11d52739506bce35b 100644 (file)
@@ -107,6 +107,9 @@ static const char * const conf_file_dirs[] = {
         "/run/tmpfiles.d",
         "/usr/local/lib/tmpfiles.d",
         "/usr/lib/tmpfiles.d",
+#ifdef HAVE_SPLIT_USR
+        "/lib/tmpfiles.d",
+#endif
         NULL
 };
 
@@ -469,7 +472,7 @@ static int item_set_perms(Item *i, const char *path) {
                         return -errno;
                 }
 
-        return label_fix(path, false);
+        return label_fix(path, false, false);
 }
 
 static int recursive_relabel_children(Item *i, const char *path) {
@@ -843,7 +846,9 @@ static int remove_item_instance(Item *i, const char *instance) {
 
         case TRUNCATE_DIRECTORY:
         case RECURSIVE_REMOVE_PATH:
-                r = rm_rf(instance, false, i->type == RECURSIVE_REMOVE_PATH, false);
+                /* FIXME: we probably should use dir_cleanup() here
+                 * instead of rm_rf() so that 'x' is honoured. */
+                r = rm_rf_dangerous(instance, false, i->type == RECURSIVE_REMOVE_PATH, false);
                 if (r < 0 && r != -ENOENT) {
                         log_error("rm_rf(%s): %s", instance, strerror(-r));
                         return r;
@@ -1074,7 +1079,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
         if (user && !streq(user, "-")) {
                 const char *u = user;
 
-                r = get_user_creds(&u, &i->uid, NULL, NULL);
+                r = get_user_creds(&u, &i->uid, NULL, NULL, NULL);
                 if (r < 0) {
                         log_error("[%s:%u] Unknown user '%s'.", fname, line, user);
                         goto finish;
@@ -1295,7 +1300,7 @@ static char *resolve_fragment(const char *fragment, const char **search_paths) {
                 return strdup(fragment);
 
         STRV_FOREACH(p, search_paths) {
-                resolved_path = join(*p, "/", fragment, NULL);
+                resolved_path = strjoin(*p, "/", fragment, NULL);
                 if (resolved_path == NULL) {
                         log_error("Out of memory");
                         return NULL;