diff --git a/lenses/fstab.aug b/lenses/fstab.aug index 8784961d..92a97a23 100644 --- a/lenses/fstab.aug +++ b/lenses/fstab.aug @@ -24,11 +24,12 @@ module Fstab = Build.opt_list lns comma (* A mount option label can't contain comma, comment, equals, or space *) - let optlabel = /[^,#= \n\t]+/ + let mntoptlabel = /[^,#= \n\t]+/ - let comma_sep_list (l:string) = + let mntopt_list (l:string) = let value = [ label "value" . Util.del_str "=" . ( store Rx.neg1 )? ] in - let lns = [ label l . store optlabel . value? ] in + let mntopt = [ label l . store mntoptlabel . value? ] in + let lns = mntopt? in Build.opt_list lns comma let record = [ seq "mntent" . @@ -36,7 +37,7 @@ module Fstab = [ label "spec" . store spec ] . sep_tab . [ label "file" . store file ] . sep_tab . vfstype_list "vfstype" . - (sep_tab . comma_sep_list "opt" . + (sep_tab . mntopt_list "opt" . (sep_tab . [ label "dump" . store /[0-9]+/ ] . ( sep_spc . [ label "passno" . store /[0-9]+/ ])? )? )? . Util.comment_or_eol ] diff --git a/lenses/tests/test_fstab.aug b/lenses/tests/test_fstab.aug index 438f619a..cc239848 100644 --- a/lenses/tests/test_fstab.aug +++ b/lenses/tests/test_fstab.aug @@ -156,6 +156,30 @@ module Test_fstab = { "#comment" = "device at install: /dev/sda3" } } + (* Bug #832 - Allow comma after the last option *) + test Fstab.lns get "/dev/mapper/foo-bar / xfs defaults, 0 0\n" = + { "1" + { "spec" = "/dev/mapper/foo-bar" } + { "file" = "/" } + { "vfstype" = "xfs" } + { "opt" = "defaults" } + { "dump" = "0" } + { "passno" = "0" } + } + + (* RHEL-77279 - Allow empty option *) + test Fstab.lns get "/dev/mapper/foo-bar / xfs rw,,nodev 0 0\n" = + { "1" + { "spec" = "/dev/mapper/foo-bar" } + { "file" = "/" } + { "vfstype" = "xfs" } + { "opt" = "rw" } + { "opt" = "" } + { "opt" = "nodev" } + { "dump" = "0" } + { "passno" = "0" } + } + (* Local Variables: *) (* mode: caml *) (* End: *)