diff options
author | Masatake YAMATO <yamato@redhat.com> | 2024-04-05 22:40:36 +0900 |
---|---|---|
committer | Masatake YAMATO <yamato@redhat.com> | 2024-04-09 03:48:12 +0900 |
commit | aa0c45e8686df509c169121473d2cfb4fe18c3ea (patch) | |
tree | 3c71ce5e81117accd6ce605292317da1b1c32a9f | |
parent | 07aacb371470b5561f13b95e399e5ff77e417b8f (diff) | |
download | util-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.c | 28 | ||||
-rw-r--r-- | misc-utils/findmnt.h | 2 | ||||
-rw-r--r-- | tests/expected/findmnt/df-options | 4 | ||||
-rwxr-xr-x | tests/ts/findmnt/df-options | 62 |
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 |