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