[prev in list] [next in list] [prev in thread] [next in thread] 

List:       squeak-vm-dev
Subject:    [Vm-dev] VM Maker: VMMaker-dtl.436.mcz
From:       commits () source ! squeak ! org
Date:       2022-08-02 0:26:21
Message-ID: E1oIfju-0006JN-7a () andreas
[Download RAW message or body]

 
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'!


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic