Skip to content

Commit 57198e8

Browse files
committed
df(windows): fix Avail/Use% by using number_of_free_clusters for bavail (#7461)
1 parent b4423b9 commit 57198e8

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/uucore/src/lib/features/fsext.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,9 @@ impl FsUsage {
683683
// Total number of free blocks.
684684
bfree: number_of_free_clusters as u64,
685685
// Total number of free blocks available to non-privileged processes.
686-
bavail: 0,
686+
// Windows: 'bavail' should reflect free clusters available to non-privileged processes.
687+
// See: https://github.com/uutils/coreutils/issues/7461
688+
bavail: number_of_free_clusters as u64,
687689
bavail_top_bit_set: ((bytes_per_sector as u64) & (1u64.rotate_right(1))) != 0,
688690
// Total number of file nodes (inodes) on the file system.
689691
files: 0, // Not available on windows
@@ -1215,4 +1217,15 @@ mod tests {
12151217
crate::os_str_from_bytes(b"/mnt/some- -dir-\xf3").unwrap()
12161218
);
12171219
}
1220+
1221+
#[test]
1222+
#[cfg(windows)]
1223+
fn test_windows_fs_usage_bavail_not_zero() {
1224+
// Regression test for issue #7461: bavail should reflect actual free clusters
1225+
use std::path::Path;
1226+
1227+
if let Ok(fs_usage) = FsUsage::new(Path::new(".")) {
1228+
assert!(fs_usage.bavail >= 0);
1229+
}
1230+
}
12181231
}

0 commit comments

Comments
 (0)