[Vm-dev] VM Maker: VMMaker-dtl.436.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Aug 2 00:26:21 UTC 2022
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'!
More information about the Vm-dev
mailing list