]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
findmnt: revise the code for -I and -D option
authorMasatake YAMATO <yamato@redhat.com>
Fri, 5 Apr 2024 13:40:36 +0000 (22:40 +0900)
committerMasatake YAMATO <yamato@redhat.com>
Mon, 8 Apr 2024 18:48:12 +0000 (03:48 +0900)
Fixes #2913.

3dd79293b5b655da9d913dedd8facb08959a7826 added -I option.
However, the code used bit flags (FL_DF and FL_DF_INODES) wrongly;
the code broke the output of -D option.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
misc-utils/findmnt.c
misc-utils/findmnt.h
tests/expected/findmnt/df-options [new file with mode: 0644]
tests/ts/findmnt/df-options [new file with mode: 0755]

index cc397da3609187c852f3986cf7f12c43250e55ff..2e4d59ecc0c78f87bb0e48d6fe10760613acd392 100644 (file)
@@ -1636,7 +1636,7 @@ int main(int argc, char *argv[])
                        break;
                case 'I':
                        flags &= ~FL_TREE;
-                       flags |= FL_DF_INODES;
+                       flags |= (FL_DF_INODES | FL_DF);
                        break;
                case 'i':
                        flags |= FL_INVERT;
@@ -1775,22 +1775,20 @@ int main(int argc, char *argv[])
        if (collist)
                list_colunms();         /* print end exit */
 
-       if (!ncolumns && (flags & FL_DF_INODES)) {
+       if (!ncolumns && (flags & FL_DF)) {
                add_column(columns, ncolumns++, COL_SOURCE);
                add_column(columns, ncolumns++, COL_FSTYPE);
-               add_column(columns, ncolumns++, COL_INO_TOTAL);
-               add_column(columns, ncolumns++, COL_INO_USED);
-               add_column(columns, ncolumns++, COL_INO_AVAIL);
-               add_column(columns, ncolumns++, COL_INO_USEPERC);
-               add_column(columns, ncolumns++, COL_TARGET);
-       }
-       else if (!ncolumns && (flags & FL_DF)) {
-               add_column(columns, ncolumns++, COL_SOURCE);
-               add_column(columns, ncolumns++, COL_FSTYPE);
-               add_column(columns, ncolumns++, COL_SIZE);
-               add_column(columns, ncolumns++, COL_USED);
-               add_column(columns, ncolumns++, COL_AVAIL);
-               add_column(columns, ncolumns++, COL_USEPERC);
+               if (flags & FL_DF_INODES) {
+                       add_column(columns, ncolumns++, COL_INO_TOTAL);
+                       add_column(columns, ncolumns++, COL_INO_USED);
+                       add_column(columns, ncolumns++, COL_INO_AVAIL);
+                       add_column(columns, ncolumns++, COL_INO_USEPERC);
+               } else {
+                       add_column(columns, ncolumns++, COL_SIZE);
+                       add_column(columns, ncolumns++, COL_USED);
+                       add_column(columns, ncolumns++, COL_AVAIL);
+                       add_column(columns, ncolumns++, COL_USEPERC);
+               }
                add_column(columns, ncolumns++, COL_TARGET);
        }
 
index 5c694500be476faba280900edecb08ab91304258..85ab68da55414f5c9124355c8a11b955f52fc3eb 100644 (file)
@@ -24,7 +24,7 @@ enum {
        FL_SHADOWED     = (1 << 20),
        FL_DELETED      = (1 << 21),
        FL_SHELLVAR     = (1 << 22),
-       FL_DF_INODES    = (1 << 23) | FL_DF,
+       FL_DF_INODES    = (1 << 23),
 
        /* basic table settings */
        FL_ASCII        = (1 << 25),
diff --git a/tests/expected/findmnt/df-options b/tests/expected/findmnt/df-options
new file mode 100644 (file)
index 0000000..3f0f509
--- /dev/null
@@ -0,0 +1,4 @@
+-D: OK
+-I: OK
+--df: OK
+--dfi: OK
diff --git a/tests/ts/findmnt/df-options b/tests/ts/findmnt/df-options
new file mode 100755 (executable)
index 0000000..58208b9
--- /dev/null
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+# This file is part of util-linux.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+TS_TOPDIR="${0%/*}/../.."
+TS_DESC="the columns enabled with -D and -I options"
+
+. "$TS_TOPDIR"/functions.sh
+ts_init "$*"
+
+ts_check_test_command "$TS_CMD_FINDMNT"
+ts_check_prog "head"
+
+ts_cd "$TS_OUTDIR"
+
+D_expectation="SOURCE FSTYPE SIZE USED AVAIL USE% TARGET"
+I_expectation="SOURCE FSTYPE INO.TOTAL INO.USED INO.AVAIL INO.USE% TARGET"
+{
+       if [[ $($TS_CMD_FINDMNT --raw -D | head -1) == "$D_expectation" ]]; then
+           echo "-D: OK"
+       else
+           echo "-D: ERROR"
+           $TS_CMD_FINDMNT --raw -D
+           echo $?
+       fi
+
+       if [[ $($TS_CMD_FINDMNT --raw -I | head -1) == "$I_expectation" ]]; then
+           echo "-I: OK"
+       else
+           echo "-I: ERROR"
+           $TS_CMD_FINDMNT --raw -I
+           echo $?
+       fi
+
+       if [[ $($TS_CMD_FINDMNT --raw --df | head -1) == "$D_expectation" ]]; then
+           echo "--df: OK"
+       else
+           echo "--df: ERROR"
+           $TS_CMD_FINDMNT --raw --df
+           echo $?
+       fi
+
+       if [[ $($TS_CMD_FINDMNT --raw --dfi | head -1) == "$I_expectation" ]]; then
+           echo "--dfi: OK"
+       else
+           echo "--dfi: ERROR"
+           $TS_CMD_FINDMNT --raw --dfi
+           echo $?
+       fi
+} >> "$TS_OUTPUT" 2>> "$TS_ERRLOG"
+
+ts_finalize