return !!n;
}
+int fstab_extract_values(const char *opts, const char *name, char ***values) {
+ _cleanup_strv_free_ char **optsv = NULL, **res = NULL;
+ char **s;
+
+ assert(opts);
+ assert(name);
+ assert(values);
+
+ optsv = strv_split(opts, ",");
+ if (!optsv)
+ return -ENOMEM;
+
+ STRV_FOREACH(s, optsv) {
+ char *arg;
+ int r;
+
+ arg = startswith(*s, name);
+ if (!arg || *arg != '=')
+ continue;
+ r = strv_extend(&res, arg + 1);
+ if (r < 0)
+ return r;
+ }
+
+ *values = res;
+ res = NULL;
+
+ return !!*values;
+}
+
int fstab_find_pri(const char *options, int *ret) {
_cleanup_free_ char *opt = NULL;
int r;
assert(ret);
r = fstab_filter_options(options, "pri\0", NULL, &opt, NULL);
- if (r <= 0)
+ if (r < 0)
return r;
+ if (r == 0 || !opt)
+ return 0;
r = safe_atou(opt, &pri);
if (r < 0)
return r;
- *ret = (int) r;
+ if ((int) pri < 0)
+ return -ERANGE;
+
+ *ret = (int) pri;
return 1;
}