AutoDeletedFilename.st
author Claus Gittinger <cg@exept.de>
Wed, 18 Dec 2019 19:05:01 +0100
changeset 25155 5ab0366fbef0
parent 24424 9e79e32cc079
child 25354 ee0e8cf9d49d
permissions -rw-r--r--
regenerated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10847
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     1
"
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     2
 COPYRIGHT (c) 2007 by eXept Software AG
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     3
              All Rights Reserved
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     4
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     5
 This software is furnished under a license and may be used
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     6
 only in accordance with the terms of that license and with the
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     8
 be provided or otherwise made available to, or used by, any
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     9
 other person.  No title to or ownership of the software is
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    10
 hereby transferred.
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    11
"
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic' }"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
    14
"{ NameSpace: Smalltalk }"
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
    15
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
Filename subclass:#AutoDeletedFilename
23665
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
    17
	instanceVariableNames:'concreteFilename'
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
    18
	classVariableNames:'Lobby'
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'System-Support'
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!AutoDeletedFilename class methodsFor:'documentation'!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
10847
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    25
copyright
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    26
"
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    27
 COPYRIGHT (c) 2007 by eXept Software AG
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    28
              All Rights Reserved
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    29
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    30
 This software is furnished under a license and may be used
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    31
 only in accordance with the terms of that license and with the
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    33
 be provided or otherwise made available to, or used by, any
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    34
 other person.  No title to or ownership of the software is
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    35
 hereby transferred.
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    36
"
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    37
!
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    38
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
documentation
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    Used with temporary files - these will automatically delete themself,
21277
a459cc59be62 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18635
diff changeset
    42
    when no longer referenced (i.e. when finalized)
a459cc59be62 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18635
diff changeset
    43
    
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    See -> Filename asAutoDeletedFilename
21277
a459cc59be62 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18635
diff changeset
    45
23665
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
    46
    [instance variables:]
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
    47
        concreteFilename    UnixFilename|PCFilename     the concrete filename that
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
    48
                                                        implements the OS-specific behavior
21277
a459cc59be62 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18635
diff changeset
    49
    [author:]
a459cc59be62 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18635
diff changeset
    50
        cg - original code
a459cc59be62 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 18635
diff changeset
    51
        sv - fixed and enhanced
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
examples
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    the following file will be automatically deleted after some time:
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    58
                                                    [exBegin]
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    |f p|
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
15247
be9fd0956f80 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 14507
diff changeset
    61
    f := AutoDeletedFilename newTemporary.
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    f writeStream
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
        nextPutLine:'hello';
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
        close.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    p := f pathName.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    Transcript showCR:p.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    f := f asAutoDeletedFilename.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    self assert:(p asFilename exists).
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    ObjectMemory collectGarbage.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    Delay waitForSeconds:2.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    self assert:(p asFilename exists).
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    f := nil.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    ObjectMemory collectGarbage.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    Delay waitForSeconds:2.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    self assert:(p asFilename exists not).
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    76
                                                    [exEnd]
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    77
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    78
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    79
    you can also delete it manually:
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    80
                                                    [exBegin]
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    81
    |f p|
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    82
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    83
    f := Filename newTemporary.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    84
    f writeStream
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    85
        nextPutLine:'hello';
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    86
        close.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    87
    p := f pathName.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    88
    Transcript showCR:p.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    89
    f := f asAutoDeletedFilename.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    90
    self assert:(p asFilename exists).
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    91
    ObjectMemory collectGarbage.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    92
    Delay waitForSeconds:2.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    93
    self assert:(p asFilename exists).
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    94
    f remove.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    95
    f := nil.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    96
    ObjectMemory collectGarbage.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    97
    Delay waitForSeconds:2.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    98
    self assert:(p asFilename exists not).
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    99
                                                    [exEnd]
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
! !
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   103
!AutoDeletedFilename class methodsFor:'initialization'!
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   104
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   105
initialize
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   106
    Lobby isNil ifTrue:[
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   107
        Lobby := Registry new.
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   108
    ].
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   109
    Smalltalk addDependent:self.    "inform me when smalltalk exits"
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   110
! !
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   111
23665
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   112
!AutoDeletedFilename class methodsFor:'instance creation'!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   113
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   114
named:aString
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   115
    "return a filename for a directory named aString.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   116
     This is the same as 'aString asFilename'."
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   117
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   118
    ^ self basicNew setName:aString
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   119
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   120
    "Created: / 06-02-2019 / 10:15:01 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   121
! !
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   122
24424
9e79e32cc079 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 23666
diff changeset
   123
!AutoDeletedFilename class methodsFor:'change & update'!
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   124
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   125
update:anAspect with:aParameter from:changedObject
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   126
    "when Smalltalk exits, remove all auto deleted files"
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   127
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   128
    anAspect == #aboutToQuit ifTrue:[
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   129
        |currentFilename|
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   130
        "do it with timeout in case of a non-responding remote file server"
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   131
        ([
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   132
            Lobby do:[:each|
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   133
                currentFilename := each.
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   134
                each basicFinalize
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   135
            ].
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   136
        ] valueWithTimeout:1 minutes) isNil ifTrue:[
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   137
            'AutoDeletedFilename: timed out while removing: ' errorPrint. currentFilename errorPrintCR.
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   138
        ].
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   139
    ].
18634
76a2b07859f7 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 18632
diff changeset
   140
    super update:anAspect with:aParameter from:changedObject
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   141
! !
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   142
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
!AutoDeletedFilename methodsFor:'accessing'!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
23666
7bc7a0c483d7 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 23665
diff changeset
   145
concreteFilename:aFilename
7bc7a0c483d7 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 23665
diff changeset
   146
    concreteFilename := aFilename.
7bc7a0c483d7 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 23665
diff changeset
   147
7bc7a0c483d7 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 23665
diff changeset
   148
    "Modified (format): / 06-02-2019 / 11:45:44 / Stefan Vogel"
23665
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   149
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   150
15470
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   151
keep
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   152
    "do not delete the file on finalization"
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   153
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   154
    self unregisterForFinalization
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   155
!
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   156
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   157
setName:aString
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   158
    super setName:aString.
23665
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   159
    concreteFilename := ConcreteClass named:aString.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   160
    self registerForFinalization
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   161
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   162
    "Modified: / 06-02-2019 / 10:16:06 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   163
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   164
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   165
species
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   166
    "filenames derived from me should not be autodeleted themself"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   167
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   168
    ^ ConcreteClass.    "of Filename"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   169
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   170
    "Modified: / 06-02-2019 / 10:06:23 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   171
! !
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   172
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   173
!AutoDeletedFilename methodsFor:'converting'!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   174
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   175
asAutoDeletedFilename
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   176
    "that's what I am"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   177
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   178
    ^ self
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   179
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   180
    "Created: / 06-02-2019 / 10:10:43 / Stefan Vogel"
15470
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   181
! !
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   182
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   183
!AutoDeletedFilename methodsFor:'copying'!
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   184
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   185
shallowCopy
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   186
    "when copying, return a real filename
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   187
     (to avoid mutiple removals)"
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   188
15810
fabc99a4a88a class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15470
diff changeset
   189
    ^ self species named:nameString
15470
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   190
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   191
    "
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   192
        'blaFaselQall.mist' asFilename asAutoDeletedFilename copy
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   193
    "
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   194
! !
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   195
23665
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   196
!AutoDeletedFilename methodsFor:'delegated to concrete filename'!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   197
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   198
directoryName
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   199
    ^ concreteFilename directoryName.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   200
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   201
    "Modified: / 07-09-1995 / 10:42:03 / claus"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   202
    "Modified: / 21-10-1998 / 22:52:25 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   203
    "Modified: / 27-10-1998 / 13:19:26 / ps"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   204
    "Modified: / 06-02-2019 / 10:52:20 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   205
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   206
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   207
fileType
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   208
    ^ concreteFilename fileType.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   209
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   210
    "Modified: / 21-07-1998 / 11:25:56 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   211
    "Modified: / 06-02-2019 / 10:50:51 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   212
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   213
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   214
fullAlternativePathName
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   215
    ^ concreteFilename fullAlternativePathName.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   216
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   217
    "Modified: / 06-02-2019 / 10:53:56 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   218
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   219
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   220
isDirectory
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   221
    ^ concreteFilename isDirectory.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   222
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   223
    "Modified: / 21-09-1998 / 15:53:10 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   224
    "Modified: / 06-02-2019 / 10:51:48 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   225
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   226
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   227
isExecutableProgram
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   228
    ^ concreteFilename isExecutableProgram.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   229
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   230
    "Modified: / 06-02-2019 / 10:54:15 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   231
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   232
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   233
isExplicitRelative
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   234
    ^ concreteFilename isExplicitRelative.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   235
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   236
    "Modified: / 06-02-2019 / 10:52:48 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   237
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   238
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   239
isHidden
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   240
    ^ concreteFilename isHidden.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   241
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   242
    "Modified: / 06-02-2019 / 10:54:30 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   243
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   244
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   245
isImplicit
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   246
    ^ concreteFilename isImplicit.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   247
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   248
    "Created: / 18-09-1997 / 18:04:51 / stefan"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   249
    "Modified: / 06-02-2019 / 10:53:08 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   250
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   251
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   252
isRootDirectory
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   253
    ^ concreteFilename isRootDirectory.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   254
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   255
    "Modified: / 06-02-2019 / 10:20:31 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   256
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   257
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   258
isVolumeAbsolute
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   259
    ^ concreteFilename isVolumeAbsolute.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   260
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   261
    "Created: / 07-09-1997 / 23:54:20 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   262
    "Modified: / 09-09-1998 / 20:38:54 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   263
    "Modified: / 06-02-2019 / 10:20:43 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   264
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   265
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   266
localPathName
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   267
    ^ concreteFilename localPathName.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   268
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   269
    "Modified: / 24-09-1998 / 19:09:53 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   270
    "Modified (format): / 06-02-2019 / 10:21:08 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   271
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   272
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   273
makeLegalFilename
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   274
    ^ concreteFilename makeLegalFilename.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   275
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   276
    "Modified: / 01-12-2010 / 18:53:59 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   277
    "Modified: / 06-02-2019 / 10:21:28 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   278
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   279
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   280
osNameForAccess
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   281
    ^ concreteFilename osNameForAccess.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   282
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   283
    "Modified: / 06-02-2019 / 10:21:47 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   284
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   285
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   286
osNameForDirectory
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   287
    ^ concreteFilename osNameForDirectory.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   288
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   289
    "Modified: / 20-01-1998 / 15:39:06 / md"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   290
    "Modified: / 17-08-1998 / 10:04:01 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   291
    "Modified: / 06-02-2019 / 10:22:02 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   292
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   293
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   294
osNameForDirectoryContents
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   295
    ^ concreteFilename osNameForDirectoryContents.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   296
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   297
    "Modified: / 20-01-1998 / 15:39:06 / md"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   298
    "Created: / 03-08-1998 / 21:37:46 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   299
    "Modified: / 17-08-1998 / 10:04:22 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   300
    "Modified: / 06-02-2019 / 10:22:21 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   301
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   302
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   303
osNameForFile
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   304
    ^ concreteFilename osNameForFile.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   305
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   306
    "Modified: / 21-07-2012 / 19:35:19 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   307
    "Modified: / 06-02-2019 / 10:22:32 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   308
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   309
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   310
pathName
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   311
    ^ concreteFilename pathName.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   312
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   313
    "Modified: / 24-09-1998 / 19:09:53 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   314
    "Modified: / 06-02-2019 / 10:22:43 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   315
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   316
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   317
renameTo:newName
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   318
    ^ concreteFilename renameTo:newName.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   319
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   320
    "Modified: / 20-01-1998 / 15:33:00 / md"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   321
    "Modified: / 21-09-2006 / 18:19:47 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   322
    "Modified (format): / 12-12-2017 / 12:45:47 / stefan"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   323
    "Modified: / 06-02-2019 / 10:22:59 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   324
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   325
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   326
setHidden
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   327
    ^ concreteFilename setHidden.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   328
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   329
    "Modified: / 06-02-2019 / 10:23:25 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   330
!
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   331
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   332
volume
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   333
    ^ concreteFilename volume.
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   334
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   335
    "Modified: / 24-09-1998 / 19:04:27 / cg"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   336
    "Modified: / 06-02-2019 / 10:23:54 / Stefan Vogel"
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   337
! !
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   338
15470
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   339
!AutoDeletedFilename methodsFor:'finalization'!
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   340
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   341
basicFinalize
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   342
    |linkInfo|
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   343
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   344
    linkInfo := self linkInfo.
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   345
    linkInfo notNil ifTrue:[
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   346
        linkInfo isDirectory ifTrue:[
23666
7bc7a0c483d7 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 23665
diff changeset
   347
            concreteFilename recursiveRemove
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   348
        ] ifFalse:[
23666
7bc7a0c483d7 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 23665
diff changeset
   349
            concreteFilename removeFile.
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   350
        ].
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   351
    ].
23666
7bc7a0c483d7 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 23665
diff changeset
   352
7bc7a0c483d7 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 23665
diff changeset
   353
    "Modified: / 06-02-2019 / 12:08:40 / Stefan Vogel"
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   354
!
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   355
15470
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   356
executor
23665
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   357
    ^ self class basicNew 
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   358
            nameString:nameString;
23666
7bc7a0c483d7 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 23665
diff changeset
   359
            concreteFilename:concreteFilename;
7bc7a0c483d7 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 23665
diff changeset
   360
            yourself.
23665
071d110d9d1c #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 21277
diff changeset
   361
23666
7bc7a0c483d7 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 23665
diff changeset
   362
    "Modified: / 06-02-2019 / 11:39:20 / Stefan Vogel"
15470
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   363
!
492825160f68 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 15247
diff changeset
   364
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   365
finalizationLobby
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   366
    "answer the registry used for finalization.
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   367
     we have our own Lobby."
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   368
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   369
    ^ Lobby
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   370
!
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   371
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
finalize
16550
4bda4424570d class: AutoDeletedFilename
Claus Gittinger <cg@exept.de>
parents: 15810
diff changeset
   373
    "/ do this in a forked process to avoid blocking
4bda4424570d class: AutoDeletedFilename
Claus Gittinger <cg@exept.de>
parents: 15810
diff changeset
   374
    "/ in case of an autodeleted remote file of a broken connection
4bda4424570d class: AutoDeletedFilename
Claus Gittinger <cg@exept.de>
parents: 15810
diff changeset
   375
    [
4bda4424570d class: AutoDeletedFilename
Claus Gittinger <cg@exept.de>
parents: 15810
diff changeset
   376
        "/ with timeout to avoid waiting forever
4bda4424570d class: AutoDeletedFilename
Claus Gittinger <cg@exept.de>
parents: 15810
diff changeset
   377
        [
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   378
            self basicFinalize.
16550
4bda4424570d class: AutoDeletedFilename
Claus Gittinger <cg@exept.de>
parents: 15810
diff changeset
   379
        ] valueWithTimeout:1 minutes.
4bda4424570d class: AutoDeletedFilename
Claus Gittinger <cg@exept.de>
parents: 15810
diff changeset
   380
    ] fork.
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
! !
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   383
!AutoDeletedFilename methodsFor:'removing'!
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   384
11780
f7543590f82a recursive remove directories when finalizing
Stefan Vogel <sv@exept.de>
parents: 10931
diff changeset
   385
recursiveRemove
f7543590f82a recursive remove directories when finalizing
Stefan Vogel <sv@exept.de>
parents: 10931
diff changeset
   386
    super recursiveRemove.
f7543590f82a recursive remove directories when finalizing
Stefan Vogel <sv@exept.de>
parents: 10931
diff changeset
   387
    self unregisterForFinalization
f7543590f82a recursive remove directories when finalizing
Stefan Vogel <sv@exept.de>
parents: 10931
diff changeset
   388
!
f7543590f82a recursive remove directories when finalizing
Stefan Vogel <sv@exept.de>
parents: 10931
diff changeset
   389
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   390
remove
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   391
    super remove.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   392
    self unregisterForFinalization
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   393
!
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   394
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   395
removeDirectory
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   396
    super removeDirectory.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   397
    self unregisterForFinalization
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   398
!
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   399
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   400
removeFile
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   401
    super removeFile.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   402
    self unregisterForFinalization
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   403
! !
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   404
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
!AutoDeletedFilename class methodsFor:'documentation'!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
version
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   408
    ^ '$Header$'
18634
76a2b07859f7 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 18632
diff changeset
   409
!
76a2b07859f7 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 18632
diff changeset
   410
76a2b07859f7 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 18632
diff changeset
   411
version_CVS
76a2b07859f7 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 18632
diff changeset
   412
    ^ '$Header$'
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
! !
15247
be9fd0956f80 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 14507
diff changeset
   414
18632
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   415
5f99981d6418 class: AutoDeletedFilename
Stefan Vogel <sv@exept.de>
parents: 16550
diff changeset
   416
AutoDeletedFilename initialize!