FileURI.st
author Claus Gittinger <cg@exept.de>
Sat, 08 Mar 2008 11:53:23 +0100
changeset 1932 7bafb4c076d3
parent 1519 60bb9cc8727e
child 2474 38de996b9ee0
permissions -rw-r--r--
also show \"what-would-be-done\" in redo item
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1309
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
     1
"
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
     2
 COPYRIGHT (c) 2002 by eXept Software AG
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
     3
              All Rights Reserved
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
     4
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
     5
 This software is furnished under a license and may be used
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
     6
 only in accordance with the terms of that license and with the
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
     8
 be provided or otherwise made available to, or used by, any
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
     9
 other person.  No title to or ownership of the software is
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    10
 hereby transferred.
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    11
"
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    12
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    13
"{ Package: 'stx:libbasic2' }"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    14
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    15
HierarchicalURI subclass:#FileURI
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    16
	instanceVariableNames:''
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    17
	classVariableNames:''
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    18
	poolDictionaries:''
1310
948ed141b0b7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1309
diff changeset
    19
	category:'Net-Resources'
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    20
!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    21
1309
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    22
!FileURI class methodsFor:'documentation'!
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    23
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    24
copyright
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    25
"
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    26
 COPYRIGHT (c) 2002 by eXept Software AG
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    27
              All Rights Reserved
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    28
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    29
 This software is furnished under a license and may be used
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    30
 only in accordance with the terms of that license and with the
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    31
 inclusion of the above copyright notice.   This software may not
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    32
 be provided or otherwise made available to, or used by, any
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    33
 other person.  No title to or ownership of the software is
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    34
 hereby transferred.
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    35
"
c752d54f4e09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1284
diff changeset
    36
! !
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    37
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    38
!FileURI class methodsFor:'instance creation'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    39
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    40
fromFilename:aFilename
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    41
    "create an URI based on an a filename"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    42
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    43
    ^ self new fromFilename:aFilename
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    44
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    45
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    46
!FileURI class methodsFor:'accessing'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    47
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    48
schemes
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    49
    "answer the list of supported schemes"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    50
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    51
    ^ #(file)
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    52
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    53
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    54
!FileURI methodsFor:'converting'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    55
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    56
asFilename
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    57
    "answer the receiver represented as filename"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    58
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    59
    ^ authority notNil ifTrue:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    60
        Filename remoteHost:authority rootComponents:pathSegments.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    61
    ] ifFalse:[
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
    62
        "kludge"
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
    63
        (pathSegments first startsWith:$~) ifTrue:[
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
    64
            pathSegments first asFilename construct:(Filename rootComponents:(pathSegments copyFrom:2)).
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
    65
        ] ifFalse:[
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
    66
            Filename rootComponents:pathSegments.
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
    67
        ].
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    68
    ].
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
    69
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
    70
    "
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
    71
        (URI fromString:'file:~/bla') asFilename
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
    72
        (URI fromString:'file:~root/bla') asFilename 
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
    73
    "
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    74
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    75
1374
85c524889e47 category rename
Claus Gittinger <cg@exept.de>
parents: 1310
diff changeset
    76
!FileURI methodsFor:'initialization'!
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    77
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    78
fromFilename:aFilename
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    79
    "create an URI based on an a filename"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    80
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    81
    |components|
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    82
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    83
    components := aFilename components.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    84
    aFilename isAbsolute ifTrue:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    85
        (components size > 3 and:[(components at:2) size == 0]) ifTrue:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    86
            "this is a MS-Windows network path: \\host\path"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    87
            authority := components at:3.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    88
            pathSegments := components copyFrom:4.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    89
        ] ifFalse:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    90
            "this is an absolute path"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    91
            isAbsolute := true.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    92
            pathSegments := components copyFrom:2.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    93
        ].
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    94
    ] ifFalse:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    95
        "this is a relative path"
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    96
        isAbsolute := false.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    97
        pathSegments := components.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    98
    ]
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    99
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   100
    "
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   101
      self fromFilename:'/a/b/c'  asFilename   
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   102
      self fromFilename:'//a/b/c' asFilename  
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   103
      self fromFilename:'a/b/c'   asFilename    
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   104
    "
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   105
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   106
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   107
!FileURI methodsFor:'queries'!
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   108
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   109
exists
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   110
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   111
    ^ self asFilename exists
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   112
! !
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   113
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   114
!FileURI methodsFor:'stream access'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   115
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   116
readStream
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   117
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   118
    ^ self asFilename readStream
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   119
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   120
    "
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   121
     'file:/etc/group' asURI readStream contents
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   122
     'file:/~/.profile' asURI readStream contents
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   123
     (URI fromString:'file:~/.profile') asFilename
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   124
     (URI fromString:'file:~/.profile') readStream upToEnd
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   125
    "
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   126
!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   127
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   128
readStreamDo:aBlock
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   129
    "evaluate a block with the read stream as first argument
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   130
     and a dictionary containing attributes as second argument.
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   131
     The stream is closed after aBlock has been evaluated."
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   132
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   133
    |attributes file stream|
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   134
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   135
    attributes := self class attributes.
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   136
    file := self asFilename.
1519
60bb9cc8727e comments
Stefan Vogel <sv@exept.de>
parents: 1436
diff changeset
   137
    attributes at:#fileSize put:file fileSize.
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   138
    attributes at:#baseName put:file baseName.  
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   139
    attributes at:#uriInfo  put:self printString.  
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   140
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   141
    ^ [ 
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   142
        stream := file readStream.
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   143
        aBlock value:stream value:attributes
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   144
     ] ensure:[
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   145
        stream notNil ifTrue:[stream close]
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   146
     ].
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   147
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   148
    "
1519
60bb9cc8727e comments
Stefan Vogel <sv@exept.de>
parents: 1436
diff changeset
   149
     '/etc/group' asURI readStreamDo:[:stream :attributes|
60bb9cc8727e comments
Stefan Vogel <sv@exept.de>
parents: 1436
diff changeset
   150
        stream contents         
60bb9cc8727e comments
Stefan Vogel <sv@exept.de>
parents: 1436
diff changeset
   151
                addFirst:attributes printString; 
60bb9cc8727e comments
Stefan Vogel <sv@exept.de>
parents: 1436
diff changeset
   152
                yourself
60bb9cc8727e comments
Stefan Vogel <sv@exept.de>
parents: 1436
diff changeset
   153
     ].
60bb9cc8727e comments
Stefan Vogel <sv@exept.de>
parents: 1436
diff changeset
   154
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   155
     'file:/etc/group' asURI readStreamDo:[:stream :attributes|
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   156
        stream contents         
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   157
                addFirst:attributes printString; 
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   158
                yourself
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   159
     ].
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   160
    "
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   161
!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   162
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   163
readStreamsDo:aBlock
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   164
    "evaluate the block with a Collection of streams as first argument
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   165
     and a dictionary containing attributes as second argument,
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   166
     - a collection with a stream on a single file,
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   167
     - or a collection with streams on a directorie's files, but not recursive"
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   168
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   169
    self readStreamsDo:aBlock renameBlock:nil.
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   170
!
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   171
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   172
readStreamsDo:aBlock renameBlock:renameBlock
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   173
    "evaluate the block with a Collection of streams as first argument
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   174
     and a dictionary containing attributes as second argument,
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   175
     - a collection with a stream on a single file,
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   176
     - or a collection with streams on a directories files, but not recursive"
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   177
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   178
    |attributes fn files list baseName|
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   179
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   180
    fn := self asFilename.
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   181
    files := OrderedCollection new.
1264
650132956801 allow '*' and '*.' in path
tm
parents: 1258
diff changeset
   182
    list := OrderedCollection new.
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   183
    attributes := self class attributes.
1264
650132956801 allow '*' and '*.' in path
tm
parents: 1258
diff changeset
   184
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   185
    fn isDirectory ifTrue:[
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   186
        attributes at:#requestDirectory put:true.
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   187
        fn directoryContentsAsFilenamesDo:[:eachFilename|
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   188
            eachFilename isDirectory ifFalse:[
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   189
                files add:eachFilename
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   190
            ].
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   191
        ].
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   192
    ] ifFalse:[
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   193
        baseName := fn baseName.
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   194
        (baseName includesAny:'*?[]') ifTrue:[ |directoryName|
1264
650132956801 allow '*' and '*.' in path
tm
parents: 1258
diff changeset
   195
            attributes at:#requestDirectory put:true.
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   196
            directoryName := fn directory.
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   197
            directoryName directoryContentsDo:[:eachFilenameString|
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   198
                (baseName match:eachFilenameString) ifTrue:[ |filename|
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   199
                    filename := directoryName construct:eachFilenameString.
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   200
                    filename isDirectory ifFalse:[
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   201
                        files add:(directoryName construct:eachFilenameString).
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   202
                    ].
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   203
                ].
1264
650132956801 allow '*' and '*.' in path
tm
parents: 1258
diff changeset
   204
            ].
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   205
        ] ifFalse:[
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   206
            attributes at:#requestDirectory put:false.
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   207
            files add:fn.
1264
650132956801 allow '*' and '*.' in path
tm
parents: 1258
diff changeset
   208
        ].
650132956801 allow '*' and '*.' in path
tm
parents: 1258
diff changeset
   209
    ].
650132956801 allow '*' and '*.' in path
tm
parents: 1258
diff changeset
   210
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   211
    files do:[:eachFilename| |baseName stream|
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   212
        [
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   213
            baseName := eachFilename baseName.
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   214
            attributes at:#fileSize put:eachFilename fileSize.
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   215
            attributes at:#baseName put:baseName.  
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   216
            (self pathSegments includes:baseName) ifTrue:[
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   217
                attributes at:#uriInfo put:self.  
1266
4522fd38deef *** empty log message ***
tm
parents: 1264
diff changeset
   218
            ] ifFalse:[ |uri col|
4522fd38deef *** empty log message ***
tm
parents: 1264
diff changeset
   219
                uri := self copy.
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   220
                col := self pathSegments copy.
1266
4522fd38deef *** empty log message ***
tm
parents: 1264
diff changeset
   221
                col removeLast.
4522fd38deef *** empty log message ***
tm
parents: 1264
diff changeset
   222
                col add:baseName.
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   223
                uri pathSegments:col.
1266
4522fd38deef *** empty log message ***
tm
parents: 1264
diff changeset
   224
                attributes at:#uriInfo put:uri.  
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   225
            ].
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   226
            stream := eachFilename readStream.
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   227
            aBlock value:stream value:attributes.
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   228
        ] ensure:[
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   229
            stream notNil ifTrue:[stream close]
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   230
        ].
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   231
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   232
        renameBlock notNil ifTrue:[ |renameFilenameString|
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   233
            renameFilenameString := renameBlock value:eachFilename pathName.
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   234
            renameFilenameString asFilename exists ifTrue:[
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   235
                renameFilenameString := renameFilenameString, '.', 
1436
e680f637d998 Use Timestamp/#asTimestamp instead of AbsoluteTime/#asAbsoluteTime
Stefan Vogel <sv@exept.de>
parents: 1374
diff changeset
   236
                        (Timestamp now printStringFormat:'%(year)%(mon)%(day)%h%m%s').
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   237
            ].
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   238
            eachFilename moveTo:renameFilenameString.
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   239
        ].
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   240
    ].
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   241
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   242
    "
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   243
        (URI fromString:'file:~/test/out') 
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   244
            readStreamsDo:[:stream :attributes | 
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   245
                Transcript showCR:(attributes at:#baseName).
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   246
                Transcript showCR:(attributes at:#fileSize).
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   247
                Transcript showCR:(attributes at:#requestDirectory).
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   248
                Transcript showCR:(attributes at:#uriInfo).
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   249
            ].
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   250
        (URI fromString:'file:~/test/out/*1') 
1254
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   251
            readStreamsDo:[:stream :attributes | 
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   252
                Transcript showCR:(attributes at:#baseName).
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   253
                Transcript showCR:(attributes at:#fileSize).
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   254
                Transcript showCR:(attributes at:#requestDirectory).
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   255
                Transcript showCR:(attributes at:#uriInfo).
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   256
            ].
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   257
    "
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   258
!
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   259
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   260
writeStreamDo:aBlock
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   261
    "evaluate a block with the write stream as first argument
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   262
     and a dictionary containing attributes as second argument.
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   263
     The stream is closed after aBlock has been evaluated.
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   264
     Attributes may be the mime type (key #MIME)"
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   265
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   266
    |stream|
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   267
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   268
    ^ [
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   269
        stream := self asFilename writeStream.
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   270
        aBlock value:stream value:self class attributes
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   271
     ] ensure:[
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   272
        stream notNil ifTrue:[stream close]
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   273
     ].
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   274
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   275
    "
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   276
        (URI fromString:'file:/home/tm/tmp') 
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   277
            readStreamsDo:[:stream :attributes| 
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   278
                Transcript showCR:(attributes at:#MIME).
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   279
                Transcript showCR:(stream isWritable).
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   280
            ].
baf01931b9d6 *** empty log message ***
tm
parents: 1005
diff changeset
   281
    "
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   282
!
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   283
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   284
writeStreamDo:aBlock create:doCreate
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   285
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   286
    ^ self writeStreamDo:aBlock create:doCreate atomic:false.
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   287
!
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   288
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   289
writeStreamDo:aBlock create:doCreate atomic:doAtomic
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   290
    "evaluate a block with the write stream as first argument
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   291
     and a dictionary containing attributes as second argument.
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   292
     The stream is closed after aBlock has been evaluated.
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   293
     Attributes may be the mime type (key #MIME)
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   294
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   295
     If doCreate is true, a nonExistent directory will be created.
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   296
     If doAtomic is true, files will appear atomically, by using
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   297
        an intermediate file theat will be renamed"
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   298
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   299
    |stream fileName toFileName|
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   300
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   301
    fileName := self asFilename.
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   302
    toFileName := fileName.
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   303
    doAtomic ifTrue:[
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   304
        fileName isDirectory ifFalse:[
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   305
            toFileName := fileName directory.
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   306
        ].
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   307
        toFileName := toFileName construct:'.transferFile'.
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   308
    ].
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   309
    [
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   310
        Stream streamErrorSignal handle:[:ex|
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   311
            doCreate ifFalse:[
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   312
                ex reject
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   313
            ].    
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   314
            fileName directory recursiveMakeDirectory.
1284
57550436b55b file exists error handling
tm
parents: 1271
diff changeset
   315
            self exists ifTrue:[ |infoStream|
57550436b55b file exists error handling
tm
parents: 1271
diff changeset
   316
                infoStream := '' writeStream.
57550436b55b file exists error handling
tm
parents: 1271
diff changeset
   317
                self publicPrintOn:infoStream.
57550436b55b file exists error handling
tm
parents: 1271
diff changeset
   318
                self error:('Local write: Datei %1 already exists!!' bindWith:infoStream contents).
57550436b55b file exists error handling
tm
parents: 1271
diff changeset
   319
            ].
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   320
            stream := toFileName writeStream.
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   321
        ] do:[
1284
57550436b55b file exists error handling
tm
parents: 1271
diff changeset
   322
            self exists ifTrue:[ |infoStream|
57550436b55b file exists error handling
tm
parents: 1271
diff changeset
   323
                infoStream := '' writeStream.
57550436b55b file exists error handling
tm
parents: 1271
diff changeset
   324
                self publicPrintOn:infoStream.
57550436b55b file exists error handling
tm
parents: 1271
diff changeset
   325
                self error:('Local write: Datei %1 already exists!!' bindWith:infoStream contents).
57550436b55b file exists error handling
tm
parents: 1271
diff changeset
   326
            ].
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   327
            stream := toFileName writeStream.
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   328
        ].
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   329
        aBlock value:stream value:self class attributes.
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   330
        stream close.
1268
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   331
        doAtomic ifTrue:[
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   332
            toFileName moveTo:fileName.
48b43aebf125 Fix for home directories
Stefan Vogel <sv@exept.de>
parents: 1267
diff changeset
   333
        ]
1271
ca2e206e7c7f Working version: tilde-expansion, patterns
Stefan Vogel <sv@exept.de>
parents: 1268
diff changeset
   334
    ] ifCurtailed:[
1258
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   335
        stream notNil ifTrue:[stream close]
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   336
    ].
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   337
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   338
    "
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   339
        (URI fromString:'file:/home/tm/tmp') 
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   340
            readStreamsDo:[:stream :attributes| 
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   341
                Transcript showCR:(attributes at:#MIME).
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   342
                Transcript showCR:(stream isWritable).
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   343
            ].
a0eda4db4dad fileTransfer
tm
parents: 1254
diff changeset
   344
    "
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   345
! !
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   346
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   347
!FileURI class methodsFor:'documentation'!
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   348
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   349
version
1519
60bb9cc8727e comments
Stefan Vogel <sv@exept.de>
parents: 1436
diff changeset
   350
    ^ '$Header: /cvs/stx/stx/libbasic2/FileURI.st,v 1.14 2005-02-01 12:42:02 stefan Exp $'
1005
7ed6fa7ccfba initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   351
! !