FROM SYSTEM IMPORT BYTE, ADR;
FROM Epilogue IMPORT CallAtEnd;
FROM Storage IMPORT Allocate, Available;
- FROM StripUnix IMPORT
- open, close, lseek, read, write, creat, ioctl;
+ IMPORT StripUnix;
CONST BUFSIZ = 1024; (* tunable *)
TYPE IOB = RECORD
buf[HIGH(filename)+2] := BYTE(0C);
END;
IF (mode = reading) THEN
- fd := open(ADR(stream^.buf), 0);
+ fd := StripUnix.open(ADR(stream^.buf), 0);
ELSE
fd := -1;
IF (mode = appending) THEN
- fd := open(ADR(stream^.buf), 1);
+ fd := StripUnix.open(ADR(stream^.buf), 1);
IF fd >= 0 THEN
- IF (lseek(fd, 0D , 2) < 0D) THEN ; END;
+ IF (StripUnix.lseek(fd, 0D , 2) < 0D) THEN ; END;
END;
END;
IF fd < 0 THEN
- fd := creat(ADR(stream^.buf), 666B);
+ fd := StripUnix.creat(ADR(stream^.buf), 666B);
END;
END;
IF fd < 0 THEN
IF (cnt > 0) THEN
cnt1 := cnt;
cnt := 0;
- IF write(fildes, ADR(buf), cnt1) < 0 THEN END;
+ IF StripUnix.write(fildes, ADR(buf), cnt1) < 0 THEN END;
END;
END;
END FlushStream;
IF stream^.mode # reading THEN
FlushStream(stream, result);
END;
- IF close(stream^.fildes) < 0 THEN ; END;
+ IF StripUnix.close(stream^.fildes) < 0 THEN ; END;
freestruct(stream);
ELSE
result := nostream;
IF stream = InputStream THEN
FlushLineBuffers();
END;
- maxcnt := read(fildes, ADR(buf), bufferedcnt);
+ maxcnt := StripUnix.read(fildes, ADR(buf), bufferedcnt);
cnt := 1;
IF maxcnt <= 0 THEN
eof := TRUE;
RETURN;
END;
IF (s^.mode # reading) THEN FlushStream(s, result); END;
- position := lseek(s^.fildes, 0D, 1);
+ position := StripUnix.lseek(s^.fildes, 0D, 1);
IF position < 0D THEN
result := illegaloperation;
RETURN;
s^.eof := FALSE;
END;
IF s^.mode = appending THEN
- currpos := lseek(s^.fildes, 0D, 1);
+ currpos := StripUnix.lseek(s^.fildes, 0D, 1);
IF currpos < 0D THEN
result := illegaloperation;
RETURN;
result := illegaloperation;
RETURN;
END;
- currpos := lseek(s^.fildes, position, 0);
+ currpos := StripUnix.lseek(s^.fildes, position, 0);
IF currpos < 0D THEN
result := illegaloperation;
RETURN;
END SetPosition;
PROCEDURE isatty(stream: Stream; VAR result: StreamResult): BOOLEAN;
- VAR buf: ARRAY[1..100] OF CHAR;
BEGIN
IF (stream = NIL) OR (stream^.kind = none) THEN
result := nostream;
RETURN FALSE;
END;
-#ifdef __USG
- RETURN ioctl(stream^.fildes, INTEGER(ORD('T') * 256 + 1), ADR(buf)) >= 0;
-#else
-#ifdef __BSD4_2
- RETURN ioctl(stream^.fildes, INTEGER(ORD('t') * 256 + 8 + 6*65536 + 40000000H), ADR(buf)) >= 0;
-#else
- RETURN ioctl(stream^.fildes, INTEGER(ORD('t') * 256 + 8), ADR(buf)) >= 0;
-#endif
-#endif
+ IF (StripUnix.isatty(stream^.fildes) = 0) THEN
+ RETURN FALSE;
+ END;
+ RETURN TRUE;
END isatty;
PROCEDURE InitStreams;