Based on The Open Group Base Specifications Issue 6 IEEE Std 1003.1, our
current implementation of df(1) is does not properly format the output under certain conditions. Right now -kP and -Pk are not the same thing. Further, when we set the BLOCKSIZE environment variable, we use "1k" instead of "1024", making the header display incorrectly. To quote the specification: "When both the -k and -P options are specified, the following header line shall be written (in the POSIX locale): "Filesystem 1024-blocks Used Available Capacity Mounted on\n" - If -P has been specified, check to make sure that -k has not already been specified, if so, simply break instead of clobbering the previous blocksize - Use 1024 instead of 1k to make the header POSIX compliant Reported by: Andriy Gapon Discussed with: bde, ru MFC after: 1 week
This commit is contained in:
parent
dec10b39fd
commit
df464e4361
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=162483
13
bin/df/df.c
13
bin/df/df.c
@ -93,7 +93,7 @@ imax(int a, int b)
|
||||
return (a > b ? a : b);
|
||||
}
|
||||
|
||||
static int aflag = 0, cflag, hflag, iflag, nflag;
|
||||
static int aflag = 0, cflag, hflag, iflag, kflag, nflag;
|
||||
static struct ufs_args mdev;
|
||||
|
||||
int
|
||||
@ -123,6 +123,14 @@ main(int argc, char *argv[])
|
||||
case 'b':
|
||||
/* FALLTHROUGH */
|
||||
case 'P':
|
||||
/*
|
||||
* POSIX specifically discusses the 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.
|
||||
*/
|
||||
if (kflag)
|
||||
break;
|
||||
putenv("BLOCKSIZE=512");
|
||||
hflag = 0;
|
||||
break;
|
||||
@ -143,7 +151,8 @@ main(int argc, char *argv[])
|
||||
iflag = 1;
|
||||
break;
|
||||
case 'k':
|
||||
putenv("BLOCKSIZE=1k");
|
||||
kflag++;
|
||||
putenv("BLOCKSIZE=1024");
|
||||
hflag = 0;
|
||||
break;
|
||||
case 'l':
|
||||
|
Loading…
Reference in New Issue
Block a user