m3linker/src/MxFile.m3


Copyright (C) 1994, Digital Equipment Corp.
 File: MxFile.i3                                             

UNSAFE MODULE MxFile;

IMPORT File, OSError;

CONST BIG = 16_1000000; (* 2^24 => 16M *)
TYPE BufPtr = UNTRACED REF ARRAY [0..BIG-1] OF File.Byte;

PROCEDURE Read (f: File.T; VAR(*OUT*)buf: ARRAY OF CHAR; len: INTEGER): INTEGER
  RAISES {OSError.E} =
  VAR ptr := LOOPHOLE (ADR (buf[0]), BufPtr);
  BEGIN
    RETURN f.read (SUBARRAY (ptr^, 0, MIN (len, NUMBER (buf))),
                   mayBlock := TRUE);
  END Read;

BEGIN
END MxFile.