chiark / gitweb /
udev: add hardware database support
[elogind.git] / src / tmpfiles / tmpfiles.c
index 5d0f571bea605f7a15838e2dbf643309911418b0..c32cbd1aea7d389d85f33dcef531f40c2333fec9 100644 (file)
@@ -551,12 +551,13 @@ static int recursive_relabel_children(Item *i, const char *path) {
                 return errno == ENOENT ? 0 : -errno;
 
         for (;;) {
-                struct dirent buf, *de;
+                struct dirent *de;
+                union dirent_storage buf;
                 bool is_dir;
                 int r;
                 char *entry_path;
 
-                r = readdir_r(d, &buf, &de);
+                r = readdir_r(d, &buf.de, &de);
                 if (r != 0) {
                         if (ret == 0)
                                 ret = -r;
@@ -672,6 +673,10 @@ static int create_item(Item *i) {
 
         case CREATE_FILE:
         case TRUNCATE_FILE:
+                r = write_one_file(i, i->path);
+                if (r < 0)
+                        return r;
+                break;
         case WRITE_FILE:
                 r = glob_item(i, write_one_file);
                 if (r < 0)
@@ -1360,7 +1365,7 @@ int main(int argc, char *argv[]) {
                 for (j = optind; j < argc; j++) {
                         char *fragment;
 
-                        fragment = resolve_fragment(argv[j], (const char**) conf_file_dirs);
+                        fragment = resolve_fragment(argv[j], (const char **)conf_file_dirs);
                         if (!fragment) {
                                 log_error("Failed to find a %s file: %m", argv[j]);
                                 r = EXIT_FAILURE;
@@ -1374,8 +1379,7 @@ int main(int argc, char *argv[]) {
         } else {
                 char **files, **f;
 
-                r = conf_files_list_strv(&files, ".conf",
-                                    (const char **) conf_file_dirs);
+                r = conf_files_list_strv(&files, ".conf", (const char **)conf_file_dirs);
                 if (r < 0) {
                         log_error("Failed to enumerate tmpfiles.d files: %s", strerror(-r));
                         r = EXIT_FAILURE;