diff --git a/platforms/Cross/plugins/FilePlugin/FilePlugin.h b/platforms/Cross/plugins/FilePlugin/FilePlugin.h index 705d1230c7..28a41875ec 100644 --- a/platforms/Cross/plugins/FilePlugin/FilePlugin.h +++ b/platforms/Cross/plugins/FilePlugin/FilePlugin.h @@ -8,7 +8,9 @@ * EMAIL: * RCSID: $Id$ * -* 2018-03-01 AKG add SqFileFileOpen() & sqFileFdOpen() +* 2018-03-06 AKG Rename sqFileFileOpen() & sqFileFdOpen() to +* sqConnectToFile() and sqConnectToFileDescriptor() +* 2018-03-01 AKG add sqFileFileOpen() & sqFileFdOpen() * 2009-05-15 EEM add stdio flag; reorder SQFile to make it more compact * 2005-03-26 IKP fix unaligned accesses to file member * 2004-06-10 IKP 64-bit cleanliness @@ -53,10 +55,8 @@ sqInt sqFileInit(void); sqInt sqFileShutdown(void); sqInt sqFileOpen(SQFile *f, char *sqFileName, sqInt sqFileNameSize, sqInt writeFlag); sqInt sqFileOpenNew(SQFile *f, char *sqFileName, sqInt sqFileNameSize, sqInt *exists); -#if PharoVM -sqInt sqFileFdOpen(SQFile *f, int fd, sqInt writeFlag); -sqInt sqFileFileOpen(SQFile *f, FILE *inFile, sqInt writeFlag); -#endif +sqInt sqConnectToFileDescriptor(SQFile *f, int fd, sqInt writeFlag); +sqInt sqConnectToFile(SQFile *f, void *file, sqInt writeFlag); size_t sqFileReadIntoAt(SQFile *f, size_t count, char *byteArrayIndex, size_t startIndex); sqInt sqFileRenameOldSizeNewSize(char *sqOldName, sqInt sqOldNameSize, char *sqNewName, sqInt sqNewNameSize); sqInt sqFileSetPosition(SQFile *f, squeakFileOffsetType position); diff --git a/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c b/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c index b6d3a9054e..860e68d85e 100755 --- a/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c +++ b/platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c @@ -9,6 +9,7 @@ * RCSID: $Id$ * * NOTES: See change log below. +* 2018-03-01 AKG Add sqFileFdOpen & sqFileFileOpen * 2005-03-26 IKP fix unaligned accesses to file[Size] members * 2004-06-10 IKP 64-bit cleanliness * 1/28/02 Tim remove non-ansi stuff @@ -475,31 +476,32 @@ sqFileOpenNew(SQFile *f, char *sqFileName, sqInt sqFileNameSize, sqInt *exists) return interpreterProxy->success(false); } -#if PharoVM sqInt -sqFileFdOpen(SQFile *sqFile, int fd, sqInt writeFlag) +sqConnectToFileDescriptor(SQFile *sqFile, int fd, sqInt writeFlag) { /* * Open the file with the supplied file descriptor in binary mode. * - * writeFlag determines whether the file is read-only or writable. + * writeFlag determines whether the file is read-only or writable + * and must be compatible with the existing access. * sqFile is populated with the file information. * Smalltalk is reponsible for handling character encoding and * line ends. */ - FILE *file = fdopen(fd, writeFlag ? "wb" : "rb"); + FILE *file = openFileDescriptor(fd, writeFlag ? "wb" : "rb"); if (!file) return interpreterProxy->success(false); - return sqFileFileOpen(sqFile, file, writeFlag); + return sqConnectToFile(sqFile, (void *)file, writeFlag); } sqInt -sqFileFileOpen(SQFile *sqFile, FILE *file, sqInt writeFlag) +sqConnectToFile(SQFile *sqFile, void *file, sqInt writeFlag) { /* * Populate the supplied SQFile structure with the supplied FILE. * - * writeFlag indicates whether the file is read-only or writable. + * writeFlag indicates whether the file is read-only or writable + * and must be compatible with the existing access. */ setFile(sqFile, file); setSize(sqFile, 0); @@ -508,7 +510,6 @@ sqFileFileOpen(SQFile *sqFile, FILE *file, sqInt writeFlag) sqFile->writable = writeFlag; return 1; } -#endif /* * Fill-in files with 3 handles for stdin, stdout and stderr as available and diff --git a/platforms/win32/plugins/FilePlugin/sqWin32FilePrims.c b/platforms/win32/plugins/FilePlugin/sqWin32FilePrims.c index fe2a91c33a..9be5f90eda 100644 --- a/platforms/win32/plugins/FilePlugin/sqWin32FilePrims.c +++ b/platforms/win32/plugins/FilePlugin/sqWin32FilePrims.c @@ -250,36 +250,41 @@ sqInt sqFileOpenNew(SQFile *f, char* fileNameIndex, sqInt fileNameSize, sqInt* e return 1; } -#if PharoVM sqInt -sqFileFdOpen(SQFile *sqFile, int fd, sqInt writeFlag) +sqConnectToFileDescriptor(SQFile *sqFile, int fd, sqInt writeFlag) { /* * Open the file with the supplied file descriptor in binary mode. * - * writeFlag determines whether the file is read-only or writable. + * writeFlag determines whether the file is read-only or writable + * and must be compatible with the existing access. * sqFile is populated with the file information. * Smalltalk is reponsible for handling character encoding and * line ends. - * - * Not supported on Windows */ - return interpreterProxy->success(false); + HANDLE file = _fdopen(fd, writeFlag ? "wb" : "rb"); + if (!file) + return interpreterProxy->success(false); + return sqConnectToFile(sqFile, file, writeFlag); } sqInt -sqFileFileOpen(SQFile *sqFile, FILE *file, sqInt writeFlag) +sqConnectToFile(SQFile *sqFile, void *file, sqInt writeFlag) { /* * Populate the supplied SQFile structure with the supplied FILE. * - * writeFlag indicates whether the file is read-only or writable. - * - * Not supported on Windows + * writeFlag indicates whether the file is read-only or writable + * and must be compatible with the existing access. */ - return interpreterProxy->success(false); + sqFile->file = (HANDLE)file; + AddHandleToTable(win32Files, file); + /* setSize(sqFile, 0); */ + sqFile->sessionID = thisSession; + sqFile->lastOp = 0; /* Unused on Win32 */ + sqFile->writable = writeFlag; + return 1; } -#endif diff --git a/src/plugins/FilePlugin/FilePlugin.c b/src/plugins/FilePlugin/FilePlugin.c index 776517fccb..e042bea56b 100644 --- a/src/plugins/FilePlugin/FilePlugin.c +++ b/src/plugins/FilePlugin/FilePlugin.c @@ -1,9 +1,9 @@ /* Automatically generated by - VMPluginCodeGenerator * VMMaker.oscog-eem.2339 uuid: 1f823336-4229-4929-8a75-545797124625 + VMPluginCodeGenerator * VMMaker.oscog-akg.2341 uuid: d0fa56c5-cccb-41b4-b28d-4c54c9acdccf from - FilePlugin * VMMaker.oscog-eem.2339 uuid: 1f823336-4229-4929-8a75-545797124625 + FilePlugin * VMMaker.oscog-akg.2341 uuid: d0fa56c5-cccb-41b4-b28d-4c54c9acdccf */ -static char __buildInfo[] = "FilePlugin * VMMaker.oscog-eem.2339 uuid: 1f823336-4229-4929-8a75-545797124625 " __DATE__ ; +static char __buildInfo[] = "FilePlugin * VMMaker.oscog-akg.2341 uuid: d0fa56c5-cccb-41b4-b28d-4c54c9acdccf " __DATE__ ; @@ -56,12 +56,8 @@ static char __buildInfo[] = "FilePlugin * VMMaker.oscog-eem.2339 uuid: 1f823336- /*** Function Prototypes ***/ static sqInt asciiDirectoryDelimiter(void); -#if PharoVM -EXPORT(sqInt) fileOpenFdwrite(int fd, sqInt writeFlag); -#endif /* PharoVM */ -#if PharoVM -EXPORT(sqInt) fileOpenFilewrite(FILE *cfile, sqInt writeFlag); -#endif /* PharoVM */ +EXPORT(sqInt) connectToFdwrite(int fd, sqInt writeFlag); +EXPORT(sqInt) connectToFilewrite(void *cfile, sqInt writeFlag); EXPORT(sqInt) fileOpenNamesizewritesecure(char *nameIndex, sqInt nameSize, sqInt writeFlag, sqInt secureFlag); EXPORT(sqInt) fileOpenNewNamesizesecure(char *nameIndex, sqInt nameSize, sqInt secureFlag); extern usqIntptr_t fileRecordSize(void); @@ -74,6 +70,9 @@ static sqInt makeDirEntryNamesizecreateDatemodDateisDirfileSize(char *entryName, static sqInt makeDirEntryNamesizecreateDatemodDateisDirfileSizeposixPermissionsisSymlink(char *entryName, sqInt entryNameSize, sqInt createDate, sqInt modifiedDate, sqInt dirFlag, squeakFileOffsetType fileSize, sqInt posixPermissions, sqInt symlinkFlag); #endif /* PharoVM */ EXPORT(sqInt) moduleUnloaded(char *aModuleName); +static void * pointerFrom(sqInt pointerByteArray); +EXPORT(sqInt) primitiveConnectToFile(void); +EXPORT(sqInt) primitiveConnectToFileDescriptor(void); EXPORT(sqInt) primitiveDirectoryCreate(void); EXPORT(sqInt) primitiveDirectoryDelete(void); EXPORT(sqInt) primitiveDirectoryDelimitor(void); @@ -89,12 +88,6 @@ EXPORT(sqInt) primitiveFileFlush(void); EXPORT(sqInt) primitiveFileGetPosition(void); EXPORT(sqInt) primitiveFileOpen(void); EXPORT(sqInt) primitiveFileOpenNew(void); -#if PharoVM -EXPORT(sqInt) primitiveFileOpenUseFile(void); -#endif /* PharoVM */ -#if PharoVM -EXPORT(sqInt) primitiveFileOpenUseFileDescriptor(void); -#endif /* PharoVM */ EXPORT(sqInt) primitiveFileRead(void); static sqInt primitiveFileReadWithoutPinning(void); static sqInt primitiveFileReadWithPinning(void); @@ -114,6 +107,7 @@ EXPORT(sqInt) shutdownModule(void); /*** Variables ***/ #if !defined(SQUEAK_BUILTIN_PLUGIN) +static void * (*arrayValueOf)(sqInt oop); static sqInt (*booleanValueOf)(sqInt obj); static sqInt (*byteSizeOf)(sqInt oop); static sqInt (*characterObjectOf)(sqInt characterCode); @@ -130,6 +124,7 @@ static sqInt (*instantiateClassindexableSize)(sqInt classPointer, sqInt size); static sqInt (*integerObjectOf)(sqInt value); static sqInt (*integerValueOf)(sqInt oop); static void * (*ioLoadFunctionFrom)(char *functionName, char *moduleName); +static sqInt (*isKindOf)(sqInt oop, char *aString); static sqInt (*isBytes)(sqInt oop); static sqInt (*isIntegerObject)(sqInt objectPointer); static sqInt (*isWords)(sqInt oop); @@ -149,6 +144,7 @@ static sqInt (*primitiveFailureCode)(void); static sqInt (*pushBool)(sqInt trueOrFalse); static sqInt (*pushRemappableOop)(sqInt oop); static sqInt (*slotSizeOf)(sqInt oop); +static sqInt (*stSizeOf)(sqInt oop); static sqInt (*stackIntegerValue)(sqInt offset); static sqInt (*stackValue)(sqInt offset); static sqInt (*storePointerofObjectwithValue)(sqInt index, sqInt oop, sqInt valuePointer); @@ -156,6 +152,7 @@ static void (*tenuringIncrementalGC)(void); static sqInt (*topRemappableOop)(void); static sqInt (*trueObject)(void); #else /* !defined(SQUEAK_BUILTIN_PLUGIN) */ +extern void * arrayValueOf(sqInt oop); extern sqInt booleanValueOf(sqInt obj); extern sqInt byteSizeOf(sqInt oop); #if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 13) @@ -176,6 +173,7 @@ extern sqInt instantiateClassindexableSize(sqInt classPointer, sqInt size); extern sqInt integerObjectOf(sqInt value); extern sqInt integerValueOf(sqInt oop); extern void * ioLoadFunctionFrom(char *functionName, char *moduleName); +extern sqInt isKindOf(sqInt oop, char *aString); extern sqInt isBytes(sqInt oop); #if !defined(isIntegerObject) extern sqInt isIntegerObject(sqInt objectPointer); @@ -197,6 +195,7 @@ extern sqInt primitiveFailureCode(void); extern sqInt pushBool(sqInt trueOrFalse); extern sqInt pushRemappableOop(sqInt oop); extern sqInt slotSizeOf(sqInt oop); +extern sqInt stSizeOf(sqInt oop); extern sqInt stackIntegerValue(sqInt offset); extern sqInt stackValue(sqInt offset); extern sqInt storePointerofObjectwithValue(sqInt index, sqInt oop, sqInt valuePointer); @@ -208,9 +207,9 @@ extern struct VirtualMachine* interpreterProxy; static const char *moduleName = #ifdef SQUEAK_BUILTIN_PLUGIN - "FilePlugin * VMMaker.oscog-eem.2339 (i)" + "FilePlugin * VMMaker.oscog-akg.2341 (i)" #else - "FilePlugin * VMMaker.oscog-eem.2339 (e)" + "FilePlugin * VMMaker.oscog-akg.2341 (e)" #endif ; static void * sCCPfn; @@ -234,12 +233,13 @@ asciiDirectoryDelimiter(void) } -/* Open the fd as file. Answer the file oop. */ +/* Connect to the supplied file descriptor. Answer the file oop. + On POSIX platforms this translates to fdopen(). + writeFlag must be compatible with the existing file access. */ - /* FilePlugin>>#fileOpenFd:write: */ -#if PharoVM + /* FilePlugin>>#connectToFd:write: */ EXPORT(sqInt) -fileOpenFdwrite(int fd, sqInt writeFlag) +connectToFdwrite(int fd, sqInt writeFlag) { SQFile *file; sqInt fileOop; @@ -255,19 +255,18 @@ fileOpenFdwrite(int fd, sqInt writeFlag) file = firstIndexableField(fileOop); l1: /* end fileValueOf: */; if (!(failed())) { - sqFileFdOpen(file, fd, writeFlag); + sqConnectToFileDescriptor(file, fd, writeFlag); } return fileOop; } -#endif /* PharoVM */ -/* Open the FILE* as file. Answer the file oop. */ +/* Open the FILE* as file. Answer the file oop. + writeFlag must be compatible with the existing file access. */ - /* FilePlugin>>#fileOpenFile:write: */ -#if PharoVM + /* FilePlugin>>#connectToFile:write: */ EXPORT(sqInt) -fileOpenFilewrite(FILE *cfile, sqInt writeFlag) +connectToFilewrite(void *cfile, sqInt writeFlag) { SQFile *file; sqInt fileOop; @@ -283,11 +282,10 @@ fileOpenFilewrite(FILE *cfile, sqInt writeFlag) file = firstIndexableField(fileOop); l1: /* end fileValueOf: */; if (!(failed())) { - sqFileFileOpen(file, cfile, writeFlag); + sqConnectToFile(file, cfile, writeFlag); } return fileOop; } -#endif /* PharoVM */ /* Open the named file, possibly checking security. Answer the file oop. */ @@ -575,6 +573,88 @@ moduleUnloaded(char *aModuleName) return 0; } + +/* Answer the machine address contained in anExternalAddressOop. */ + + /* FilePlugin>>#pointerFrom: */ +static void * +pointerFrom(sqInt pointerByteArray) +{ + union {void *address; unsigned char bytes[sizeof(void *)];} addressUnion; + sqInt idx; + unsigned char *ptr; + + if (!((isKindOf(pointerByteArray, "ByteArray")) + && ((stSizeOf(pointerByteArray)) == (sizeof(void *))))) { + return null; + } + ptr = arrayValueOf(pointerByteArray); + idx = 0; + while (idx < (sizeof(void *))) { + addressUnion.bytes[idx] = ptr[idx]; + idx += 1; + } + return addressUnion.address; +} + + +/* Connect to the file with the supplied FILE* and writeFlag. + FILE* must be supplied in a byte object (ByteArray) with the platform + address size. + writeFlag must be a boolean and compatible with the existing file access. + */ + + /* FilePlugin>>#primitiveConnectToFile */ +EXPORT(sqInt) +primitiveConnectToFile(void) +{ + void* cfile; + sqInt cfileOop; + sqInt filePointer; + sqInt writeFlag; + + writeFlag = booleanValueOf(stackValue(0)); + cfileOop = stackValue(1); + cfile = pointerFrom(cfileOop); + if (!(cfile)) { + return primitiveFailFor(PrimErrBadArgument); + } + filePointer = connectToFilewrite(cfile, writeFlag); + if (!(failed())) { + return popthenPush(3, filePointer); + } + return primitiveFail(); +} + + +/* Connect to the existing file identified by fileDescriptor. + fileDescriptor must be an integer. + writeFlag is aboolean indicating whether to open in read or write mode and + must be compatible with the existing file access. + */ + + /* FilePlugin>>#primitiveConnectToFileDescriptor */ +EXPORT(sqInt) +primitiveConnectToFileDescriptor(void) +{ + int fd; + sqInt fdPointer; + sqInt filePointer; + sqInt writeFlag; + + writeFlag = booleanValueOf(stackValue(0)); + fdPointer = stackValue(1); + if (!(isIntegerObject(fdPointer))) { + return primitiveFailFor(PrimErrBadArgument); + } + fd = integerValueOf(fdPointer); + filePointer = connectToFdwrite(fd, writeFlag); + if (!(failed())) { + return popthenPush(3, filePointer); + } + return primitiveFail(); +} + /* FilePlugin>>#primitiveDirectoryCreate */ EXPORT(sqInt) primitiveDirectoryCreate(void) @@ -1115,58 +1195,6 @@ primitiveFileOpenNew(void) return 0; } - /* FilePlugin>>#primitiveFileOpenUseFile */ -#if PharoVM -EXPORT(sqInt) -primitiveFileOpenUseFile(void) -{ - FILE* cfile; - sqInt cfileOop; - sqInt filePointer; - sqInt writeFlag; - - filePointer = 0; - writeFlag = booleanValueOf(stackValue(0)); - cfileOop = stackValue(1); - if (!((isBytes(cfileOop)) - && ((byteSizeOf(cfileOop)) == (sizeof(FILE*))))) { - return primitiveFailFor(PrimErrBadArgument); - } - cfile = firstIndexableField(cfileOop); - if (!(failed())) { - filePointer = fileOpenFilewrite(cfile, writeFlag); - } - if (!(failed())) { - return popthenPush(3, filePointer); - } - return primitiveFail(); -} -#endif /* PharoVM */ - - /* FilePlugin>>#primitiveFileOpenUseFileDescriptor */ -#if PharoVM -EXPORT(sqInt) -primitiveFileOpenUseFileDescriptor(void) -{ - int fd; - sqInt fdPointer; - sqInt filePointer; - sqInt writeFlag; - - writeFlag = booleanValueOf(stackValue(0)); - fdPointer = stackValue(1); - if (!(isIntegerObject(fdPointer))) { - return primitiveFailFor(PrimErrBadArgument); - } - fd = integerValueOf(fdPointer); - filePointer = fileOpenFdwrite(fd, writeFlag); - if (!(failed())) { - return popthenPush(3, filePointer); - } - return primitiveFail(); -} -#endif /* PharoVM */ - /* FilePlugin>>#primitiveFileRead */ EXPORT(sqInt) primitiveFileRead(void) @@ -1668,6 +1696,7 @@ setInterpreter(struct VirtualMachine*anInterpreter) if (ok) { #if !defined(SQUEAK_BUILTIN_PLUGIN) + arrayValueOf = interpreterProxy->arrayValueOf; booleanValueOf = interpreterProxy->booleanValueOf; byteSizeOf = interpreterProxy->byteSizeOf; #if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 13) @@ -1690,6 +1719,7 @@ setInterpreter(struct VirtualMachine*anInterpreter) integerObjectOf = interpreterProxy->integerObjectOf; integerValueOf = interpreterProxy->integerValueOf; ioLoadFunctionFrom = interpreterProxy->ioLoadFunctionFrom; + isKindOf = interpreterProxy->isKindOf; isBytes = interpreterProxy->isBytes; isIntegerObject = interpreterProxy->isIntegerObject; isWords = interpreterProxy->isWords; @@ -1709,6 +1739,7 @@ setInterpreter(struct VirtualMachine*anInterpreter) pushBool = interpreterProxy->pushBool; pushRemappableOop = interpreterProxy->pushRemappableOop; slotSizeOf = interpreterProxy->slotSizeOf; + stSizeOf = interpreterProxy->stSizeOf; stackIntegerValue = interpreterProxy->stackIntegerValue; stackValue = interpreterProxy->stackValue; storePointerofObjectwithValue = interpreterProxy->storePointerofObjectwithValue; @@ -1744,18 +1775,16 @@ shutdownModule(void) static char _m[] = "FilePlugin"; void* FilePlugin_exports[][3] = { -#if PharoVM - {(void*)_m, "fileOpenFdwrite", (void*)fileOpenFdwrite}, -#endif /* PharoVM */ -#if PharoVM - {(void*)_m, "fileOpenFilewrite", (void*)fileOpenFilewrite}, -#endif /* PharoVM */ + {(void*)_m, "connectToFdwrite", (void*)connectToFdwrite}, + {(void*)_m, "connectToFilewrite", (void*)connectToFilewrite}, {(void*)_m, "fileOpenNamesizewritesecure", (void*)fileOpenNamesizewritesecure}, {(void*)_m, "fileOpenNewNamesizesecure", (void*)fileOpenNewNamesizesecure}, {(void*)_m, "getModuleName", (void*)getModuleName}, {(void*)_m, "getThisSession\000\377", (void*)getThisSession}, {(void*)_m, "initialiseModule", (void*)initialiseModule}, {(void*)_m, "moduleUnloaded", (void*)moduleUnloaded}, + {(void*)_m, "primitiveConnectToFile\000\002", (void*)primitiveConnectToFile}, + {(void*)_m, "primitiveConnectToFileDescriptor\000\000", (void*)primitiveConnectToFileDescriptor}, {(void*)_m, "primitiveDirectoryCreate\000\001", (void*)primitiveDirectoryCreate}, {(void*)_m, "primitiveDirectoryDelete\000\001", (void*)primitiveDirectoryDelete}, {(void*)_m, "primitiveDirectoryDelimitor\000\377", (void*)primitiveDirectoryDelimitor}, @@ -1771,12 +1800,6 @@ void* FilePlugin_exports[][3] = { {(void*)_m, "primitiveFileGetPosition\000\001", (void*)primitiveFileGetPosition}, {(void*)_m, "primitiveFileOpen\000\002", (void*)primitiveFileOpen}, {(void*)_m, "primitiveFileOpenNew\000\002", (void*)primitiveFileOpenNew}, -#if PharoVM - {(void*)_m, "primitiveFileOpenUseFile\000\002", (void*)primitiveFileOpenUseFile}, -#endif /* PharoVM */ -#if PharoVM - {(void*)_m, "primitiveFileOpenUseFileDescriptor\000\000", (void*)primitiveFileOpenUseFileDescriptor}, -#endif /* PharoVM */ {(void*)_m, "primitiveFileRead\000\001", (void*)primitiveFileRead}, {(void*)_m, "primitiveFileRename\000\001", (void*)primitiveFileRename}, {(void*)_m, "primitiveFileSetPosition\000\001", (void*)primitiveFileSetPosition}, @@ -1794,6 +1817,8 @@ void* FilePlugin_exports[][3] = { #else /* ifdef SQ_BUILTIN_PLUGIN */ +signed char primitiveConnectToFileAccessorDepth = 2; +signed char primitiveConnectToFileDescriptorAccessorDepth = 0; signed char primitiveDirectoryCreateAccessorDepth = 1; signed char primitiveDirectoryDeleteAccessorDepth = 1; signed char primitiveDirectoryEntryAccessorDepth = 1; @@ -1807,12 +1832,6 @@ signed char primitiveFileFlushAccessorDepth = 1; signed char primitiveFileGetPositionAccessorDepth = 1; signed char primitiveFileOpenAccessorDepth = 2; signed char primitiveFileOpenNewAccessorDepth = 2; -#if PharoVM -signed char primitiveFileOpenUseFileAccessorDepth = 2; -#endif /* PharoVM */ -#if PharoVM -signed char primitiveFileOpenUseFileDescriptorAccessorDepth = 0; -#endif /* PharoVM */ signed char primitiveFileReadAccessorDepth = 1; signed char primitiveFileRenameAccessorDepth = 1; signed char primitiveFileSetPositionAccessorDepth = 1;