X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Ffstab-generator%2Ffstab-generator.c;h=d9ba3e32e2a9475e54304508948a2f01af6d6fc9;hp=39af18a9c8851ca8d5f81055642a291e3658cbd3;hb=ec6ceb18663940efb1963704923430be0e83f1f7;hpb=6b1dc2bd3cdb3bd932b0692be636ddd2879edb92 diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 39af18a9c..d9ba3e32e 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -117,6 +117,7 @@ static int add_swap(const char *what, struct mntent *me) { fputs("# Automatically generated by systemd-fstab-generator\n\n" "[Unit]\n" + "SourcePath=/etc/fstab\n" "DefaultDependencies=no\n" "Conflicts=" SPECIAL_UMOUNT_TARGET "\n" "Before=" SPECIAL_UMOUNT_TARGET "\n", f); @@ -150,7 +151,7 @@ static int add_swap(const char *what, struct mntent *me) { goto finish; } - mkdir_parents(lnk, 0755); + mkdir_parents_label(lnk, 0755); if (symlink(unit, lnk) < 0) { log_error("Failed to create symlink: %m"); r = -errno; @@ -173,7 +174,7 @@ static int add_swap(const char *what, struct mntent *me) { goto finish; } - mkdir_parents(lnk, 0755); + mkdir_parents_label(lnk, 0755); if (symlink(unit, lnk) < 0) { log_error("Failed to create symlink: %m"); r = -errno; @@ -274,6 +275,7 @@ static int add_mount(const char *what, const char *where, struct mntent *me) { fputs("# Automatically generated by systemd-fstab-generator\n\n" "[Unit]\n" + "SourcePath=/etc/fstab\n" "DefaultDependencies=no\n", f); if (!path_equal(where, "/")) @@ -324,7 +326,7 @@ static int add_mount(const char *what, const char *where, struct mntent *me) { goto finish; } - mkdir_parents(lnk, 0755); + mkdir_parents_label(lnk, 0755); if (symlink(unit, lnk) < 0) { log_error("Failed to create symlink: %m"); r = -errno; @@ -350,7 +352,7 @@ static int add_mount(const char *what, const char *where, struct mntent *me) { goto finish; } - mkdir_parents(lnk, 0755); + mkdir_parents_label(lnk, 0755); if (symlink(unit, lnk) < 0) { log_error("Failed to creat symlink: %m"); r = -errno; @@ -386,6 +388,7 @@ static int add_mount(const char *what, const char *where, struct mntent *me) { fprintf(f, "# Automatically generated by systemd-fstab-generator\n\n" "[Unit]\n" + "SourcePath=/etc/fstab\n" "DefaultDependencies=no\n" "Conflicts=" SPECIAL_UMOUNT_TARGET "\n" "Before=" SPECIAL_UMOUNT_TARGET " %s\n" @@ -410,7 +413,7 @@ static int add_mount(const char *what, const char *where, struct mntent *me) { goto finish; } - mkdir_parents(lnk, 0755); + mkdir_parents_label(lnk, 0755); if (symlink(automount_unit, lnk) < 0) { log_error("Failed to create symlink: %m"); r = -errno; @@ -467,9 +470,6 @@ static int parse_fstab(void) { goto finish; } - if (is_path(what)) - path_kill_slashes(what); - if (is_path(where)) path_kill_slashes(where); @@ -495,20 +495,18 @@ finish: int main(int argc, char *argv[]) { int r; - if (argc > 2) { - log_error("This program takes one or no arguments."); + if (argc > 1 && argc != 4) { + log_error("This program takes three or no arguments."); return EXIT_FAILURE; } if (argc > 1) arg_dest = argv[1]; - log_set_target(LOG_TARGET_AUTO); + log_set_target(LOG_TARGET_SAFE); log_parse_environment(); log_open(); - log_set_max_level(LOG_DEBUG); - umask(0022); r = parse_fstab();