aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasatake YAMATO <yamato@redhat.com>2024-04-05 22:40:36 +0900
committerMasatake YAMATO <yamato@redhat.com>2024-04-09 03:48:12 +0900
commitaa0c45e8686df509c169121473d2cfb4fe18c3ea (patch)
tree3c71ce5e81117accd6ce605292317da1b1c32a9f
parent07aacb371470b5561f13b95e399e5ff77e417b8f (diff)
downloadutil-linux-aa0c45e8686df509c169121473d2cfb4fe18c3ea.tar.gz
findmnt: revise the code for -I and -D option
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>
-rw-r--r--misc-utils/findmnt.c28
-rw-r--r--misc-utils/findmnt.h2
-rw-r--r--tests/expected/findmnt/df-options4
-rwxr-xr-xtests/ts/findmnt/df-options62
4 files changed, 80 insertions, 16 deletions
diff --git a/misc-utils/findmnt.c b/misc-utils/findmnt.c
index cc397da360..2e4d59ecc0 100644
--- a/misc-utils/findmnt.c
+++ b/misc-utils/findmnt.c
@@ -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);
}
diff --git a/misc-utils/findmnt.h b/misc-utils/findmnt.h
index 5c694500be..85ab68da55 100644
--- a/misc-utils/findmnt.h
+++ b/misc-utils/findmnt.h
@@ -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
index 0000000000..3f0f5093c3
--- /dev/null
+++ b/tests/expected/findmnt/df-options
@@ -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
index 0000000000..58208b9608
--- /dev/null
+++ b/tests/ts/findmnt/df-options
@@ -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