os/src/POSIX/PipePosix.m3


Copyright (C) 1994, Digital Equipment Corp.

MODULE PipePosix EXPORTS Pipe;

IMPORT Ctypes, FilePosix, OSError, OSErrorPosix, Unix;

PROCEDURE Open(VAR hr, hw: T) RAISES {OSError.E} =
  VAR fd: ARRAY [0..1] OF Ctypes.int;
  BEGIN
    IF Unix.pipe(fd) < 0 THEN OSErrorPosix.Raise() END;
    hr := FilePosix.NewPipe(fd := fd[Unix.readEnd], ds := FilePosix.Read);
    hw := FilePosix.NewPipe(fd := fd[Unix.writeEnd], ds := FilePosix.Write)
  END Open;

BEGIN
END PipePosix.

interface Unix is in: