]> err.no Git - util-linux/commitdiff
findmnt: add /etc/fstab.d support
authorKarel Zak <kzak@redhat.com>
Wed, 23 Jun 2010 08:22:02 +0000 (10:22 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 3 Jan 2011 11:28:39 +0000 (12:28 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
misc-utils/findmnt.8
misc-utils/findmnt.c

index c7a15357bad869e2d176802560afcdc5abaa21b0..65cef44bb720f49f4f18153de7208a753a6f46f1 100644 (file)
@@ -22,6 +22,7 @@ will list all mounted filesytems or search for a filesystem.  The
 .B findmnt
 command is able to search in
 .IR /etc/fstab ,
+.IR /etc/fstab.d ,
 .IR /etc/mtab
 or
 .IR /proc/self/mountinfo .
@@ -37,7 +38,9 @@ The command prints all mounted filesystems in the tree-like format by default.
 Print help and exit.
 .IP "\fB\-s, \-\-fstab\fP"
 Search in
-.IR /etc/fstab .
+.IR /etc/fstab
+and
+.IR /etc/fstab.d .
 The output is in the list format (see --list).
 .IP "\fB\-m, \-\-mtab\fP"
 Search in
index 1754da1d592783c149988ac120021f9ddb4f2352..76564f6b863f410de588c38d1e4b3b667fa667bc 100644 (file)
@@ -308,15 +308,32 @@ leave:
        return rc;
 }
 
+/* error callback */
+static int parser_errcb(mnt_tab *tb, const char *filename, int line, int flag)
+{
+       warn(_("%s: parse error at line %d"), filename, line);
+       return 0;
+}
+
 /* calls libmount fstab/mtab/mountinfo parser */
 static mnt_tab *parse_tabfile(const char *path)
 {
-       mnt_tab *tb = mnt_new_tab(path);
+       int rc;
+       mnt_tab *tb = mnt_new_tab();
+
        if (!tb) {
                warn(_("failed to initialize libmount tab"));
                return NULL;
        }
-       if (mnt_tab_parse_file(tb) != 0) {
+
+       mnt_tab_set_parser_errcb(tb, parser_errcb);
+
+       if (!strcmp(path, _PATH_MNTTAB))
+               rc = mnt_tab_parse_fstab(tb);
+       else
+               rc = mnt_tab_parse_file(tb, path);
+
+       if (rc) {
                mnt_free_tab(tb);
                warn(_("can't read: %s"), path);
                return NULL;