chiark / gitweb /
fstab-util: fix priority parsing and add test
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 12 Jan 2015 04:40:46 +0000 (23:40 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 12 Jan 2015 04:41:42 +0000 (23:41 -0500)
src/shared/fstab-util.c
src/test/test-fstab-util.c

index a886f6a5dadd0e3a8a0665e81c3c4289fec750e2..cf317e17bda65759c5ff7ac8fe59181dec85625d 100644 (file)
@@ -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;
 }
index 284484d65680047522805a22f9942bb371312464..50e5dee0a71c62070c6563a0924b8fc006a4872f 100644 (file)
@@ -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();
 }