mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-10-10 01:37:24 +00:00
122 lines
3 KiB
Modula-2
122 lines
3 KiB
Modula-2
(* Host file-system bindings used by oocFiles. *)
|
|
MODULE oocFilesHost;
|
|
|
|
IMPORT SYSTEM, Platform;
|
|
|
|
TYPE
|
|
Byte* = SYSTEM.BYTE;
|
|
Handle* = Platform.FileHandle;
|
|
Error* = Platform.ErrorCode;
|
|
|
|
PROCEDURE Absent* (error: Error): BOOLEAN;
|
|
BEGIN
|
|
RETURN Platform.Absent(error)
|
|
END Absent;
|
|
|
|
PROCEDURE TooManyFiles* (error: Error): BOOLEAN;
|
|
BEGIN
|
|
RETURN Platform.TooManyFiles(error)
|
|
END TooManyFiles;
|
|
|
|
PROCEDURE Inaccessible* (error: Error): BOOLEAN;
|
|
BEGIN
|
|
RETURN Platform.Inaccessible(error)
|
|
END Inaccessible;
|
|
|
|
PROCEDURE New* (VAR name: ARRAY OF CHAR; VAR handle: Handle): Error;
|
|
BEGIN
|
|
RETURN Platform.New(name, handle)
|
|
END New;
|
|
|
|
PROCEDURE OpenReadOnly* (VAR name: ARRAY OF CHAR; VAR handle: Handle): Error;
|
|
BEGIN
|
|
RETURN Platform.OldRO(name, handle)
|
|
END OpenReadOnly;
|
|
|
|
PROCEDURE OpenReadWrite* (VAR name: ARRAY OF CHAR; VAR handle: Handle): Error;
|
|
BEGIN
|
|
RETURN Platform.OldRW(name, handle)
|
|
END OpenReadWrite;
|
|
|
|
PROCEDURE Close* (handle: Handle): Error;
|
|
BEGIN
|
|
RETURN Platform.Close(handle)
|
|
END Close;
|
|
|
|
PROCEDURE Size* (handle: Handle; VAR length: LONGINT): Error;
|
|
BEGIN
|
|
RETURN Platform.Size(handle, length)
|
|
END Size;
|
|
|
|
PROCEDURE Seek* (handle: Handle; position: LONGINT): Error;
|
|
BEGIN
|
|
RETURN Platform.Seek(handle, position, Platform.SeekSet)
|
|
END Seek;
|
|
|
|
PROCEDURE ReadByte* (handle: Handle; VAR x: Byte; VAR count: LONGINT): Error;
|
|
BEGIN
|
|
RETURN Platform.Read(handle, SYSTEM.ADR(x), 1, count)
|
|
END ReadByte;
|
|
|
|
PROCEDURE ReadBytes* (handle: Handle; VAR x: ARRAY OF Byte;
|
|
start, n: LONGINT; VAR count: LONGINT): Error;
|
|
BEGIN
|
|
RETURN Platform.Read(handle, SYSTEM.ADR(x[start]), n, count)
|
|
END ReadBytes;
|
|
|
|
PROCEDURE WriteByte* (handle: Handle; x: Byte): Error;
|
|
BEGIN
|
|
RETURN Platform.Write(handle, SYSTEM.ADR(x), 1)
|
|
END WriteByte;
|
|
|
|
PROCEDURE WriteBytes* (handle: Handle; VAR x: ARRAY OF Byte;
|
|
start, n: LONGINT): Error;
|
|
BEGIN
|
|
RETURN Platform.Write(handle, SYSTEM.ADR(x[start]), n)
|
|
END WriteBytes;
|
|
|
|
PROCEDURE Sync* (handle: Handle): Error;
|
|
BEGIN
|
|
RETURN Platform.Sync(handle)
|
|
END Sync;
|
|
|
|
PROCEDURE Truncate* (handle: Handle; length: LONGINT): Error;
|
|
BEGIN
|
|
RETURN Platform.Truncate(handle, length)
|
|
END Truncate;
|
|
|
|
PROCEDURE Remove* (VAR name: ARRAY OF CHAR): Error;
|
|
BEGIN
|
|
RETURN Platform.Unlink(name)
|
|
END Remove;
|
|
|
|
PROCEDURE Rename* (VAR oldName, newName: ARRAY OF CHAR): Error;
|
|
BEGIN
|
|
RETURN Platform.Rename(oldName, newName)
|
|
END Rename;
|
|
|
|
PROCEDURE Exists* (VAR name: ARRAY OF CHAR): BOOLEAN;
|
|
VAR identity: Platform.FileIdentity;
|
|
BEGIN
|
|
RETURN Platform.IdentifyByName(name, identity) = 0
|
|
END Exists;
|
|
|
|
PROCEDURE GetModTime* (handle: Handle; VAR packedTime, packedDate: LONGINT): Error;
|
|
VAR identity: Platform.FileIdentity; error: Error;
|
|
BEGIN
|
|
error := Platform.Identify(handle, identity);
|
|
IF error = 0 THEN Platform.MTimeAsClock(identity, packedTime, packedDate) END;
|
|
RETURN error
|
|
END GetModTime;
|
|
|
|
PROCEDURE CurrentDirectory* (VAR path: ARRAY OF CHAR);
|
|
BEGIN
|
|
COPY(Platform.CWD, path)
|
|
END CurrentDirectory;
|
|
|
|
PROCEDURE ProcessId* (): INTEGER;
|
|
BEGIN
|
|
RETURN Platform.PID
|
|
END ProcessId;
|
|
|
|
END oocFilesHost.
|