X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcryptsetup%2Fcryptsetup-generator.c;h=27b2360d240fffddd5c604a44b2f66c71657ff2e;hb=cb9fc36a1211967e8c58b0502a26c42552ac8060;hp=3a866f36fcc3272c7c2cb2e0d57472ce39a2c5b3;hpb=baade8cc237c37bd8905d86ec6e9c7872d4abe03;p=elogind.git diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index 3a866f36f..27b2360d2 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -30,6 +30,7 @@ #include "log.h" #include "mkdir.h" #include "path-util.h" +#include "fstab-util.h" #include "strv.h" #include "unit-name.h" #include "util.h" @@ -50,35 +51,6 @@ static Hashmap *arg_disks = NULL; static char *arg_default_options = NULL; static char *arg_default_keyfile = NULL; -static bool has_option(const char *haystack, const char *needle) { - const char *f = haystack; - size_t l; - - assert(needle); - - if (!haystack) - return false; - - l = strlen(needle); - - while ((f = strstr(f, needle))) { - - if (f > haystack && f[-1] != ',') { - f++; - continue; - } - - if (f[l] != 0 && f[l] != ',') { - f++; - continue; - } - - return true; - } - - return false; -} - static int create_disk( const char *name, const char *device, @@ -95,10 +67,10 @@ static int create_disk( assert(name); assert(device); - noauto = has_option(options, "noauto"); - nofail = has_option(options, "nofail"); - tmp = has_option(options, "tmp"); - swap = has_option(options, "swap"); + noauto = fstab_test_yes_no_option(options, "noauto\0" "auto\0"); + nofail = fstab_test_yes_no_option(options, "nofail\0" "fail\0"); + tmp = fstab_test_option(options, "tmp\0"); + swap = fstab_test_option(options, "swap\0"); if (tmp && swap) { log_error("Device '%s' cannot be both 'tmp' and 'swap'. Ignoring.", name);