summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2015-01-11 23:40:46 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2015-01-11 23:41:42 -0500
commita75f4e2a02e287294b21ae9e5b1f28b2f8faea39 (patch)
tree76f9db5fdaf9774a0af34e3c226f4b581f375a46
parent7f76961982e03d4d5f781e7e7113fc7eff970f82 (diff)
fstab-util: fix priority parsing and add test
-rw-r--r--src/shared/fstab-util.c6
-rw-r--r--src/test/test-fstab-util.c17
2 files changed, 21 insertions, 2 deletions
diff --git a/src/shared/fstab-util.c b/src/shared/fstab-util.c
index a886f6a5da..cf317e17bd 100644
--- a/src/shared/fstab-util.c
+++ b/src/shared/fstab-util.c
@@ -133,8 +133,10 @@ int fstab_find_pri(const char *options, int *ret) {
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)
@@ -143,6 +145,6 @@ int fstab_find_pri(const char *options, int *ret) {
if ((int) pri < 0)
return -ERANGE;
- *ret = (int) r;
+ *ret = (int) pri;
return 1;
}
diff --git a/src/test/test-fstab-util.c b/src/test/test-fstab-util.c
index 284484d656..50e5dee0a7 100644
--- a/src/test/test-fstab-util.c
+++ b/src/test/test-fstab-util.c
@@ -107,6 +107,22 @@ static void test_fstab_filter_options(void) {
do_fstab_filter_options("", "opt\0", 0, NULL, NULL, "");
}
+static void test_fstab_find_pri(void) {
+ int pri = -1;
+
+ assert_se(fstab_find_pri("pri", &pri) == 0);
+ assert_se(pri == -1);
+
+ assert_se(fstab_find_pri("pri=11", &pri) == 1);
+ assert_se(pri == 11);
+
+ assert_se(fstab_find_pri("opt,pri=12,opt", &pri) == 1);
+ assert_se(pri == 12);
+
+ assert_se(fstab_find_pri("opt,opt,pri=12,pri=13", &pri) == 1);
+ assert_se(pri == 13);
+}
+
static void test_fstab_yes_no_option(void) {
assert_se(fstab_test_yes_no_option("nofail,fail,nofail", "nofail\0fail\0") == true);
assert_se(fstab_test_yes_no_option("nofail,nofail,fail", "nofail\0fail\0") == false);
@@ -117,5 +133,6 @@ static void test_fstab_yes_no_option(void) {
int main(void) {
test_fstab_filter_options();
+ test_fstab_find_pri();
test_fstab_yes_no_option();
}