Copyright (C) 1994, Digital Equipment Corp.
FileSysExtra.m3
UNSAFE MODULE FileSysExtra EXPORTS FileSys;
IMPORT M3toC, OSError, OSErrorPosix, Umount;
FROM Ctypes IMPORT int;
PROCEDURE FreeDiskSpace(fn: FN) : CARDINAL RAISES {OSError.E} =
VAR
status: int;
p := M3toC.TtoS(fn);
fs: Umount.struct_statfs;
BEGIN
status := Umount.statfs (
p, LOOPHOLE(ADR(fs), Umount.struct_statfs_star), BYTESIZE(fs));
IF status = -1 THEN OSErrorPosix.Raise(); END;
RETURN MAX(fs.f_bfree, 0);
END FreeDiskSpace;
BEGIN
END FileSysExtra.