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;fp=src%2Ffstab-generator%2Ffstab-generator.c;h=64eed49523d74fff5d84b23815307456787e995d;hp=496657bdc176a25b170788d8304bf306ceff5b1b;hb=d15d0333be6a1ca7fdd99a1881d967b6be8f387a;hpb=1e39ff926f815d241721ed9486945cf599ef8c2f diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 496657bdc..64eed4952 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -29,6 +29,7 @@ #include "util.h" #include "unit-name.h" #include "path-util.h" +#include "fstab-util.h" #include "mount-setup.h" #include "special.h" #include "mkdir.h" @@ -47,33 +48,6 @@ static char *arg_usr_what = NULL; static char *arg_usr_fstype = NULL; static char *arg_usr_options = NULL; -static int mount_find_pri(struct mntent *me, int *ret) { - char *end, *opt; - unsigned long r; - - assert(me); - assert(ret); - - opt = hasmntopt(me, "pri"); - if (!opt) - return 0; - - opt += strlen("pri"); - if (*opt != '=') - return -EINVAL; - - errno = 0; - r = strtoul(opt + 1, &end, 10); - if (errno > 0) - return -errno; - - if (end == opt + 1 || (*end != ',' && *end != 0)) - return -EINVAL; - - *ret = (int) r; - return 1; -} - static int add_swap( const char *what, struct mntent *me, @@ -97,11 +71,9 @@ static int add_swap( return 0; } - r = mount_find_pri(me, &pri); - if (r < 0) { - log_error("Failed to parse priority"); - return r; - } + r = fstab_find_pri(me->mnt_opts, &pri); + if (r < 0) + return log_error_errno(r, "Failed to parse priority: %m"); name = unit_name_from_path(what, ".swap"); if (!name) @@ -434,8 +406,7 @@ static int add_root_mount(void) { if (!arg_root_options) opts = arg_root_rw > 0 ? "rw" : "ro"; else if (arg_root_rw >= 0 || - (!mount_test_option(arg_root_options, "ro") && - !mount_test_option(arg_root_options, "rw"))) + !fstab_test_option(arg_root_options, "ro\0" "rw\0")) opts = strappenda(arg_root_options, ",", arg_root_rw > 0 ? "rw" : "ro"); else opts = arg_root_options; @@ -492,8 +463,7 @@ static int add_usr_mount(void) { if (!arg_usr_options) opts = arg_root_rw > 0 ? "rw" : "ro"; - else if (!mount_test_option(arg_usr_options, "ro") && - !mount_test_option(arg_usr_options, "rw")) + else if (!fstab_test_option(arg_usr_options, "ro\0" "rw\0")) opts = strappenda(arg_usr_options, ",", arg_root_rw > 0 ? "rw" : "ro"); else opts = arg_usr_options;