Copyright (C) 1994, Digital Equipment Corp.
FileSysExtra.m3
UNSAFE MODULE FileSysExtra EXPORTS FileSys;
IMPORT M3toC, OSError, OSErrorPosix, Umnt;
FROM Ctypes IMPORT char_star, int, unsigned_int, unsigned_int_star;
PROCEDURE FreeDiskSpace(fn: FN) : CARDINAL RAISES {OSError.E} =
VAR
status: int;
start: unsigned_int;
p: char_star;
fs: Umnt.fs_data;
BEGIN
p := M3toC.TtoS(fn);
status := Umnt.getmnt (
LOOPHOLE(ADR(start), unsigned_int_star),
LOOPHOLE(ADR(fs), Umnt.fs_data_star),
BYTESIZE(fs), Umnt.STAT_ONE, p);
IF status = -1 THEN OSErrorPosix.Raise(); END;
RETURN MAX(fs.fd_req.bfreen, 0);
END FreeDiskSpace;
BEGIN
END FileSysExtra.