aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnkush Mondal <mondalankush9851@gmail.com>2025-11-29 11:15:30 +0000
committerWarner Losh <imp@FreeBSD.org>2026-01-09 20:17:12 +0000
commit539547151678c63903dddda214b16b177cf418b8 (patch)
tree60e2b3a9c36525435e42e6d417db07cecede0876
parent2727bdebb366c3741509eb3553f0fee2453729d3 (diff)
df: Fix -k flag consistency with other BLOCKSIZE flags
This patch resolves inconsistent behavior between the -k option and other related flags, including -P. Previously, using -k resulted in output displayed in 1024-byte blocks, which did not align with the behavior of similar options such as -m and -g, where output is shown in 1M-blocks and 1G-blocks respectively. The updated implementation ensures that -k now correctly displays sizes in 1K-blocks. In addition, the patch incorporates the POSIX requirement that when both -k -P are specified, the block size must be explicitly forced to 1024-blocks. Together, these changes make the behavior of -k consistent, predictable, and compliant with the standard. Signed-off-by: Ankush Mondal <mondalankush9851@gmail.com> Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1906
-rw-r--r--bin/df/df.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/bin/df/df.c b/bin/df/df.c
index db5b8b18beae..12478d23a2ea 100644
--- a/bin/df/df.c
+++ b/bin/df/df.c
@@ -128,11 +128,12 @@ main(int argc, char *argv[])
/*
* POSIX specifically discusses the behavior of
* both -k and -P. It states that the blocksize should
- * be set to 1024. Thus, if this occurs, simply break
- * rather than clobbering the old blocksize.
+ * be set to 1024.
*/
- if (kflag)
+ if (kflag) {
+ setenv("BLOCKSIZE", "1024", 1);
break;
+ }
setenv("BLOCKSIZE", "512", 1);
hflag = 0;
break;
@@ -154,7 +155,7 @@ main(int argc, char *argv[])
break;
case 'k':
kflag++;
- setenv("BLOCKSIZE", "1024", 1);
+ setenv("BLOCKSIZE", "1k", 1);
hflag = 0;
break;
case 'l':