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