new system types on darwin: updated bootstrap binary. -- noch.

Former-commit-id: 63a0f765a7
This commit is contained in:
norayr 2015-03-17 17:24:05 +08:00
parent d4acb76183
commit 73369a589f
6 changed files with 153 additions and 151 deletions

View file

@ -1 +1 @@
/opt/voc-1.1/lib
/Users/noch/local/voc-1.1/lib

View file

@ -76,21 +76,21 @@ stage2:
stage3:
$(VOCSTATIC0) -siapxPS SYSTEM.Mod
$(VOCSTATIC0) -sPS Args.Mod Console.Mod Unix.Mod
$(VOCSTATIC0) -sPFS Args.Mod Console.Mod Unix.Mod
sed -i.tmp "s#/opt#$(PRF)#g" src/voc/prf.Mod
$(VOCSTATIC0) -sPS prf.Mod
$(VOCSTATIC0) -sPS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPS Files0.Mod
$(VOCSTATIC0) -sPS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPS vt100.Mod
$(VOCSTATIC0) -sPFS prf.Mod
$(VOCSTATIC0) -sPFS Strings.Mod architecture.Mod version.Mod Kernel0.Mod Modules.Mod
$(VOCSTATIC0) -sxPFS Files0.Mod
$(VOCSTATIC0) -sPFS Reals.Mod Texts0.Mod
$(VOCSTATIC0) -sPFS vt100.Mod
# build the compiler
stage4:
$(VOCSTATIC0) -sPS errors.Mod
$(VOCSTATIC0) -sPS extTools.Mod
$(VOCSTATIC0) -sPS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPS OPS.Mod
$(VOCSTATIC0) -sPS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -sPFS errors.Mod
$(VOCSTATIC0) -sPFS extTools.Mod
$(VOCSTATIC0) -sPFS OPM.cmdln.Mod
$(VOCSTATIC0) -sxPFS OPS.Mod
$(VOCSTATIC0) -sPFS OPT.Mod OPC.Mod OPV.Mod OPB.Mod OPP.Mod
$(VOCSTATIC0) -smPS voc.Mod
$(VOCSTATIC0) -smPS BrowserCmd.Mod
$(VOCSTATIC0) -smPS OCatCmd.Mod
@ -118,27 +118,27 @@ stage5:
# build all library files
stage6:
#v4 libs
$(VOCSTATIC) -sP Kernel.Mod
$(VOCSTATIC) -sP Files.Mod
$(VOCSTATIC) -sP Texts.Mod
$(VOCSTATIC) -sP Printer.Mod
$(VOCSTATIC) -sP Strings.Mod
$(VOCSTATIC) -sP Sets.Mod
$(VOCSTATIC) -sP Sets0.Mod
$(VOCSTATIC) -sP Oberon.Mod
$(VOCSTATIC) -sPF Kernel.Mod
$(VOCSTATIC) -sPF Files.Mod
$(VOCSTATIC) -sPF Texts.Mod
$(VOCSTATIC) -sPF Printer.Mod
$(VOCSTATIC) -sPF Strings.Mod
$(VOCSTATIC) -sPF Sets.Mod
$(VOCSTATIC) -sPF Sets0.Mod
$(VOCSTATIC) -sPF Oberon.Mod
#ooc libs
$(VOCSTATIC) -sP oocAscii.Mod
$(VOCSTATIC) -sP oocStrings.Mod
$(VOCSTATIC) -sP oocStrings2.Mod
$(VOCSTATIC) -sP oocOakStrings.Mod
$(VOCSTATIC) -sP oocCharClass.Mod
$(VOCSTATIC) -sP oocConvTypes.Mod
$(VOCSTATIC) -sP oocIntConv.Mod
$(VOCSTATIC) -sP oocIntStr.Mod
$(VOCSTATIC) -sP oocSysClock.Mod
$(VOCSTATIC) -sP oocTime.Mod
$(VOCSTATIC) -sP oocRandomNumbers.Mod
$(VOCSTATIC) -sPF oocAscii.Mod
$(VOCSTATIC) -sPF oocStrings.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod
$(VOCSTATIC) -sPF oocOakStrings.Mod
$(VOCSTATIC) -sPF oocCharClass.Mod
$(VOCSTATIC) -sPF oocConvTypes.Mod
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod
@ -146,115 +146,115 @@ stage6:
#ooc2 libs
$(VOCSTATIC) -sP ooc2Strings.Mod
$(VOCSTATIC) -sP ooc2Ascii.Mod
$(VOCSTATIC) -sP ooc2CharClass.Mod
$(VOCSTATIC) -sP ooc2ConvTypes.Mod
$(VOCSTATIC) -sP ooc2IntConv.Mod
$(VOCSTATIC) -sP ooc2IntStr.Mod
$(VOCSTATIC) -sP ooc2Real0.Mod
$(VOCSTATIC) -sPF ooc2Strings.Mod
$(VOCSTATIC) -sPF ooc2Ascii.Mod
$(VOCSTATIC) -sPF ooc2CharClass.Mod
$(VOCSTATIC) -sPF ooc2ConvTypes.Mod
$(VOCSTATIC) -sPF ooc2IntConv.Mod
$(VOCSTATIC) -sPF ooc2IntStr.Mod
$(VOCSTATIC) -sPF ooc2Real0.Mod
#ooc libs
$(VOCSTATIC) -sP oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sP oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sP oocLRealMath.Mod
$(VOCSTATIC) -sP oocLongInts.Mod
$(VOCSTATIC) -sP oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sP oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sP oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sP oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sP oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sP oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sP oocFilenames.Mod
$(VOCSTATIC) -sP oocwrapperlibc.Mod
$(VOCSTATIC) -sP oocC.Mod
$(VOCSTATIC) -sPF oocLowReal.Mod oocLowLReal.Mod
$(VOCSTATIC) -sPF oocRealMath.Mod oocOakMath.Mod
$(VOCSTATIC) -sPF oocLRealMath.Mod
$(VOCSTATIC) -sPF oocLongInts.Mod
$(VOCSTATIC) -sPF oocComplexMath.Mod oocLComplexMath.Mod
$(VOCSTATIC) -sPF oocLRealConv.Mod oocLRealStr.Mod
$(VOCSTATIC) -sPF oocRealConv.Mod oocRealStr.Mod
$(VOCSTATIC) -sPF oocMsg.Mod oocChannel.Mod
$(VOCSTATIC) -sPF oocStrings2.Mod oocRts.Mod oocFilenames.Mod
$(VOCSTATIC) -sPF oocTextRider.Mod oocBinaryRider.Mod oocJulianDay.Mod
$(VOCSTATIC) -sPF oocFilenames.Mod
$(VOCSTATIC) -sPF oocwrapperlibc.Mod
$(VOCSTATIC) -sPF oocC.Mod
#Ulm's Oberon system libs
$(VOCSTATIC) -sP ulmSys.Mod
$(VOCSTATIC) -sP ulmSYSTEM.Mod
$(VOCSTATIC) -sP ulmASCII.Mod
$(VOCSTATIC) -sP ulmSets.Mod
$(VOCSTATIC) -sP ulmObjects.Mod
$(VOCSTATIC) -sP ulmDisciplines.Mod
$(VOCSTATIC) -sP ulmPriorities.Mod
$(VOCSTATIC) -sP ulmServices.Mod
$(VOCSTATIC) -sP ulmEvents.Mod
$(VOCSTATIC) -sP ulmResources.Mod
$(VOCSTATIC) -sP ulmForwarders.Mod
$(VOCSTATIC) -sP ulmRelatedEvents.Mod
$(VOCSTATIC) -sP ulmIO.Mod
$(VOCSTATIC) -sP ulmProcess.Mod
$(VOCSTATIC) -sP ulmTypes.Mod
$(VOCSTATIC) -sP ulmStreams.Mod
$(VOCSTATIC) -sP ulmAssertions.Mod
$(VOCSTATIC) -sP ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sP ulmStreamDisciplines.Mod
$(VOCSTATIC) -sP ulmIEEE.Mod
$(VOCSTATIC) -sP ulmMC68881.Mod
$(VOCSTATIC) -sP ulmReals.Mod
$(VOCSTATIC) -sP ulmPrint.Mod
$(VOCSTATIC) -sP ulmWrite.Mod
$(VOCSTATIC) -sP ulmTexts.Mod
$(VOCSTATIC) -sP ulmStrings.Mod
$(VOCSTATIC) -sP ulmConstStrings.Mod
$(VOCSTATIC) -sP ulmPlotters.Mod
$(VOCSTATIC) -sP ulmSysTypes.Mod
$(VOCSTATIC) -sP ulmSysConversions.Mod
$(VOCSTATIC) -sP ulmErrors.Mod
$(VOCSTATIC) -sP ulmSysErrors.Mod
$(VOCSTATIC) -sP ulmSysIO.Mod
$(VOCSTATIC) -sP ulmLoader.Mod
$(VOCSTATIC) -sP ulmNetIO.Mod
$(VOCSTATIC) -sP ulmPersistentObjects.Mod
$(VOCSTATIC) -sP ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sP ulmOperations.Mod
$(VOCSTATIC) -sP ulmScales.Mod
$(VOCSTATIC) -sP ulmTimes.Mod
$(VOCSTATIC) -sP ulmClocks.Mod
$(VOCSTATIC) -sP ulmTimers.Mod
$(VOCSTATIC) -sP ulmConditions.Mod
$(VOCSTATIC) -sP ulmStreamConditions.Mod
$(VOCSTATIC) -sP ulmTimeConditions.Mod
$(VOCSTATIC) -sP ulmSysConversions.Mod
$(VOCSTATIC) -sP ulmSysStat.Mod
$(VOCSTATIC) -sP ulmCiphers.Mod
$(VOCSTATIC) -sP ulmCipherOps.Mod
$(VOCSTATIC) -sP ulmBlockCiphers.Mod
$(VOCSTATIC) -sP ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sP ulmConclusions.Mod
$(VOCSTATIC) -sP ulmRandomGenerators.Mod
$(VOCSTATIC) -sP ulmTCrypt.Mod
$(VOCSTATIC) -sP ulmIntOperations.Mod
$(VOCSTATIC) -sPF ulmSys.Mod
$(VOCSTATIC) -sPF ulmSYSTEM.Mod
$(VOCSTATIC) -sPF ulmASCII.Mod
$(VOCSTATIC) -sPF ulmSets.Mod
$(VOCSTATIC) -sPF ulmObjects.Mod
$(VOCSTATIC) -sPF ulmDisciplines.Mod
$(VOCSTATIC) -sPF ulmPriorities.Mod
$(VOCSTATIC) -sPF ulmServices.Mod
$(VOCSTATIC) -sPF ulmEvents.Mod
$(VOCSTATIC) -sPF ulmResources.Mod
$(VOCSTATIC) -sPF ulmForwarders.Mod
$(VOCSTATIC) -sPF ulmRelatedEvents.Mod
$(VOCSTATIC) -sPF ulmIO.Mod
$(VOCSTATIC) -sPF ulmProcess.Mod
$(VOCSTATIC) -sPF ulmTypes.Mod
$(VOCSTATIC) -sPF ulmStreams.Mod
$(VOCSTATIC) -sPF ulmAssertions.Mod
$(VOCSTATIC) -sPF ulmIndirectDisciplines.Mod
$(VOCSTATIC) -sPF ulmStreamDisciplines.Mod
$(VOCSTATIC) -sPF ulmIEEE.Mod
$(VOCSTATIC) -sPF ulmMC68881.Mod
$(VOCSTATIC) -sPF ulmReals.Mod
$(VOCSTATIC) -sPF ulmPrint.Mod
$(VOCSTATIC) -sPF ulmWrite.Mod
$(VOCSTATIC) -sPF ulmTexts.Mod
$(VOCSTATIC) -sPF ulmStrings.Mod
$(VOCSTATIC) -sPF ulmConstStrings.Mod
$(VOCSTATIC) -sPF ulmPlotters.Mod
$(VOCSTATIC) -sPF ulmSysTypes.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmErrors.Mod
$(VOCSTATIC) -sPF ulmSysErrors.Mod
$(VOCSTATIC) -sPF ulmSysIO.Mod
$(VOCSTATIC) -sPF ulmLoader.Mod
$(VOCSTATIC) -sPF ulmNetIO.Mod
$(VOCSTATIC) -sPF ulmPersistentObjects.Mod
$(VOCSTATIC) -sPF ulmPersistentDisciplines.Mod
$(VOCSTATIC) -sPF ulmOperations.Mod
$(VOCSTATIC) -sPF ulmScales.Mod
$(VOCSTATIC) -sPF ulmTimes.Mod
$(VOCSTATIC) -sPF ulmClocks.Mod
$(VOCSTATIC) -sPF ulmTimers.Mod
$(VOCSTATIC) -sPF ulmConditions.Mod
$(VOCSTATIC) -sPF ulmStreamConditions.Mod
$(VOCSTATIC) -sPF ulmTimeConditions.Mod
$(VOCSTATIC) -sPF ulmSysConversions.Mod
$(VOCSTATIC) -sPF ulmSysStat.Mod
$(VOCSTATIC) -sPF ulmCiphers.Mod
$(VOCSTATIC) -sPF ulmCipherOps.Mod
$(VOCSTATIC) -sPF ulmBlockCiphers.Mod
$(VOCSTATIC) -sPF ulmAsymmetricCiphers.Mod
$(VOCSTATIC) -sPF ulmConclusions.Mod
$(VOCSTATIC) -sPF ulmRandomGenerators.Mod
$(VOCSTATIC) -sPF ulmTCrypt.Mod
$(VOCSTATIC) -sPF ulmIntOperations.Mod
#pow32 libs
$(VOCSTATIC) -sP powStrings.Mod
$(VOCSTATIC) -sPF powStrings.Mod
#misc libs
$(VOCSTATIC) -sP MultiArrays.Mod
$(VOCSTATIC) -sP MultiArrayRiders.Mod
$(VOCSTATIC) -sP MersenneTwister.Mod
$(VOCSTATIC) -sP Listen.Mod
$(VOCSTATIC) -sPF MultiArrays.Mod
$(VOCSTATIC) -sPF MultiArrayRiders.Mod
$(VOCSTATIC) -sPF MersenneTwister.Mod
$(VOCSTATIC) -sPF Listen.Mod
#s3 libs
$(VOCSTATIC) -sP ethBTrees.Mod
$(VOCSTATIC) -sP ethMD5.Mod
$(VOCSTATIC) -sP ethSets.Mod
$(VOCSTATIC) -sP ethZlib.Mod
$(VOCSTATIC) -sP ethZlibBuffers.Mod
$(VOCSTATIC) -sP ethZlibInflate.Mod
$(VOCSTATIC) -sP ethZlibDeflate.Mod
$(VOCSTATIC) -sP ethZlibReaders.Mod
$(VOCSTATIC) -sP ethZlibWriters.Mod
$(VOCSTATIC) -sP ethZip.Mod
$(VOCSTATIC) -sP ethRandomNumbers.Mod
$(VOCSTATIC) -sP ethGZReaders.Mod
$(VOCSTATIC) -sP ethGZWriters.Mod
$(VOCSTATIC) -sP ethUnicode.Mod
$(VOCSTATIC) -sP ethDates.Mod
$(VOCSTATIC) -sP ethReals.Mod
$(VOCSTATIC) -sP ethStrings.Mod
$(VOCSTATIC) -sPF ethBTrees.Mod
$(VOCSTATIC) -sPF ethMD5.Mod
$(VOCSTATIC) -sPF ethSets.Mod
$(VOCSTATIC) -sPF ethZlib.Mod
$(VOCSTATIC) -sPF ethZlibBuffers.Mod
$(VOCSTATIC) -sPF ethZlibInflate.Mod
$(VOCSTATIC) -sPF ethZlibDeflate.Mod
$(VOCSTATIC) -sPF ethZlibReaders.Mod
$(VOCSTATIC) -sPF ethZlibWriters.Mod
$(VOCSTATIC) -sPF ethZip.Mod
$(VOCSTATIC) -sPF ethRandomNumbers.Mod
$(VOCSTATIC) -sPF ethGZReaders.Mod
$(VOCSTATIC) -sPF ethGZWriters.Mod
$(VOCSTATIC) -sPF ethUnicode.Mod
$(VOCSTATIC) -sPF ethDates.Mod
$(VOCSTATIC) -sPF ethReals.Mod
$(VOCSTATIC) -sPF ethStrings.Mod
# build remaining tools
# $(VOCSTATIC0) -sPS compatIn.Mod
# $(VOCSTATIC0) -sPFS compatIn.Mod
# $(VOCSTATIC0) -smPS vmake.Mod
# $(CC) compatIn.c
# $(CL) vmake.c -o vmake SYSTEM.o Args.o compatIn.o Texts.o Console.o Files.o Reals.o Modules.o Kernel.o Unix.o Strings.o oocIntStr.o oocConvTypes.o oocIntConv.o

View file

@ -33,7 +33,8 @@ MODULE Files; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
workName, registerName: FileName;
tempFile: BOOLEAN;
dev, ino, mtime: LONGINT;
fd-, len, pos: LONGINT;
fd-: INTEGER;
len, pos: LONGINT;
bufs: ARRAY nofbufs OF Buffer;
swapper, state: INTEGER
END ;
@ -125,12 +126,12 @@ MODULE Files; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
f.workName := f.registerName; f.registerName := ""; f.tempFile := FALSE
END ;
errno := Unix.Unlink(f.workName); (*unlink first to avoid stale NFS handles and to avoid reuse of inodes*)
f.fd := Unix.Open(f.workName, Unix.rdwr + Unix.creat + Unix.trunc, {2, 4,5, 7,8});
f.fd := Unix.Open(f.workName, SHORT(SYSTEM.VAL(LONGINT, Unix.rdwr + Unix.creat + Unix.trunc)), SHORT(SYSTEM.VAL(LONGINT, {2, 4,5, 7,8})));
done := f.fd >= 0; errno := Unix.errno();
IF (~done & ((errno = Unix.ENFILE) OR (errno = Unix.EMFILE))) OR (done & (f.fd >= fileTabSize)) THEN
IF done & (f.fd >= fileTabSize) THEN errno := Unix.Close(f.fd) END ;
Kernel.GC(TRUE);
f.fd := Unix.Open(f.workName, Unix.rdwr + Unix.creat + Unix.trunc, {2, 4,5, 7,8});
f.fd := Unix.Open(f.workName, SHORT(SYSTEM.VAL(LONGINT, Unix.rdwr + Unix.creat + Unix.trunc)), SHORT(SYSTEM.VAL(LONGINT, {2, 4,5, 7,8})));
done := f.fd >= 0
END ;
IF done THEN
@ -233,7 +234,7 @@ MODULE Files; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
END CacheEntry;
PROCEDURE Old* (name: ARRAY OF CHAR): File;
VAR f: File; fd, res, errno: LONGINT; pos: INTEGER; done: BOOLEAN;
VAR f: File; fd: INTEGER; res, errno: LONGINT; pos: INTEGER; done: BOOLEAN;
dir, path: ARRAY 256 OF CHAR;
stat: Unix.Status;
BEGIN
@ -245,17 +246,17 @@ MODULE Files; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
(*ScanPath(pos, dir);*) (*MakeFileName(dir, name, path);*) (*ScanPath(pos, dir)*)
END ;
LOOP
fd := Unix.Open(path, Unix.rdwr, {}); done := fd >= 0; errno := Unix.errno();
fd := Unix.Open(path, SHORT(SYSTEM.VAL(LONGINT, Unix.rdwr)), SHORT(SYSTEM.VAL(LONGINT, {}))); done := fd >= 0; errno := Unix.errno();
IF (~done & ((errno = Unix.ENFILE) OR (errno = Unix.EMFILE))) OR (done & (fd >= fileTabSize)) THEN
IF done & (fd >= fileTabSize) THEN res := Unix.Close(fd) END ;
Kernel.GC(TRUE);
fd := Unix.Open(path, Unix.rdwr, {});
fd := Unix.Open(path, SHORT(SYSTEM.VAL(LONGINT, Unix.rdwr)), SHORT(SYSTEM.VAL(LONGINT, {})));
done := fd >= 0; errno := Unix.errno();
IF ~done & ((errno = Unix.ENFILE) OR (errno = Unix.EMFILE)) THEN Err("too many files open", f, errno) END
END ;
IF ~done & ((errno = Unix.EACCES) OR (errno = Unix.EROFS) OR (errno = Unix.EAGAIN)) THEN
(* errno EAGAIN observed on Solaris 2.4 *)
fd := Unix.Open(path, Unix.rdonly, {}); done := fd >= 0; errno := Unix.errno()
fd := Unix.Open(path, SHORT(SYSTEM.VAL(LONGINT, Unix.rdonly)), SHORT(SYSTEM.VAL(LONGINT, {}))); done := fd >= 0; errno := Unix.errno()
END ;
IF (~done) & (errno # Unix.ENOENT) THEN
Console.String("warning Files.Old "); Console.String(name);
@ -463,7 +464,7 @@ Especially Length would become fairly complex.
END Delete;
PROCEDURE Rename* (old, new: ARRAY OF CHAR; VAR res: INTEGER);
VAR fdold, fdnew, n, errno, r: LONGINT;
VAR fdold, fdnew: INTEGER; n, errno, r: LONGINT;
ostat, nstat: Unix.Status;
buf: ARRAY 4096 OF CHAR;
BEGIN
@ -476,9 +477,9 @@ Especially Length would become fairly complex.
r := Unix.Rename(old, new);
IF r < 0 THEN res := SHORT(Unix.errno());
IF res = Unix.EXDEV THEN (* cross device link, move the file *)
fdold := Unix.Open(old, Unix.rdonly, {});
fdold := Unix.Open(old, SHORT(SYSTEM.VAL(LONGINT, Unix.rdonly)), SHORT(SYSTEM.VAL(LONGINT, {})));
IF fdold < 0 THEN res := 2; RETURN END ;
fdnew := Unix.Open(new, Unix.rdwr + Unix.creat + Unix.trunc, {2, 4,5, 7,8});
fdnew := Unix.Open(new, SHORT(SYSTEM.VAL(LONGINT, Unix.rdwr + Unix.creat + Unix.trunc)), SHORT(SYSTEM.VAL(LONGINT, {2, 4,5, 7,8})));
IF fdnew < 0 THEN r := Unix.Close(fdold); res := 3; RETURN END ;
n := Unix.Read(fdold, SYSTEM.ADR(buf), bufsize);
WHILE n > 0 DO

View file

@ -36,7 +36,8 @@ MODULE Files0; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
workName, registerName: FileName;
tempFile: BOOLEAN;
dev, ino, mtime: LONGINT;
fd-, len, pos: LONGINT;
fd-: INTEGER;
len, pos: LONGINT;
bufs: ARRAY nofbufs OF Buffer;
swapper, state: INTEGER
END ;
@ -128,12 +129,12 @@ MODULE Files0; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
f.workName := f.registerName; f.registerName := ""; f.tempFile := FALSE
END ;
errno := Unix.Unlink(f.workName); (*unlink first to avoid stale NFS handles and to avoid reuse of inodes*)
f.fd := Unix.Open(f.workName, Unix.rdwr + Unix.creat + Unix.trunc, {2, 4,5, 7,8});
f.fd := Unix.Open(f.workName, SHORT(SYSTEM.VAL(LONGINT, (Unix.rdwr + Unix.creat + Unix.trunc))), SHORT(SYSTEM.VAL(LONGINT, ({2, 4,5, 7,8}))));
done := f.fd >= 0; errno := Unix.errno();
IF (~done & ((errno = Unix.ENFILE) OR (errno = Unix.EMFILE))) OR (done & (f.fd >= fileTabSize)) THEN
IF done & (f.fd >= fileTabSize) THEN errno := Unix.Close(f.fd) END ;
Kernel.GC(TRUE);
f.fd := Unix.Open(f.workName, Unix.rdwr + Unix.creat + Unix.trunc, {2, 4,5, 7,8});
f.fd := Unix.Open(f.workName, SHORT(SYSTEM.VAL(LONGINT, (Unix.rdwr + Unix.creat + Unix.trunc))), SHORT(SYSTEM.VAL(LONGINT, {2, 4,5, 7,8})));
done := f.fd >= 0
END ;
IF done THEN
@ -236,7 +237,7 @@ MODULE Files0; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
END CacheEntry;
PROCEDURE Old* (name: ARRAY OF CHAR): File;
VAR f: File; fd, res, errno: LONGINT; pos: INTEGER; done: BOOLEAN;
VAR f: File; fd: INTEGER; res, errno: LONGINT; pos: INTEGER; done: BOOLEAN;
dir, path: ARRAY 256 OF CHAR;
stat: Unix.Status;
BEGIN
@ -245,17 +246,17 @@ MODULE Files0; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files
ELSE pos := 0; ScanPath(pos, dir); MakeFileName(dir, name, path); ScanPath(pos, dir)
END ;
LOOP
fd := Unix.Open(path, Unix.rdwr, {}); done := fd >= 0; errno := Unix.errno();
fd := Unix.Open(path, SHORT(SYSTEM.VAL(LONGINT, Unix.rdwr)), SHORT(SYSTEM.VAL(LONGINT, {}))); done := fd >= 0; errno := Unix.errno();
IF (~done & ((errno = Unix.ENFILE) OR (errno = Unix.EMFILE))) OR (done & (fd >= fileTabSize)) THEN
IF done & (fd >= fileTabSize) THEN res := Unix.Close(fd) END ;
Kernel.GC(TRUE);
fd := Unix.Open(path, Unix.rdwr, {});
fd := Unix.Open(path, SHORT(SYSTEM.VAL(LONGINT, Unix.rdwr)), SHORT(SYSTEM.VAL(LONGINT, {})));
done := fd >= 0; errno := Unix.errno();
IF ~done & ((errno = Unix.ENFILE) OR (errno = Unix.EMFILE)) THEN Err("too many files open", f, errno) END
END ;
IF ~done & ((errno = Unix.EACCES) OR (errno = Unix.EROFS) OR (errno = Unix.EAGAIN)) THEN
(* errno EAGAIN observed on Solaris 2.4 *)
fd := Unix.Open(path, Unix.rdonly, {}); done := fd >= 0; errno := Unix.errno()
fd := Unix.Open(path, SHORT(SYSTEM.VAL(LONGINT, Unix.rdonly)), SHORT(SYSTEM.VAL(LONGINT, {}))); done := fd >= 0; errno := Unix.errno()
END ;
IF (~done) & (errno # Unix.ENOENT) THEN
Console.String("warning Files0.Old "); Console.String(name);
@ -456,7 +457,7 @@ Especially Length would become fairly complex.
END Delete;
PROCEDURE Rename* (old, new: ARRAY OF CHAR; VAR res: INTEGER);
VAR fdold, fdnew, n, errno, r: LONGINT;
VAR fdold, fdnew: INTEGER; n, errno, r: LONGINT;
ostat, nstat: Unix.Status;
buf: ARRAY 4096 OF CHAR;
BEGIN
@ -469,9 +470,9 @@ Especially Length would become fairly complex.
r := Unix.Rename(old, new);
IF r < 0 THEN res := SHORT(Unix.errno());
IF res = Unix.EXDEV THEN (* cross device link, move the file *)
fdold := Unix.Open(old, Unix.rdonly, {});
fdold := Unix.Open(old, SHORT(SYSTEM.VAL(LONGINT, Unix.rdonly)), SHORT(SYSTEM.VAL(LONGINT, {})));
IF fdold < 0 THEN res := 2; RETURN END ;
fdnew := Unix.Open(new, Unix.rdwr + Unix.creat + Unix.trunc, {2, 4,5, 7,8});
fdnew := Unix.Open(new, SHORT(SYSTEM.VAL(LONGINT, Unix.rdwr + Unix.creat + Unix.trunc)), SHORT(SYSTEM.VAL(LONGINT, {2, 4,5, 7,8})));
IF fdnew < 0 THEN r := Unix.Close(fdold); res := 3; RETURN END ;
n := Unix.Read(fdold, SYSTEM.ADR(buf), bufsize);
WHILE n > 0 DO

View file

@ -1,5 +1,5 @@
MODULE prf;
CONST prefix* = "/opt";
CONST prefix* = "/Users/noch/local";
END prf.

View file

@ -1 +1 @@
05ed701d466aae7ace5d824e431e56edcaf1a3fd
116059b9cae6de914cb268caa1ca621c9f794ccb