checkin from browser
authorClaus Gittinger <cg@exept.de>
Thu, 23 Nov 1995 02:16:37 +0100
changeset 605 8b17f96bf05a
parent 604 0e1ec470923d
child 606 7a9ab63a6757
checkin from browser
FileDir.st
FileDirectory.st
--- a/FileDir.st	Thu Nov 23 02:14:07 1995 +0100
+++ b/FileDir.st	Thu Nov 23 02:16:37 1995 +0100
@@ -11,10 +11,10 @@
 "
 
 Collection subclass:#FileDirectory
-       instanceVariableNames:'pathName lazy'
-       classVariableNames:'PathOfCurrentDirectory'
-       poolDictionaries:''
-       category:'Collections-Files'
+	 instanceVariableNames:'pathName lazy'
+	 classVariableNames:'PathOfCurrentDirectory'
+	 poolDictionaries:''
+	 category:'Collections-Files'
 !
 
 !FileDirectory class methodsFor:'documentation'!
@@ -33,10 +33,6 @@
 "
 !
 
-version
-    ^ '$Header: /cvs/stx/stx/libbasic/Attic/FileDir.st,v 1.24 1995-11-11 15:23:00 cg Exp $'
-!
-
 documentation
 "
     FileDirectories represent directories in the underlying host system.
@@ -53,6 +49,10 @@
 
 	Use instances of Filename if possible.
 "
+!
+
+version
+    ^ '$Header: /cvs/stx/stx/libbasic/Attic/FileDir.st,v 1.25 1995-11-23 01:16:37 cg Exp $'
 ! !
 
 !FileDirectory class methodsFor:'initialization'!
@@ -75,30 +75,6 @@
 
 !FileDirectory class methodsFor:'instance creation'!
 
-directoryNamed:name
-    "create and return a new FileDirectory for the directory
-     with given pathname"
-
-    ^ (self basicNew) pathName:name
-
-    "
-     (FileDirectory directoryNamed:'..') pathName
-     (FileDirectory directoryNamed:'../..') files
-    "
-!
-
-rootDirectory
-    "create and return a new FileDirectory for the root directory"
-
-    ^ self directoryNamed:(OperatingSystem fileSeparator asString)
-
-    "
-     FileDirectory rootDirectory contents
-     FileDirectory rootDirectory files
-     FileDirectory rootDirectory isReadable
-    "
-!
-
 currentDirectory
     "create and return a new FileDirectory for the current directory"
 
@@ -112,6 +88,18 @@
     "
 !
 
+directoryNamed:name
+    "create and return a new FileDirectory for the directory
+     with given pathname"
+
+    ^ (self basicNew) pathName:name
+
+    "
+     (FileDirectory directoryNamed:'..') pathName
+     (FileDirectory directoryNamed:'../..') files
+    "
+!
+
 directoryNamed:name in:aFileDirectory
     "create and return a new FileDirectory for the directory with given name
      in another FileDirectory"
@@ -140,6 +128,18 @@
 	]
     ].
     ^ self directoryNamed:(baseName , name)
+!
+
+rootDirectory
+    "create and return a new FileDirectory for the root directory"
+
+    ^ self directoryNamed:(OperatingSystem fileSeparator asString)
+
+    "
+     FileDirectory rootDirectory contents
+     FileDirectory rootDirectory files
+     FileDirectory rootDirectory isReadable
+    "
 ! !
 
 !FileDirectory class methodsFor:'private'!
@@ -164,39 +164,6 @@
     ^ OperatingSystem baseNameOf:pathName
 !
 
-directoryName
-    "return my directoryName
-     - thats the directory name where I'm in"
-
-    lazy ifTrue:[self getFullPathName].
-    ^ OperatingSystem directoryNameOf:pathName
-!
-
-pathName
-    "return my full pathname"
-
-    lazy ifTrue:[self getFullPathName].
-    ^ pathName
-!
-
-pathName:dirName
-    "set my pathname; return nil if not a valid path; self otherwise"
-
-    pathName := dirName.
-    (dirName startsWith:OperatingSystem fileSeparator) ifFalse:[
-	lazy := true
-    ] ifTrue:[
-	(dirName startsWith:'./') ifFalse:[
-"/        (dirName includes:$.) ifTrue:[
-	    lazy := true
-	]
-    ].
-    ^ self
-"
-    (OperatingSystem isDirectory:pathName) ifFalse:[^ nil]
-"
-!
-
 contents 
     "return a collection with all files and subdirectories in the receiver"
 
@@ -223,6 +190,14 @@
     ^ coll
 !
 
+directoryName
+    "return my directoryName
+     - thats the directory name where I'm in"
+
+    lazy ifTrue:[self getFullPathName].
+    ^ OperatingSystem directoryNameOf:pathName
+!
+
 files
     "return a collection with all plain files in the receiver directory"
 
@@ -234,6 +209,102 @@
     ].
     coll sort.
     ^ coll
+!
+
+pathName
+    "return my full pathname"
+
+    lazy ifTrue:[self getFullPathName].
+    ^ pathName
+!
+
+pathName:dirName
+    "set my pathname; return nil if not a valid path; self otherwise"
+
+    pathName := dirName.
+    (dirName startsWith:OperatingSystem fileSeparator) ifFalse:[
+	lazy := true
+    ] ifTrue:[
+	(dirName startsWith:'./') ifFalse:[
+"/        (dirName includes:$.) ifTrue:[
+	    lazy := true
+	]
+    ].
+    ^ self
+"
+    (OperatingSystem isDirectory:pathName) ifFalse:[^ nil]
+"
+! !
+
+!FileDirectory methodsFor:'basic'!
+
+createDirectory:newName
+    "create a new filedirectory as a subdirectory of myself;
+     return true if successful"
+
+    |realName|
+
+    (newName notNil and:[newName notEmpty]) ifTrue:[
+	(newName ~= '.' and:[newName ~= '..']) ifTrue:[
+	    ((newName at:1) == OperatingSystem fileSeparator) ifTrue:[
+		realName := newName copyFrom:2
+	    ] ifFalse:[
+		realName := newName
+	    ].
+	    ^ OperatingSystem createDirectory:(self pathNameOf:realName)
+	]
+    ].
+    ^ false
+!
+
+link:oldFileName to:newFileName
+    "link oldFileName to newFileName in myself, return true if successful"
+
+    |path1 path2|
+
+    path1 := self pathNameOf:oldFileName.
+    path2 := self pathNameOf:newFileName.
+    ^ OperatingSystem linkFile:path1 to:path2
+!
+
+remove:aFileOrDirectoryName
+    "remove the file or directory from myself; return true if successful"
+
+    |path|
+
+    path := self pathNameOf:aFileOrDirectoryName.
+    (OperatingSystem isDirectory:path) ifTrue:[
+	^ OperatingSystem removeDirectory:path
+    ].
+    ^ OperatingSystem removeFile:path
+!
+
+removeDirectory:dirName
+    "remove the directory 'dirName' from myself; return true if successful.
+     If the directory is not empty, the containing files/directories are also
+     removed."
+
+    |path|
+
+    path := self pathNameOf:dirName.
+    (OperatingSystem removeDirectory:path) ifTrue:[^ true].
+    ^ OperatingSystem recursiveRemoveDirectory:path
+!
+
+removeFile:fileName
+    "remove the file 'fileName' from myself; return true if successful"
+
+    ^ OperatingSystem removeFile:(self pathNameOf:fileName).
+!
+
+renameFile:oldFileName newName:newFileName
+    "rename the file; return true if successful"
+
+    |path1 path2|
+
+    path1 := self pathNameOf:oldFileName.
+    path2 := self pathNameOf:newFileName.
+    ^ OperatingSystem renameFile:path1 to:path2
 ! !
 
 !FileDirectory methodsFor:'converting'!
@@ -250,6 +321,130 @@
     ^ self asFilename construct:someFile
 ! !
 
+!FileDirectory methodsFor:'enumerating'!
+
+allDirectoriesDo:aBlock
+    "evaluate the argument, aBlock for every directory name
+     in the directory and in all subdirectories"
+
+    |aStream command line|
+
+    lazy ifTrue:[self getFullPathName].
+    command := 'cd ' , pathName , '; find . -type d -print'.
+    aStream := PipeStream readingFrom:command.
+    aStream isNil ifTrue:[^ nil].
+    [aStream atEnd] whileFalse:[
+	line := aStream nextLine.
+	line notNil ifTrue:[
+	    (line = '.') ifFalse:[
+		"cut off initial ./"
+		line := line copyFrom:3
+	    ].
+	    aBlock value:line
+	]
+    ].
+    aStream close
+!
+
+allFilesDo:aBlock
+    "evaluate the argument, aBlock for every file name in the directory and in all
+     subdirectories"
+
+    |aStream command line|
+
+    lazy ifTrue:[self getFullPathName].
+    command := 'cd ' , pathName , '; find . -print'.
+    aStream := PipeStream readingFrom:command.
+    aStream isNil ifTrue:[^ nil].
+    [aStream atEnd] whileFalse:[
+	line := aStream nextLine.
+	line notNil ifTrue:[
+	    (line = '.') ifFalse:[
+		"cut off initial ./"
+		line := line copyFrom:3
+	    ].
+	    aBlock value:line
+	]
+    ].
+    aStream close
+!
+
+directoriesDo:aBlock
+    "evaluate the argument, aBlock for every subdirectory name in the directory"
+
+    self where:[:name | (self isDirectory:name) ifTrue:[
+			    ((name ~= '.') and:[name ~= '..'])
+			] ifFalse:[
+			    false
+			]
+	       ] do:aBlock
+!
+
+do:aBlock
+    "evaluate the argument, aBlock for every name in the directory"
+
+    self where:[:name | true] do:aBlock
+!
+
+filesDo:aBlock
+    "evaluate the argument, aBlock for every plain file name in the directory"
+
+    self where:[:name | (self isDirectory:name) not] do:aBlock
+!
+
+namesDo:aBlock
+    "evaluate the argument, aBlock for every name in the directory.
+     for ST-80 compatibility"
+
+    self do:aBlock
+!
+
+where:testBlock do:aBlock
+    "evaluate the argument, aBlock for every object in the directory
+     for which testBlock evaluates to true."
+
+    |aStream name|
+
+    aStream := DirectoryStream directoryNamed:pathName.
+    aStream isNil ifTrue:[^ nil].
+    [aStream atEnd] whileFalse:[
+	name := aStream nextLine.
+	name notNil ifTrue:[
+	    (testBlock value:name) ifTrue:[
+		aBlock value:name
+	    ]
+	]
+    ].
+    aStream close
+! !
+
+!FileDirectory methodsFor:'more instance creation'!
+
+directoryNamed:aName
+    ^ self class directoryNamed:aName in:self pathName
+! !
+
+!FileDirectory methodsFor:'printing & storing'!
+
+printOn:aStream
+    "append a printed representation of the receiver to aStream."
+
+    lazy ifTrue:[self getFullPathName].
+    aStream nextPutAll:'(a FileDirectory pathName:';
+	    nextPutAll:pathName;
+	    nextPutAll:')'
+!
+
+storeOn:aStream
+    "append a printed representation of the receiver to aStream,
+     which allows reconstructing it via readFrom:"
+
+    lazy ifTrue:[self getFullPathName].
+    aStream nextPutAll:'(FileDirectory directoryNamed:'.
+    aStream nextPutAll:pathName.
+    aStream nextPut:$)
+! !
+
 !FileDirectory methodsFor:'private'!
 
 getFullPathName
@@ -289,87 +484,18 @@
     ^ self class fullPathNameOf:fileName in:pathName
 ! !
 
-!FileDirectory methodsFor:'basic'!
-
-createDirectory:newName
-    "create a new filedirectory as a subdirectory of myself;
-     return true if successful"
-
-    |realName|
+!FileDirectory methodsFor:'queries'!
 
-    (newName notNil and:[newName notEmpty]) ifTrue:[
-	(newName ~= '.' and:[newName ~= '..']) ifTrue:[
-	    ((newName at:1) == OperatingSystem fileSeparator) ifTrue:[
-		realName := newName copyFrom:2
-	    ] ifFalse:[
-		realName := newName
-	    ].
-	    ^ OperatingSystem createDirectory:(self pathNameOf:realName)
-	]
-    ].
-    ^ false
-!
+accessModeOf:name
+    "return the access-mode bits (rwxrwxrwx) of a file in myself"
 
-removeFile:fileName
-    "remove the file 'fileName' from myself; return true if successful"
-
-    ^ OperatingSystem removeFile:(self pathNameOf:fileName).
+    ^ OperatingSystem accessModeOf:(self pathNameOf:name)
 !
 
-removeDirectory:dirName
-    "remove the directory 'dirName' from myself; return true if successful.
-     If the directory is not empty, the containing files/directories are also
-     removed."
-
-    |path|
-
-    path := self pathNameOf:dirName.
-    (OperatingSystem removeDirectory:path) ifTrue:[^ true].
-    ^ OperatingSystem recursiveRemoveDirectory:path
-!
-    
-remove:aFileOrDirectoryName
-    "remove the file or directory from myself; return true if successful"
-
-    |path|
-
-    path := self pathNameOf:aFileOrDirectoryName.
-    (OperatingSystem isDirectory:path) ifTrue:[
-	^ OperatingSystem removeDirectory:path
-    ].
-    ^ OperatingSystem removeFile:path
-!
-
-link:oldFileName to:newFileName
-    "link oldFileName to newFileName in myself, return true if successful"
+changeAccessModeOf:name to:modeBits
+    "set the access-mode bits (rwxrwxrwx) of a file in myself"
 
-    |path1 path2|
-
-    path1 := self pathNameOf:oldFileName.
-    path2 := self pathNameOf:newFileName.
-    ^ OperatingSystem linkFile:path1 to:path2
-!
-
-renameFile:oldFileName newName:newFileName
-    "rename the file; return true if successful"
-
-    |path1 path2|
-
-    path1 := self pathNameOf:oldFileName.
-    path2 := self pathNameOf:newFileName.
-    ^ OperatingSystem renameFile:path1 to:path2
-! !
-
-!FileDirectory methodsFor:'queries'!
-
-species
-    ^ OrderedCollection
-!
-
-id
-    "return the directories file-id (inode number)"
-
-    ^ OperatingSystem idOf:pathName
+    ^ OperatingSystem changeAccessModeOf:(self pathNameOf:name) to:modeBits
 !
 
 exists
@@ -383,6 +509,31 @@
     "
 !
 
+exists:name
+    "return true, if the given name exists in myself"
+
+    ^ OperatingSystem isValidPath:(self pathNameOf:name)
+!
+
+id
+    "return the directories file-id (inode number)"
+
+    ^ OperatingSystem idOf:pathName
+!
+
+infoOf:name
+    "return an array filled with file info for the file 'aFileName';
+     return nil if such a file does not exist"
+
+    ^ OperatingSystem infoOf:(self pathNameOf:name)
+!
+
+isDirectory:name
+    "return true, if the given name is that of a directory in myself"
+
+    ^ OperatingSystem isDirectory:(self pathNameOf:name)
+!
+
 isEmpty
     "return true, if the directory is empty;
      redefined since '.' and '..' do not count as entries here."
@@ -393,53 +544,10 @@
     ^ true
 !
 
-infoOf:name
-    "return an array filled with file info for the file 'aFileName';
-     return nil if such a file does not exist"
-
-    ^ OperatingSystem infoOf:(self pathNameOf:name)
-!
-
-timeOfLastChange:name
-    "return the timeStamp of a file in myself"
-
-    ^ OperatingSystem timeOfLastChange:(self pathNameOf:name)
-!
-
-timeOfLastChange
-    "return the timeStamp of myself"
-
-    ^ OperatingSystem timeOfLastChange:pathName
-!
-
-accessModeOf:name
-    "return the access-mode bits (rwxrwxrwx) of a file in myself"
+isExecutable:name
+    "return true, if the given file is executable"
 
-    ^ OperatingSystem accessModeOf:(self pathNameOf:name)
-!
-
-changeAccessModeOf:name to:modeBits
-    "set the access-mode bits (rwxrwxrwx) of a file in myself"
-
-    ^ OperatingSystem changeAccessModeOf:(self pathNameOf:name) to:modeBits
-!
-
-typeOf:name
-    "return the symbolic type of a file in myself"
-
-    ^ OperatingSystem typeOf:(self pathNameOf:name)
-!
-
-exists:name
-    "return true, if the given name exists in myself"
-
-    ^ OperatingSystem isValidPath:(self pathNameOf:name)
-!
-
-isDirectory:name
-    "return true, if the given name is that of a directory in myself"
-
-    ^ OperatingSystem isDirectory:(self pathNameOf:name)
+    ^ OperatingSystem isExecutable:(self pathNameOf:name)
 !
 
 isReadable:name
@@ -454,132 +562,26 @@
     ^ OperatingSystem isWritable:(self pathNameOf:name)
 !
 
-isExecutable:name
-    "return true, if the given file is executable"
-
-    ^ OperatingSystem isExecutable:(self pathNameOf:name)
-! !
-
-!FileDirectory methodsFor:'printing & storing'!
-
-printOn:aStream
-    "append a printed representation of the receiver to aStream."
-
-    lazy ifTrue:[self getFullPathName].
-    aStream nextPutAll:'(a FileDirectory pathName:';
-	    nextPutAll:pathName;
-	    nextPutAll:')'
+species
+    ^ OrderedCollection
 !
 
-storeOn:aStream
-    "append a printed representation of the receiver to aStream,
-     which allows reconstructing it via readFrom:"
-
-    lazy ifTrue:[self getFullPathName].
-    aStream nextPutAll:'(FileDirectory directoryNamed:'.
-    aStream nextPutAll:pathName.
-    aStream nextPut:$)
-! !
-
-!FileDirectory methodsFor:'more instance creation'!
-
-directoryNamed:aName
-    ^ self class directoryNamed:aName in:self pathName
-! !
-
-!FileDirectory methodsFor:'enumerating'!
+timeOfLastChange
+    "return the timeStamp of myself"
 
-where:testBlock do:aBlock
-    "evaluate the argument, aBlock for every object in the directory
-     for which testBlock evaluates to true."
-
-    |aStream name|
-
-    aStream := DirectoryStream directoryNamed:pathName.
-    aStream isNil ifTrue:[^ nil].
-    [aStream atEnd] whileFalse:[
-	name := aStream nextLine.
-	name notNil ifTrue:[
-	    (testBlock value:name) ifTrue:[
-		aBlock value:name
-	    ]
-	]
-    ].
-    aStream close
-!
-
-do:aBlock
-    "evaluate the argument, aBlock for every name in the directory"
-
-    self where:[:name | true] do:aBlock
+    ^ OperatingSystem timeOfLastChange:pathName
 !
 
-namesDo:aBlock
-    "evaluate the argument, aBlock for every name in the directory.
-     for ST-80 compatibility"
-
-    self do:aBlock
-!
-
-filesDo:aBlock
-    "evaluate the argument, aBlock for every plain file name in the directory"
+timeOfLastChange:name
+    "return the timeStamp of a file in myself"
 
-    self where:[:name | (self isDirectory:name) not] do:aBlock
-!
-
-directoriesDo:aBlock
-    "evaluate the argument, aBlock for every subdirectory name in the directory"
-
-    self where:[:name | (self isDirectory:name) ifTrue:[
-			    ((name ~= '.') and:[name ~= '..'])
-			] ifFalse:[
-			    false
-			]
-	       ] do:aBlock
+    ^ OperatingSystem timeOfLastChange:(self pathNameOf:name)
 !
 
-allFilesDo:aBlock
-    "evaluate the argument, aBlock for every file name in the directory and in all
-     subdirectories"
-
-    |aStream command line|
-
-    lazy ifTrue:[self getFullPathName].
-    command := 'cd ' , pathName , '; find . -print'.
-    aStream := PipeStream readingFrom:command.
-    aStream isNil ifTrue:[^ nil].
-    [aStream atEnd] whileFalse:[
-	line := aStream nextLine.
-	line notNil ifTrue:[
-	    (line = '.') ifFalse:[
-		"cut off initial ./"
-		line := line copyFrom:3
-	    ].
-	    aBlock value:line
-	]
-    ].
-    aStream close
-!
+typeOf:name
+    "return the symbolic type of a file in myself"
 
-allDirectoriesDo:aBlock
-    "evaluate the argument, aBlock for every directory name
-     in the directory and in all subdirectories"
-
-    |aStream command line|
+    ^ OperatingSystem typeOf:(self pathNameOf:name)
+! !
 
-    lazy ifTrue:[self getFullPathName].
-    command := 'cd ' , pathName , '; find . -type d -print'.
-    aStream := PipeStream readingFrom:command.
-    aStream isNil ifTrue:[^ nil].
-    [aStream atEnd] whileFalse:[
-	line := aStream nextLine.
-	line notNil ifTrue:[
-	    (line = '.') ifFalse:[
-		"cut off initial ./"
-		line := line copyFrom:3
-	    ].
-	    aBlock value:line
-	]
-    ].
-    aStream close
-! !
+FileDirectory initialize!
--- a/FileDirectory.st	Thu Nov 23 02:14:07 1995 +0100
+++ b/FileDirectory.st	Thu Nov 23 02:16:37 1995 +0100
@@ -11,10 +11,10 @@
 "
 
 Collection subclass:#FileDirectory
-       instanceVariableNames:'pathName lazy'
-       classVariableNames:'PathOfCurrentDirectory'
-       poolDictionaries:''
-       category:'Collections-Files'
+	 instanceVariableNames:'pathName lazy'
+	 classVariableNames:'PathOfCurrentDirectory'
+	 poolDictionaries:''
+	 category:'Collections-Files'
 !
 
 !FileDirectory class methodsFor:'documentation'!
@@ -33,10 +33,6 @@
 "
 !
 
-version
-    ^ '$Header: /cvs/stx/stx/libbasic/FileDirectory.st,v 1.24 1995-11-11 15:23:00 cg Exp $'
-!
-
 documentation
 "
     FileDirectories represent directories in the underlying host system.
@@ -53,6 +49,10 @@
 
 	Use instances of Filename if possible.
 "
+!
+
+version
+    ^ '$Header: /cvs/stx/stx/libbasic/FileDirectory.st,v 1.25 1995-11-23 01:16:37 cg Exp $'
 ! !
 
 !FileDirectory class methodsFor:'initialization'!
@@ -75,30 +75,6 @@
 
 !FileDirectory class methodsFor:'instance creation'!
 
-directoryNamed:name
-    "create and return a new FileDirectory for the directory
-     with given pathname"
-
-    ^ (self basicNew) pathName:name
-
-    "
-     (FileDirectory directoryNamed:'..') pathName
-     (FileDirectory directoryNamed:'../..') files
-    "
-!
-
-rootDirectory
-    "create and return a new FileDirectory for the root directory"
-
-    ^ self directoryNamed:(OperatingSystem fileSeparator asString)
-
-    "
-     FileDirectory rootDirectory contents
-     FileDirectory rootDirectory files
-     FileDirectory rootDirectory isReadable
-    "
-!
-
 currentDirectory
     "create and return a new FileDirectory for the current directory"
 
@@ -112,6 +88,18 @@
     "
 !
 
+directoryNamed:name
+    "create and return a new FileDirectory for the directory
+     with given pathname"
+
+    ^ (self basicNew) pathName:name
+
+    "
+     (FileDirectory directoryNamed:'..') pathName
+     (FileDirectory directoryNamed:'../..') files
+    "
+!
+
 directoryNamed:name in:aFileDirectory
     "create and return a new FileDirectory for the directory with given name
      in another FileDirectory"
@@ -140,6 +128,18 @@
 	]
     ].
     ^ self directoryNamed:(baseName , name)
+!
+
+rootDirectory
+    "create and return a new FileDirectory for the root directory"
+
+    ^ self directoryNamed:(OperatingSystem fileSeparator asString)
+
+    "
+     FileDirectory rootDirectory contents
+     FileDirectory rootDirectory files
+     FileDirectory rootDirectory isReadable
+    "
 ! !
 
 !FileDirectory class methodsFor:'private'!
@@ -164,39 +164,6 @@
     ^ OperatingSystem baseNameOf:pathName
 !
 
-directoryName
-    "return my directoryName
-     - thats the directory name where I'm in"
-
-    lazy ifTrue:[self getFullPathName].
-    ^ OperatingSystem directoryNameOf:pathName
-!
-
-pathName
-    "return my full pathname"
-
-    lazy ifTrue:[self getFullPathName].
-    ^ pathName
-!
-
-pathName:dirName
-    "set my pathname; return nil if not a valid path; self otherwise"
-
-    pathName := dirName.
-    (dirName startsWith:OperatingSystem fileSeparator) ifFalse:[
-	lazy := true
-    ] ifTrue:[
-	(dirName startsWith:'./') ifFalse:[
-"/        (dirName includes:$.) ifTrue:[
-	    lazy := true
-	]
-    ].
-    ^ self
-"
-    (OperatingSystem isDirectory:pathName) ifFalse:[^ nil]
-"
-!
-
 contents 
     "return a collection with all files and subdirectories in the receiver"
 
@@ -223,6 +190,14 @@
     ^ coll
 !
 
+directoryName
+    "return my directoryName
+     - thats the directory name where I'm in"
+
+    lazy ifTrue:[self getFullPathName].
+    ^ OperatingSystem directoryNameOf:pathName
+!
+
 files
     "return a collection with all plain files in the receiver directory"
 
@@ -234,6 +209,102 @@
     ].
     coll sort.
     ^ coll
+!
+
+pathName
+    "return my full pathname"
+
+    lazy ifTrue:[self getFullPathName].
+    ^ pathName
+!
+
+pathName:dirName
+    "set my pathname; return nil if not a valid path; self otherwise"
+
+    pathName := dirName.
+    (dirName startsWith:OperatingSystem fileSeparator) ifFalse:[
+	lazy := true
+    ] ifTrue:[
+	(dirName startsWith:'./') ifFalse:[
+"/        (dirName includes:$.) ifTrue:[
+	    lazy := true
+	]
+    ].
+    ^ self
+"
+    (OperatingSystem isDirectory:pathName) ifFalse:[^ nil]
+"
+! !
+
+!FileDirectory methodsFor:'basic'!
+
+createDirectory:newName
+    "create a new filedirectory as a subdirectory of myself;
+     return true if successful"
+
+    |realName|
+
+    (newName notNil and:[newName notEmpty]) ifTrue:[
+	(newName ~= '.' and:[newName ~= '..']) ifTrue:[
+	    ((newName at:1) == OperatingSystem fileSeparator) ifTrue:[
+		realName := newName copyFrom:2
+	    ] ifFalse:[
+		realName := newName
+	    ].
+	    ^ OperatingSystem createDirectory:(self pathNameOf:realName)
+	]
+    ].
+    ^ false
+!
+
+link:oldFileName to:newFileName
+    "link oldFileName to newFileName in myself, return true if successful"
+
+    |path1 path2|
+
+    path1 := self pathNameOf:oldFileName.
+    path2 := self pathNameOf:newFileName.
+    ^ OperatingSystem linkFile:path1 to:path2
+!
+
+remove:aFileOrDirectoryName
+    "remove the file or directory from myself; return true if successful"
+
+    |path|
+
+    path := self pathNameOf:aFileOrDirectoryName.
+    (OperatingSystem isDirectory:path) ifTrue:[
+	^ OperatingSystem removeDirectory:path
+    ].
+    ^ OperatingSystem removeFile:path
+!
+
+removeDirectory:dirName
+    "remove the directory 'dirName' from myself; return true if successful.
+     If the directory is not empty, the containing files/directories are also
+     removed."
+
+    |path|
+
+    path := self pathNameOf:dirName.
+    (OperatingSystem removeDirectory:path) ifTrue:[^ true].
+    ^ OperatingSystem recursiveRemoveDirectory:path
+!
+
+removeFile:fileName
+    "remove the file 'fileName' from myself; return true if successful"
+
+    ^ OperatingSystem removeFile:(self pathNameOf:fileName).
+!
+
+renameFile:oldFileName newName:newFileName
+    "rename the file; return true if successful"
+
+    |path1 path2|
+
+    path1 := self pathNameOf:oldFileName.
+    path2 := self pathNameOf:newFileName.
+    ^ OperatingSystem renameFile:path1 to:path2
 ! !
 
 !FileDirectory methodsFor:'converting'!
@@ -250,6 +321,130 @@
     ^ self asFilename construct:someFile
 ! !
 
+!FileDirectory methodsFor:'enumerating'!
+
+allDirectoriesDo:aBlock
+    "evaluate the argument, aBlock for every directory name
+     in the directory and in all subdirectories"
+
+    |aStream command line|
+
+    lazy ifTrue:[self getFullPathName].
+    command := 'cd ' , pathName , '; find . -type d -print'.
+    aStream := PipeStream readingFrom:command.
+    aStream isNil ifTrue:[^ nil].
+    [aStream atEnd] whileFalse:[
+	line := aStream nextLine.
+	line notNil ifTrue:[
+	    (line = '.') ifFalse:[
+		"cut off initial ./"
+		line := line copyFrom:3
+	    ].
+	    aBlock value:line
+	]
+    ].
+    aStream close
+!
+
+allFilesDo:aBlock
+    "evaluate the argument, aBlock for every file name in the directory and in all
+     subdirectories"
+
+    |aStream command line|
+
+    lazy ifTrue:[self getFullPathName].
+    command := 'cd ' , pathName , '; find . -print'.
+    aStream := PipeStream readingFrom:command.
+    aStream isNil ifTrue:[^ nil].
+    [aStream atEnd] whileFalse:[
+	line := aStream nextLine.
+	line notNil ifTrue:[
+	    (line = '.') ifFalse:[
+		"cut off initial ./"
+		line := line copyFrom:3
+	    ].
+	    aBlock value:line
+	]
+    ].
+    aStream close
+!
+
+directoriesDo:aBlock
+    "evaluate the argument, aBlock for every subdirectory name in the directory"
+
+    self where:[:name | (self isDirectory:name) ifTrue:[
+			    ((name ~= '.') and:[name ~= '..'])
+			] ifFalse:[
+			    false
+			]
+	       ] do:aBlock
+!
+
+do:aBlock
+    "evaluate the argument, aBlock for every name in the directory"
+
+    self where:[:name | true] do:aBlock
+!
+
+filesDo:aBlock
+    "evaluate the argument, aBlock for every plain file name in the directory"
+
+    self where:[:name | (self isDirectory:name) not] do:aBlock
+!
+
+namesDo:aBlock
+    "evaluate the argument, aBlock for every name in the directory.
+     for ST-80 compatibility"
+
+    self do:aBlock
+!
+
+where:testBlock do:aBlock
+    "evaluate the argument, aBlock for every object in the directory
+     for which testBlock evaluates to true."
+
+    |aStream name|
+
+    aStream := DirectoryStream directoryNamed:pathName.
+    aStream isNil ifTrue:[^ nil].
+    [aStream atEnd] whileFalse:[
+	name := aStream nextLine.
+	name notNil ifTrue:[
+	    (testBlock value:name) ifTrue:[
+		aBlock value:name
+	    ]
+	]
+    ].
+    aStream close
+! !
+
+!FileDirectory methodsFor:'more instance creation'!
+
+directoryNamed:aName
+    ^ self class directoryNamed:aName in:self pathName
+! !
+
+!FileDirectory methodsFor:'printing & storing'!
+
+printOn:aStream
+    "append a printed representation of the receiver to aStream."
+
+    lazy ifTrue:[self getFullPathName].
+    aStream nextPutAll:'(a FileDirectory pathName:';
+	    nextPutAll:pathName;
+	    nextPutAll:')'
+!
+
+storeOn:aStream
+    "append a printed representation of the receiver to aStream,
+     which allows reconstructing it via readFrom:"
+
+    lazy ifTrue:[self getFullPathName].
+    aStream nextPutAll:'(FileDirectory directoryNamed:'.
+    aStream nextPutAll:pathName.
+    aStream nextPut:$)
+! !
+
 !FileDirectory methodsFor:'private'!
 
 getFullPathName
@@ -289,87 +484,18 @@
     ^ self class fullPathNameOf:fileName in:pathName
 ! !
 
-!FileDirectory methodsFor:'basic'!
-
-createDirectory:newName
-    "create a new filedirectory as a subdirectory of myself;
-     return true if successful"
-
-    |realName|
+!FileDirectory methodsFor:'queries'!
 
-    (newName notNil and:[newName notEmpty]) ifTrue:[
-	(newName ~= '.' and:[newName ~= '..']) ifTrue:[
-	    ((newName at:1) == OperatingSystem fileSeparator) ifTrue:[
-		realName := newName copyFrom:2
-	    ] ifFalse:[
-		realName := newName
-	    ].
-	    ^ OperatingSystem createDirectory:(self pathNameOf:realName)
-	]
-    ].
-    ^ false
-!
+accessModeOf:name
+    "return the access-mode bits (rwxrwxrwx) of a file in myself"
 
-removeFile:fileName
-    "remove the file 'fileName' from myself; return true if successful"
-
-    ^ OperatingSystem removeFile:(self pathNameOf:fileName).
+    ^ OperatingSystem accessModeOf:(self pathNameOf:name)
 !
 
-removeDirectory:dirName
-    "remove the directory 'dirName' from myself; return true if successful.
-     If the directory is not empty, the containing files/directories are also
-     removed."
-
-    |path|
-
-    path := self pathNameOf:dirName.
-    (OperatingSystem removeDirectory:path) ifTrue:[^ true].
-    ^ OperatingSystem recursiveRemoveDirectory:path
-!
-    
-remove:aFileOrDirectoryName
-    "remove the file or directory from myself; return true if successful"
-
-    |path|
-
-    path := self pathNameOf:aFileOrDirectoryName.
-    (OperatingSystem isDirectory:path) ifTrue:[
-	^ OperatingSystem removeDirectory:path
-    ].
-    ^ OperatingSystem removeFile:path
-!
-
-link:oldFileName to:newFileName
-    "link oldFileName to newFileName in myself, return true if successful"
+changeAccessModeOf:name to:modeBits
+    "set the access-mode bits (rwxrwxrwx) of a file in myself"
 
-    |path1 path2|
-
-    path1 := self pathNameOf:oldFileName.
-    path2 := self pathNameOf:newFileName.
-    ^ OperatingSystem linkFile:path1 to:path2
-!
-
-renameFile:oldFileName newName:newFileName
-    "rename the file; return true if successful"
-
-    |path1 path2|
-
-    path1 := self pathNameOf:oldFileName.
-    path2 := self pathNameOf:newFileName.
-    ^ OperatingSystem renameFile:path1 to:path2
-! !
-
-!FileDirectory methodsFor:'queries'!
-
-species
-    ^ OrderedCollection
-!
-
-id
-    "return the directories file-id (inode number)"
-
-    ^ OperatingSystem idOf:pathName
+    ^ OperatingSystem changeAccessModeOf:(self pathNameOf:name) to:modeBits
 !
 
 exists
@@ -383,6 +509,31 @@
     "
 !
 
+exists:name
+    "return true, if the given name exists in myself"
+
+    ^ OperatingSystem isValidPath:(self pathNameOf:name)
+!
+
+id
+    "return the directories file-id (inode number)"
+
+    ^ OperatingSystem idOf:pathName
+!
+
+infoOf:name
+    "return an array filled with file info for the file 'aFileName';
+     return nil if such a file does not exist"
+
+    ^ OperatingSystem infoOf:(self pathNameOf:name)
+!
+
+isDirectory:name
+    "return true, if the given name is that of a directory in myself"
+
+    ^ OperatingSystem isDirectory:(self pathNameOf:name)
+!
+
 isEmpty
     "return true, if the directory is empty;
      redefined since '.' and '..' do not count as entries here."
@@ -393,53 +544,10 @@
     ^ true
 !
 
-infoOf:name
-    "return an array filled with file info for the file 'aFileName';
-     return nil if such a file does not exist"
-
-    ^ OperatingSystem infoOf:(self pathNameOf:name)
-!
-
-timeOfLastChange:name
-    "return the timeStamp of a file in myself"
-
-    ^ OperatingSystem timeOfLastChange:(self pathNameOf:name)
-!
-
-timeOfLastChange
-    "return the timeStamp of myself"
-
-    ^ OperatingSystem timeOfLastChange:pathName
-!
-
-accessModeOf:name
-    "return the access-mode bits (rwxrwxrwx) of a file in myself"
+isExecutable:name
+    "return true, if the given file is executable"
 
-    ^ OperatingSystem accessModeOf:(self pathNameOf:name)
-!
-
-changeAccessModeOf:name to:modeBits
-    "set the access-mode bits (rwxrwxrwx) of a file in myself"
-
-    ^ OperatingSystem changeAccessModeOf:(self pathNameOf:name) to:modeBits
-!
-
-typeOf:name
-    "return the symbolic type of a file in myself"
-
-    ^ OperatingSystem typeOf:(self pathNameOf:name)
-!
-
-exists:name
-    "return true, if the given name exists in myself"
-
-    ^ OperatingSystem isValidPath:(self pathNameOf:name)
-!
-
-isDirectory:name
-    "return true, if the given name is that of a directory in myself"
-
-    ^ OperatingSystem isDirectory:(self pathNameOf:name)
+    ^ OperatingSystem isExecutable:(self pathNameOf:name)
 !
 
 isReadable:name
@@ -454,132 +562,26 @@
     ^ OperatingSystem isWritable:(self pathNameOf:name)
 !
 
-isExecutable:name
-    "return true, if the given file is executable"
-
-    ^ OperatingSystem isExecutable:(self pathNameOf:name)
-! !
-
-!FileDirectory methodsFor:'printing & storing'!
-
-printOn:aStream
-    "append a printed representation of the receiver to aStream."
-
-    lazy ifTrue:[self getFullPathName].
-    aStream nextPutAll:'(a FileDirectory pathName:';
-	    nextPutAll:pathName;
-	    nextPutAll:')'
+species
+    ^ OrderedCollection
 !
 
-storeOn:aStream
-    "append a printed representation of the receiver to aStream,
-     which allows reconstructing it via readFrom:"
-
-    lazy ifTrue:[self getFullPathName].
-    aStream nextPutAll:'(FileDirectory directoryNamed:'.
-    aStream nextPutAll:pathName.
-    aStream nextPut:$)
-! !
-
-!FileDirectory methodsFor:'more instance creation'!
-
-directoryNamed:aName
-    ^ self class directoryNamed:aName in:self pathName
-! !
-
-!FileDirectory methodsFor:'enumerating'!
+timeOfLastChange
+    "return the timeStamp of myself"
 
-where:testBlock do:aBlock
-    "evaluate the argument, aBlock for every object in the directory
-     for which testBlock evaluates to true."
-
-    |aStream name|
-
-    aStream := DirectoryStream directoryNamed:pathName.
-    aStream isNil ifTrue:[^ nil].
-    [aStream atEnd] whileFalse:[
-	name := aStream nextLine.
-	name notNil ifTrue:[
-	    (testBlock value:name) ifTrue:[
-		aBlock value:name
-	    ]
-	]
-    ].
-    aStream close
-!
-
-do:aBlock
-    "evaluate the argument, aBlock for every name in the directory"
-
-    self where:[:name | true] do:aBlock
+    ^ OperatingSystem timeOfLastChange:pathName
 !
 
-namesDo:aBlock
-    "evaluate the argument, aBlock for every name in the directory.
-     for ST-80 compatibility"
-
-    self do:aBlock
-!
-
-filesDo:aBlock
-    "evaluate the argument, aBlock for every plain file name in the directory"
+timeOfLastChange:name
+    "return the timeStamp of a file in myself"
 
-    self where:[:name | (self isDirectory:name) not] do:aBlock
-!
-
-directoriesDo:aBlock
-    "evaluate the argument, aBlock for every subdirectory name in the directory"
-
-    self where:[:name | (self isDirectory:name) ifTrue:[
-			    ((name ~= '.') and:[name ~= '..'])
-			] ifFalse:[
-			    false
-			]
-	       ] do:aBlock
+    ^ OperatingSystem timeOfLastChange:(self pathNameOf:name)
 !
 
-allFilesDo:aBlock
-    "evaluate the argument, aBlock for every file name in the directory and in all
-     subdirectories"
-
-    |aStream command line|
-
-    lazy ifTrue:[self getFullPathName].
-    command := 'cd ' , pathName , '; find . -print'.
-    aStream := PipeStream readingFrom:command.
-    aStream isNil ifTrue:[^ nil].
-    [aStream atEnd] whileFalse:[
-	line := aStream nextLine.
-	line notNil ifTrue:[
-	    (line = '.') ifFalse:[
-		"cut off initial ./"
-		line := line copyFrom:3
-	    ].
-	    aBlock value:line
-	]
-    ].
-    aStream close
-!
+typeOf:name
+    "return the symbolic type of a file in myself"
 
-allDirectoriesDo:aBlock
-    "evaluate the argument, aBlock for every directory name
-     in the directory and in all subdirectories"
-
-    |aStream command line|
+    ^ OperatingSystem typeOf:(self pathNameOf:name)
+! !
 
-    lazy ifTrue:[self getFullPathName].
-    command := 'cd ' , pathName , '; find . -type d -print'.
-    aStream := PipeStream readingFrom:command.
-    aStream isNil ifTrue:[^ nil].
-    [aStream atEnd] whileFalse:[
-	line := aStream nextLine.
-	line notNil ifTrue:[
-	    (line = '.') ifFalse:[
-		"cut off initial ./"
-		line := line copyFrom:3
-	    ].
-	    aBlock value:line
-	]
-    ].
-    aStream close
-! !
+FileDirectory initialize!