OpenVMSFilename.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Sep 1997 20:39:30 +0200
changeset 2913 31d7aab40357
parent 2911 9964e6839a8e
child 2925 1a64228425ca
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2911
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
     1
'From Smalltalk/X, Version:3.1.9 on 9-sep-1997 at 11:55:40 pm'                  !
2907
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Filename subclass:#OpenVMSFilename
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:''
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'OS-OpenVMS'
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
2911
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    10
Object subclass:#NameComponents
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    11
	instanceVariableNames:'volume directory filename'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    12
	classVariableNames:''
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    13
	poolDictionaries:''
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    14
	privateIn:OpenVMSFilename
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    15
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    16
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    17
!OpenVMSFilename class methodsFor:'documentation'!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    18
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    19
documentation
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    20
"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    21
    Filenames in OpenVMS.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    22
"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    23
! !
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    24
2913
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    25
!OpenVMSFilename class methodsFor:'instance creation'!
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    26
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    27
currentDirectory
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    28
    "return a filename for the current directory"
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    29
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    30
    ^ self named:'[]'
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    31
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    32
    "
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    33
     Filename currentDirectory
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    34
    "
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    35
! !
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
    36
2911
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    37
!OpenVMSFilename class methodsFor:'helpers'!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    38
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    39
nameFromComponents:aComponentObject
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    40
    "concatenate the components, return a fileNameString"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    41
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    42
    |s volume directory filename|
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    43
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    44
    volume := aComponentObject volume.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    45
    directory := aComponentObject directory.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    46
    filename := aComponentObject filename.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    47
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    48
    volume notNil ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    49
        s := volume , ':'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    50
    ] ifFalse:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    51
        s := ''
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    52
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    53
    directory notNil ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    54
        s := s , '[' , directory , ']'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    55
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    56
    filename notNil ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    57
        s := s , filename
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    58
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    59
    s isEmpty ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    60
        ^ '[]'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    61
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    62
    ^ s
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    63
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    64
    "Modified: 9.9.1997 / 09:38:41 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    65
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    66
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    67
parseComponentsFrom:aString
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    68
    "given a pathName, decompose into volume, directory & filename.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    69
     Return the components as a componentObject."
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    70
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    71
    |v d f idx0 idx|
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    72
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    73
    idx := aString indexOf:$:.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    74
    idx ~~ 0 ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    75
        v := aString copyTo:idx - 1.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    76
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    77
    idx := idx + 1.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    78
    (aString at:idx) == $[ ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    79
        idx0 := idx + 1.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    80
        idx := aString indexOf:$] startingAt:idx0.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    81
        idx == 0 ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    82
            "/ mhmh - malformed. what should we do here ?
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    83
            self error:'malformed filename'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    84
        ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    85
        d := aString copyFrom:idx0 to:(idx-1).
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    86
        idx := idx + 1.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    87
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    88
    f := aString copyFrom:idx.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    89
    ^ NameComponents basicNew volume:v directory:d filename:f
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    90
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    91
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    92
     OpenVMSFilename nameFromComponents:(OpenVMSFilename parseComponentsFrom:'dka100:[stx.libbasic]Object.st')
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    93
     OpenVMSFilename nameFromComponents:(OpenVMSFilename parseComponentsFrom:'dka100:[stx.libbasic.-]Object.st')
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    94
     OpenVMSFilename nameFromComponents:(OpenVMSFilename parseComponentsFrom:'dka100:[-]Object.st')
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    95
     OpenVMSFilename nameFromComponents:(OpenVMSFilename parseComponentsFrom:'dka100:[]Object.st')
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    96
     OpenVMSFilename nameFromComponents:(OpenVMSFilename parseComponentsFrom:'dka100:Object.st')
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    97
     OpenVMSFilename nameFromComponents:(OpenVMSFilename parseComponentsFrom:'dka100:[stx.libbasic]')
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    98
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
    99
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   100
    "Modified: 9.9.1997 / 08:50:04 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   101
! !
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   102
2907
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
!OpenVMSFilename class methodsFor:'queries'!
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
2911
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   105
directorySuffix
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   106
    ^ '.DIR'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   107
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   108
2907
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
isBadCharacter:aCharacter
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    "return true, if aCharacter is unallowed in a filename."
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    ('/\' includes:aCharacter) ifTrue:[^ true].
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    ^ super isBadCharacter:aCharacter
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    "Created: 8.9.1997 / 00:14:47 / cg"
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
!
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
2911
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   118
isCaseSensitive
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   119
    "return true, if filenames are case sensitive.return true, if filenames are case sensitive."
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   120
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   121
    ^ false
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   122
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   123
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   124
maxComponentLength
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   125
    "return the maximum number of characters a filename component
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   126
     may have in VMS"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   127
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   128
    ^ 39
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   129
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   130
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   131
maxLength
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   132
    "return the maximum number of characters a filename may have in VMS"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   133
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   134
    ^ 1024
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   135
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   136
2907
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
separator
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    "return the file/directory separator.
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
     For openVMS, the separator concept does not really fit,
2911
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   140
     since names are composed as 'volume:[dir.dir.dir]file.ext'."
2907
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
     ^ $.
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
     "
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
      Filename concreteClass separator  
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
     "
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    "Created: 8.9.1997 / 00:17:28 / cg"
2911
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   149
    "Modified: 9.9.1997 / 08:51:01 / cg"
2907
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
!
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
tempFileNameTemplate
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    "return a template for temporary files.
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
     This is expanded with the current processID and a sequenceNumber
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
     to generate a unique filename."
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    ^ 'AAA_%1_%2.TMP'
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    "Created: 8.9.1997 / 00:01:46 / cg"
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    "Modified: 8.9.1997 / 00:29:23 / cg"
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
! !
1666bf27f351 VMS changes
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
2911
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   163
!OpenVMSFilename methodsFor:'instance creation'!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   164
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   165
constructString:subname
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   166
    "taking the receiver as a directory name, construct a new
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   167
     filename-string for an entry within this directory
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   168
     (i.e. for a file or a subdirectory in that directory)."
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   169
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   170
    |v d f comps|
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   171
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   172
    comps := self class parseComponentsFrom:nameString.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   173
    (f := comps filename) notNil ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   174
        "/ path was of the form vol:[d1...dN]foo
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   175
        "/ assume foo is a directory and append it to directory path.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   176
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   177
        (f asUppercase endsWith:'.DIR') ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   178
            f := f copyWithoutLast:4
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   179
        ].
2913
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
   180
        d := comps directory.
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
   181
	d isNil ifTrue:[
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
   182
	    d := f.
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
   183
	] ifFalse:[
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
   184
	    d := d , '.' , f.
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
   185
	].
2911
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   186
        comps directory:d.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   187
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   188
    comps filename:subname.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   189
    ^ self class nameFromComponents:comps
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   190
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   191
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   192
     (OpenVMSFilename named:'sys$root:[foo.bar]') construct:'baz'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   193
     (OpenVMSFilename named:'sys$root:[foo.bar]baz') construct:'foo'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   194
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   195
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   196
    "Modified: 9.9.1997 / 05:26:04 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   197
! !
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   198
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   199
!OpenVMSFilename methodsFor:'queries'!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   200
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   201
isAbsolute
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   202
    "return true, if the receiver represents an absolute pathname
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   203
     (in contrast to one relative to the current directory)."
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   204
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   205
    |comps dir|
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   206
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   207
    comps := self class parseComponentsFrom:nameString.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   208
    (dir := comps directory) isNil ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   209
        "/ mhmh ...
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   210
        ^ false
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   211
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   212
    dir size == 0 ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   213
        "/ [] - the current directory is relative
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   214
        ^ false
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   215
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   216
    dir = '-' ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   217
        "/ [-] - the parent directory is relative
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   218
        ^ false
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   219
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   220
    (dir startsWith:'-.') ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   221
        "/ [-.] - some parent directory is relative
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   222
        ^ false
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   223
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   224
    ^ (dir startsWith:'.') not
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   225
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   226
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   227
     (OpenVMSFilename named:'dka:[foo.bar]baz.st') isAbsolute   
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   228
     (OpenVMSFilename named:'[foo.bar]baz.st') isAbsolute    
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   229
     (OpenVMSFilename named:'[.foo.bar]baz.st') isAbsolute   
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   230
     (OpenVMSFilename named:'[]baz.st') isAbsolute           
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   231
     (OpenVMSFilename named:'[-]baz.st') isAbsolute    
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   232
     (OpenVMSFilename named:'[-.-]baz.st') isAbsolute   
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   233
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   234
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   235
    "Modified: 9.9.1997 / 09:03:42 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   236
! !
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   237
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   238
!OpenVMSFilename methodsFor:'queries-path & name'!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   239
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   240
baseName
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   241
    "return my baseName as a string.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   242
     - thats the file/directory name without leading parent-dirs.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   243
     See also: #pathName, #directoryName and #directoryPathName.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   244
     Compatibility note: use #tail for ST-80 compatibility."
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   245
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   246
    |idx d f comps|
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   247
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   248
    comps := self class parseComponentsFrom:nameString.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   249
    (f := comps filename) size > 0  ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   250
        ^ f
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   251
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   252
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   253
    "/ path was of the form vol:[d1...dN]
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   254
    "/ cut off the last directory.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   255
    d := comps directory.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   256
    d notNil ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   257
        d = '' ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   258
            "/ [] 
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   259
            "/ ought to get the current directory ...
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   260
            ^ ''
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   261
        ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   262
        d = '-' ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   263
            "/ [-]
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   264
            "/ ought to get the current directory ...
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   265
            ^ ''
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   266
        ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   267
        (d endsWith:'.-') ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   268
            "/ [rest.-]
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   269
            "/ ought to expand and get final directory ...
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   270
            ^ ''
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   271
        ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   272
        idx := d lastIndexOf:$..
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   273
        idx ~~ 0 ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   274
            ^ (d copyFrom:idx+1) , '.DIR'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   275
        ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   276
        ^ d , '.DIR'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   277
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   278
    ^ ''
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   279
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   280
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   281
     (OpenVMSFilename named:'dka100:[stx.libbasic]Object.st') baseName
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   282
     (OpenVMSFilename named:'stx$root:[stx.libbasic.-]Object.st') baseName 
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   283
     (OpenVMSFilename named:'[-]Object.st') baseName                       
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   284
     (OpenVMSFilename named:'[]Object.st') baseName                        
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   285
     (OpenVMSFilename named:'Object.st') baseName                          
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   286
     (OpenVMSFilename named:'[stx.libbasic]') baseName                     
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   287
     (OpenVMSFilename named:'[stx]') baseName                     
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   288
     (OpenVMSFilename named:'[]') baseName                     
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   289
     (OpenVMSFilename named:'[-]') baseName                     
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   290
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   291
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   292
    "Created: 9.9.1997 / 09:23:15 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   293
    "Modified: 9.9.1997 / 10:52:04 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   294
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   295
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   296
directoryName
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   297
    "return the directory name part of the file/directory as a string.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   298
     - thats the name of the directory where the file/dir represented by
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   299
       the receiver is contained in.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   300
     (this is almost equivalent to #directory, but returns
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   301
      a string instead of a Filename instance).
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   302
     See also: #pathName, #directoryPathName and #baseName.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   303
     Compatibility note: use #head for ST-80 compatibility."
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   304
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   305
    |idx d f comps|
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   306
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   307
    comps := self class parseComponentsFrom:nameString.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   308
    d := comps directory.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   309
    (f := comps filename) size > 0  ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   310
        comps filename:nil.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   311
        ^ self class nameFromComponents:comps
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   312
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   313
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   314
    "/ path was of the form vol:[d1...dN]
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   315
    "/ cut off the last directory.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   316
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   317
    d isNil ifFalse:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   318
        d = '' ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   319
            "/ [] -> [-]
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   320
        ] ifFalse:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   321
            d = '-' ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   322
                "/ [-] -> [-.-]
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   323
                d := '-.-'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   324
            ] ifFalse:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   325
                (d endsWith:'.-') ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   326
                    "/ [rest.-] -> [rest.-.-]
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   327
                    d := d , '.-'
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   328
                ] ifFalse:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   329
                    idx := d lastIndexOf:$..
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   330
                    idx ~~ 0 ifTrue:[
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   331
                        d := d copyTo:idx-1
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   332
                    ]
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   333
                ]
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   334
            ]
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   335
        ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   336
        comps directory:d.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   337
    ].
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   338
    ^ self class nameFromComponents:comps
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   339
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   340
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   341
     (OpenVMSFilename named:'dka100:[stx.libbasic]Object.st') directoryName
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   342
     (OpenVMSFilename named:'stx$root:[stx.libbasic.-]Object.st') directoryName 
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   343
     (OpenVMSFilename named:'[-]Object.st') directoryName                       
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   344
     (OpenVMSFilename named:'[]Object.st') directoryName                        
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   345
     (OpenVMSFilename named:'Object.st') directoryName                          
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   346
     (OpenVMSFilename named:'[stx.libbasic]') directoryName                     
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   347
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   348
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   349
    "Created: 9.9.1997 / 09:23:15 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   350
    "Modified: 9.9.1997 / 10:36:42 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   351
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   352
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   353
volume
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   354
    "return the disc volume part of the name or an empty string."
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   355
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   356
    ^ (self class parseComponentsFrom:nameString) volume ? ''
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   357
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   358
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   359
     (OpenVMSFilename named:'dka100:[stx.libbasic]Object.st') volume  
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   360
     (OpenVMSFilename named:'stx$root:[stx.libbasic.-]Object.st') volume 
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   361
     (OpenVMSFilename named:'[-]Object.st') volume                       
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   362
     (OpenVMSFilename named:'[]Object.st') volume                        
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   363
     (OpenVMSFilename named:'Object.st') volume                          
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   364
     (OpenVMSFilename named:'[stx.libbasic]') volume                     
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   365
    "
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   366
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   367
    "Modified: 9.9.1997 / 08:56:05 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   368
! !
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   369
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   370
!OpenVMSFilename::NameComponents methodsFor:'accessing'!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   371
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   372
directory
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   373
    ^ directory
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   374
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   375
    "Created: 9.9.1997 / 05:21:04 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   376
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   377
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   378
directory:aString
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   379
    directory := aString
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   380
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   381
    "Created: 9.9.1997 / 05:21:11 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   382
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   383
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   384
filename
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   385
    ^ filename
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   386
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   387
    "Created: 9.9.1997 / 05:21:23 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   388
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   389
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   390
filename:aString
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   391
    filename := aString
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   392
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   393
    "Created: 9.9.1997 / 05:21:28 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   394
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   395
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   396
volume
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   397
    ^ volume
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   398
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   399
    "Created: 9.9.1997 / 05:20:58 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   400
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   401
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   402
volume:aString
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   403
    volume := aString
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   404
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   405
    "Created: 9.9.1997 / 05:21:17 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   406
!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   407
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   408
volume:v directory:d filename:n
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   409
    volume := v.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   410
    directory := d.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   411
    filename := n.
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   412
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   413
    "Created: 9.9.1997 / 05:20:53 / cg"
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   414
! !
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   415
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   416
!OpenVMSFilename class methodsFor:'documentation'!
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   417
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   418
version
2913
31d7aab40357 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2911
diff changeset
   419
    ^ '$Header: /cvs/stx/stx/libbasic/OpenVMSFilename.st,v 1.3 1997-09-09 18:39:30 cg Exp $'
2911
9964e6839a8e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2907
diff changeset
   420
! !