PCFilename.st
author Claus Gittinger <cg@exept.de>
Tue, 24 Dec 2013 11:39:59 +0100
changeset 15887 1e45bc4b09b4
parent 15822 3fc626394707
child 16562 de9b98f4a494
child 18107 d46c13a0795b
permissions -rw-r--r--
class: CannotReturnError category change
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
"
5826
2501b04853eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
    12
"{ Package: 'stx:libbasic' }"
2501b04853eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
    13
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    14
Filename subclass:#PCFilename
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    15
	instanceVariableNames:''
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    16
	classVariableNames:'StandardSuffixTable'
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    17
	poolDictionaries:''
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    18
	category:'OS-Windows'
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    19
!
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
!PCFilename class methodsFor:'documentation'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    22
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    23
copyright
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    24
"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    25
 COPYRIGHT (c) 1997 by eXept Software AG
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    26
	      All Rights Reserved
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    27
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    28
 This software is furnished under a license and may be used
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    29
 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
    30
 inclusion of the above copyright notice.   This software may not
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    31
 be provided or otherwise made available to, or used by, any
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    32
 other person.  No title to or ownership of the software is
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    33
 hereby transferred.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    34
"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    35
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    36
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    37
documentation
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    38
"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    39
    Filenames in Windows-NT / Win95.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    40
"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    41
! !
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
!PCFilename class methodsFor:'initialization'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    44
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    45
initStandardSuffixTable
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    46
    "since there is no 'file' command to extract the type,
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    47
     return a guess based upon the files suffix. The following
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    48
     table defines what is returned."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    49
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    50
    StandardSuffixTable := Dictionary new.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    51
    #(  
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    52
	'COM'   'executable'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    53
	'DIR'   'directory'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    54
	'EXE'   'executable'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    55
	'LST'   'listing'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    56
	'OBJ'   'object file'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    57
	'TMP'   'temporary'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    58
	'BAS'   'basic source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    59
	'C'     'c source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    60
	'COB'   'cobol source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    61
	'FOR'   'fortran source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    62
	'PAS'   'pascal source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    63
	'PL1'   'PL/1 source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    64
	'ST'    'smalltalk source'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    65
	'STH'   'stc generated header'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    66
	'DLL'   'dynamic link library'
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    67
    ) pairWiseDo:[:k :v |
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
    68
	StandardSuffixTable at:k put:v
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    69
    ]
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
     StandardSuffixTable := nil.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    73
     self initStandardSuffixTable
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    74
    "
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
    "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
    77
! !
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
!PCFilename class methodsFor:'instance creation'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
    80
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
    81
named:aString
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
    82
    "return a filename for a directory named aString.
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
    83
     This is the same as 'aString asFilename'."
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
    84
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
    85
    |fn|
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
    86
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
    87
    fn := super named:aString.
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
    88
    fn makeNonDOSName.
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
    89
    ^fn
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
    90
!
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
    91
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    92
newTemporaryIn:aDirectoryPrefix
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    93
    "return a new unique filename - use this for temporary files.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    94
     redefined to always return an MSDOS 8+3 fileName,
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    95
     in case the tempFile is passed to an OLD dos utility.."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    96
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
    97
    |pid nr nameString|
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
    NextTempFilenameIndex isNil ifTrue:[
8753
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   100
        NextTempFilenameIndex := 1.
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   101
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   102
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   103
    pid := OperatingSystem getProcessId printString.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   104
    pid := pid copyLast:(3 min:pid size).
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   105
    nr := NextTempFilenameIndex printString.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   106
    nr := nr copyLast:(3 min:nr size).
13321
3721cb08c3b0 comment/format in: #newTemporaryIn:
Claus Gittinger <cg@exept.de>
parents: 13158
diff changeset
   107
    nameString := (self tempFileNameTemplate) bindWith:pid with:nr.
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   108
    NextTempFilenameIndex := NextTempFilenameIndex + 1.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   109
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   110
    (aDirectoryPrefix isNil or:[aDirectoryPrefix asString isEmpty]) ifFalse:[
8753
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   111
        ^ aDirectoryPrefix asFilename construct:nameString
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   112
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   113
    ^ self named:nameString
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   114
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   115
    "temp files in '/tmp':
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   116
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   117
     Filename newTemporary    
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
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   120
    "temp files somewhere 
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   121
     (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
   122
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:'/tmp'  
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   125
     Filename newTemporaryIn:'/usr/tmp'    
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   126
     Filename newTemporaryIn:'/'  
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
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   129
    "a local temp file:
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   130
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   131
     Filename newTemporaryIn:''         
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   132
     Filename newTemporaryIn:nil         
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   133
     Filename newTemporaryIn:'.'         
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   134
     Filename newTemporaryIn:('source' asFilename) 
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
13321
3721cb08c3b0 comment/format in: #newTemporaryIn:
Claus Gittinger <cg@exept.de>
parents: 13158
diff changeset
   137
    "Modified: / 07-09-1995 / 10:48:31 / claus"
3721cb08c3b0 comment/format in: #newTemporaryIn:
Claus Gittinger <cg@exept.de>
parents: 13158
diff changeset
   138
    "Created: / 30-01-1998 / 11:49:33 / md"
3721cb08c3b0 comment/format in: #newTemporaryIn:
Claus Gittinger <cg@exept.de>
parents: 13158
diff changeset
   139
    "Modified: / 30-01-1998 / 12:09:18 / dq"
3721cb08c3b0 comment/format in: #newTemporaryIn:
Claus Gittinger <cg@exept.de>
parents: 13158
diff changeset
   140
    "Modified: / 23-03-2011 / 16:29:34 / cg"
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
7837
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   156
!PCFilename class methodsFor:'defaults'!
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   157
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   158
defaultTempDirectoryName
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   159
    "return the default temp directory as a filename.
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   160
     This is used, if no special preferences were defined in
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   161
     any of the TEMP-environment variables (see tempDirectory)."
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   162
10851
7d9c2ac9a7c9 dont return sometimes a String, sometimes a Filename from defaultTempDirectoryName
Claus Gittinger <cg@exept.de>
parents: 10624
diff changeset
   163
    |winDir vol tempDir|
8661
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   164
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   165
    #('TMPDIR' 'TEMPDIR' 'TEMP' 'TMP') do:[:envVar |
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   166
        tempDir isNil ifTrue:[
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   167
            tempDir := OperatingSystem getEnvironment:envVar.
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   168
            tempDir notNil ifTrue:[
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   169
                "/ kludge when running cygwin: replace '/cygdrive/X/...'
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   170
                "/ by X:\...
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   171
                (tempDir startsWith:'/cygdrive/') ifTrue:[
15226
d6abb7f2cf87 refactored
Claus Gittinger <cg@exept.de>
parents: 15168
diff changeset
   172
                    tempDir := tempDir withoutPrefix:'/cygdrive/'.
8661
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   173
                    tempDir size > 2 ifTrue:[
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   174
                        (tempDir at:2) == $/ ifTrue:[
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   175
                            tempDir := (tempDir at:1) asString , ':' ,
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   176
                                       ((tempDir copyFrom:2) replaceAll:$/ with:$\).    
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   177
                        ].
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   178
                    ].
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   179
                ].
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   180
                tempDir asFilename exists ifTrue:[
10851
7d9c2ac9a7c9 dont return sometimes a String, sometimes a Filename from defaultTempDirectoryName
Claus Gittinger <cg@exept.de>
parents: 10624
diff changeset
   181
                    ^ tempDir asFilename.
8661
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   182
                ].
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   183
            ].
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   184
        ].
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   185
    ].
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   186
10851
7d9c2ac9a7c9 dont return sometimes a String, sometimes a Filename from defaultTempDirectoryName
Claus Gittinger <cg@exept.de>
parents: 10624
diff changeset
   187
    winDir := OperatingSystem getWindowsDirectory asFilename.
7d9c2ac9a7c9 dont return sometimes a String, sometimes a Filename from defaultTempDirectoryName
Claus Gittinger <cg@exept.de>
parents: 10624
diff changeset
   188
    vol := winDir volume.
8661
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   189
    tempDir := vol asFilename construct:'temp'. 
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   190
    tempDir exists ifTrue:[ ^tempDir ].
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   191
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   192
    tempDir := vol asFilename construct:'tmp'. 
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   193
    tempDir exists ifTrue:[ ^tempDir ].
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   194
10851
7d9c2ac9a7c9 dont return sometimes a String, sometimes a Filename from defaultTempDirectoryName
Claus Gittinger <cg@exept.de>
parents: 10624
diff changeset
   195
    tempDir := winDir construct:'temp'.
8661
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   196
    tempDir exists ifTrue:[ ^tempDir ].
2a7e152604fb tempDir kludge for cygwin
penk
parents: 8548
diff changeset
   197
10993
aaff65e2ada2 always return a fileName from defaultTempDirectoryName
fm
parents: 10851
diff changeset
   198
    ^ '.\temp' asFilename
7837
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   199
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   200
    "
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   201
     Filename defaultTempDirectoryName           
10851
7d9c2ac9a7c9 dont return sometimes a String, sometimes a Filename from defaultTempDirectoryName
Claus Gittinger <cg@exept.de>
parents: 10624
diff changeset
   202
     Filename defaultTempDirectoryName exists         
7d9c2ac9a7c9 dont return sometimes a String, sometimes a Filename from defaultTempDirectoryName
Claus Gittinger <cg@exept.de>
parents: 10624
diff changeset
   203
     Filename defaultTempDirectoryName isWritable         
7837
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   204
    "
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   205
! !
e7f4d73e184c defaultTempDir
Claus Gittinger <cg@exept.de>
parents: 7101
diff changeset
   206
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   207
!PCFilename class methodsFor:'queries'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   208
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   209
isBadCharacter:aCharacter
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   210
    "return true, if aCharacter is unallowed in a filename."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   211
13816
0acf49dc7d39 changed: #isBadCharacter:
Michael Beyl <mb@exept.de>
parents: 13619
diff changeset
   212
    ('<>:"/\|?*' includes:aCharacter) ifTrue:[^ true].
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   213
    ^ super isBadCharacter:aCharacter
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   214
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   215
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   216
isCaseSensitive
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   217
    "return true, if filenames are case sensitive."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   218
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   219
    ^ false
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   220
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   221
8753
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   222
nullFilename
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   223
    "Return the OS dependent filename for the data sink, or nil if there is none"
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   224
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   225
    ^ 'nul:'
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   226
!
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   227
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   228
parentDirectoryName
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   229
    "return the name used for the parent directory.
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   230
     This is '..' for unix and dos-like systems.
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   231
     (there may be more in the future."
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   232
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   233
    ^ '..'
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   234
!
a134e378d5f5 #nullFilename
Stefan Vogel <sv@exept.de>
parents: 8661
diff changeset
   235
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   236
separator
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   237
    "return the file/directory separator."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   238
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   239
     ^ $\
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   240
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   241
     "
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   242
      Filename concreteClass separator  
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   243
     "
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   244
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   245
    "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
   246
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   247
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   248
tempFileNameTemplate
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   249
    "return a template for temporary files.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   250
     This is expanded with the current processID and a sequenceNumber
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   251
     to generate a unique filename.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   252
     Redefined for MSDOS 8+3 filenames"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   253
3749
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   254
    ^ 'st%1%2'
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   255
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   256
    "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
   257
! !
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   258
10624
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   259
!PCFilename methodsFor:'attribute setter'!
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   260
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   261
setHidden
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   262
    "return true, if the hidden attribute could be setted to true"
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   263
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   264
    ^ OperatingSystem setHidden:(self osNameForFile)
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   265
!
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   266
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   267
setNormal
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   268
    "
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   269
    sets all file attributes to the normal state
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   270
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   271
    e.g. set the hidden attribute to false (unhidden)
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   272
    "
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   273
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   274
    ^ OperatingSystem setNormal:(self osNameForFile)
7fe1af018ef9 added #setHidden and #setNormal
sr
parents: 10623
diff changeset
   275
! !
10623
5bc26319a05a added #setHidden and #setNormal
sr
parents: 10595
diff changeset
   276
3789
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   277
!PCFilename methodsFor:'converting'!
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   278
9208
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   279
makeDOSName
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   280
    "convert the receivers name to be a DOS filename."
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   281
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   282
    nameString := self fullAlternativePathName.
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   283
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   284
    "
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   285
     'C:\Dokumente und Einstellungen\str\Desktop\output folder\' asFilename makeDOSName
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   286
    "
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   287
!
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   288
3789
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   289
makeLegalFilename 
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   290
    "convert the receivers name to be a legal filename.
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   291
     This removes/replaces invalid characters and/or compresses
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   292
     the name as required by Win95-WinNT."
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   293
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   294
    |srchStart|
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   295
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   296
    "/ there may be only one colon in the name
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   297
    "/ (and if present, it must be the second character)
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   298
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   299
    ((nameString size >= 2)
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   300
    and:[(nameString at:2) == $:]) ifTrue:[
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   301
        srchStart := 3.
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   302
    ] ifFalse:[
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   303
        srchStart := 1
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   304
    ].
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   305
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   306
    "/ replace colons by underscore
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   307
    "/ may need more to convert - time will show
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   308
13158
75976f0d731a changed: #makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 13104
diff changeset
   309
    (nameString indexOfAny:#($: ) startingAt:srchStart) ~~ 0 ifTrue:[
3789
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   310
        nameString := nameString copy.
13158
75976f0d731a changed: #makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 13104
diff changeset
   311
        nameString replaceAny:#($: ) with:$_ from:srchStart to:(nameString size).
3789
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   312
    ].
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   313
    ^ self
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   314
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   315
    "
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   316
     'hello world' asFilename makeLegalFilename 
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   317
     'hello:world' asFilename makeLegalFilename 
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   318
     'hello::world' asFilename makeLegalFilename 
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   319
     'c:hello::world' asFilename makeLegalFilename 
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   320
     '\\idefix' asFilename makeLegalFilename 
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   321
     '\\idefix\' asFilename makeLegalFilename 
3789
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   322
    "
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   323
13158
75976f0d731a changed: #makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 13104
diff changeset
   324
    "Modified: / 01-12-2010 / 18:53:59 / cg"
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   325
!
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   326
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   327
makeNonDOSName
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   328
    "convert the receivers name to be a full filename, in case its an abbreviated (alternative) DOS name.
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   329
     This removes/replaces components of the form FOOBAR~n by the real, full components name."
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   330
8548
19253a6783ce oops - endless recursion when making a nonDosName
ca
parents: 7837
diff changeset
   331
    |directory directoryName baseName info|
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   332
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   333
    (nameString includes:$~) ifFalse:[^self].
8948
cb0bc2c3d0c6 withSpecialExpansions
Claus Gittinger <cg@exept.de>
parents: 8870
diff changeset
   334
    (nameString startsWith:$~) ifTrue:[^self].
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   335
8548
19253a6783ce oops - endless recursion when making a nonDosName
ca
parents: 7837
diff changeset
   336
    directoryName := self directoryName.
19253a6783ce oops - endless recursion when making a nonDosName
ca
parents: 7837
diff changeset
   337
    directoryName = nameString ifTrue:[^self].
19253a6783ce oops - endless recursion when making a nonDosName
ca
parents: 7837
diff changeset
   338
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   339
    baseName := self baseName.
8548
19253a6783ce oops - endless recursion when making a nonDosName
ca
parents: 7837
diff changeset
   340
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   341
    (baseName includes:$~) ifTrue:[
7101
bc6ce4e44acd changes claus
penk
parents: 7062
diff changeset
   342
        info := self info.
bc6ce4e44acd changes claus
penk
parents: 7062
diff changeset
   343
        info notNil ifTrue:[ 
8956
9a32792d4a92 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8948
diff changeset
   344
            baseName := info fullName.
7101
bc6ce4e44acd changes claus
penk
parents: 7062
diff changeset
   345
        ].
8548
19253a6783ce oops - endless recursion when making a nonDosName
ca
parents: 7837
diff changeset
   346
        directory := self class named:directoryName.
7101
bc6ce4e44acd changes claus
penk
parents: 7062
diff changeset
   347
        directory isRootDirectory ifFalse:[
bc6ce4e44acd changes claus
penk
parents: 7062
diff changeset
   348
            directory makeNonDOSName.
bc6ce4e44acd changes claus
penk
parents: 7062
diff changeset
   349
        ].
8548
19253a6783ce oops - endless recursion when making a nonDosName
ca
parents: 7837
diff changeset
   350
        nameString := directory constructString:baseName
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   351
    ].
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   352
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   353
    "
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   354
     Filename tempDirectory makeNonDOSName 
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   355
    "
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   356
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   357
    "Modified: / 11.10.1998 / 01:40:47 / cg"
3789
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   358
! !
7a6456f7161c added makeLegalFilename
Claus Gittinger <cg@exept.de>
parents: 3765
diff changeset
   359
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   360
!PCFilename methodsFor:'file operations'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   361
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   362
renameTo:newName
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   363
    "rename the file - the argument must be convertable to a String.
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   364
     Raise an error if not successful.
15822
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   365
     Redefined to delete any existing target-file first.
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   366
     Also take care of possible locks by antivirus scanners, that go away after some time."
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   367
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   368
    |retryCtr newFilename|
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   369
15822
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   370
    newFilename := newName asFilename.
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   371
    newFilename exists ifTrue:[
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   372
        (self pathName sameAs:newFilename pathName) ifFalse:[
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   373
            newFilename delete
10004
949fa299db1f care for same-name rename on OS which is not filename-case-sensitive
Claus Gittinger <cg@exept.de>
parents: 9921
diff changeset
   374
        ].
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   375
    ].
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   376
15822
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   377
    "try 5 times if file has just been written to and is locked by a virus scanner"        
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   378
    retryCtr := 5.
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   379
    OperatingSystem accessDeniedErrorSignal handle:[:ex|
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   380
        retryCtr := retryCtr - 1.
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   381
        retryCtr > 0 ifTrue:[
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   382
            ('stx: Error cought while renaming %1 to %2 - maybe temporary locked by virus scanner, still trying: %3'
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   383
                                bindWith:self pathName
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   384
                                with:newFilename pathName
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   385
                                with:ex description) infoPrintCR.
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   386
        ] ifFalse:[
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   387
            ex reject 
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   388
        ].
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   389
        Delay waitForMilliseconds:200.
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   390
        ex restart.
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   391
    ] do:[
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   392
        ^ super renameTo:newName
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   393
    ].
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   394
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   395
    "
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   396
     '\tmp\foo' asFilename renameTo:'\tmp\bar'
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   397
    "
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   398
10004
949fa299db1f care for same-name rename on OS which is not filename-case-sensitive
Claus Gittinger <cg@exept.de>
parents: 9921
diff changeset
   399
    "Modified: / 20-01-1998 / 15:33:00 / md"
949fa299db1f care for same-name rename on OS which is not filename-case-sensitive
Claus Gittinger <cg@exept.de>
parents: 9921
diff changeset
   400
    "Modified: / 21-09-2006 / 18:19:47 / cg"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   401
! !
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   402
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   403
!PCFilename methodsFor:'queries'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   404
4374
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   405
directoryName
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   406
    "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
   407
     - 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
   408
       the receiver is contained in.
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   409
     This method does not check if the path is valid.
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   410
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   411
     (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
   412
       and '/usr/lib' asFilename directoryName         -> /usr').
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
     (this is almost equivalent to #directory, but returns
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   415
      a string instead of a Filename instance).
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   416
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   417
     See also: #pathName, #directoryPathName and #baseName.
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   418
     Compatibility note: use #head for ST-80 compatibility."
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   419
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   420
    |nm|
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   421
13104
39e5ff75d48a changed: #directoryName
Claus Gittinger <cg@exept.de>
parents: 12775
diff changeset
   422
    (nameString endsWith:':\') ifTrue:[
39e5ff75d48a changed: #directoryName
Claus Gittinger <cg@exept.de>
parents: 12775
diff changeset
   423
        ^ nameString
39e5ff75d48a changed: #directoryName
Claus Gittinger <cg@exept.de>
parents: 12775
diff changeset
   424
    ].
39e5ff75d48a changed: #directoryName
Claus Gittinger <cg@exept.de>
parents: 12775
diff changeset
   425
4374
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   426
    nm := super directoryName.
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   427
    (nm size == 2 and:[(nm at:2) == $:]) ifTrue:[
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   428
        ^ nm , '\'
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   429
    ].
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   430
    ^ nm
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   431
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   432
    "
13104
39e5ff75d48a changed: #directoryName
Claus Gittinger <cg@exept.de>
parents: 12775
diff changeset
   433
     (PCFilename named:'c:\') directoryName    
39e5ff75d48a changed: #directoryName
Claus Gittinger <cg@exept.de>
parents: 12775
diff changeset
   434
     (PCFilename named:'c:\users') directoryName   
4374
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   435
     (PCFilename named:'c:\users') directory pathName   
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   436
     (PCFilename named:'c:\users') directory isRootDirectory  
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   437
    "
13104
39e5ff75d48a changed: #directoryName
Claus Gittinger <cg@exept.de>
parents: 12775
diff changeset
   438
39e5ff75d48a changed: #directoryName
Claus Gittinger <cg@exept.de>
parents: 12775
diff changeset
   439
    "Modified: / 26-10-2010 / 12:45:55 / cg"
4374
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   440
!
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   441
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   442
fileType
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   443
    "this returns a string describing the type of contents of
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   444
     the file. Here, the suffix is examined for a standard
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   445
     suffix and an appropriate string is returned.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   446
     Poor MSDOS - no file command."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   447
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   448
    |suff type info fmt|
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   449
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   450
    StandardSuffixTable isNil ifTrue:[
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   451
	self class initStandardSuffixTable
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   452
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   453
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   454
    suff := self suffix asUppercase.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   455
    type := StandardSuffixTable at:suff ifAbsent:nil.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   456
    type isNil ifTrue:[
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   457
	type := super fileType.
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   458
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   459
    ^ type
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   460
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   461
    "Created: 16.10.1997 / 13:07:24 / cg"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   462
    "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
   463
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   464
9423
b0feea66957b faster isRootDirectory
Claus Gittinger <cg@exept.de>
parents: 9208
diff changeset
   465
freeBytesInVolume
9921
7fda4197305a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9423
diff changeset
   466
    ^ (OperatingSystem getDiskInfoOf: self volume) at: #freeBytes
9423
b0feea66957b faster isRootDirectory
Claus Gittinger <cg@exept.de>
parents: 9208
diff changeset
   467
b0feea66957b faster isRootDirectory
Claus Gittinger <cg@exept.de>
parents: 9208
diff changeset
   468
    "Created: / 05-07-2006 / 15:02:38 / cg"
b0feea66957b faster isRootDirectory
Claus Gittinger <cg@exept.de>
parents: 9208
diff changeset
   469
!
b0feea66957b faster isRootDirectory
Claus Gittinger <cg@exept.de>
parents: 9208
diff changeset
   470
9207
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   471
fullAlternativePathName
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   472
    "return my complete MSDOS-path"
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   473
    
11805
28b3ead51d73 Speed up #fullAlternativePathName
Stefan Vogel <sv@exept.de>
parents: 11421
diff changeset
   474
    |altNameComponent fullAlternativePath fullAlternativeDirectoryName info|
9207
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   475
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   476
    self isRootDirectory ifTrue:[
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   477
        ^ nameString
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   478
    ].
11805
28b3ead51d73 Speed up #fullAlternativePathName
Stefan Vogel <sv@exept.de>
parents: 11421
diff changeset
   479
9207
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   480
    (self name endsWith:$\) ifTrue:[
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   481
        ^ (self class named:self pathName) fullAlternativePathName
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   482
    ].
11805
28b3ead51d73 Speed up #fullAlternativePathName
Stefan Vogel <sv@exept.de>
parents: 11421
diff changeset
   483
28b3ead51d73 Speed up #fullAlternativePathName
Stefan Vogel <sv@exept.de>
parents: 11421
diff changeset
   484
    info := self info. 
28b3ead51d73 Speed up #fullAlternativePathName
Stefan Vogel <sv@exept.de>
parents: 11421
diff changeset
   485
    info notNil ifTrue:[
28b3ead51d73 Speed up #fullAlternativePathName
Stefan Vogel <sv@exept.de>
parents: 11421
diff changeset
   486
        ^ info alternativePathName.
28b3ead51d73 Speed up #fullAlternativePathName
Stefan Vogel <sv@exept.de>
parents: 11421
diff changeset
   487
    ].
28b3ead51d73 Speed up #fullAlternativePathName
Stefan Vogel <sv@exept.de>
parents: 11421
diff changeset
   488
9207
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   489
    fullAlternativeDirectoryName := self directory fullAlternativePathName.
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   490
    (fullAlternativeDirectoryName endsWith:$\) ifTrue:[
11805
28b3ead51d73 Speed up #fullAlternativePathName
Stefan Vogel <sv@exept.de>
parents: 11421
diff changeset
   491
        fullAlternativePath := fullAlternativeDirectoryName, self baseName.
9207
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   492
    ] ifFalse:[
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   493
        fullAlternativePath := fullAlternativeDirectoryName , '\' , (altNameComponent ? self baseName).
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   494
    ].
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   495
    ^ fullAlternativePath
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   496
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   497
    "
9208
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   498
     'C:\Dokumente und Einstellungen\str\Desktop\output folder' asFilename fullAlternativePathName 
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   499
     'C:\Dokumente und Einstellungen\str\Desktop\output folder' asFilename fullAlternativePathName asFilename exists
e15f9e251dc1 makeDOSName
sr
parents: 9207
diff changeset
   500
     'C:\' asFilename fullAlternativePathName  
11805
28b3ead51d73 Speed up #fullAlternativePathName
Stefan Vogel <sv@exept.de>
parents: 11421
diff changeset
   501
     'C:\Dokumente und Einstellungen\str\Desktop\output folder\' asFilename fullAlternativePathName asFilename
9207
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   502
    "
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   503
!
423fa321c344 +fullAlternativePathName
sr
parents: 8956
diff changeset
   504
11248
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   505
isCDRom
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   506
    "return true, if is is a drive"
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   507
    |pathName|
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   508
12775
71dfc35f62d2 code deobfuscated:
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   509
    self isRootDirectory ifFalse:[^ false].
11248
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   510
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   511
    pathName := self asString asLowercase.
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   512
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   513
    ((pathName = 'a:\') or:[pathName = 'b:\']) ifTrue:[^ false].      
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   514
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   515
    ^ (OperatingSystem getDriveType:pathName) == 2
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   516
!
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   517
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   518
isDirectory
8824
a6dd7e6cdd61 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8785
diff changeset
   519
    "return true, if I represent a directory 
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   520
     Redefined to care for volumeRoots."
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   521
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   522
    self isRootDirectory ifTrue:[^ true].
8824
a6dd7e6cdd61 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8785
diff changeset
   523
    ^ super isDirectory.
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   524
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   525
    "Created: / 24.9.1998 / 14:04:31 / cg"
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   526
!
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   527
11248
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   528
isDrive
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   529
    "return true, if is is a drive"
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   530
    |pathName|
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   531
12775
71dfc35f62d2 code deobfuscated:
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   532
    self isRootDirectory ifFalse:[^ false].
11248
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   533
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   534
    pathName := self asString asLowercase.
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   535
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   536
    ((pathName = 'a:\') or:[pathName = 'b:\']) ifTrue:[^ false].      
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   537
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   538
    ^ (OperatingSystem getDriveType:pathName) == 1
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   539
!
0578bb4ca886 *** empty log message ***
sr
parents: 11001
diff changeset
   540
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   541
isExecutableProgram
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   542
    "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
   543
     (i.e. for directories, false is returned.)"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   544
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   545
    |mySuffix|
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   546
13619
005855bd677c Fixes for #canExecuteCommand:
vrany
parents: 13321
diff changeset
   547
    mySuffix := self suffix asLowercase.        
005855bd677c Fixes for #canExecuteCommand:
vrany
parents: 13321
diff changeset
   548
    (OperatingSystem executableFileExtensions includes: mySuffix) ifTrue:[
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   549
        ^ super isExecutableProgram
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   550
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   551
    ^ false
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   552
13619
005855bd677c Fixes for #canExecuteCommand:
vrany
parents: 13321
diff changeset
   553
    "Created: / 16-10-1997 / 13:19:10 / cg"
005855bd677c Fixes for #canExecuteCommand:
vrany
parents: 13321
diff changeset
   554
    "Modified: / 09-09-1998 / 20:17:52 / cg"
005855bd677c Fixes for #canExecuteCommand:
vrany
parents: 13321
diff changeset
   555
    "Modified: / 23-08-2011 / 21:24:57 / jv"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   556
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   557
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   558
isExplicitRelative
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   559
    "return true, if this name is an explicit relative name
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   560
     (i.e. starts with './' or '../', to avoid path-prepending)"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   561
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   562
    (nameString startsWith:'.\') ifTrue:[
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   563
	^ true
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   564
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   565
    (nameString startsWith:'..\') ifTrue:[
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   566
	^ true
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   567
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   568
    ^ false
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   569
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   570
10595
1fc627c42cf8 added #isHidden
sr
parents: 10004
diff changeset
   571
isHidden
12389
48fb228b0c67 changed: #isHidden
Claus Gittinger <cg@exept.de>
parents: 11805
diff changeset
   572
    "return true, if such a file is hidden.
48fb228b0c67 changed: #isHidden
Claus Gittinger <cg@exept.de>
parents: 11805
diff changeset
   573
     On MSDOS, a name starting with a period is considered hidden
48fb228b0c67 changed: #isHidden
Claus Gittinger <cg@exept.de>
parents: 11805
diff changeset
   574
     AND a file with a hidden attribute is so."
10595
1fc627c42cf8 added #isHidden
sr
parents: 10004
diff changeset
   575
12389
48fb228b0c67 changed: #isHidden
Claus Gittinger <cg@exept.de>
parents: 11805
diff changeset
   576
    |baseName|
48fb228b0c67 changed: #isHidden
Claus Gittinger <cg@exept.de>
parents: 11805
diff changeset
   577
48fb228b0c67 changed: #isHidden
Claus Gittinger <cg@exept.de>
parents: 11805
diff changeset
   578
    baseName := self baseName.
48fb228b0c67 changed: #isHidden
Claus Gittinger <cg@exept.de>
parents: 11805
diff changeset
   579
    ((baseName startsWith:'.') and:[baseName ~= '..']) ifTrue:[^ true].
10595
1fc627c42cf8 added #isHidden
sr
parents: 10004
diff changeset
   580
    ^ OperatingSystem isHidden:(self osNameForFile)
1fc627c42cf8 added #isHidden
sr
parents: 10004
diff changeset
   581
!
1fc627c42cf8 added #isHidden
sr
parents: 10004
diff changeset
   582
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   583
isRootDirectory
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   584
    "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
   585
     (i.e. I have no parentDir)"
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   586
11415
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   587
    |nm|
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   588
11415
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   589
    (self isRootDirectoryName:nameString) ifTrue:[ ^ true].
11421
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   590
"/    nm := self pathName.
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   591
"/    nm ~= nameString ifTrue:[
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   592
"/        ^ self isRootDirectoryName:nm
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   593
"/    ].
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   594
"/    ^ false
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   595
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   596
    (nameString includesString:'..') ifTrue:[
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   597
        nm := self pathName.
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   598
        nm ~= nameString ifTrue:[
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   599
            ^ self isRootDirectoryName:nm
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   600
        ].
8785
b042196465e3 isRootDirectory speedup
penk
parents: 8753
diff changeset
   601
    ].
11415
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   602
    ^ false
11421
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   603
"
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   604
'\\exeptn\tmp\' asFilename isRootDirectory
6f3a7f53dc15 isRootDirectory
ca
parents: 11415
diff changeset
   605
"
11415
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   606
!
8785
b042196465e3 isRootDirectory speedup
penk
parents: 8753
diff changeset
   607
11415
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   608
isRootDirectoryName:nm
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   609
    "return true, if aString represents a root directory;
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   610
     i.e. is of the form:
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   611
        \
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   612
        X:
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   613
        X:\
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   614
     or:
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   615
        \\hostname\
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   616
        \\hostname\topDir
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   617
    "
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   618
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   619
    |sz i|
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   620
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   621
    sz := nm size.
4374
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   622
    sz == 1 ifTrue:[
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   623
        (nm = '\') ifTrue:[
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   624
            "/ \ alone
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   625
            ^ true
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   626
        ]
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   627
    ].
0b2a18a8cf84 fixed directoryName and isAbsolute.
Claus Gittinger <cg@exept.de>
parents: 3873
diff changeset
   628
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   629
    sz >= 2 ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   630
        (nm at:2) == $: ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   631
            sz == 2 ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   632
                "/ <DRIVE-char>:
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   633
                ^ true
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   634
            ].
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   635
            sz == 3 ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   636
                (nm at:3) == $\ ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   637
                    "/ <DRIVE-char>:\
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   638
                    ^ true
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   639
                ]
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   640
            ]
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   641
        ].
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   642
    ].
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   643
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   644
    "/ \\<REMOTE-HOST>
11415
0d5d7ae67110 bugfix: isRootDirectory
ca
parents: 11248
diff changeset
   645
    (((sz > 3) 
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   646
    and:[(nm at:1) == $\]) 
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   647
    and:[(nm at:2) == $\]) ifTrue:[
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   648
        "/ something like \\hostname\
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   649
        i := nm indexOf:$\ startingAt:4.
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   650
        ((i == 0) or:[i == nameString size]) ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   651
            "/ 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
   652
            ^ true
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   653
        ].
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   654
        i ~~ 0 ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   655
            "/ something like \\hostname\dirName
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   656
            i := nm indexOf:$\ startingAt:i+1.
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   657
            ((i == 0) or:[i == nameString size]) ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   658
                "/ yeah - really a root 
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   659
                ^ true
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   660
            ].
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   661
        ]
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   662
    ].
8824
a6dd7e6cdd61 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8785
diff changeset
   663
    ^ false
3844
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   664
!
fb51bffc0aa3 redefined isRootDirectory for drive-letters & net-drives
Claus Gittinger <cg@exept.de>
parents: 3815
diff changeset
   665
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   666
isVolumeAbsolute
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   667
    "return true, if the receiver represents an absolute pathname
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   668
     on some disk volume."
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   669
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   670
    "/ <DRIVE-CHAR>:
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   671
    (((nameString size >= 3) 
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   672
    and:[(nameString at:2) == $:]) 
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   673
    and:[(nameString at:3) == $\]) ifTrue:[
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   674
        "/ something like x:\foo
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   675
        ^ true
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   676
    ].
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   677
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   678
    "/ \\REMOTE-HOST:
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   679
    (((nameString size >= 3) 
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   680
    and:[(nameString at:1) == $\]) 
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   681
    and:[(nameString at:2) == $\]) ifTrue:[
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   682
        "/ something like \\hostname
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   683
        ^ true
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   684
    ].
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   685
    ^ false
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   686
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   687
    "Created: / 7.9.1997 / 23:54:20 / cg"
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   688
    "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
   689
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   690
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   691
localNameStringFrom:aString 
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   692
    "ST-80 compatibility.
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   693
     what does this do ? (used in FileNavigator-goody).
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   694
     GUESS: does it strip off the voulume-character and initial '\' ?"
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   695
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   696
    (aString at:2) == $: ifTrue:[
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   697
	(aString at:3) == $\ ifTrue:[
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   698
	    ^ aString copyFrom:4
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   699
	].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   700
	^ aString copyFrom:3
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   701
    ]. 
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   702
    (aString at:1) == $\ ifTrue:[
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   703
	^ aString copyFrom:1
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   704
    ].
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   705
    ^ aString
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   706
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   707
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   708
localPathName
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   709
    "return the full pathname of the file represented by the receiver,
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   710
     but without any volume information.
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   711
     Only makes a difference on MSDOS & VMS systems."
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   712
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   713
    |vol vsz rest|
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   714
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   715
    vol := self volume.
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   716
    (vsz := vol size) > 0 ifTrue:[
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   717
        rest := nameString copyFrom:vsz + 1.
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   718
        rest size == 0 ifTrue:[
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   719
            ^ '\'
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   720
        ].
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   721
        (rest startsWith:$\) ifFalse:[
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   722
            ^ '\' , rest
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   723
        ].
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   724
        ^ rest
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   725
    ].
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   726
    ^ nameString
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   727
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   728
    "
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   729
     '\foo'         asFilename localPathName  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   730
     '\foo\'        asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   731
     '\foo\bar'     asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   732
     '\foo\bar\'    asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   733
     'c:'           asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   734
     'c:\'          asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   735
     'c:\foo'       asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   736
     'c:\foo\'      asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   737
     'c:\foo\bar'   asFilename localPathName  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   738
     'c:\foo\bar\'  asFilename localPathName      
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   739
     '\\idefix'          asFilename localPathName    
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   740
     '\\idefix\home'     asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   741
     '\\idefix\home\foo' asFilename localPathName 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   742
     "
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   743
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   744
    "Modified: / 24.9.1998 / 19:09:53 / cg"
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   745
!
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   746
8870
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   747
pathName
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   748
    |path|
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   749
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   750
    path := super pathName.
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   751
    path size > 1 ifTrue:[
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   752
        (path endsWith:'\') ifTrue:[
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   753
            (path endsWith:':\') ifFalse:[
15168
4a91a83bbe03 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 14234
diff changeset
   754
                path := path copyButLast:1
8870
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   755
            ]
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   756
        ]
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   757
    ].
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   758
    ^ path
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   759
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   760
    "
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   761
     '\foo'         asFilename pathName  
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   762
     '\foo\'        asFilename pathName 
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   763
     '\foo\bar'     asFilename pathName 
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   764
     '\foo\bar\'    asFilename pathName 
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   765
     '\'            asFilename pathName  
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   766
     'c:'           asFilename pathName 
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   767
     'c:\'          asFilename pathName 
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   768
     'c:\foo'       asFilename pathName 
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   769
     'c:\foo\'      asFilename pathName 
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   770
     'c:\foo\bar'   asFilename pathName  
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   771
     'c:\foo\bar\'  asFilename pathName      
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   772
     '\\idefix'          asFilename pathName    
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   773
     '\\idefix\home'     asFilename pathName 
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   774
     '\\idefix\home\foo' asFilename pathName 
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   775
     "
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   776
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   777
    "Modified: / 24.9.1998 / 19:09:53 / cg"
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   778
!
93dc7a3aec7c remove trailing '\' when asked for the pathName
Claus Gittinger <cg@exept.de>
parents: 8824
diff changeset
   779
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   780
volume
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   781
    "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
   782
     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
   783
     A full path can be reconstructed from 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   784
        aFilename volume , aFilename localPathName
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   785
    "
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   786
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   787
    |endIdx endIdx2|
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   788
3848
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   789
    nameString size >= 2 ifTrue:[
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   790
        (nameString at:2) == $: ifTrue:[
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   791
            ^ nameString copyTo:2
3848
2c0c94ca9171 volume stuff & fixes
Claus Gittinger <cg@exept.de>
parents: 3844
diff changeset
   792
        ].
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   793
        (nameString startsWith:'\\') ifTrue:[
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   794
            endIdx := nameString indexOf:$\ startingAt:3.
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   795
            endIdx == 0 ifTrue:[
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   796
                ^ nameString.
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   797
            ].
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   798
            endIdx2 := nameString indexOf:$\ startingAt:endIdx+1.
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   799
            endIdx2 == 0 ifTrue:[
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   800
                ^ nameString.
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   801
            ].
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   802
            ^ nameString copyFrom:1 to:endIdx2-1
3850
f4d25f3deac8 fixes for network drives (isRootDirectory)
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   803
        ].
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   804
    ].
3815
57aff51fbbfb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3789
diff changeset
   805
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   806
    ^ ''
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   807
3853
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   808
    "
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   809
     '\foo'         asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   810
     '\foo\'        asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   811
     '\foo\bar'     asFilename volume 
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   812
     '\foo\bar\'    asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   813
     'c:'           asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   814
     'c:\'          asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   815
     'c:\foo'       asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   816
     'c:\foo\'      asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   817
     'c:\foo\bar'   asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   818
     'c:\foo\bar\'  asFilename volume       
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   819
     'c:\foo\bar\'  asFilename localPathName   
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   820
     '\\idefix'          asFilename volume       
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   821
     '\\idefix\home'     asFilename volume   
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   822
     '\\idefix\home\foo' asFilename volume  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   823
     '\\idefix\home\foo' asFilename localPathName  
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   824
     "
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   825
949e67b19d6b volume handling.
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
   826
    "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
   827
! !
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   828
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   829
!PCFilename methodsFor:'special accessing'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   830
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   831
osNameForAccess
11001
737865de3757 avoid relative pathname when asking for fileInfo
Claus Gittinger <cg@exept.de>
parents: 10993
diff changeset
   832
    "/ mhmh - Win32operatingSystem gets confused, when we give it a relative name for fileInfo.
737865de3757 avoid relative pathname when asking for fileInfo
Claus Gittinger <cg@exept.de>
parents: 10993
diff changeset
   833
    (nameString startsWith:'..\') ifTrue:[
737865de3757 avoid relative pathname when asking for fileInfo
Claus Gittinger <cg@exept.de>
parents: 10993
diff changeset
   834
        ^ self pathName
737865de3757 avoid relative pathname when asking for fileInfo
Claus Gittinger <cg@exept.de>
parents: 10993
diff changeset
   835
    ].
14219
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   836
    ^ self osNameForFile
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   837
!
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   838
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   839
osNameForDirectory
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   840
    "special - return the OS's name for the receiver to
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   841
     access it as a directory.
3749
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   842
     Care remove trailing backSlashes here and to use the shortName
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   843
     if available"
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   844
14219
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   845
    |n|
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   846
14219
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   847
    n := self osNameForFile.
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   848
14219
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   849
    (n endsWith:'\') ifTrue:[
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   850
        ((n size == 3) and:[(n at:2) == $:]) ifFalse:[
15168
4a91a83bbe03 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 14234
diff changeset
   851
            n := n copyButLast:1
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   852
        ]
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   853
    ].
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   854
"/    i := OperatingSystem infoOf:n.
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   855
"/    (i notNil and:[(shortName := i alternativeName) notNil]) ifTrue:[
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   856
"/        ^ shortName
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   857
"/    ].
3749
3a9c6976dffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   858
    ^ n
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   859
3721
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   860
    "Modified: / 20.1.1998 / 15:39:06 / md"
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   861
    "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
   862
!
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   863
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   864
osNameForDirectoryContents
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   865
    "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
   866
     access it as a directory for reading the contents.
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   867
     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
   868
14219
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   869
    |name|
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   870
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   871
    name := self osNameForFile.
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   872
    (name endsWith:'\') ifTrue:[
15168
4a91a83bbe03 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 14234
diff changeset
   873
        ^ name copyButLast:1
3721
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   874
    ].
14219
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   875
    ^ name
3721
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   876
75e65b780e45 oops - need a kludge to read the top directory.
Claus Gittinger <cg@exept.de>
parents: 3708
diff changeset
   877
    "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
   878
    "Created: / 3.8.1998 / 21:37:46 / cg"
3765
82e1d3f99746 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3749
diff changeset
   879
    "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
   880
!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   881
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   882
osNameForFile
14219
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   883
    "internal - return the OS's name for the receiver to
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   884
     access it as a file."
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   885
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   886
    (nameString includes:$~) ifTrue:[
14219
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   887
        (nameString startsWith:'~') ifTrue:[
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   888
            ^ self class nameWithSpecialExpansions:nameString. 
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   889
        ].
14234
03350889d617 changed: #osNameForFile
Claus Gittinger <cg@exept.de>
parents: 14219
diff changeset
   890
        "/ self makeNonDOSName.
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   891
    ].
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   892
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   893
    ^ nameString
14234
03350889d617 changed: #osNameForFile
Claus Gittinger <cg@exept.de>
parents: 14219
diff changeset
   894
03350889d617 changed: #osNameForFile
Claus Gittinger <cg@exept.de>
parents: 14219
diff changeset
   895
    "Modified: / 21-07-2012 / 19:35:19 / cg"
7062
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   896
!
44e3fe28aea0 *** empty log message ***
penk
parents: 5826
diff changeset
   897
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   898
setName:aString
14219
94e162606bbc Fix the '~/dir/name' resolution fow windows
Stefan Vogel <sv@exept.de>
parents: 13816
diff changeset
   899
    "set the filename, convert unix directory separators to native separators"
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   900
15530
7c9276f2701f class: PCFilename
Claus Gittinger <cg@exept.de>
parents: 15226
diff changeset
   901
    nameString := aString copyReplaceAll:$/ with:$\
3570
2add251389dd md's changes
Claus Gittinger <cg@exept.de>
parents: 3511
diff changeset
   902
15530
7c9276f2701f class: PCFilename
Claus Gittinger <cg@exept.de>
parents: 15226
diff changeset
   903
    "Created: / 22-01-1998 / 17:32:45 / md"
7c9276f2701f class: PCFilename
Claus Gittinger <cg@exept.de>
parents: 15226
diff changeset
   904
    "Modified: / 16-07-2013 / 19:44:00 / cg"
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   905
! !
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   906
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   907
!PCFilename class methodsFor:'documentation'!
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   908
3336
0026cec000fd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3043
diff changeset
   909
version
15822
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   910
    ^ '$Header: /cvs/stx/stx/libbasic/PCFilename.st,v 1.61 2013-11-21 15:03:39 stefan Exp $'
12389
48fb228b0c67 changed: #isHidden
Claus Gittinger <cg@exept.de>
parents: 11805
diff changeset
   911
!
48fb228b0c67 changed: #isHidden
Claus Gittinger <cg@exept.de>
parents: 11805
diff changeset
   912
48fb228b0c67 changed: #isHidden
Claus Gittinger <cg@exept.de>
parents: 11805
diff changeset
   913
version_CVS
15822
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   914
    ^ '$Header: /cvs/stx/stx/libbasic/PCFilename.st,v 1.61 2013-11-21 15:03:39 stefan Exp $'
13619
005855bd677c Fixes for #canExecuteCommand:
vrany
parents: 13321
diff changeset
   915
!
005855bd677c Fixes for #canExecuteCommand:
vrany
parents: 13321
diff changeset
   916
005855bd677c Fixes for #canExecuteCommand:
vrany
parents: 13321
diff changeset
   917
version_SVN
15822
3fc626394707 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 15530
diff changeset
   918
    ^ '$Id: PCFilename.st,v 1.61 2013-11-21 15:03:39 stefan Exp $'
3708
27a62fa7b5bb in #isVolumeAbsolute: care for filenames of the form: \hostname
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
   919
! !
15168
4a91a83bbe03 class: PCFilename
Stefan Vogel <sv@exept.de>
parents: 14234
diff changeset
   920