ZipArchive.st
author Claus Gittinger <cg@exept.de>
Tue, 07 Apr 1998 15:09:42 +0200
changeset 634 3b4686d35664
parent 633 baa3e20e50b2
child 635 e1cd2823530b
permissions -rw-r--r--
checkin from browser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
     1
"
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
     2
 COPYRIGHT (c) 1998 by eXept Software AG
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
     3
              All Rights Reserved
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
     4
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
     5
 This software is furnished under a license and may be used
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
     6
 only in accordance with the terms of that license and with the
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
     8
 be provided or otherwise made available to, or used by, any
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
     9
 other person.  No title to or ownership of the software is
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    10
 hereby transferred.
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    11
"
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    12
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Object subclass:#ZipArchive
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    15
	instanceVariableNames:'file mode archiveName firstEntry lastEntry'
628
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    16
	classVariableNames:'RecentlyUsedZipArchives ECREC_SIZE LREC_SIZE CREC_SIZE
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    17
		SIZE_CENTRAL_DIRECTORY TOTAL_ENTRIES_CENTRAL_DIR
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    18
		C_COMPRESSED_SIZE C_RELATIVE_OFFSET_LOCAL_HEADER
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    19
		C_FILENAME_LENGTH C_UNCOMPRESSED_SIZE ZipFileFormatErrorSignal
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    20
		COMPR_STORED COMPR_SHRUNK COMPR_REDUCED1 COMPR_REDUCED2
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    21
		COMPR_REDUCED3 COMPR_REDUCED4 COMPR_IMPLODED COMPR_TOKENIZED
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    22
		COMPR_DEFLATED'
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	poolDictionaries:''
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	category:'System-Support-FileFormats'
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
Object subclass:#ZipMember
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	instanceVariableNames:'next relative_offset_local_header compressed_size
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
		uncompressed_size name crc32 compression_method'
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	classVariableNames:''
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	poolDictionaries:''
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	privateIn:ZipArchive
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!ZipArchive class methodsFor:'documentation'!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    37
copyright 
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    38
"
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    39
 COPYRIGHT (c) 1998 by eXept Software AG
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    40
              All Rights Reserved
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    41
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    42
 This software is furnished under a license and may be used
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    43
 only in accordance with the terms of that license and with the
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    44
 inclusion of the above copyright notice.   This software may not
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    45
 be provided or otherwise made available to, or used by, any
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    46
 other person.  No title to or ownership of the software is
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    47
 hereby transferred.
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    48
"
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    49
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    50
!
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    52
documentation
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    53
"
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    54
    provides access to a zip archive.
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    55
    Caveat: only uncompressed archives are supported (for now).
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    56
"
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    57
!
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    58
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    59
examples
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    60
"
633
baa3e20e50b2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    61
                                                        [exBegin]
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    62
    |zip bytes|
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    63
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    64
    zip := ZipArchive oldFileNamed:'foo.zip'.
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    65
    bytes := zip extract:'bar'.
633
baa3e20e50b2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    66
                                                        [exEnd]
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
    67
"
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
! !
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
!ZipArchive class methodsFor:'instance creation'!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
newFileNamed:name
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    ^ self new name:name mode:#write
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    "Created: / 29.3.1998 / 17:46:16 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
oldFileNamed:name
628
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    79
    |zar f|
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    80
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    81
    f := name asFilename.
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    82
    RecentlyUsedZipArchives isNil ifTrue:[
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    83
        RecentlyUsedZipArchives := OrderedCollection new
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    84
    ].
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    85
    RecentlyUsedZipArchives keysAndValuesDo:[:i :z |
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    86
        z name = name ifTrue:[
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    87
            RecentlyUsedZipArchives removeIndex:i.
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    88
            RecentlyUsedZipArchives addLast:z.
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    89
            ^ z
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    90
        ].
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    91
    ].
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    92
    zar := self new name:f mode:#read.
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    93
    RecentlyUsedZipArchives add:zar.
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    94
    [RecentlyUsedZipArchives size > 5] whileTrue:[
633
baa3e20e50b2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
    95
        RecentlyUsedZipArchives removeFirst
628
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    96
    ].
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    97
    ^ zar
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
    "Created: / 29.3.1998 / 17:46:09 / cg"
633
baa3e20e50b2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 629
diff changeset
   100
    "Modified: / 7.4.1998 / 14:32:24 / cg"
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
! !
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
!ZipArchive class methodsFor:'class initialization'!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
initialize
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    ECREC_SIZE := 18.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    LREC_SIZE := 26.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    CREC_SIZE := 42.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    TOTAL_ENTRIES_CENTRAL_DIR := 10.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    SIZE_CENTRAL_DIRECTORY := 12.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    C_COMPRESSED_SIZE := 16.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    C_UNCOMPRESSED_SIZE := 20.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    C_FILENAME_LENGTH := 24.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    C_RELATIVE_OFFSET_LOCAL_HEADER := 38.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    "/ compression methods 
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    COMPR_STORED          :=  0.    
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    COMPR_SHRUNK          :=  1.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    COMPR_REDUCED1        :=  2.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    COMPR_REDUCED2        :=  3.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    COMPR_REDUCED3        :=  4.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    COMPR_REDUCED4        :=  5.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
    COMPR_IMPLODED        :=  6.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    COMPR_TOKENIZED       :=  7.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
    COMPR_DEFLATED        :=  8.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    ZipFileFormatErrorSignal := Signal new.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    "
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
     self initialize
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    "
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    "Modified: / 29.3.1998 / 20:17:18 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
! !
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
629
33fcaf60afa3 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   138
!ZipArchive class methodsFor:'cleanup'!
33fcaf60afa3 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   139
33fcaf60afa3 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   140
lowSpaceCleanup
33fcaf60afa3 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   141
    RecentlyUsedZipArchives := nil
33fcaf60afa3 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   142
33fcaf60afa3 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   143
    "Created: / 6.4.1998 / 12:36:37 / cg"
33fcaf60afa3 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   144
! !
33fcaf60afa3 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   145
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
!ZipArchive class methodsFor:'constants'!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
LREC_SIZE
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
    ^ LREC_SIZE
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    "Created: / 29.3.1998 / 19:11:20 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
! !
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
!ZipArchive methodsFor:'accessing'!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
entries
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    "return a collection of fileName entries"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    |names|
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    names := OrderedCollection new.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    self zipMembersDo:[:zipd |
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
        names add:(zipd name)
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    ^ names
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
    "
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
     (ZipArchive oldFileNamed:'/usr/lib/java/lib/classes.zip') entries
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    "
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    "Modified: / 29.3.1998 / 20:08:38 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
extract:fileName
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
    |zmemb rawContents|
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    zmemb := self findMember:fileName.
625
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   179
    zmemb isNil ifTrue:[^ nil].
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   180
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   181
    self openFile.
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    file position:(zmemb fileStart + 1).
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    rawContents := file nextBytes:(zmemb compressed_size).
625
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   184
    self closeFile.
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    ^ self decode:rawContents method:(zmemb compression_method)
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    "
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
     (ZipArchive oldFileNamed:'/usr/lib/java/lib/classes.zip') extract:'java/io/UTFDataFormatException.class'
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    "
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
625
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   191
    "Modified: / 30.3.1998 / 18:20:08 / cg"
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
members
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    "return a collection of members"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    |members|
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    members := OrderedCollection new.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
    self zipMembersDo:[:zipd |
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
        members add:zipd
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    ^ members
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    "
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
     (ZipArchive oldFileNamed:'/usr/lib/java/lib/classes.zip') members
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    "
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    "Created: / 29.3.1998 / 20:09:27 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    "Modified: / 29.3.1998 / 20:10:21 / cg"
628
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   212
!
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   213
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   214
name
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   215
    ^ archiveName
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   216
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   217
    "Created: / 6.4.1998 / 10:47:11 / cg"
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
! !
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
!ZipArchive methodsFor:'private'!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
625
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   222
closeFile
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   223
    file close.
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   224
    file := nil.
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   225
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   226
    "Created: / 30.3.1998 / 18:18:10 / cg"
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   227
!
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   228
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   229
name:nm mode:m
625
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   230
    archiveName := nm asFilename name.
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   231
    mode := m.
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   232
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
    mode == #read ifTrue:[
625
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   234
        self openFile.
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
        self readDirectory.
625
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   236
        self closeFile.
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
    ] ifFalse:[
625
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   238
        "/ self openFile.
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
    ]
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    "
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
     ZipArchive oldFileNamed:'/usr/lib/java/lib/classes.zip'
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
     (ZipArchive oldFileNamed:'/usr/lib/java/lib/classes.zip') entries
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
     (ZipArchive oldFileNamed:'/usr/lib/java/lib/classes.zip') extract:'java/io/UTFDataFormatException.class'
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
    "
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
625
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   247
    "Modified: / 30.3.1998 / 18:19:48 / cg"
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   248
!
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   249
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   250
openFile
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   251
    file isNil ifTrue:[
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   252
        mode == #read ifTrue:[
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   253
            file := archiveName asFilename readStream binary.
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   254
        ] ifFalse:[
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   255
            file := archiveName asFilename writeStream binary
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   256
        ]
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   257
    ].
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   258
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   259
    "Created: / 30.3.1998 / 18:18:48 / cg"
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   260
    "Modified: / 30.3.1998 / 18:19:26 / cg"
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
! !
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
!ZipArchive methodsFor:'private - decompression'!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
decode:rawBytes method:compressionMethod
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
    compressionMethod == COMPR_STORED ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
        "/ uncompressed
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
        ^ rawBytes
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
    compressionMethod == COMPR_SHRUNK ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
        self error:'unsupported compression method: SHRUNK'.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
        ^ nil
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
    compressionMethod == COMPR_REDUCED1 ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
        self error:'unsupported compression method: REDUCED1'.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
        ^ nil
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
    compressionMethod == COMPR_REDUCED2 ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
        self error:'unsupported compression method: REDUCED2'.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
        ^ nil
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
    compressionMethod == COMPR_REDUCED3 ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
        self error:'unsupported compression method: REDUCED3'.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
        ^ nil
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
    compressionMethod == COMPR_REDUCED4 ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
        self error:'unsupported compression method: REDUCED4'.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
        ^ nil
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
    compressionMethod == COMPR_IMPLODED ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
        self error:'unsupported compression method: IMPLODED'.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
        ^ nil
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
    compressionMethod == COMPR_TOKENIZED ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
        self error:'unsupported compression method: TOKENIZED'.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
        ^ nil
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
    compressionMethod == COMPR_DEFLATED ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
        self error:'unsupported compression method: DEFLATED'.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
        ^ nil
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
    self error:'unsupported compression method'.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
    ^ nil
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
    "Created: / 29.3.1998 / 20:14:45 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
    "Modified: / 29.3.1998 / 20:20:20 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
! !
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
!ZipArchive methodsFor:'private - directory stuff'!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
addMember
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   314
    "add a zipMember"
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   315
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
    |zmemb |
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
    zmemb := ZipMember new.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
    (firstEntry == nil) ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
        firstEntry := zmemb
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
    ] ifFalse:[ 
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
        lastEntry next:zmemb.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
    lastEntry := zmemb.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
    ^ zmemb.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
    "Created: / 29.3.1998 / 18:22:25 / cg"
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   328
    "Modified: / 30.3.1998 / 17:13:20 / cg"
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
findMember:name
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   332
    "find a zipMember by name"
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   333
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
    self zipMembersDo:[:zipd |
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
        (zipd name = name) ifTrue:[^ zipd].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
    ^ nil
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   339
    "Modified: / 30.3.1998 / 17:13:30 / cg"
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
readDirectory
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   343
    "read the zip directory into a linked-list of zipMembers"
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   344
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
    |size count_in dir_size|
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
    size := file fileSize.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
    (size == 0) ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
        count_in := 0.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
        ^ self
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
    (size < (ECREC_SIZE+4)) ifTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
        ^ ZipFileFormatErrorSignal raiseWith:'zipfile too short'.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
    file position:(size - (ECREC_SIZE+4) + 1).
625
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   358
    ((file next ~~ ($P asciiValue))
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   359
    or:[file next ~~ ($K asciiValue)
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   360
    or:[file next ~~ 8r005
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   361
    or:[file next ~~ 8r006]]]) ifTrue:[
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
        ^ ZipFileFormatErrorSignal raiseWith:'not a valid zipfile'.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
    file skip: (TOTAL_ENTRIES_CENTRAL_DIR - 4).
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   367
    count_in := file nextUnsignedShortMSB:false.        "/ Get TOTAL_ENTRIES_CENTRAL_DIR
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   368
    dir_size := file nextLongMSB:false.                 "/ Get SIZE_CENTRAL_DIRECTORY
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
    file position:(size - (dir_size + ECREC_SIZE+4) + 1).
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
    0 to:(count_in-1) do:[:i |
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
        |zipd filename_length|
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
        zipd := self addMember.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
        file skip:(4+C_COMPRESSED_SIZE-4-2-2-2).
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   376
        zipd compression_method:(file nextUnsignedShortMSB:false). "/ Get compression method
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   377
        (file nextUnsignedShortMSB:false).                      "/ skip last_mod_file_time
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   378
        (file nextUnsignedShortMSB:false).                      "/ skip last_mod_file_date
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   379
        zipd crc32:(file nextLongMSB:false).                    "/ Get crc32
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   380
        zipd compressed_size:(file nextLongMSB:false).          "/ Get C_COMPRESSED_SIZE
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   381
        zipd uncompressed_size:(file nextLongMSB:false).        "/ Get C_UNCOMPRESSED_SIZE
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   382
        filename_length := (file nextUnsignedShortMSB:false).   "/ Get C_FILENAME_LENGTH
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
        file skip:(C_RELATIVE_OFFSET_LOCAL_HEADER-(C_FILENAME_LENGTH+2)).
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   384
        zipd relative_offset_local_header:(file nextLongMSB:false).
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
        zipd name:(String new:filename_length).
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
        file nextBytes:filename_length into:(zipd name).
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
    ]
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
625
ff3efe3db50b close & reopen the file
Claus Gittinger <cg@exept.de>
parents: 624
diff changeset
   389
    "Modified: / 30.3.1998 / 18:02:06 / cg"
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
zipMembersDo:aBlock
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   393
    "evaluate aBlock for all zipMembers"
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   394
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
    |zipd|
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
    zipd := firstEntry.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
    [zipd notNil] whileTrue:[
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
        aBlock value:zipd.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
        zipd := zipd next
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
    ].
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
    "Created: / 29.3.1998 / 19:15:15 / cg"
624
251f10395e0b eliminated read4 / read2
Claus Gittinger <cg@exept.de>
parents: 622
diff changeset
   404
    "Modified: / 30.3.1998 / 17:13:47 / cg"
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
! !
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
!ZipArchive::ZipMember methodsFor:'accessing'!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
compressed_size
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
    "return the value of the instance variable 'compressed_size' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
    ^ compressed_size
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
    "Created: / 29.3.1998 / 18:28:03 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
compressed_size:something
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
    "set the value of the instance variable 'compressed_size' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
    compressed_size := something.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
    "Created: / 29.3.1998 / 18:28:03 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
compression_method
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
    "return the value of the instance variable 'compression_method' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
    ^ compression_method
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
    "Created: / 29.3.1998 / 20:02:57 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
compression_method:something
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
    "set the value of the instance variable 'compression_method' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
    compression_method := something.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
    "Created: / 29.3.1998 / 20:02:57 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
crc32
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
    "return the value of the instance variable 'crc32' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
    ^ crc32
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
    "Created: / 29.3.1998 / 20:03:00 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
crc32:something
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   450
    "set the value of the instance variable 'crc32' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
    crc32 := something.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
    "Created: / 29.3.1998 / 20:03:00 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
name
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
    "return the value of the instance variable 'name' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   459
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
    ^ name
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
    "Created: / 29.3.1998 / 18:29:22 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   465
name:something
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   466
    "set the value of the instance variable 'name' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
    name := something.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
    "Created: / 29.3.1998 / 18:29:22 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
next
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
    "return the value of the instance variable 'next' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   476
    ^ next
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   477
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   478
    "Created: / 29.3.1998 / 18:29:42 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   479
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
next:something
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
    "set the value of the instance variable 'next' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
    next := something.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
    "Created: / 29.3.1998 / 18:29:42 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
relative_offset_local_header
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
    "return the value of the instance variable 'relative_offset_local_header' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
    ^ relative_offset_local_header
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
    "Created: / 29.3.1998 / 18:28:40 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
relative_offset_local_header:something
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
    "set the value of the instance variable 'relative_offset_local_header' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
    relative_offset_local_header := something.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
    "Created: / 29.3.1998 / 18:28:40 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   505
uncompressed_size
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
    "return the value of the instance variable 'uncompressed_size' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
    ^ uncompressed_size
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
    "Created: / 29.3.1998 / 18:28:21 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   512
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   513
uncompressed_size:something
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   514
    "set the value of the instance variable 'uncompressed_size' (automatically generated)"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   515
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
    uncompressed_size := something.
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   517
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
    "Created: / 29.3.1998 / 18:28:21 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
! !
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
!ZipArchive::ZipMember methodsFor:'printing & storing'!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   522
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
displayString
634
3b4686d35664 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 633
diff changeset
   524
    ^ 'ZipMember(' , (name ? '*nil*') , ')'
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   526
    "Created: / 29.3.1998 / 20:10:07 / cg"
634
3b4686d35664 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 633
diff changeset
   527
    "Modified: / 2.4.1998 / 15:10:08 / cg"
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   528
! !
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   529
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   530
!ZipArchive::ZipMember methodsFor:'queries'!
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   531
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   532
fileStart
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
    ^ relative_offset_local_header + ZipArchive LREC_SIZE + 4 + name size
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   534
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
    "Created: / 29.3.1998 / 19:10:57 / cg"
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   536
! !
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   537
628
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   538
!ZipArchive class methodsFor:'documentation'!
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   539
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   540
version
634
3b4686d35664 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 633
diff changeset
   541
    ^ '$Header: /cvs/stx/stx/libbasic2/ZipArchive.st,v 1.7 1998-04-07 13:09:42 cg Exp $'
628
27102a6bd3f7 remember recently visited zipArchives for faster access
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   542
! !
622
6d06b9f7d7ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   543
ZipArchive initialize!