PCFilename.st
author Claus Gittinger <cg@exept.de>
Mon, 10 Dec 2001 17:30:04 +0100
changeset 6267 10016cc16511
parent 5826 2501b04853eb
child 7062 44e3fe28aea0
permissions -rw-r--r--
pass name of API/C wrap function
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
     1
"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
     2
 COPYRIGHT (c) 1997 by eXept Software AG
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
     3
	      All Rights Reserved
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
     4
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
     5
 This software is furnished under a license and may be used
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
     6
 only in accordance with the terms of that license and with the
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
     8
 be provided or otherwise made available to, or used by, any
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
     9
 other person.  No title to or ownership of the software is
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    10
 hereby transferred.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    11
"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    12
5826
2501b04853eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
    13
"{ Package: 'stx:libbasic' }"
2501b04853eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
    14
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    15
Filename subclass:#PCFilename
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    16
	instanceVariableNames:''
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    17
	classVariableNames:'StandardSuffixTable'
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    18
	poolDictionaries:''
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    19
	category:'OS-Windows'
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    20
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    21
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    22
!PCFilename class methodsFor:'documentation'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    23
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    24
copyright
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    25
"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    26
 COPYRIGHT (c) 1997 by eXept Software AG
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    27
	      All Rights Reserved
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    28
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    29
 This software is furnished under a license and may be used
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    30
 only in accordance with the terms of that license and with the
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    31
 inclusion of the above copyright notice.   This software may not
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    32
 be provided or otherwise made available to, or used by, any
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    33
 other person.  No title to or ownership of the software is
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    34
 hereby transferred.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    35
"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    36
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    37
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    38
documentation
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    39
"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    40
    Filenames in Windows-NT / Win95.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    41
"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    42
! !
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    43
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    44
!PCFilename class methodsFor:'initialization'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    45
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    46
initStandardSuffixTable
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    47
    "since there is no 'file' command to extract the type,
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    48
     return a guess based upon the files suffix. The following
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    49
     table defines what is returned."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    50
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    51
    StandardSuffixTable := Dictionary new.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    52
    #(  
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    53
	'COM'   'executable'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    54
	'DIR'   'directory'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    55
	'EXE'   'executable'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    56
	'LST'   'listing'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    57
	'OBJ'   'object file'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    58
	'TMP'   'temporary'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    59
	'BAS'   'basic source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    60
	'C'     'c source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    61
	'COB'   'cobol source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    62
	'FOR'   'fortran source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    63
	'PAS'   'pascal source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    64
	'PL1'   'PL/1 source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    65
	'ST'    'smalltalk source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    66
	'STH'   'stc generated header'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    67
	'DLL'   'dynamic link library'
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    68
    ) pairWiseDo:[:k :v |
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    69
	StandardSuffixTable at:k put:v
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    70
    ]
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    71
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    72
    "
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    73
     StandardSuffixTable := nil.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    74
     self initStandardSuffixTable
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    75
    "
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    76
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    77
    "Modified: 16.10.1997 / 13:12:39 / cg"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    78
! !
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    79
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    80
!PCFilename class methodsFor:'instance creation'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    81
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    82
newTemporaryIn:aDirectoryPrefix
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    83
    "return a new unique filename - use this for temporary files.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    84
     redefined to always return an MSDOS 8+3 fileName,
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    85
     in case the tempFile is passed to an OLD dos utility.."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    86
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    87
    |pid nr nameString|
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    88
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    89
    (self ~~ ConcreteClass) ifTrue:[
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    90
	^ ConcreteClass newTemporaryIn:aDirectoryPrefix
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    91
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    92
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    93
    "/ although the above allows things to be redefined in concrete classes,
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    94
    "/ the following should work on all systems ...
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    95
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    96
    NextTempFilenameIndex isNil ifTrue:[
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    97
	NextTempFilenameIndex := 1.
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    98
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    99
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   100
    pid := OperatingSystem getProcessId printString.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   101
    pid := pid copyLast:(3 min:pid size).
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   102
    nr := NextTempFilenameIndex printString.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   103
    nr := nr copyLast:(3 min:nr size).
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   104
    nameString := (self tempFileNameTemplate)
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   105
		  bindWith:pid 
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   106
		  with:nr.
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   107
    NextTempFilenameIndex := NextTempFilenameIndex + 1.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   108
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   109
    (aDirectoryPrefix isNil or:[aDirectoryPrefix asString isEmpty]) ifFalse:[
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   110
	^ aDirectoryPrefix asFilename construct:nameString
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   111
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   112
    ^ self named:nameString
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   113
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   114
    "temp files in '/tmp':
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   115
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   116
     Filename newTemporary    
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   117
    "
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   118
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   119
    "temp files somewhere 
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   120
     (not recommended - use above since it can be controlled via shell variables):
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   121
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   122
     Filename newTemporaryIn:'/tmp'    
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   123
     Filename newTemporaryIn:'/tmp'  
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   124
     Filename newTemporaryIn:'/usr/tmp'    
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   125
     Filename newTemporaryIn:'/'  
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   126
    "
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   127
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   128
    "a local temp file:
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   129
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   130
     Filename newTemporaryIn:''         
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   131
     Filename newTemporaryIn:nil         
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   132
     Filename newTemporaryIn:'.'         
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   133
     Filename newTemporaryIn:('source' asFilename) 
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   134
    "
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   135
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   136
    "Modified: 7.9.1995 / 10:48:31 / claus"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   137
    "Modified: 8.9.1997 / 00:28:33 / cg"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   138
    "Created: 30.1.1998 / 11:49:33 / md"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   139
    "Modified: 30.1.1998 / 11:52:06 / md"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   140
    "Modified: 30.1.1998 / 12:09:18 / dq"
3848
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   141
!
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   142
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   143
rootDirectoryOnVolume:aVolumeName
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   144
    "return a filename for the root directory on some volume"
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   145
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   146
    ^ self named:(aVolumeName , '\')
3848
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   147
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   148
    "
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   149
     Filename rootDirectoryOnVolume:'d:'
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   150
     Filename rootDirectoryOnVolume:'\\idefix\home'
3848
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   151
    "
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   152
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   153
    "Modified: / 24.9.1998 / 19:06:15 / cg"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   154
! !
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   155
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   156
!PCFilename class methodsFor:'queries'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   157
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   158
isBadCharacter:aCharacter
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   159
    "return true, if aCharacter is unallowed in a filename."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   160
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   161
    ('<>:"/\|' includes:aCharacter) ifTrue:[^ true].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   162
    ^ super isBadCharacter:aCharacter
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   163
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   164
    "Created: 8.9.1997 / 00:14:06 / cg"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   165
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   166
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   167
isCaseSensitive
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   168
    "return true, if filenames are case sensitive."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   169
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   170
    ^ false
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   171
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   172
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   173
separator
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   174
    "return the file/directory separator."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   175
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   176
     ^ $\
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   177
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   178
     "
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   179
      Filename concreteClass separator  
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   180
     "
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   181
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   182
    "Modified: 8.9.1997 / 00:18:03 / cg"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   183
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   184
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   185
tempFileNameTemplate
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   186
    "return a template for temporary files.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   187
     This is expanded with the current processID and a sequenceNumber
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   188
     to generate a unique filename.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   189
     Redefined for MSDOS 8+3 filenames"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   190
3749
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   191
    ^ 'st%1%2'
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   192
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   193
    "Created: 30.1.1998 / 12:09:18 / dq"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   194
! !
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   195
3789
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   196
!PCFilename methodsFor:'converting'!
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   197
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   198
makeLegalFilename 
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   199
    "convert the receivers name to be a legal filename.
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   200
     This removes/replaces invalid characters and/or compresses
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   201
     the name as required by Win95-WinNT."
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   202
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   203
    |srchStart|
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   204
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   205
    "/ there may be only one colon in the name
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   206
    "/ (and if present, it must be the second character)
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   207
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   208
    ((nameString size >= 2)
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   209
    and:[(nameString at:2) == $:]) ifTrue:[
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   210
        srchStart := 3.
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   211
    ] ifFalse:[
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   212
        srchStart := 1
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   213
    ].
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   214
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   215
    "/ replace colons by underscore
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   216
    "/ may need more to convert - time will show
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   217
3873
4a81549760f7 also replace spaces by underlines to make a legal filename
Claus Gittinger <cg@exept.de>
parents: 3853
diff changeset
   218
    (nameString indexOfAny:#($: $ ) startingAt:srchStart) ~~ 0 ifTrue:[
3789
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   219
        nameString := nameString copy.
3873
4a81549760f7 also replace spaces by underlines to make a legal filename
Claus Gittinger <cg@exept.de>
parents: 3853
diff changeset
   220
        nameString replaceAny:#($: $ ) with:$_ from:srchStart to:(nameString size).
3789
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   221
    ].
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   222
    ^ self
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   223
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   224
    "
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   225
     'hello world' asFilename makeLegalFilename 
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   226
     'hello:world' asFilename makeLegalFilename 
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   227
     'hello::world' asFilename makeLegalFilename 
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   228
     'c:hello::world' asFilename makeLegalFilename 
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   229
     '\\idefix' asFilename makeLegalFilename 
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   230
     '\\idefix\' asFilename makeLegalFilename 
3789
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   231
    "
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   232
3873
4a81549760f7 also replace spaces by underlines to make a legal filename
Claus Gittinger <cg@exept.de>
parents: 3853
diff changeset
   233
    "Modified: / 11.10.1998 / 01:40:47 / cg"
3789
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   234
! !
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   235
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   236
!PCFilename methodsFor:'file operations'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   237
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   238
renameTo:newName
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   239
    "rename the file - the argument must be convertable to a String.
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   240
     Raise an error if not successful.
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   241
     Redefined to delete any existing target-file first."
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   242
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   243
    newName asFilename exists ifTrue:[
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   244
	newName asFilename delete
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   245
    ].
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   246
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   247
    ^ super renameTo:newName
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   248
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   249
    "
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   250
     '\tmp\foo' asFilename renameTo:'\tmp\bar'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   251
    "
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   252
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   253
    "Modified: 20.1.1998 / 15:33:00 / md"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   254
! !
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   255
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   256
!PCFilename methodsFor:'queries'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   257
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   258
baseName
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   259
    "return my baseName as a string.
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   260
     Redefined to care for volumes.
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   261
     - thats the file/directory name without leading parent-dirs.
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   262
     (i.e. '/usr/lib/st/file' asFilename baseName -> 'file'
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   263
       and '/usr/lib'         asFilename baseName -> lib).
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   264
     This method does not check if the path is valid
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   265
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   266
     See also: #pathName, #directoryName and #directoryPathName.
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   267
     Compatibility note: use #tail for ST-80 compatibility."
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   268
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   269
    |vol rest vsz|
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   270
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   271
    vol := self volume.
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   272
    (vsz := vol size) > 0 ifTrue:[
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   273
        vsz == 2 ifTrue:[
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   274
            "/ a drive character ...
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   275
            rest := nameString copyFrom:3.
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   276
        ] ifFalse:[
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   277
            rest := nameString copyFrom:vsz+1.
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   278
            rest size == 0 ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   279
               ^ '\'
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   280
            ].
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   281
        ].
5826
2501b04853eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
   282
        ^ (self class named:rest) baseName.
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   283
    ].
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   284
    ^ super baseName
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   285
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   286
    "
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   287
     '\foo\bar' asFilename baseName  
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   288
     '.' asFilename baseName          
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   289
     '..' asFilename baseName         
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   290
     '..\..' asFilename baseName        
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   291
     '..\libbasic' asFilename baseName        
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   292
     '..\..\stx' asFilename baseName        
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   293
     '\' asFilename baseName            
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   294
     'c:\' asFilename baseName          
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   295
     'c:\home' asFilename baseName        
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   296
     '\\idefix' asFilename baseName        
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   297
     '\\idefix\home' asFilename baseName        
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   298
     '\\idefix\home\' asFilename baseName        
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   299
     '\\idefix\home\foo' asFilename baseName        
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   300
    "
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   301
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   302
    "Created: / 24.9.1998 / 13:33:16 / cg"
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   303
    "Modified: / 24.9.1998 / 19:09:06 / cg"
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   304
!
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   305
4374
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   306
directoryName
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   307
    "return the directory name part of the file/directory as a string.
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   308
     - thats the name of the directory where the file/dir represented by
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   309
       the receiver is contained in.
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   310
     This method does not check if the path is valid.
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   311
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   312
     (i.e. '/usr/lib/st/file' asFilename directoryName -> '/usr/lib/st'
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   313
       and '/usr/lib' asFilename directoryName         -> /usr').
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   314
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   315
     (this is almost equivalent to #directory, but returns
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   316
      a string instead of a Filename instance).
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   317
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   318
     See also: #pathName, #directoryPathName and #baseName.
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   319
     Compatibility note: use #head for ST-80 compatibility."
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   320
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   321
    |nm|
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   322
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   323
    nm := super directoryName.
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   324
    (nm size == 2 and:[(nm at:2) == $:]) ifTrue:[
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   325
        ^ nm , '\'
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   326
    ].
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   327
    ^ nm
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   328
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   329
    "
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   330
     (PCFilename named:'c:\users') directoryName
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   331
     (PCFilename named:'c:\users') directory pathName   
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   332
     (PCFilename named:'c:\users') directory isRootDirectory  
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   333
    "
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   334
!
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   335
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   336
fileType
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   337
    "this returns a string describing the type of contents of
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   338
     the file. Here, the suffix is examined for a standard
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   339
     suffix and an appropriate string is returned.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   340
     Poor MSDOS - no file command."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   341
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   342
    |suff type info fmt|
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   343
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   344
    StandardSuffixTable isNil ifTrue:[
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   345
	self class initStandardSuffixTable
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   346
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   347
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   348
    suff := self suffix asUppercase.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   349
    type := StandardSuffixTable at:suff ifAbsent:nil.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   350
    type isNil ifTrue:[
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   351
	type := super fileType.
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   352
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   353
    ^ type
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   354
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   355
    "Created: 16.10.1997 / 13:07:24 / cg"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   356
    "Modified: 16.10.1997 / 13:10:00 / cg"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   357
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   358
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   359
isDirectory
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   360
    "return true, if I represent a root directory 
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   361
     (i.e. I have no parentDir).
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   362
     Redefined to care for volumeRoots."
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   363
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   364
    self isRootDirectory ifTrue:[^ true].
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   365
    ^super isDirectory.
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   366
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   367
    "Created: / 24.9.1998 / 14:04:31 / cg"
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   368
!
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   369
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   370
isExecutableProgram
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   371
    "return true, if such a file exists and is an executable program.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   372
     (i.e. for directories, false is returned.)"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   373
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   374
    |mySuffix|
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   375
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   376
    mySuffix := self suffix asLowercase.
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   377
    (mySuffix = 'exe' or:[mySuffix = 'com']) ifTrue:[
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   378
        ^ super isExecutableProgram
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   379
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   380
    ^ false
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   381
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   382
    "Created: / 16.10.1997 / 13:19:10 / cg"
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   383
    "Modified: / 9.9.1998 / 20:17:52 / cg"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   384
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   385
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   386
isExplicitRelative
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   387
    "return true, if this name is an explicit relative name
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   388
     (i.e. starts with './' or '../', to avoid path-prepending)"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   389
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   390
    (nameString startsWith:'.\') ifTrue:[
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   391
	^ true
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   392
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   393
    (nameString startsWith:'..\') ifTrue:[
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   394
	^ true
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   395
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   396
    ^ false
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   397
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   398
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   399
isRootDirectory
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   400
    "return true, if I represent a root directory 
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   401
     (i.e. I have no parentDir)"
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   402
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   403
    |sz nm i|
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   404
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   405
    nm := self pathName.
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   406
    sz := nm size.
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   407
4374
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   408
    sz == 1 ifTrue:[
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   409
        (nm = '\') ifTrue:[
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   410
            "/ \ alone
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   411
            ^ true
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   412
        ]
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   413
    ].
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   414
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   415
    sz >= 2 ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   416
        (nm at:2) == $: ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   417
            sz == 2 ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   418
                "/ <DRIVE-char>:
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   419
                ^ true
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   420
            ].
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   421
            sz == 3 ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   422
                (nm at:3) == $\ ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   423
                    "/ <DRIVE-char>:\
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   424
                    ^ true
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   425
                ]
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   426
            ]
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   427
        ].
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   428
    ].
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   429
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   430
    "/ \\<REMOTE-HOST>
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   431
    (((nm size > 3) 
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   432
    and:[(nm at:1) == $\]) 
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   433
    and:[(nm at:2) == $\]) ifTrue:[
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   434
        "/ something like \\hostname\
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   435
        i := nm indexOf:$\ startingAt:4.
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   436
        ((i == 0) or:[i == nameString size]) ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   437
            "/ not really a root (its not readable)
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   438
            ^ true
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   439
        ].
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   440
        i ~~ 0 ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   441
            "/ something like \\hostname\dirName
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   442
            i := nm indexOf:$\ startingAt:i+1.
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   443
            ((i == 0) or:[i == nameString size]) ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   444
                "/ yeah - really a root 
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   445
                ^ true
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   446
            ].
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   447
        ]
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   448
    ].
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   449
    ^ super isRootDirectory
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   450
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   451
    "Created: / 21.9.1998 / 15:37:41 / cg"
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   452
    "Modified: / 24.9.1998 / 15:57:10 / cg"
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   453
!
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   454
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   455
isVolumeAbsolute
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   456
    "return true, if the receiver represents an absolute pathname
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   457
     on some disk volume."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   458
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   459
    "/ <DRIVE-CHAR>:
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   460
    (((nameString size >= 3) 
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   461
    and:[(nameString at:2) == $:]) 
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   462
    and:[(nameString at:3) == $\]) ifTrue:[
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   463
        "/ something like x:\foo
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   464
        ^ true
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   465
    ].
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   466
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   467
    "/ \\REMOTE-HOST:
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   468
    (((nameString size >= 3) 
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   469
    and:[(nameString at:1) == $\]) 
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   470
    and:[(nameString at:2) == $\]) ifTrue:[
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   471
        "/ something like \\hostname
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   472
        ^ true
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   473
    ].
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   474
    ^ false
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   475
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   476
    "Created: / 7.9.1997 / 23:54:20 / cg"
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   477
    "Modified: / 9.9.1998 / 20:38:54 / cg"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   478
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   479
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   480
localNameStringFrom:aString 
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   481
    "ST-80 compatibility.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   482
     what does this do ? (used in FileNavigator-goody).
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   483
     GUESS: does it strip off the voulume-character and initial '\' ?"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   484
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   485
    (aString at:2) == $: ifTrue:[
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   486
	(aString at:3) == $\ ifTrue:[
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   487
	    ^ aString copyFrom:4
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   488
	].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   489
	^ aString copyFrom:3
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   490
    ]. 
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   491
    (aString at:1) == $\ ifTrue:[
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   492
	^ aString copyFrom:1
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   493
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   494
    ^ aString
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   495
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   496
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   497
localPathName
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   498
    "return the full pathname of the file represented by the receiver,
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   499
     but without any volume information.
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   500
     Only makes a difference on MSDOS & VMS systems."
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   501
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   502
    |vol vsz rest|
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   503
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   504
    vol := self volume.
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   505
    (vsz := vol size) > 0 ifTrue:[
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   506
        rest := nameString copyFrom:vsz + 1.
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   507
        rest size == 0 ifTrue:[
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   508
            ^ '\'
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   509
        ].
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   510
        (rest startsWith:$\) ifFalse:[
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   511
            ^ '\' , rest
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   512
        ].
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   513
        ^ rest
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   514
    ].
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   515
    ^ nameString
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   516
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   517
    "
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   518
     '\foo'         asFilename localPathName  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   519
     '\foo\'        asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   520
     '\foo\bar'     asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   521
     '\foo\bar\'    asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   522
     'c:'           asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   523
     'c:\'          asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   524
     'c:\foo'       asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   525
     'c:\foo\'      asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   526
     'c:\foo\bar'   asFilename localPathName  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   527
     'c:\foo\bar\'  asFilename localPathName      
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   528
     '\\idefix'          asFilename localPathName    
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   529
     '\\idefix\home'     asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   530
     '\\idefix\home\foo' asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   531
     "
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   532
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   533
    "Modified: / 24.9.1998 / 19:09:53 / cg"
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   534
!
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   535
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   536
volume
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   537
    "return the disc volume part of the name or an empty string.
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   538
     This is only used with DOS filenames - on unix, an empty string is returned.
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   539
     A full path can be reconstructed from 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   540
        aFilename volume , aFilename localPathName
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   541
    "
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   542
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   543
    |endIdx endIdx2|
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   544
3848
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   545
    nameString size >= 2 ifTrue:[
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   546
        (nameString at:2) == $: ifTrue:[
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   547
            ^ nameString copyTo:2
3848
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   548
        ].
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   549
        (nameString startsWith:'\\') ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   550
            endIdx := nameString indexOf:$\ startingAt:3.
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   551
            endIdx == 0 ifTrue:[
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   552
                ^ nameString.
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   553
            ].
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   554
            endIdx2 := nameString indexOf:$\ startingAt:endIdx+1.
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   555
            endIdx2 == 0 ifTrue:[
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   556
                ^ nameString.
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   557
            ].
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   558
            ^ nameString copyFrom:1 to:endIdx2-1
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   559
        ].
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   560
    ].
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   561
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   562
    ^ ''
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   563
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   564
    "
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   565
     '\foo'         asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   566
     '\foo\'        asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   567
     '\foo\bar'     asFilename volume 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   568
     '\foo\bar\'    asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   569
     'c:'           asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   570
     'c:\'          asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   571
     'c:\foo'       asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   572
     'c:\foo\'      asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   573
     'c:\foo\bar'   asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   574
     'c:\foo\bar\'  asFilename volume       
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   575
     'c:\foo\bar\'  asFilename localPathName   
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   576
     '\\idefix'          asFilename volume       
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   577
     '\\idefix\home'     asFilename volume   
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   578
     '\\idefix\home\foo' asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   579
     '\\idefix\home\foo' asFilename localPathName  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   580
     "
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   581
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   582
    "Modified: / 24.9.1998 / 19:04:27 / cg"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   583
! !
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   584
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   585
!PCFilename methodsFor:'special accessing'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   586
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   587
osNameForDirectory
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   588
    "special - return the OS's name for the receiver to
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   589
     access it as a directory.
3749
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   590
     Care remove trailing backSlashes here and to use the shortName
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   591
     if available"
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   592
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   593
    |n i shortName|
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   594
3749
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   595
    ((n := nameString) endsWith:'\') ifTrue:[
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   596
        ((n size == 3) and:[(n at:2) == $:]) ifFalse:[
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   597
            n := n copyWithoutLast:1
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   598
        ]
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   599
    ].
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   600
"/    i := OperatingSystem infoOf:n.
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   601
"/    (i notNil and:[(shortName := i alternativeName) notNil]) ifTrue:[
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   602
"/        ^ shortName
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   603
"/    ].
3749
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   604
    ^ n
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   605
3721
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   606
    "Modified: / 20.1.1998 / 15:39:06 / md"
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   607
    "Modified: / 17.8.1998 / 10:04:01 / cg"
3721
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   608
!
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   609
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   610
osNameForDirectoryContents
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   611
    "special - return the OS's name for the receiver to
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   612
     access it as a directory for reading the contents.
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   613
     Care to remove trailing backSlashes here"
3721
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   614
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   615
    (nameString endsWith:'\') ifTrue:[
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   616
        ^ nameString copyWithoutLast:1
3721
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   617
    ].
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   618
    ^ nameString
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   619
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   620
    "Modified: / 20.1.1998 / 15:39:06 / md"
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   621
    "Created: / 3.8.1998 / 21:37:46 / cg"
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   622
    "Modified: / 17.8.1998 / 10:04:22 / cg"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   623
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   624
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   625
setName:aString
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   626
    "set the filename"
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   627
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   628
    nameString := aString copy replaceAll:$/ with:$\
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   629
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   630
    "Created: 22.1.1998 / 17:32:45 / md"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   631
! !
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   632
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   633
!PCFilename class methodsFor:'documentation'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   634
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   635
version
5826
2501b04853eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
   636
    ^ '$Header: /cvs/stx/stx/libbasic/PCFilename.st,v 1.22 2001-03-14 00:26:17 cg Exp $'
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   637
! !