Added a stripped version of the Unix module
This commit is contained in:
parent
8b655cb67e
commit
7dcfb2b4ad
|
@ -24,3 +24,4 @@ CSP.def
|
||||||
Epilogue.def
|
Epilogue.def
|
||||||
Streams.def
|
Streams.def
|
||||||
ArraySort.def
|
ArraySort.def
|
||||||
|
StripUnix.def
|
||||||
|
|
|
@ -6,7 +6,7 @@ SOURCES = ASCII.def EM.def MathLib0.def Processes.def \
|
||||||
random.def Semaphores.def Unix.def RealConver.def \
|
random.def Semaphores.def Unix.def RealConver.def \
|
||||||
Strings.def InOut.def Terminal.def \
|
Strings.def InOut.def Terminal.def \
|
||||||
Mathlib.def PascalIO.def Traps.def CSP.def \
|
Mathlib.def PascalIO.def Traps.def CSP.def \
|
||||||
Epilogue.def Streams.def ArraySort.def
|
Epilogue.def Streams.def ArraySort.def StripUnix.def
|
||||||
|
|
||||||
all:
|
all:
|
||||||
clean:
|
clean:
|
||||||
|
|
|
@ -15,7 +15,7 @@ IMPLEMENTATION MODULE Streams;
|
||||||
*)
|
*)
|
||||||
|
|
||||||
FROM SYSTEM IMPORT BYTE, ADR;
|
FROM SYSTEM IMPORT BYTE, ADR;
|
||||||
IMPORT Unix, Storage, Epilogue;
|
IMPORT StripUnix, Storage, Epilogue;
|
||||||
|
|
||||||
CONST BUFSIZ = 1024; (* tunable *)
|
CONST BUFSIZ = 1024; (* tunable *)
|
||||||
TYPE IOB = RECORD
|
TYPE IOB = RECORD
|
||||||
|
@ -79,17 +79,17 @@ IMPLEMENTATION MODULE Streams;
|
||||||
buf[HIGH(filename)+2] := BYTE(0C);
|
buf[HIGH(filename)+2] := BYTE(0C);
|
||||||
END;
|
END;
|
||||||
IF (mode = reading) THEN
|
IF (mode = reading) THEN
|
||||||
fd := Unix.open(ADR(stream^.buf), 0);
|
fd := StripUnix.open(ADR(stream^.buf), 0);
|
||||||
ELSE
|
ELSE
|
||||||
fd := -1;
|
fd := -1;
|
||||||
IF (mode = appending) THEN
|
IF (mode = appending) THEN
|
||||||
fd := Unix.open(ADR(stream^.buf), 1);
|
fd := StripUnix.open(ADR(stream^.buf), 1);
|
||||||
IF fd >= 0 THEN
|
IF fd >= 0 THEN
|
||||||
IF (Unix.lseek(fd, 0D , 2) < 0D) THEN ; END;
|
IF (StripUnix.lseek(fd, 0D , 2) < 0D) THEN ; END;
|
||||||
END;
|
END;
|
||||||
END;
|
END;
|
||||||
IF fd < 0 THEN
|
IF fd < 0 THEN
|
||||||
fd := Unix.creat(ADR(stream^.buf), 666B);
|
fd := StripUnix.creat(ADR(stream^.buf), 666B);
|
||||||
END;
|
END;
|
||||||
END;
|
END;
|
||||||
IF fd < 0 THEN
|
IF fd < 0 THEN
|
||||||
|
@ -150,7 +150,7 @@ IMPLEMENTATION MODULE Streams;
|
||||||
IF (cnt > 0) THEN
|
IF (cnt > 0) THEN
|
||||||
cnt1 := cnt;
|
cnt1 := cnt;
|
||||||
cnt := 0;
|
cnt := 0;
|
||||||
IF Unix.write(fildes, ADR(buf), cnt1) < 0 THEN END;
|
IF StripUnix.write(fildes, ADR(buf), cnt1) < 0 THEN END;
|
||||||
END;
|
END;
|
||||||
END;
|
END;
|
||||||
END FlushStream;
|
END FlushStream;
|
||||||
|
@ -162,7 +162,7 @@ IMPLEMENTATION MODULE Streams;
|
||||||
IF stream^.mode # reading THEN
|
IF stream^.mode # reading THEN
|
||||||
FlushStream(stream, result);
|
FlushStream(stream, result);
|
||||||
END;
|
END;
|
||||||
IF Unix.close(stream^.fildes) < 0 THEN ; END;
|
IF StripUnix.close(stream^.fildes) < 0 THEN ; END;
|
||||||
freestruct(stream);
|
freestruct(stream);
|
||||||
ELSE
|
ELSE
|
||||||
result := nostream;
|
result := nostream;
|
||||||
|
@ -209,7 +209,7 @@ IMPLEMENTATION MODULE Streams;
|
||||||
IF stream = InputStream THEN
|
IF stream = InputStream THEN
|
||||||
FlushLineBuffers();
|
FlushLineBuffers();
|
||||||
END;
|
END;
|
||||||
maxcnt := Unix.read(fildes, ADR(buf), bufferedcnt);
|
maxcnt := StripUnix.read(fildes, ADR(buf), bufferedcnt);
|
||||||
cnt := 1;
|
cnt := 1;
|
||||||
IF maxcnt <= 0 THEN
|
IF maxcnt <= 0 THEN
|
||||||
eof := TRUE;
|
eof := TRUE;
|
||||||
|
@ -332,7 +332,7 @@ IMPLEMENTATION MODULE Streams;
|
||||||
RETURN;
|
RETURN;
|
||||||
END;
|
END;
|
||||||
IF (s^.mode # reading) THEN FlushStream(s, result); END;
|
IF (s^.mode # reading) THEN FlushStream(s, result); END;
|
||||||
position := Unix.lseek(s^.fildes, 0D, 1);
|
position := StripUnix.lseek(s^.fildes, 0D, 1);
|
||||||
IF position < 0D THEN
|
IF position < 0D THEN
|
||||||
result := illegaloperation;
|
result := illegaloperation;
|
||||||
RETURN;
|
RETURN;
|
||||||
|
@ -357,7 +357,7 @@ IMPLEMENTATION MODULE Streams;
|
||||||
s^.eof := FALSE;
|
s^.eof := FALSE;
|
||||||
END;
|
END;
|
||||||
IF s^.mode = appending THEN
|
IF s^.mode = appending THEN
|
||||||
currpos := Unix.lseek(s^.fildes, 0D, 1);
|
currpos := StripUnix.lseek(s^.fildes, 0D, 1);
|
||||||
IF currpos < 0D THEN
|
IF currpos < 0D THEN
|
||||||
result := illegaloperation;
|
result := illegaloperation;
|
||||||
RETURN;
|
RETURN;
|
||||||
|
@ -367,7 +367,7 @@ IMPLEMENTATION MODULE Streams;
|
||||||
result := illegaloperation;
|
result := illegaloperation;
|
||||||
RETURN;
|
RETURN;
|
||||||
END;
|
END;
|
||||||
currpos := Unix.lseek(s^.fildes, position, 0);
|
currpos := StripUnix.lseek(s^.fildes, position, 0);
|
||||||
IF currpos < 0D THEN
|
IF currpos < 0D THEN
|
||||||
result := illegaloperation;
|
result := illegaloperation;
|
||||||
RETURN;
|
RETURN;
|
||||||
|
@ -383,12 +383,12 @@ IMPLEMENTATION MODULE Streams;
|
||||||
RETURN FALSE;
|
RETURN FALSE;
|
||||||
END;
|
END;
|
||||||
#ifdef __USG
|
#ifdef __USG
|
||||||
RETURN Unix.ioctl(stream^.fildes, INTEGER(ORD('T') * 256 + 1), ADR(buf)) >= 0;
|
RETURN StripUnix.ioctl(stream^.fildes, INTEGER(ORD('T') * 256 + 1), ADR(buf)) >= 0;
|
||||||
#else
|
#else
|
||||||
#ifdef __BSD4_2
|
#ifdef __BSD4_2
|
||||||
RETURN Unix.ioctl(stream^.fildes, INTEGER(ORD('t') * 256 + 8 + 6*65536 + 40000000H), ADR(buf)) >= 0;
|
RETURN StripUnix.ioctl(stream^.fildes, INTEGER(ORD('t') * 256 + 8 + 6*65536 + 40000000H), ADR(buf)) >= 0;
|
||||||
#else
|
#else
|
||||||
RETURN Unix.ioctl(stream^.fildes, INTEGER(ORD('t') * 256 + 8), ADR(buf)) >= 0;
|
RETURN StripUnix.ioctl(stream^.fildes, INTEGER(ORD('t') * 256 + 8), ADR(buf)) >= 0;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
END isatty;
|
END isatty;
|
||||||
|
|
33
lang/m2/libm2/StripUnix.def
Normal file
33
lang/m2/libm2/StripUnix.def
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
(*$Foreign language module *)
|
||||||
|
DEFINITION MODULE StripUnix;
|
||||||
|
(*
|
||||||
|
Module: interface to some Unix systemcalls
|
||||||
|
Author: Ceriel J.H. Jacobs
|
||||||
|
Version: $Header$
|
||||||
|
|
||||||
|
This is a stripped down version of Unix.def, needed to compile some of
|
||||||
|
the modules on small machines
|
||||||
|
*)
|
||||||
|
FROM SYSTEM IMPORT ADDRESS;
|
||||||
|
|
||||||
|
CONST
|
||||||
|
ILLBREAK = ADDRESS(NIL-1);
|
||||||
|
|
||||||
|
VAR errno: INTEGER;
|
||||||
|
PROCEDURE sbrk(incr: INTEGER) : ADDRESS;
|
||||||
|
PROCEDURE close(fildes: INTEGER) : INTEGER;
|
||||||
|
PROCEDURE creat(path: ADDRESS;
|
||||||
|
mode: INTEGER) : INTEGER;
|
||||||
|
(* Sys5 *) PROCEDURE fcntl(fildes, request, arg: INTEGER) : INTEGER;
|
||||||
|
PROCEDURE getpid() : INTEGER;
|
||||||
|
PROCEDURE ioctl(fildes, request: INTEGER; arg: ADDRESS) : INTEGER;
|
||||||
|
PROCEDURE lseek(fildes: INTEGER; offset: LONGINT; whence: INTEGER) : LONGINT;
|
||||||
|
PROCEDURE open(path: ADDRESS; oflag: INTEGER) : INTEGER;
|
||||||
|
PROCEDURE read(fildes: INTEGER;
|
||||||
|
buf: ADDRESS;
|
||||||
|
nbyte: CARDINAL) : INTEGER;
|
||||||
|
PROCEDURE time(tloc: ADDRESS) : LONGINT;
|
||||||
|
PROCEDURE write(fildes: INTEGER;
|
||||||
|
buf: ADDRESS;
|
||||||
|
nbyte: CARDINAL) : INTEGER;
|
||||||
|
END StripUnix.
|
Loading…
Reference in a new issue