A new version of File-Kernel was added to project Rio: http://www.squeaksource.com/Rio/File-Kernel-kph.5.mcz
==================== Summary ====================
Name: File-Kernel-kph.5 Author: kph Time: 25 November 2008, 3:35:10 pm UUID: 43c4e71e-a6f0-4dd5-83d4-9d073ae77ed4 Ancestors: File-Kernel-kph.4
moved FileExecutive back in (silly mistake at 5am)
=============== Diff against File-Kernel-kph.4 ===============
Item was added: + ----- Method: FileExecutive>>basicReader: (in category 'as yet unclassified') ----- + basicReader: aFile + + ^ self class fileStreamClass new open: aFile forWrite: false!
Item was added: + ----- Method: FileExecutive>>toDirLocal:addAllLocal:relativeTo: (in category 'local/remote file copy') ----- + toDirLocal: aDir addAllLocal: someFD relativeTo: aBaseDir + + | map | + + map := self toDir: aDir mkpathAll: someFD relativeTo: aBaseDir. + + map do: [ :each | self copyLocalFile: each first toLocalFile: each second ]. + + ^ map!
Item was added: + ----- Method: FileExecutive>>touch: (in category 'as yet unclassified') ----- + touch: aRio + + aRio writer close!
Item was added: + ----- Method: FileExecutive>>root (in category 'as yet unclassified') ----- + root + + ^ self class makeNew: self class dirClass from: self rootString!
Item was added: + ----- Method: FileExecutive>>pathDelimiter (in category 'as yet unclassified') ----- + pathDelimiter + + ^ '/' + !
Item was added: + ----- Method: FileExecutive>>mkpath: (in category 'as yet unclassified') ----- + mkpath: aRio + + aRio isDirectory ifTrue: [ ^self ]. + aRio parent mkpath. + self createDirectory: aRio. !
Item was added: + ----- Method: FileExecutive>>isRoot: (in category 'testing') ----- + isRoot: aRioOrString + + ^ aRioOrString value = self rootString!
Item was added: + ----- Method: FileExecutive>>isDirectory: (in category 'as yet unclassified') ----- + isDirectory: aRio + + ^ aRio stat ifNil: [ false ] ifNotNil: [ aRio stat isDirectory ] + !
Item was added: + ----- Method: FileExecutive class>>newDirectoryFrom: (in category 'as yet unclassified') ----- + newDirectoryFrom: aString + + ^ (self instanciatorFrom: aString) makeNew: self dirClass from: aString + !
Item was added: + ----- Method: FileExecutive>>toDir:mkpathAll:relativeTo: (in category 'local/remote file copy') ----- + toDir: aDir mkpathAll: someFD relativeTo: aBaseDir + + "take the list of files and ensure that the directories exist, return sourceFile -> destFile map" + + ^ someFD + collect: [ :aFileOrDir | Array with: aFileOrDir with: (self dir: aDir mkpath: aFileOrDir relativeTo: aBaseDir) ] + thenSelect: [ :ea | ea first isFile ]. + + !
Item was added: + ----- Method: FileExecutive>>fileSize: (in category 'testing') ----- + fileSize: aRio + + ^ aRio stat fileSize!
Item was added: + ----- Method: FileExecutive class>>pathDelimiter (in category 'as yet unclassified') ----- + pathDelimiter + + ^ '/' + !
Item was added: + ----- Method: FileExecutive>>delete: (in category 'as yet unclassified') ----- + delete: aFileOrDir + + aFileOrDir isDirectory ifTrue: [ ^ aFileOrDir rmdir ]. + self deleteFile: aFileOrDir.!
Item was added: + ----- Method: FileExecutive class>>instanciatorFrom: (in category 'as yet unclassified') ----- + instanciatorFrom: aString + + | executiveClass | + + FileExecutive allSubclassesDo: [ :c | (c canInstanciateFrom: aString) ifTrue: [ executiveClass := c ]]. + + ^ executiveClass ifNil: [ self default ]!
Item was added: + ----- Method: FileExecutive>>dirClass (in category 'as yet unclassified') ----- + dirClass + + ^ Smalltalk at: #Directory ifAbsent: [ FileKernel ]!
Item was added: + ----- Method: FileExecutive class>>fileStreamClass (in category 'as yet unclassified') ----- + fileStreamClass + + ^ FileStream concreteStream!
Item was added: + ----- Method: FileExecutive>>toDir:addAllLocal:relativeTo: (in category 'local/remote file copy') ----- + toDir: aDir addAllLocal: someFD relativeTo: aBaseDir + + ^ self toDirLocal: aDir addAllLocal: someFD relativeTo: aBaseDir.!
Item was added: + ----- Method: FileExecutive>>makeNewRioFromString: (in category 'as yet unclassified') ----- + makeNewRioFromString: aString + + ^ self fileClass executive: self value: aString !
Item was added: + ----- Method: FileExecutive>>mkdir: (in category 'as yet unclassified') ----- + mkdir: aRio + + aRio isDirectory ifTrue: [ ^ self error: 'directory already exists' ]. + self createDirectory: aRio !
Item was added: + ----- Method: FileExecutive class>>canInstanciateFrom: (in category 'as yet unclassified') ----- + canInstanciateFrom: aPathString + + "we return false, because we do not support any specific protocol" + + ^ false!
Item was added: + ----- Method: FileExecutive>>fileClass (in category 'as yet unclassified') ----- + fileClass + + ^ Smalltalk at: #File ifAbsent: [ FileKernel ]!
Item was added: + ----- Method: FileExecutive>>toDir:addAllRemote:relativeTo: (in category 'local/remote file copy') ----- + toDir: aDir addAllRemote: someFD relativeTo: aBaseDir + + ^ someFD first executive toDirLocal: aDir addAllRemote: someFD relativeTo: aBaseDir.!
Item was added: + ----- Method: FileExecutive class>>dirClass (in category 'as yet unclassified') ----- + dirClass + + ^ Smalltalk at: #Directory ifAbsent: [ FileKernel ]!
Item was added: + ----- Method: FileExecutive>>basicWriter: (in category 'as yet unclassified') ----- + basicWriter: aRio + + ^ self class fileStreamClass new open: aRio forWrite: true + !
Item was added: + Object subclass: #FileExecutive + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'File-Kernel'!
Item was added: + ----- Method: FileExecutive>>pathDelimiterChar (in category 'as yet unclassified') ----- + pathDelimiterChar + + ^ $/ + !
Item was added: + ----- Method: FileExecutive>>MCPasswordManager (in category 'case-sensitivity') ----- + MCPasswordManager + + ^ MCPasswordManager!
Item was added: + ----- Method: FileExecutive class>>default (in category 'as yet unclassified') ----- + default + + ^ FileLocalExecutive !
Item was added: + ----- Method: FileExecutive class>>fileClass (in category 'as yet unclassified') ----- + fileClass + + ^ Smalltalk at: #File ifAbsent: [ FileKernel ]!
Item was added: + ----- Method: FileExecutive>>importValue: (in category 'executive actions') ----- + importValue: path + + path isEmpty ifTrue: [ ^ '' ]. + + (self isRoot: path) ifTrue: [ ^ self rootString ]. + + (path last = self pathDelimiter first) ifTrue: [ ^ path allButLast ]. + + ^path!
Item was added: + ----- Method: FileExecutive>>isFile: (in category 'as yet unclassified') ----- + isFile: aFileOrDirectory + + ^ (aFileOrDirectory stat ifNil: [ ^ false ]) isFile + !
Item was added: + ----- Method: FileExecutive>>isFull: (in category 'as yet unclassified') ----- + isFull: aFileOrDirectory + + ^ aFileOrDirectory value beginsWith: self rootString!
Item was added: + ----- Method: FileExecutive>>rootString (in category 'as yet unclassified') ----- + rootString + + ^ self subclassResponsibility!
Item was added: + ----- Method: FileExecutive>>dir:mkpath:relativeTo: (in category 'as yet unclassified') ----- + dir: aDir mkpath: aFileOrDir relativeTo: aBaseDirectory + + | newFD | + + newFD := aBaseDirectory ifNil: [ aFileOrDir ] + ifNotNil: [ aDir / (aFileOrDir linearRelativeTo: aBaseDirectory) ]. + + aFileOrDir isDirectory ifTrue: [ newFD mkpath ]. + aFileOrDir isFile ifTrue: [ newFD parent mkpath ]. + + ^ newFD + + !
Item was added: + ----- Method: FileExecutive>>hashFor: (in category 'equality') ----- + hashFor: aRio + + ^ aRio value hash!
Item was added: + ----- Method: FileExecutive>>is:sameAs: (in category 'equality') ----- + is: aRio sameAs: bRio + + ^ aRio value = bRio value!
Item was added: + ----- Method: FileExecutive>>in:select: (in category 'as yet unclassified') ----- + in: aDir select: selectBlock + + ^ self + startAt: aDir + recursively: aDir isRecursive + select: selectBlock + into: (OrderedCollection new: 50) + !
Item was added: + ----- Method: FileExecutive>>arePathsCaseSensitive (in category 'case-sensitivity') ----- + arePathsCaseSensitive + + ^ (self is: $a sameAs: $A) not + + !
Item was added: + ----- Method: FileExecutive>>addAll:relativeTo:toDir: (in category 'local/remote file copy') ----- + addAll: someFD relativeTo: aBaseDir toDir: aDir + + ^ aDir executive toDir: aDir addAllLocal: someFD relativeTo: aBaseDir.!
Item was added: + ----- Method: FileExecutive class>>newFileFrom: (in category 'as yet unclassified') ----- + newFileFrom: aString + + ^ (self instanciatorFrom: aString) makeNew: self fileClass from: aString + !
Item was added: + ----- Method: FileExecutive class>>OSProcessOrNil (in category 'as yet unclassified') ----- + OSProcessOrNil + + "extra check is needed because OSProcess on windows does not support waitForCommand (yet)" + + | osp | + + osp := Smalltalk at: #OSProcess ifAbsent: [ ^ nil ]. + + ^ (osp thisOSProcess respondsTo: #waitForCommand:) ifTrue: [ osp ] ifFalse: [ nil ] + !
Item was added: + ----- Method: FileExecutive>>fullFor: (in category 'as yet unclassified') ----- + fullFor: aFileOrDirectory + + "the absolute path of this rio, or if relative + combine with #defaultDirectory to obtain the full path" + + aFileOrDirectory value isEmpty ifTrue: [ ^ self defaultDirectory ]. + + (self isFull: aFileOrDirectory) ifTrue: [ ^ aFileOrDirectory ]. + + ^ aFileOrDirectory newFrom: (self defaultDirectory value, self pathDelimiter, aFileOrDirectory value)!
packages@lists.squeakfoundation.org