David T. Lewis uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker-dtl.436.mcz
==================== Summary ====================
Name: VMMaker-dtl.436 Author: dtl Time: 1 August 2022, 8:26:12.889 pm UUID: fce55fb3-ce12-4897-a865-75341a26701e Ancestors: VMMaker-dtl.435
VMMaker 4.20.2. Update FilePlugin>>primitiveDirectoryLookup from VMMaker.oscog. Requires platform support version r3821..
=============== Diff against VMMaker-dtl.435 ===============
Item was changed: ----- Method: FilePlugin>>primitiveDirectoryLookup (in category 'directory primitives') ----- primitiveDirectoryLookup
| index pathName pathNameIndex pathNameSize status entryName entryNameSize createDate modifiedDate dirFlag symlinkFlag posixPermissions fileSize okToList | <var: 'entryName' declareC: 'char entryName[256]'> + <var: 'pathNameIndex' type: #'char *'> + <var: 'fileSize' type: #squeakFileOffsetType> - <var: 'pathNameIndex' type: 'char *'> - <var: 'fileSize' type: 'squeakFileOffsetType'> <export: true>
index := interpreterProxy stackIntegerValue: 0. pathName := interpreterProxy stackValue: 1. (interpreterProxy isBytes: pathName) ifFalse: [^interpreterProxy primitiveFail]. pathNameIndex := interpreterProxy firstIndexableField: pathName. pathNameSize := interpreterProxy byteSizeOf: pathName. + self cCode: '' inSmalltalk: + [entryName := ByteString new: 256. + entryNameSize := createDate := modifiedDate := dirFlag := fileSize := posixPermissions := symlinkFlag := nil]. "If the security plugin can be loaded, use it to check for permission. If not, assume it's ok" + okToList := sCLPfn ~= 0 + ifTrue: [self cCode: '((sqInt (*)(char *, sqInt))sCLPfn)(pathNameIndex, pathNameSize)' inSmalltalk: [true]] + ifFalse: [true]. + status := okToList + ifTrue: + [self dir_Lookup: pathNameIndex _: pathNameSize + _: index + _: entryName _: (self addressOf: entryNameSize put: [:v| entryNameSize := v]) + _: (self addressOf: createDate put: [:v| createDate := v]) + _: (self addressOf: modifiedDate put: [:v| modifiedDate := v]) + _: (self addressOf: dirFlag put: [:v| dirFlag := v]) + _: (self addressOf: fileSize put: [:v| fileSize := v]) + _: (self addressOf: posixPermissions put: [:v| posixPermissions := v]) + _: (self addressOf: symlinkFlag put: [:v| symlinkFlag := v])] + ifFalse: [DirNoMoreEntries]. + interpreterProxy failed ifTrue: + [^nil]. + status = DirNoMoreEntries ifTrue: "no more entries; return nil" + [interpreterProxy "pop pathName, index, rcvr" + pop: 3 thenPush: interpreterProxy nilObject. + ^nil]. + status = DirBadPath ifTrue: + [^interpreterProxy primitiveFail]."bad path" - sCLPfn ~= 0 - ifTrue: [okToList := self cCode: '((sqInt (*)(char *, sqInt))sCLPfn)(pathNameIndex, pathNameSize)'] - ifFalse: [okToList := true]. - okToList - ifTrue: [ - self isDefined: 'PharoVM' - inSmalltalk: [ status := -1 ] - comment: 'platform support code diverged for pharo' - ifTrue: [ - status := self cCode: 'dir_Lookup(pathNameIndex, pathNameSize, index, - entryName, &entryNameSize, &createDate, - &modifiedDate, &dirFlag, &fileSize, - &posixPermissions, &symlinkFlag)' ] - ifFalse: [ - status := self cCode: 'dir_Lookup(pathNameIndex, pathNameSize, index, - entryName, &entryNameSize, &createDate, - &modifiedDate, &dirFlag, &fileSize)' ] ] - ifFalse: [status := DirNoMoreEntries]. - interpreterProxy failed - ifTrue: [^nil]. - status = DirNoMoreEntries - ifTrue: ["no more entries; return nil" - interpreterProxy pop: 3 "pop pathName, index, rcvr" - thenPush: interpreterProxy nilObject. - ^nil]. - status = DirBadPath - ifTrue: [^interpreterProxy primitiveFail]."bad path"
+ interpreterProxy + pop: 3 "pop pathName, index, rcvr" + thenPush: + (self + cppIf: PharoVM + ifTrue: + [self - self isDefined: 'PharoVM' - inSmalltalk: [ status := -1 ] - comment: 'platform support code diverged for pharo' - ifTrue: [ - interpreterProxy - pop: 3 "pop pathName, index, rcvr" - thenPush: (self - makeDirEntryName: entryName - size: entryNameSize - createDate: createDate - modDate: modifiedDate - isDir: dirFlag - fileSize: fileSize - posixPermissions: posixPermissions - isSymlink: symlinkFlag) ] - ifFalse: [ - interpreterProxy - pop: 3 "pop pathName, index, rcvr" - thenPush: (self makeDirEntryName: entryName size: entryNameSize createDate: createDate modDate: modifiedDate isDir: dirFlag + fileSize: fileSize + posixPermissions: posixPermissions + isSymlink: symlinkFlag] + ifFalse: + [self + makeDirEntryName: entryName + size: entryNameSize + createDate: createDate + modDate: modifiedDate + isDir: dirFlag + fileSize: fileSize])! - fileSize: fileSize) ]!
Item was changed: ----- Method: VMMaker class>>versionString (in category 'version testing') ----- versionString
"VMMaker versionString"
+ ^'4.20.2'! - ^'4.20.1'!
vm-dev@lists.squeakfoundation.org