pkgobj/src/POSIX/osf/FileSysExtra.m3


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.