--- a/FileDirectory.st Mon Sep 15 22:33:15 1997 +0200
+++ b/FileDirectory.st Mon Sep 15 22:34:41 1997 +0200
@@ -43,12 +43,12 @@
Notice:
- This class is not available in other ST-systems, while for example,
- ST-80 provides a Filename class.
+ This class is not available in other ST-systems;
+ in contrast, ST-80 provides a Filename class.
Therefore, Filename will take over much of the functionality in the near
future.
- Use instances of Filename if possible.
+ This is going to be obsoleted - use instances of Filename if possible.
[author:]
Claus Gittinger
@@ -84,7 +84,8 @@
currentDirectory
"create and return a new FileDirectory for the current directory"
- ^ self directoryNamed:'.'
+ self obsoleteMethodWarning:'use Filename'.
+ ^ (self basicNew) pathName:(Filename currentDirectory name)
"
FileDirectory currentDirectory contents
@@ -98,7 +99,13 @@
"create and return a new FileDirectory for the directory
with given pathname"
- ^ (self basicNew) pathName:name
+ self obsoleteMethodWarning:'use Filename'.
+ name asString = '.' ifTrue:[
+ Filename currentDirectory name ~= '.' ifTrue:[
+ ^ self currentDirectory
+ ]
+ ].
+ ^ (self basicNew) pathName:(name asFilename constructString:'')
"
(FileDirectory directoryNamed:'..') pathName
@@ -112,37 +119,47 @@
|baseName sep|
- sep := OperatingSystem fileSeparator.
- ((name at:1) == sep) ifTrue:[
+ self obsoleteMethodWarning:'use Filename'.
+
+"/ OLD:
+"/ sep := OperatingSystem fileSeparator.
+"/ ((name at:1) == sep) ifTrue:[
+"/ ^ self directoryNamed:name
+"/ ].
+"/ "/ temporary kludge; this and the previous should
+"/ "/ go into OS isAbsolutePath ..
+"/
+"/ OperatingSystem isMSDOSlike ifTrue:[
+"/ ('[a-zA-Z]:*' match:name) ifTrue:[
+"/ "/ drive spec ...
+"/ ^ self directoryNamed:name
+"/ ]
+"/ ].
+"/ (aFileDirectory isKindOf:FileDirectory) ifTrue:[
+"/ baseName := aFileDirectory pathName
+"/ ] ifFalse:[
+"/ baseName := aFileDirectory
+"/ ].
+"/ (name = '.') ifTrue:[^ aFileDirectory].
+"/
+"/ (baseName = sep asString) ifFalse:[
+"/ (baseName endsWith:sep) ifFalse:[
+"/ baseName := baseName copyWith:sep
+"/ ]
+"/ ].
+"/ ^ self directoryNamed:(baseName , name)
+
+"/ NEW:
+ name asFilename isAbsolute ifTrue:[
^ self directoryNamed:name
].
- "/ temporary kludge; this and the previous should
- "/ go into OS isAbsolutePath ..
-
- OperatingSystem isMSDOSlike ifTrue:[
- ('[a-zA-Z]:*' match:name) ifTrue:[
- "/ drive spec ...
- ^ self directoryNamed:name
- ]
- ].
+
(aFileDirectory isKindOf:FileDirectory) ifTrue:[
baseName := aFileDirectory pathName
] ifFalse:[
baseName := aFileDirectory
].
-"
- (name = '..') ifTrue:[
- ^ (self basicNew) pathName:(OperatingSystem directoryNameOf:baseName)
- ].
-"
- (name = '.') ifTrue:[^ aFileDirectory].
-
- (baseName = sep asString) ifFalse:[
- (baseName endsWith:sep) ifFalse:[
- baseName := baseName copyWith:sep
- ]
- ].
- ^ self directoryNamed:(baseName , name)
+ ^ (self basicNew) pathName:((Filename named:baseName) constructString:name)
"Modified: 28.4.1997 / 23:23:51 / cg"
"Modified: 28.4.1997 / 22:34:47 / dq"
@@ -151,7 +168,8 @@
rootDirectory
"create and return a new FileDirectory for the root directory"
- ^ self directoryNamed:(OperatingSystem fileSeparator asString)
+ self obsoleteMethodWarning:'use Filename'.
+ ^ (self basicNew) pathName:(Filename rootDirectory name)
"
FileDirectory rootDirectory contents
@@ -195,7 +213,7 @@
- thats the directory name without leading parent-dirs"
lazy ifTrue:[self getFullPathName].
- ^ OperatingSystem baseNameOf:pathName
+ ^ pathName asFilename baseName
!
contents
@@ -236,7 +254,7 @@
- thats the directory name where I'm in"
lazy ifTrue:[self getFullPathName].
- ^ OperatingSystem directoryNameOf:pathName
+ ^ pathName asFilename directoryName
!
files
@@ -292,7 +310,8 @@
] ifFalse:[
realName := newName
].
- ^ OperatingSystem createDirectory:(self pathNameOf:realName)
+ ^ (self filenameFor:realName) makeDirectory
+ "/ ^ OperatingSystem createDirectory:(self pathNameOf:realName)
]
].
^ false
@@ -311,13 +330,15 @@
remove:aFileOrDirectoryName
"remove the file or directory from myself; return true if successful"
- |path|
+ ^ (self filenameFor:aFileOrDirectoryName) remove
- path := self pathNameOf:aFileOrDirectoryName.
- (OperatingSystem isDirectory:path) ifTrue:[
- ^ OperatingSystem removeDirectory:path
- ].
- ^ OperatingSystem removeFile:path
+"/ |path|
+"/
+"/ path := self pathNameOf:aFileOrDirectoryName.
+"/ (OperatingSystem isDirectory:path) ifTrue:[
+"/ ^ OperatingSystem removeDirectory:path
+"/ ].
+"/ ^ OperatingSystem removeFile:path
!
removeDirectory:dirName
@@ -325,27 +346,30 @@
If the directory is not empty, the containing files/directories are also
removed."
- |path|
+ ^ (self filenameFor:dirName) recursiveRemove
- path := self pathNameOf:dirName.
- (OperatingSystem removeDirectory:path) ifTrue:[^ true].
- ^ OperatingSystem recursiveRemoveDirectory:path
+"/ |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).
+ ^ (self filenameFor:fileName) remove
+"/ ^ OperatingSystem removeFile:(self pathNameOf:fileName).
!
renameFile:oldFileName newName:newFileName
"rename the file; return true if successful"
- |path1 path2|
+ |f1 f2|
- path1 := self pathNameOf:oldFileName.
- path2 := self pathNameOf:newFileName.
- ^ OperatingSystem renameFile:path1 to:path2
+ f1 := self filenameFor:oldFileName.
+ f2 := self filenameFor:newFileName.
+ ^ f1 renameTo:f2
! !
!FileDirectory methodsFor:'converting'!
@@ -493,6 +517,7 @@
|shortPathName|
+
(pathName = OperatingSystem fileSeparator asString) ifTrue:[
lazy := false.
^ self
@@ -521,8 +546,17 @@
]
!
+filenameFor:fileName
+ |f|
+
+ f := fileName asFilename.
+ f isAbsolute ifTrue:[^ f].
+ ^ (pathName asFilename construct:fileName)
+!
+
pathNameOf:fileName
- ^ self class fullPathNameOf:fileName in:pathName
+ ^ (pathName asFilename construct:fileName) osName
+ "/ ^ self class fullPathNameOf:fileName in:pathName
! !
!FileDirectory methodsFor:'queries'!
@@ -542,7 +576,8 @@
exists
"return true if this directory exists"
- ^ OperatingSystem isDirectory:pathName
+ ^ (Filename named:pathName) isDirectory
+"/ ^ OperatingSystem isDirectory:pathName
"
(FileDirectory directoryNamed:'fooBar') exists
@@ -553,26 +588,30 @@
exists:name
"return true, if the given name exists in myself"
- ^ OperatingSystem isValidPath:(self pathNameOf:name)
+ ^ (self filenameFor:name) exists
+"/ ^ OperatingSystem isValidPath:(self pathNameOf:name)
!
id
"return the directories file-id (inode number)"
- ^ OperatingSystem idOf:pathName
+ ^ (Filename named:pathName) id
+"/ ^ 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)
+ ^ (self filenameFor:name) info
+"/ ^ 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)
+ ^ (self filenameFor:name) isDirectory
+"/ ^ OperatingSystem isDirectory:(self pathNameOf:name)
!
isEmpty
@@ -588,19 +627,22 @@
isExecutable:name
"return true, if the given file is executable"
- ^ OperatingSystem isExecutable:(self pathNameOf:name)
+ ^ (self filenameFor:name) isExecutable
+"/ ^ OperatingSystem isExecutable:(self pathNameOf:name)
!
isReadable:name
"return true, if the given file is readable"
- ^ OperatingSystem isReadable:(self pathNameOf:name)
+ ^ (self filenameFor:name) isReadable
+"/ ^ OperatingSystem isReadable:(self pathNameOf:name)
!
isWritable:name
"return true, if the given file is readable"
- ^ OperatingSystem isWritable:(self pathNameOf:name)
+ ^ (self filenameFor:name) isWritable
+"/ ^ OperatingSystem isWritable:(self pathNameOf:name)
!
species
@@ -610,24 +652,27 @@
timeOfLastChange
"return the timeStamp of myself"
- ^ OperatingSystem timeOfLastChange:pathName
+ ^ (Filename named:pathName) modificationTime
+"/ ^ OperatingSystem timeOfLastChange:pathName
!
timeOfLastChange:name
"return the timeStamp of a file in myself"
- ^ OperatingSystem timeOfLastChange:(self pathNameOf:name)
+ ^ (self filenameFor:name) modificationTime
+"/ ^ OperatingSystem timeOfLastChange:(self pathNameOf:name)
!
typeOf:name
"return the symbolic type of a file in myself"
- ^ OperatingSystem typeOf:(self pathNameOf:name)
+ ^ (self filenameFor:name) type
+"/ ^ OperatingSystem typeOf:(self pathNameOf:name)
! !
!FileDirectory class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/FileDirectory.st,v 1.31 1997-08-15 19:44:50 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/FileDirectory.st,v 1.32 1997-09-15 20:34:40 cg Exp $'
! !
FileDirectory initialize!