FileDirectory.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 22 Sep 2015 16:28:42 +0100
branchjv
changeset 18759 c1217211909c
parent 18084 ab5b38bd8f81
permissions -rw-r--r--
Changed identification strings to contain jv-branch ...to make explicit that this distribution is not the official one used by eXept and therefore that eXept is not to be blamed in case of any problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     1
"
5
67342904af11 *** empty log message ***
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1989 by Claus Gittinger
172
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
     3
	      All Rights Reserved
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     4
a27a279701f8 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
a27a279701f8 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
a27a279701f8 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
a27a279701f8 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
a27a279701f8 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
a27a279701f8 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    11
"
5556
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
    12
"{ Package: 'stx:libbasic' }"
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
    13
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    14
Collection subclass:#FileDirectory
1290
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    15
	instanceVariableNames:'pathName lazy'
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    16
	classVariableNames:'PathOfCurrentDirectory'
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    17
	poolDictionaries:''
15631
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
    18
	category:'Compatibility-Squeak'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    19
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    20
12351
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
    21
ArrayedCollection subclass:#DirectoryEntry
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
    22
	instanceVariableNames:'name creationTime modificationTime dirFlag fileSize'
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
    23
	classVariableNames:''
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
    24
	poolDictionaries:''
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
    25
	privateIn:FileDirectory
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
    26
!
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
    27
88
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    28
!FileDirectory class methodsFor:'documentation'!
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    29
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    30
copyright
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    31
"
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    32
 COPYRIGHT (c) 1989 by Claus Gittinger
172
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
    33
	      All Rights Reserved
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    34
88
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    35
 This software is furnished under a license and may be used
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    36
 only in accordance with the terms of that license and with the
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    37
 inclusion of the above copyright notice.   This software may not
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    38
 be provided or otherwise made available to, or used by, any
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    39
 other person.  No title to or ownership of the software is
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    40
 hereby transferred.
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    41
"
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    42
!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    43
88
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    44
documentation
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    45
"
3203
09a9b6bde8af Moved into category 'Obsolete'.
Stefan Vogel <sv@exept.de>
parents: 3201
diff changeset
    46
    Notice:
09a9b6bde8af Moved into category 'Obsolete'.
Stefan Vogel <sv@exept.de>
parents: 3201
diff changeset
    47
        This class is obsolete and does work only under UNIX. 
15631
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
    48
        Use Filename instead. It is left here for squeak compatibility.
3203
09a9b6bde8af Moved into category 'Obsolete'.
Stefan Vogel <sv@exept.de>
parents: 3201
diff changeset
    49
09a9b6bde8af Moved into category 'Obsolete'.
Stefan Vogel <sv@exept.de>
parents: 3201
diff changeset
    50
        This class is not available in other ST-systems;
15631
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
    51
        in contrast, VisualWorks provides a Filename class.
3203
09a9b6bde8af Moved into category 'Obsolete'.
Stefan Vogel <sv@exept.de>
parents: 3201
diff changeset
    52
        Therefore, Filename has taken over the functionality.
09a9b6bde8af Moved into category 'Obsolete'.
Stefan Vogel <sv@exept.de>
parents: 3201
diff changeset
    53
88
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    54
    FileDirectories represent directories in the underlying host system.
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    55
    They provide various methods to create/delete and query for files and/or
202
40ca7cc6fb9c *** empty log message ***
claus
parents: 172
diff changeset
    56
    directories. Also, since FileDirectory inherits from Collection, it
40ca7cc6fb9c *** empty log message ***
claus
parents: 172
diff changeset
    57
    provides all enumeration and testing protocol. For example, you can
40ca7cc6fb9c *** empty log message ***
claus
parents: 172
diff changeset
    58
    loop over the filenames in a directory using 'aFileDirectory do:[:nm | ...]'.
40ca7cc6fb9c *** empty log message ***
claus
parents: 172
diff changeset
    59
1290
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    60
    [author:]
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    61
        Claus Gittinger
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    62
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    63
    [see also:]
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    64
        Filename
15ba3221b89b documentation
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    65
        FileStream DirectoryStream OperatingSystem
88
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    66
"
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    67
! !
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    68
2
claus
parents: 1
diff changeset
    69
!FileDirectory class methodsFor:'initialization'!
claus
parents: 1
diff changeset
    70
claus
parents: 1
diff changeset
    71
initialize
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
    72
    "/
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
    73
    "/ want to know about image restart
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
    74
    "/
2
claus
parents: 1
diff changeset
    75
    ObjectMemory addDependent:self
claus
parents: 1
diff changeset
    76
!
claus
parents: 1
diff changeset
    77
1469
570ef7f8667b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1290
diff changeset
    78
update:something with:aParameter from:changedObject
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
    79
    "/
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
    80
    "/ currentDirectory may be different when restarted
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
    81
    "/
3941
574defdaaa40 flush cached current-dir-path earlier.
Claus Gittinger <cg@exept.de>
parents: 3203
diff changeset
    82
    something == #earlySystemInstallation ifTrue:[
1469
570ef7f8667b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1290
diff changeset
    83
        PathOfCurrentDirectory := nil
2
claus
parents: 1
diff changeset
    84
    ]
1469
570ef7f8667b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1290
diff changeset
    85
3941
574defdaaa40 flush cached current-dir-path earlier.
Claus Gittinger <cg@exept.de>
parents: 3203
diff changeset
    86
    "Created: / 15.6.1996 / 15:20:21 / cg"
574defdaaa40 flush cached current-dir-path earlier.
Claus Gittinger <cg@exept.de>
parents: 3203
diff changeset
    87
    "Modified: / 11.12.1998 / 16:28:40 / cg"
2
claus
parents: 1
diff changeset
    88
! !
claus
parents: 1
diff changeset
    89
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    90
!FileDirectory class methodsFor:'instance creation'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    91
a27a279701f8 Initial revision
claus
parents:
diff changeset
    92
currentDirectory
a27a279701f8 Initial revision
claus
parents:
diff changeset
    93
    "create and return a new FileDirectory for the current directory"
a27a279701f8 Initial revision
claus
parents:
diff changeset
    94
2951
256e90eee7f9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2921
diff changeset
    95
    "/ self obsoleteMethodWarning:'use Filename'.
13615
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
    96
    ^ self on:(Filename currentDirectory name)
88
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    97
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    98
    "
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
    99
     FileDirectory currentDirectory contents
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
   100
     FileDirectory currentDirectory files
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
   101
     FileDirectory currentDirectory isReadable
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
   102
     FileDirectory currentDirectory pathName
81dacba7a63a *** empty log message ***
claus
parents: 54
diff changeset
   103
    "
13615
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   104
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   105
    "Modified: / 20-08-2011 / 12:19:51 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   106
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   107
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   108
directoryNamed:name
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   109
    "create and return a new FileDirectory for the directory
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   110
     with given pathname"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   111
2951
256e90eee7f9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2921
diff changeset
   112
    "/ self obsoleteMethodWarning:'use Filename'.
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   113
    name asString = '.' ifTrue:[
13615
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   114
        Filename currentDirectory name ~= '.' ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   115
            ^ self currentDirectory
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   116
        ]
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   117
    ].
13615
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   118
    ^ self on:(name asFilename constructString:'')
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   119
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   120
    "
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   121
     (FileDirectory directoryNamed:'..') pathName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   122
     (FileDirectory directoryNamed:'../..') files
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   123
    "
13615
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   124
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   125
    "Modified: / 20-08-2011 / 12:19:57 / cg"
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   126
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   127
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   128
directoryNamed:name in:aFileDirectory
a27a279701f8 Initial revision
claus
parents:
diff changeset
   129
    "create and return a new FileDirectory for the directory with given name
a27a279701f8 Initial revision
claus
parents:
diff changeset
   130
     in another FileDirectory"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   131
2961
a188727d0619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2951
diff changeset
   132
    |baseName|
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   133
2951
256e90eee7f9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2921
diff changeset
   134
    "/ self obsoleteMethodWarning:'use Filename'.
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   135
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   136
    name asFilename isAbsolute ifTrue:[
2590
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   137
        ^ self directoryNamed:name
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   138
    ].
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   139
    
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   140
    (aFileDirectory isKindOf:FileDirectory) ifTrue:[
2590
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   141
        baseName := aFileDirectory pathName
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   142
    ] ifFalse:[
2590
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   143
        baseName := aFileDirectory
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   144
    ].
13615
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   145
    ^ self on:((Filename named:baseName) constructString:name)
2590
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   146
13615
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   147
    "Modified: / 28-04-1997 / 22:34:47 / dq"
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   148
    "Modified: / 20-08-2011 / 12:20:03 / cg"
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   149
!
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   150
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   151
on:aDirectoryPathName
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   152
    ^ (self basicNew) pathName:aDirectoryPathName
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   153
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   154
    "Created: / 20-08-2011 / 12:19:28 / cg"
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   155
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   156
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   157
rootDirectory
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   158
    "create and return a new FileDirectory for the root directory"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   159
2951
256e90eee7f9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2921
diff changeset
   160
    "/ self obsoleteMethodWarning:'use Filename'.
13615
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   161
    ^ self on:(Filename rootDirectory name)
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   162
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   163
    "
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   164
     FileDirectory rootDirectory contents
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   165
     FileDirectory rootDirectory files
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   166
     FileDirectory rootDirectory isReadable
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   167
    "
13615
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   168
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   169
    "Modified: / 20-08-2011 / 12:20:09 / cg"
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   170
! !
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   171
7305
260bd0e93817 category
Claus Gittinger <cg@exept.de>
parents: 6972
diff changeset
   172
!FileDirectory class methodsFor:'Compatibility-Squeak'!
5729
63af78505f23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5556
diff changeset
   173
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   174
default
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   175
    ^ (self basicNew) pathName:(Filename defaultDirectory name)
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   176
!
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   177
5777
69a22679b0af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5729
diff changeset
   178
localNameFor:aFileNameString
69a22679b0af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5729
diff changeset
   179
    ^ aFileNameString asFilename baseName
69a22679b0af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5729
diff changeset
   180
!
69a22679b0af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5729
diff changeset
   181
5729
63af78505f23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5556
diff changeset
   182
pathNameDelimiter
63af78505f23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5556
diff changeset
   183
    ^ Filename separator
13615
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   184
!
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   185
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   186
slash
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   187
    ^ Filename separator asString
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   188
Claus Gittinger <cg@exept.de>
parents: 12351
diff changeset
   189
    "Created: / 20-08-2011 / 12:18:27 / cg"
5729
63af78505f23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5556
diff changeset
   190
! !
63af78505f23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5556
diff changeset
   191
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   192
!FileDirectory class methodsFor:'private'!
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   193
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   194
fullPathNameOf:name in:path
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   195
    |sep|
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   196
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   197
    sep := OperatingSystem fileSeparator asString.
2590
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   198
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   199
    "/ is it an absolute path ?
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   200
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   201
    (name startsWith:sep) ifTrue:[
2590
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   202
        ^ name
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   203
    ].
2590
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   204
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   205
    "/ temporary kludge; this and the previous should
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   206
    "/ go into OS isAbsolutePath ..
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   207
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   208
    OperatingSystem isMSDOSlike ifTrue:[
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   209
        ('[a-zA-Z]:*' match:name) ifTrue:[
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   210
            "/ drive spec ...
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   211
            ^ name
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   212
        ]
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   213
    ].                  
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   214
    ^ path , sep , name
2590
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   215
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   216
    "Modified: 28.4.1997 / 22:06:17 / cg"
6855cfa1e628 temporary kludge for drive specifiers in MSDOS fileNames.
Claus Gittinger <cg@exept.de>
parents: 1469
diff changeset
   217
    "Modified: 28.4.1997 / 22:34:18 / dq"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   218
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   219
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   220
!FileDirectory methodsFor:'Compatibility-Squeak'!
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   221
11816
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   222
assureExistence
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   223
    self asFilename recursiveMakeDirectory
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   224
!
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   225
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   226
containingDirectory
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   227
    ^ self class
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   228
        directoryNamed:(self asFilename directory pathName)
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   229
!
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   230
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   231
deleteDirectory:dirName
9332
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   232
    "Squeak/ST80 compatibility"
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   233
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   234
    ^ self removeDirectory:dirName
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   235
!
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   236
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   237
deleteFileNamed:fileName
9332
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   238
    "Squeak/ST80 compatibility"
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   239
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   240
    ^ self removeFile:fileName
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   241
!
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   242
12351
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   243
directoryEntryFor:name
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   244
    |info|
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   245
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   246
    info := self infoOf:name.
13620
e38a8ec52cd9 changed: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 13615
diff changeset
   247
    info isNil ifTrue:[
e38a8ec52cd9 changed: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 13615
diff changeset
   248
        info := (self filenameFor:name) linkInfo.
e38a8ec52cd9 changed: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 13615
diff changeset
   249
    ].
12351
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   250
    ^ DirectoryEntry new
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   251
        name:name
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   252
        creationTime:(info creationTime)
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   253
        modificationTime:(info modificationTime)
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   254
        dirFlag:(info isDirectory)
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   255
        fileSize:(info isDirectory)
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   256
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   257
    "
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   258
     (FileDirectory directoryNamed:'.') entries
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   259
    "
13620
e38a8ec52cd9 changed: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 13615
diff changeset
   260
e38a8ec52cd9 changed: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 13615
diff changeset
   261
    "Modified: / 29-08-2011 / 08:19:48 / cg"
12351
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   262
!
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   263
9332
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   264
directoryExists:dir
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   265
    "Squeak/ST80 compatibility"
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   266
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   267
    |f|
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   268
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   269
    f := self filenameFor:dir.
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   270
    ^ f exists and:[f isDirectory ].
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   271
!
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   272
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   273
directoryNames
9332
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   274
    "Squeak/ST80 compatibility"
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   275
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   276
    ^ self directories
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   277
!
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   278
11816
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   279
entries
12351
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   280
    ^ self contents collect:[:nm | self directoryEntryFor:nm].
11816
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   281
!
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   282
9334
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   283
fileExists:dir
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   284
    "Squeak/ST80 compatibility"
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   285
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   286
    |f|
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   287
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   288
    f := self filenameFor:dir.
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   289
    ^ f exists and:[f isDirectory not ].
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   290
!
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   291
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   292
fileNames
9332
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   293
    "Squeak/ST80 compatibility"
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   294
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   295
    ^ self files
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   296
!
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   297
11816
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   298
forceNewFileNamed:fn
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   299
    "Squeak/ST80 compatibility"
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   300
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   301
    |f|
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   302
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   303
    f := self filenameFor:fn.
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   304
    ^ f writeStream
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   305
!
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   306
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   307
includesKey:name
9332
01b7123072b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7655
diff changeset
   308
    "Squeak/ST80 compatibility"
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   309
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   310
    ^ self exists:name
11816
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   311
!
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   312
15631
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   313
oldFileNamed:fn
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   314
    "Squeak/ST80 compatibility"
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   315
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   316
    |f|
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   317
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   318
    f := self filenameFor:fn.
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   319
    ^ f readStream
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   320
!
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   321
11816
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   322
readOnlyFileNamed:fn
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   323
    "Squeak/ST80 compatibility"
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   324
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   325
    |f|
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   326
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   327
    f := self filenameFor:fn.
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   328
    ^ f readStream
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   329
!
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   330
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   331
recursiveDelete
7d1d476d74cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9334
diff changeset
   332
    self asFilename recursiveRemove
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   333
! !
7305
260bd0e93817 category
Claus Gittinger <cg@exept.de>
parents: 6972
diff changeset
   334
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   335
!FileDirectory methodsFor:'accessing'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   336
a27a279701f8 Initial revision
claus
parents:
diff changeset
   337
baseName
a27a279701f8 Initial revision
claus
parents:
diff changeset
   338
    "return my baseName
a27a279701f8 Initial revision
claus
parents:
diff changeset
   339
     - thats the directory name without leading parent-dirs"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   340
a27a279701f8 Initial revision
claus
parents:
diff changeset
   341
    lazy ifTrue:[self getFullPathName].
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   342
    ^ pathName asFilename baseName
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   343
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   344
a27a279701f8 Initial revision
claus
parents:
diff changeset
   345
contents 
2708
6c4a4f30d540 skip '.' and '..' in #contents
Claus Gittinger <cg@exept.de>
parents: 2590
diff changeset
   346
    "return a collection with all files and subdirectories in the receiver.
6c4a4f30d540 skip '.' and '..' in #contents
Claus Gittinger <cg@exept.de>
parents: 2590
diff changeset
   347
     Skips any '.' or '..' entries (UNIX)"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   348
a27a279701f8 Initial revision
claus
parents:
diff changeset
   349
    |coll|
a27a279701f8 Initial revision
claus
parents:
diff changeset
   350
a27a279701f8 Initial revision
claus
parents:
diff changeset
   351
    coll := OrderedCollection new.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   352
    self do:[:name |
2708
6c4a4f30d540 skip '.' and '..' in #contents
Claus Gittinger <cg@exept.de>
parents: 2590
diff changeset
   353
        name ~= '.' ifTrue:[
6c4a4f30d540 skip '.' and '..' in #contents
Claus Gittinger <cg@exept.de>
parents: 2590
diff changeset
   354
            name ~= '..' ifTrue:[
6c4a4f30d540 skip '.' and '..' in #contents
Claus Gittinger <cg@exept.de>
parents: 2590
diff changeset
   355
                coll add:name
6c4a4f30d540 skip '.' and '..' in #contents
Claus Gittinger <cg@exept.de>
parents: 2590
diff changeset
   356
            ]
6c4a4f30d540 skip '.' and '..' in #contents
Claus Gittinger <cg@exept.de>
parents: 2590
diff changeset
   357
        ]
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   358
    ].
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   359
    coll sort.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   360
    ^ coll
2708
6c4a4f30d540 skip '.' and '..' in #contents
Claus Gittinger <cg@exept.de>
parents: 2590
diff changeset
   361
6c4a4f30d540 skip '.' and '..' in #contents
Claus Gittinger <cg@exept.de>
parents: 2590
diff changeset
   362
    "Modified: 20.6.1997 / 17:05:43 / cg"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   363
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   364
a27a279701f8 Initial revision
claus
parents:
diff changeset
   365
directories
a27a279701f8 Initial revision
claus
parents:
diff changeset
   366
    "return a collection with all subdirectories in the receiver directory"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   367
a27a279701f8 Initial revision
claus
parents:
diff changeset
   368
    |coll|
a27a279701f8 Initial revision
claus
parents:
diff changeset
   369
a27a279701f8 Initial revision
claus
parents:
diff changeset
   370
    coll := OrderedCollection new.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   371
    self directoriesDo:[:name |
172
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   372
	coll add:name
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   373
    ].
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   374
    coll sort.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   375
    ^ coll
a27a279701f8 Initial revision
claus
parents:
diff changeset
   376
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   377
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   378
directoryName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   379
    "return my directoryName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   380
     - thats the directory name where I'm in"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   381
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   382
    lazy ifTrue:[self getFullPathName].
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   383
    ^ pathName asFilename directoryName
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   384
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   385
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   386
files
a27a279701f8 Initial revision
claus
parents:
diff changeset
   387
    "return a collection with all plain files in the receiver directory"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   388
a27a279701f8 Initial revision
claus
parents:
diff changeset
   389
    |coll|
a27a279701f8 Initial revision
claus
parents:
diff changeset
   390
a27a279701f8 Initial revision
claus
parents:
diff changeset
   391
    coll := OrderedCollection new.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   392
    self filesDo:[:name |
172
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   393
	coll add:name
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   394
    ].
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   395
    coll sort.
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   396
    ^ coll
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   397
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   398
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   399
pathName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   400
    "return my full pathname"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   401
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   402
    lazy ifTrue:[self getFullPathName].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   403
    ^ pathName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   404
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   405
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   406
pathName:dirName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   407
    "set my pathname; return nil if not a valid path; self otherwise"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   408
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   409
    pathName := dirName.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   410
    (dirName startsWith:OperatingSystem fileSeparator) ifFalse:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   411
	lazy := true
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   412
    ] ifTrue:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   413
	(dirName startsWith:'./') ifFalse:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   414
"/        (dirName includes:$.) ifTrue:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   415
	    lazy := true
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   416
	]
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   417
    ].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   418
    ^ self
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   419
! !
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   420
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   421
!FileDirectory methodsFor:'basic'!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   422
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   423
createDirectory:newName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   424
    "create a new filedirectory as a subdirectory of myself;
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   425
     return true if successful"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   426
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   427
    |realName|
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   428
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   429
    (newName notNil and:[newName notEmpty]) ifTrue:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   430
	(newName ~= '.' and:[newName ~= '..']) ifTrue:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   431
	    ((newName at:1) == OperatingSystem fileSeparator) ifTrue:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   432
		realName := newName copyFrom:2
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   433
	    ] ifFalse:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   434
		realName := newName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   435
	    ].
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   436
	    ^ (self filenameFor:realName) makeDirectory
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   437
	]
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   438
    ].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   439
    ^ false
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   440
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   441
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   442
link:oldFileName to:newFileName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   443
    "link oldFileName to newFileName in myself, return true if successful"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   444
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   445
    |path1 path2|
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   446
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   447
    path1 := self pathNameOf:oldFileName.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   448
    path2 := self pathNameOf:newFileName.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   449
    ^ OperatingSystem linkFile:path1 to:path2
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   450
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   451
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   452
remove:aFileOrDirectoryName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   453
    "remove the file or directory from myself; return true if successful"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   454
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   455
    ^ (self filenameFor:aFileOrDirectoryName) remove
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   456
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   457
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   458
removeDirectory:dirName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   459
    "remove the directory 'dirName' from myself; return true if successful.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   460
     If the directory is not empty, the containing files/directories are also
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   461
     removed."
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   462
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   463
    ^ (self filenameFor:dirName) recursiveRemove
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   464
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   465
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   466
removeFile:fileName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   467
    "remove the file 'fileName' from myself; return true if successful"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   468
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   469
    ^ (self filenameFor:fileName) remove
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   470
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   471
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   472
renameFile:oldFileName newName:newFileName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   473
    "rename the file; return true if successful"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   474
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   475
    |f1 f2|
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   476
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   477
    f1 := self filenameFor:oldFileName.
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   478
    f2 := self filenameFor:newFileName.
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   479
    ^ f1 renameTo:f2
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   480
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   481
172
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   482
!FileDirectory methodsFor:'converting'!
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   483
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   484
asFilename
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   485
    "return myself as a filename"
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   486
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   487
    ^ self pathName asFilename
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   488
!
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   489
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   490
asFilename:someFile
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   491
    "return a filename for a file named someFile in myself"
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   492
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   493
    ^ self asFilename construct:someFile
172
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   494
! !
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   495
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   496
!FileDirectory methodsFor:'enumerating'!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   497
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   498
allDirectoriesDo:aBlock
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   499
    "evaluate the argument, aBlock for every directory name
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   500
     in the directory and in all subdirectories"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   501
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   502
    |aStream command line|
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   503
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   504
    lazy ifTrue:[self getFullPathName].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   505
    command := 'cd ' , pathName , '; find . -type d -print'.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   506
    aStream := PipeStream readingFrom:command.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   507
    aStream isNil ifTrue:[^ nil].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   508
    [aStream atEnd] whileFalse:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   509
	line := aStream nextLine.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   510
	line notNil ifTrue:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   511
	    (line = '.') ifFalse:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   512
		"cut off initial ./"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   513
		line := line copyFrom:3
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   514
	    ].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   515
	    aBlock value:line
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   516
	]
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   517
    ].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   518
    aStream close
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   519
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   520
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   521
allFilesDo:aBlock
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   522
    "evaluate the argument, aBlock for every file name in the directory and in all
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   523
     subdirectories"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   524
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   525
    |aStream command line|
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   526
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   527
    lazy ifTrue:[self getFullPathName].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   528
    command := 'cd ' , pathName , '; find . -print'.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   529
    aStream := PipeStream readingFrom:command.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   530
    aStream isNil ifTrue:[^ nil].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   531
    [aStream atEnd] whileFalse:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   532
	line := aStream nextLine.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   533
	line notNil ifTrue:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   534
	    (line = '.') ifFalse:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   535
		"cut off initial ./"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   536
		line := line copyFrom:3
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   537
	    ].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   538
	    aBlock value:line
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   539
	]
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   540
    ].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   541
    aStream close
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   542
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   543
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   544
directoriesDo:aBlock
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   545
    "evaluate the argument, aBlock for every subdirectory name in the directory"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   546
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   547
    self where:[:name | (self isDirectory:name) ifTrue:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   548
			    ((name ~= '.') and:[name ~= '..'])
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   549
			] ifFalse:[
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   550
			    false
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   551
			]
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   552
	       ] do:aBlock
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   553
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   554
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   555
do:aBlock
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   556
    "evaluate the argument, aBlock for every name in the directory"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   557
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   558
    self where:[:name | true] do:aBlock
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   559
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   560
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   561
filesDo:aBlock
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   562
    "evaluate the argument, aBlock for every plain file name in the directory"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   563
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   564
    self where:[:name | (self isDirectory:name) not] do:aBlock
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   565
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   566
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   567
namesDo:aBlock
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   568
    "evaluate the argument, aBlock for every name in the directory.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   569
     for ST-80 compatibility"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   570
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   571
    self do:aBlock
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   572
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   573
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   574
where:testBlock do:aBlock
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   575
    "evaluate the argument, aBlock for every object in the directory
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   576
     for which testBlock evaluates to true."
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   577
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   578
    |aStream name|
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   579
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   580
    ExternalStream openErrorSignal catch:[
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   581
        aStream := DirectoryStream directoryNamed:pathName.
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   582
    ].
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   583
    aStream isNil ifTrue:[^ nil].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   584
    [aStream atEnd] whileFalse:[
7655
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   585
        name := aStream nextLine.
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   586
        name notNil ifTrue:[
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   587
            (testBlock value:name) ifTrue:[
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   588
                aBlock value:name
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   589
            ]
a0f603816b20 compatibility
Claus Gittinger <cg@exept.de>
parents: 7305
diff changeset
   590
        ]
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   591
    ].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   592
    aStream close
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   593
! !
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   594
14332
24dcfd3da954 category of: #directoryNamed:
Claus Gittinger <cg@exept.de>
parents: 13821
diff changeset
   595
!FileDirectory methodsFor:'instance creation'!
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   596
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   597
directoryNamed:aName
2961
a188727d0619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2951
diff changeset
   598
    "create & return a new fileDirectory for a subdirectory in myself"
a188727d0619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2951
diff changeset
   599
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   600
    ^ self class directoryNamed:aName in:self pathName
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   601
! !
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   602
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   603
!FileDirectory methodsFor:'printing & storing'!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   604
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   605
printOn:aStream
4392
26fb48f04e1b comment
Claus Gittinger <cg@exept.de>
parents: 3941
diff changeset
   606
    "append a user printed representation of the receiver to aStream.
26fb48f04e1b comment
Claus Gittinger <cg@exept.de>
parents: 3941
diff changeset
   607
     The format is suitable for a human - not meant to be read back."
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   608
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   609
    lazy ifTrue:[self getFullPathName].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   610
    aStream nextPutAll:'(a FileDirectory pathName:';
4392
26fb48f04e1b comment
Claus Gittinger <cg@exept.de>
parents: 3941
diff changeset
   611
            nextPutAll:pathName;
26fb48f04e1b comment
Claus Gittinger <cg@exept.de>
parents: 3941
diff changeset
   612
            nextPutAll:')'
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   613
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   614
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   615
storeOn:aStream
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   616
    "append a printed representation of the receiver to aStream,
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   617
     which allows reconstructing it via readFrom:"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   618
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   619
    lazy ifTrue:[self getFullPathName].
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   620
    aStream nextPutAll:'(FileDirectory directoryNamed:'.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   621
    aStream nextPutAll:pathName.
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   622
    aStream nextPut:$)
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   623
! !
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   624
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   625
!FileDirectory methodsFor:'private'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   626
3201
4e72e420fdc3 Documentation: FileDirectory is obsolete and works only under Unix.
Stefan Vogel <sv@exept.de>
parents: 2961
diff changeset
   627
filenameFor:fileName
6972
0a2f38d186d5 filenameFor: same algorithm found in Filename
Claus Gittinger <cg@exept.de>
parents: 6550
diff changeset
   628
    "return a filename representing the argument, fileName
0a2f38d186d5 filenameFor: same algorithm found in Filename
Claus Gittinger <cg@exept.de>
parents: 6550
diff changeset
   629
     either in myself (if the arg is a releative path) or absolute otherwise."
3201
4e72e420fdc3 Documentation: FileDirectory is obsolete and works only under Unix.
Stefan Vogel <sv@exept.de>
parents: 2961
diff changeset
   630
6972
0a2f38d186d5 filenameFor: same algorithm found in Filename
Claus Gittinger <cg@exept.de>
parents: 6550
diff changeset
   631
    ^ pathName asFilename filenameFor:fileName
3201
4e72e420fdc3 Documentation: FileDirectory is obsolete and works only under Unix.
Stefan Vogel <sv@exept.de>
parents: 2961
diff changeset
   632
!
4e72e420fdc3 Documentation: FileDirectory is obsolete and works only under Unix.
Stefan Vogel <sv@exept.de>
parents: 2961
diff changeset
   633
9334
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   634
fullNameFor:fileName
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   635
    "return a filename representing the argument, fileName
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   636
     either in myself (if the arg is a releative path) or absolute otherwise."
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   637
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   638
    ^ (pathName asFilename filenameFor:fileName) asAbsoluteFilename
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   639
!
c46a6c457feb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 9332
diff changeset
   640
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   641
getFullPathName
a27a279701f8 Initial revision
claus
parents:
diff changeset
   642
    "make my pathname be a full pathname - i.e. starting at root"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   643
308
f04744ef7b5d *** empty log message ***
claus
parents: 276
diff changeset
   644
    |shortPathName|
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   645
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   646
159
514c749165c3 *** empty log message ***
claus
parents: 92
diff changeset
   647
    (pathName = OperatingSystem fileSeparator asString) ifTrue:[
172
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   648
	lazy := false.
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   649
	^ self
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   650
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   651
a27a279701f8 Initial revision
claus
parents:
diff changeset
   652
    "since currentDirectory is used very often, cache its path here"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   653
a27a279701f8 Initial revision
claus
parents:
diff changeset
   654
    (pathName = '.') ifTrue:[
172
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   655
	PathOfCurrentDirectory notNil ifTrue:[
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   656
	    pathName := PathOfCurrentDirectory.
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   657
	    lazy := false.
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   658
	    ^ self
52750f9c44de *** empty log message ***
claus
parents: 159
diff changeset
   659
	]
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   660
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   661
a27a279701f8 Initial revision
claus
parents:
diff changeset
   662
    shortPathName := pathName.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   663
308
f04744ef7b5d *** empty log message ***
claus
parents: 276
diff changeset
   664
    pathName := OperatingSystem pathNameOf:pathName.
f04744ef7b5d *** empty log message ***
claus
parents: 276
diff changeset
   665
    lazy := false.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   666
308
f04744ef7b5d *** empty log message ***
claus
parents: 276
diff changeset
   667
    "
f04744ef7b5d *** empty log message ***
claus
parents: 276
diff changeset
   668
     if it was the current dir, keep name for next query
f04744ef7b5d *** empty log message ***
claus
parents: 276
diff changeset
   669
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   670
    (shortPathName = '.') ifTrue:[
308
f04744ef7b5d *** empty log message ***
claus
parents: 276
diff changeset
   671
	PathOfCurrentDirectory := pathName
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   672
    ]
276
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   673
!
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   674
3b6d97620494 *** empty log message ***
claus
parents: 202
diff changeset
   675
pathNameOf:fileName
2961
a188727d0619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2951
diff changeset
   676
    "return the pathname for an entry in myself"
a188727d0619 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2951
diff changeset
   677
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   678
    ^ (pathName asFilename construct:fileName) osName
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   679
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   680
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   681
!FileDirectory methodsFor:'queries'!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   682
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   683
accessModeOf:name
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   684
    "return the access-mode bits (rwxrwxrwx) of a file in myself"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   685
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   686
    ^ OperatingSystem accessModeOf:(self pathNameOf:name)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   687
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   688
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   689
changeAccessModeOf:name to:modeBits
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   690
    "set the access-mode bits (rwxrwxrwx) of a file in myself"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   691
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   692
    ^ OperatingSystem changeAccessModeOf:(self pathNameOf:name) to:modeBits
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   693
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   694
a27a279701f8 Initial revision
claus
parents:
diff changeset
   695
exists
a27a279701f8 Initial revision
claus
parents:
diff changeset
   696
    "return true if this directory exists"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   697
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   698
    ^ (Filename named:pathName) isDirectory
159
514c749165c3 *** empty log message ***
claus
parents: 92
diff changeset
   699
514c749165c3 *** empty log message ***
claus
parents: 92
diff changeset
   700
    "
514c749165c3 *** empty log message ***
claus
parents: 92
diff changeset
   701
     (FileDirectory directoryNamed:'fooBar') exists
514c749165c3 *** empty log message ***
claus
parents: 92
diff changeset
   702
     (FileDirectory directoryNamed:'/tmp') exists
514c749165c3 *** empty log message ***
claus
parents: 92
diff changeset
   703
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   704
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   705
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   706
exists:name
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   707
    "return true, if the given name exists in myself"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   708
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   709
    ^ (self filenameFor:name) exists
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   710
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   711
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   712
id
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   713
    "return the directories file-id (inode number)"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   714
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   715
    ^ (Filename named:pathName) id
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   716
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   717
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   718
infoOf:name
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   719
    "return an array filled with file info for the file 'aFileName';
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   720
     return nil if such a file does not exist"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   721
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   722
    ^ (self filenameFor:name) info
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   723
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   724
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   725
isDirectory:name
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   726
    "return true, if the given name is that of a directory in myself"
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   727
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   728
    ^ (self filenameFor:name) isDirectory
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   729
!
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   730
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   731
isExecutable:name
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   732
    "return true, if the given file is executable"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   733
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   734
    ^ (self filenameFor:name) isExecutable
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   735
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   736
a27a279701f8 Initial revision
claus
parents:
diff changeset
   737
isReadable:name
a27a279701f8 Initial revision
claus
parents:
diff changeset
   738
    "return true, if the given file is readable"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   739
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   740
    ^ (self filenameFor:name) isReadable
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   741
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   742
a27a279701f8 Initial revision
claus
parents:
diff changeset
   743
isWritable:name
a27a279701f8 Initial revision
claus
parents:
diff changeset
   744
    "return true, if the given file is readable"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   745
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   746
    ^ (self filenameFor:name) isWritable
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   747
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   748
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   749
species
6550
adb966d9afc9 comment
Claus Gittinger <cg@exept.de>
parents: 5777
diff changeset
   750
    "return the type of collection to be returned by collect, select etc."
adb966d9afc9 comment
Claus Gittinger <cg@exept.de>
parents: 5777
diff changeset
   751
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   752
    ^ OrderedCollection
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   753
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   754
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   755
timeOfLastChange
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   756
    "return the timeStamp of myself"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   757
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   758
    ^ (Filename named:pathName) modificationTime
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   759
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   760
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   761
timeOfLastChange:name
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   762
    "return the timeStamp of a file in myself"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   763
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   764
    ^ (self filenameFor:name) modificationTime
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   765
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   766
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   767
typeOf:name
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   768
    "return the symbolic type of a file in myself"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   769
2921
f42da059311e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2859
diff changeset
   770
    ^ (self filenameFor:name) type
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   771
! !
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   772
5556
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   773
!FileDirectory methodsFor:'testing'!
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   774
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   775
isEmpty
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   776
    "return true, if the directory is empty;
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   777
     redefined since '.' and '..' do not count as entries here."
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   778
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   779
    self do:[:fName |
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   780
	((fName ~= '.') and:[fName ~= '..']) ifTrue:[^ false].
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   781
    ].
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   782
    ^ true
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   783
! !
1056cc5d6ce0 category change
Claus Gittinger <cg@exept.de>
parents: 4392
diff changeset
   784
12351
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   785
!FileDirectory::DirectoryEntry methodsFor:'accessing'!
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   786
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   787
at: index
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   788
    "compatibility interface"
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   789
    "self halt: 'old-style access to DirectoryEntry'"
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   790
    index = 1 ifTrue: [ ^self name ].
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   791
    index = 2 ifTrue: [ ^self creationTime ].
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   792
    index = 3 ifTrue: [ ^self modificationTime ].
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   793
    index = 4 ifTrue:[ ^self isDirectory ].
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   794
    index = 5 ifTrue:[ ^self fileSize ].
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   795
    self error: 'invalid index specified'.
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   796
!
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   797
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   798
creationTime
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   799
    ^ creationTime
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   800
!
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   801
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   802
dirFlag
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   803
    ^ dirFlag
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   804
!
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   805
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   806
fileSize
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   807
    ^ fileSize
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   808
!
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   809
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   810
modificationTime
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   811
    ^ modificationTime
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   812
!
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   813
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   814
name
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   815
    ^ name
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   816
!
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   817
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   818
name:nameArg creationTime:creationTimeArg modificationTime:modificationTimeArg dirFlag:dirFlagArg fileSize:fileSizeArg 
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   819
    name := nameArg.
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   820
    creationTime := creationTimeArg.
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   821
    modificationTime := modificationTimeArg.
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   822
    dirFlag := dirFlagArg.
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   823
    fileSize := fileSizeArg.
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   824
! !
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   825
629
2ceefe9b5a19 version at the end
Claus Gittinger <cg@exept.de>
parents: 605
diff changeset
   826
!FileDirectory class methodsFor:'documentation'!
2ceefe9b5a19 version at the end
Claus Gittinger <cg@exept.de>
parents: 605
diff changeset
   827
2ceefe9b5a19 version at the end
Claus Gittinger <cg@exept.de>
parents: 605
diff changeset
   828
version
15631
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   829
    ^ '$Header: /cvs/stx/stx/libbasic/FileDirectory.st,v 1.54 2013-08-16 11:49:12 cg Exp $'
12351
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   830
!
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   831
7e0772ce0947 added: #directoryEntryFor:
Claus Gittinger <cg@exept.de>
parents: 11816
diff changeset
   832
version_CVS
15631
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   833
    ^ '$Header: /cvs/stx/stx/libbasic/FileDirectory.st,v 1.54 2013-08-16 11:49:12 cg Exp $'
629
2ceefe9b5a19 version at the end
Claus Gittinger <cg@exept.de>
parents: 605
diff changeset
   834
! !
6972
0a2f38d186d5 filenameFor: same algorithm found in Filename
Claus Gittinger <cg@exept.de>
parents: 6550
diff changeset
   835
15631
8ef0aa6e00e0 class: FileDirectory
Claus Gittinger <cg@exept.de>
parents: 14332
diff changeset
   836
605
8b17f96bf05a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 530
diff changeset
   837
FileDirectory initialize!