[Pkg] The Trunk: Files-nice.76.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Mar 21 20:45:25 UTC 2010


Nicolas Cellier uploaded a new version of Files to project The Trunk:
http://source.squeak.org/trunk/Files-nice.76.mcz

==================== Summary ====================

Name: Files-nice.76
Author: nice
Time: 21 March 2010, 9:45:19.247 pm
UUID: 3d18f0bb-91b9-ae41-ac23-6ee8cf7ddcf6
Ancestors: Files-nice.75

1) Avoid sending at: to a DirectoryEntry, it is deprecated
2) fast-up directoryContentsFor: a bit

=============== Diff against Files-nice.75 ===============

Item was changed:
  ----- Method: FileDirectory>>statsForDirectoryTree: (in category 'enumeration') -----
  statsForDirectoryTree: rootedPathName
  	"Return the size statistics for the entire directory tree starting at the given root. The result is a three element array of the form: (<number of folders><number of files><total bytes in all files>). This method also serves as an example of how recursively enumerate a directory tree."
- 	"wod 6/16/1998: add Cursor wait, and use 'self pathNameDelimiter asString' rather than hardwired ':' "
  	"FileDirectory default statsForDirectoryTree: '\smalltalk'"
  
+ 	^Cursor wait showWhile: [
+ 		| dirs files bytes todo entries p |
- 	| dirs files bytes |
- 	Cursor wait showWhile: [ | todo entries p |
  		dirs := files := bytes := 0.
  		todo := OrderedCollection with: rootedPathName.
  		[todo isEmpty] whileFalse: [
  			p := todo removeFirst.
  			entries := self directoryContentsFor: p.
  			entries do: [:entry |
+ 				entry isDirectory
- 				(entry at: 4)
  					ifTrue: [
+ 						todo addLast: p , self pathNameDelimiter asString , entry name.
- 						todo addLast: (p, self pathNameDelimiter asString, (entry at: 1)).
  						dirs := dirs + 1]
  					ifFalse: [
  						files := files + 1.
+ 						bytes := bytes + entry fileSize]]].
+ 		Array with: dirs with: files with: bytes] 
- 						bytes := bytes + (entry at: 5)]]]].
- 
- 	^ Array with: dirs with: files with: bytes
  !

Item was changed:
  ----- Method: FileDirectory>>directoryContentsFor: (in category 'private') -----
  directoryContentsFor: fullPath
  	"Return a collection of directory entries for the files and directories in the directory with the given path. See primLookupEntryIn:index: for further details."
  	"FileDirectory default directoryContentsFor: ''"
  
+ 	^Array new: 200 streamContents: [:stream |
+ 		| f entryArray index |
+ 		f := fullPath asVmPathName.
+ 		index := 1.
+ 		[(entryArray := self primLookupEntryIn: f index: index) == nil] whileFalse: [
+ 		.	#badDirectoryPath = entryArray ifTrue: [
+ 				^(InvalidDirectoryError pathName: pathName asSqueakPathName) signal].
+ 			index := index + 1.
+ 			stream nextPut: (DirectoryEntry fromArray: entryArray directory: self) convertFromSystemName]].!
- 	| entries index done entryArray f |
- 	entries := OrderedCollection new: 200.
- 	index := 1.
- 	done := false.
- 	f := fullPath asVmPathName.
- 	[done] whileFalse: [
- 		entryArray := self primLookupEntryIn: f index: index.
- 		#badDirectoryPath = entryArray ifTrue: [
- 			^(InvalidDirectoryError pathName: pathName asSqueakPathName) signal].
- 		entryArray == nil
- 			ifTrue: [done := true]
- 			ifFalse: [entries addLast: (DirectoryEntry fromArray: entryArray directory: self)].
- 		index := index + 1].
- 
- 	^ entries asArray collect: [:s | s convertFromSystemName].
- !



More information about the Packages mailing list