--- a/OpenVMSFilename.st Thu Sep 18 21:04:42 1997 +0200
+++ b/OpenVMSFilename.st Thu Sep 18 21:08:01 1997 +0200
@@ -350,6 +350,36 @@
!OpenVMSFilename class methodsFor:'queries'!
+defaultTempDirectoryName
+ "return the default temp directory as a filename.
+ Here, the presence of a sys$tmp: or sys$scratch: volume
+ is checked, and if so, returned. Otherwise, the current directory
+ is returned.
+ This is used, if no special preferences were defined in
+ any of the TEMP-environment variables (see tempDirectory)."
+
+ |fn|
+
+ #( 'sys$tmp:[000000]' 'sys$scratch:[000000]')
+ do:[:try |
+ |fn|
+
+ fn := try asFilename.
+ (try isDirectory
+ and:[try canBeWritten
+ and:[try isReadable]]) ifTrue:[
+ ^ try
+ ]
+ ].
+
+ "/ fallBack - use current.
+ ^ '.'
+
+ "
+ OpenVMSFilename defaultTempDirectoryName
+ "
+!
+
directorySuffix
^ '.DIR'
!
@@ -436,6 +466,18 @@
]
].
^ type
+!
+
+!OpenVMSFilename methodsFor:'queries'!
+
+isExecutableProgram
+ "return true, if such a file exists and is an executable program.
+ (i.e. for directories, false is returned.)"
+
+ (self hasSuffix:'exe') ifTrue:[
+ ^ super isExecutableProgram
+ ].
+ ^ false
! !
!OpenVMSFilename methodsFor:'private accessing'!
@@ -545,6 +587,68 @@
osName := nameString , '[000000]'.
^ osName
+!
+
+osNameForAccess
+ "internal - return the OS's name for the receiver,
+ when asking for (stat-) info or to open the file.
+ This returns the files name unchanged, but translates
+ special directory names."
+
+ |comps f d v idx|
+
+ comps := self parseComponentsFrom:nameString.
+ d := comps directory.
+
+ (f := comps filename) size > 0 ifTrue:[
+ d size == 0 ifTrue:[
+ v := comps volume.
+ v size > 0 ifTrue:[
+ "/ something like v:file
+ "/ make it: v:[000000]file
+ comps directory:'000000'.
+ ].
+ ].
+ "/
+ "/ if it has no suffix, at least append a suffix character
+ "/
+ (f includes:$.) ifFalse:[
+ f := f , '.'.
+ comps filename:f.
+ ].
+ osName := self nameFromComponents:comps.
+ ^ osName
+ ].
+
+ "/ ok, an empty fileName
+ d size > 0 ifTrue:[
+ idx := d lastIndexOf:$..
+ idx ~~ 0 ifTrue:[
+ "/
+ "/ something like: '[d1.d2]' -> '[d1]d2.DIR'
+ "/
+ comps directory:(d copyTo:(idx-1)).
+ comps filename:((d copyFrom:idx+1) , '.DIR').
+ osName := self nameFromComponents:comps.
+ ^ osName
+ ].
+ "/
+ "/ something like: '[d]' -> '[000000]d.DIR'
+ "/
+ comps directory:'000000'.
+ comps filename:(d , '.DIR').
+ osName := self nameFromComponents:comps.
+ ^ osName
+ ].
+
+ "/ mhmh - an empty directory and empty file
+ "/ i.e. something like v:
+ "/ make it: v:000000.dir
+
+ osName := nameString , '[000000]'.
+ ^ osName
+!
+
! !
!OpenVMSFilename methodsFor:'instance creation'!
@@ -944,5 +1048,5 @@
!OpenVMSFilename class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/OpenVMSFilename.st,v 1.8 1997-09-17 22:07:30 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/OpenVMSFilename.st,v 1.9 1997-09-18 19:08:01 cg Exp $'
! !