pkgobj/src/POSIX/ultrix/FileSysExtra.m3


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.