diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2015-01-11 00:04:00 -0500 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2015-01-11 23:41:41 -0500 |
commit | b9f111b93f9f442f00266f338b14f25ca8685352 (patch) | |
tree | b181920cabc924b56810502bef2a4a270f414932 /src/fstab-generator/fstab-generator.c | |
parent | a6dba97829e345772fae7c1d859e9fe0570ac42b (diff) |
Support negated fstab options
We would ignore options like "fail" and "auto", and for any option
which takes a value the first assignment would win. Repeated and
options equivalent to the default are rarely used, but they have been
documented forever, and people might use them. Especially on the
kernel command line it is easier to append a repeated or negated
option at the end.
Diffstat (limited to 'src/fstab-generator/fstab-generator.c')
-rw-r--r-- | src/fstab-generator/fstab-generator.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 64eed49523..bc4c1556ca 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -135,17 +135,15 @@ static int add_swap( static bool mount_is_network(struct mntent *me) { assert(me); - return - hasmntopt(me, "_netdev") || - fstype_is_network(me->mnt_type); + return fstab_test_option(me->mnt_opts, "_netdev\0") || + fstype_is_network(me->mnt_type); } static bool mount_in_initrd(struct mntent *me) { assert(me); - return - hasmntopt(me, "x-initrd.mount") || - streq(me->mnt_dir, "/usr"); + return fstab_test_option(me->mnt_opts, "x-initrd.mount\0") || + streq(me->mnt_dir, "/usr"); } static int add_mount( @@ -344,8 +342,8 @@ static int parse_fstab(bool initrd) { if (is_path(where)) path_kill_slashes(where); - noauto = !!hasmntopt(me, "noauto"); - nofail = !!hasmntopt(me, "nofail"); + noauto = fstab_test_yes_no_option(me->mnt_opts, "noauto\0" "auto\0"); + nofail = fstab_test_yes_no_option(me->mnt_opts, "nofail\0" "fail\0"); log_debug("Found entry what=%s where=%s type=%s nofail=%s noauto=%s", what, where, me->mnt_type, yes_no(noauto), yes_no(nofail)); @@ -356,10 +354,9 @@ static int parse_fstab(bool initrd) { bool automount; const char *post; - automount = - hasmntopt(me, "comment=systemd.automount") || - hasmntopt(me, "x-systemd.automount"); - + automount = fstab_test_option(me->mnt_opts, + "comment=systemd.automount\0" + "x-systemd.automount\0"); if (initrd) post = SPECIAL_INITRD_FS_TARGET; else if (mount_in_initrd(me)) |