BZip2Stream.st
author Claus Gittinger <cg@exept.de>
Thu, 09 Jun 2016 17:01:19 +0200
changeset 3919 57fbcf872e8d
parent 3916 d797329e07d8
child 3971 21bb0786f068
child 4054 54f989be66a1
permissions -rw-r--r--
#OTHER by cg class: LinkedList changed: #at:ifAbsent:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1308
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
     1
"
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
     2
 COPYRIGHT (c) 2002 by eXept Software AG
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
     3
	      All Rights Reserved
1308
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
     4
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
     5
 This software is furnished under a license and may be used
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
     6
 only in accordance with the terms of that license and with the
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
     8
 be provided or otherwise made available to, or used by, any
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
     9
 other person.  No title to or ownership of the software is
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
    10
 hereby transferred.
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
    11
"
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
    12
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
    13
"{ Package: 'stx:libbasic2' }"
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
    14
1196
bba6d37ed88b BZipStream -> BZip2Stream
Stefan Vogel <sv@exept.de>
parents: 1195
diff changeset
    15
CompressionStream subclass:#BZip2Stream
1193
7688148ec90c Code formatting & clean up
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
    16
	instanceVariableNames:''
7688148ec90c Code formatting & clean up
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
    17
	classVariableNames:''
7688148ec90c Code formatting & clean up
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
    18
	poolDictionaries:''
7688148ec90c Code formatting & clean up
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
    19
	category:'System-Compress'
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
    20
!
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
    21
1196
bba6d37ed88b BZipStream -> BZip2Stream
Stefan Vogel <sv@exept.de>
parents: 1195
diff changeset
    22
!BZip2Stream primitiveDefinitions!
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
    23
%{
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
    24
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
    25
/*
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
    26
 * includes, defines, structure definitions
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
    27
 * and typedefs come here.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
    28
 */
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
    29
1838
e49a0623ab44 Fix includes
Stefan Vogel <sv@exept.de>
parents: 1750
diff changeset
    30
#include <stdio.h>
3915
34e670460fe0 mingw / bcc fixes
Claus Gittinger <cg@exept.de>
parents: 1838
diff changeset
    31
34e670460fe0 mingw / bcc fixes
Claus Gittinger <cg@exept.de>
parents: 1838
diff changeset
    32
#ifdef WIN32
34e670460fe0 mingw / bcc fixes
Claus Gittinger <cg@exept.de>
parents: 1838
diff changeset
    33
// sigh - bzlib.h includes windows.h, which does not like ST/X definitions
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    34
# undef Process
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    35
# undef Processor
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    36
# undef Context
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    37
# undef Array
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    38
# undef Date
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    39
# undef Method
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    40
# undef Delay
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    41
# undef Character
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    42
# undef String
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    43
# undef Time
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    44
# undef Signal
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    45
# undef Set
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    46
# undef Message
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    47
# undef Rectangle
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    48
# undef Block
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    49
# undef Object
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    50
# undef Point
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    51
# undef INT
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    52
# undef UINT
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    53
# define NO_STDIO
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    54
# if defined(__i386__) || defined(__x86__)
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    55
#  define _X86_
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    56
# endif
3915
34e670460fe0 mingw / bcc fixes
Claus Gittinger <cg@exept.de>
parents: 1838
diff changeset
    57
#endif
34e670460fe0 mingw / bcc fixes
Claus Gittinger <cg@exept.de>
parents: 1838
diff changeset
    58
1838
e49a0623ab44 Fix includes
Stefan Vogel <sv@exept.de>
parents: 1750
diff changeset
    59
#include "bzlib.h"
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
    60
3915
34e670460fe0 mingw / bcc fixes
Claus Gittinger <cg@exept.de>
parents: 1838
diff changeset
    61
#ifdef WIN32
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    62
# define INT  STX_INT
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    63
# define UINT STX_UINT
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    64
# ifdef STX_Process
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    65
#  define Process STX_Process
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    66
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    67
# ifdef STX_Processor
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    68
#  define Processor STX_Processor
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    69
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    70
# ifdef STX_Context
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    71
#  define Context STX_Context
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    72
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    73
# ifdef STX_Array
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    74
#  define Array STX_Array
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    75
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    76
# ifdef STX_Date
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    77
#  define Date STX_Date
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    78
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    79
# ifdef STX_Method
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    80
#  define Method STX_Method
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    81
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    82
# ifdef STX_Delay
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    83
#  define Delay STX_Delay
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    84
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    85
# ifdef STX_Character
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    86
#  define Character STX_Character
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    87
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    88
# ifdef STX_String
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    89
#  define String STX_String
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    90
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    91
# ifdef STX_Time
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    92
#  define Time STX_Time
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    93
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    94
# ifdef STX_Signal
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    95
#  define Signal STX_Signal
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    96
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    97
# ifdef STX_Set
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    98
#  define Set STX_Set
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
    99
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   100
# ifdef STX_Message
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   101
#  define Message STX_Message
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   102
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   103
# ifdef STX_Rectangle
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   104
#  define Rectangle STX_Rectangle
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   105
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   106
# ifdef STX_Block
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   107
#  define Block STX_Block
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   108
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   109
# ifdef STX_Object
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   110
#  define Object STX_Object
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   111
# endif
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   112
# ifdef STX_Point
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   113
#  define Point STXPoint
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   114
# endif
3915
34e670460fe0 mingw / bcc fixes
Claus Gittinger <cg@exept.de>
parents: 1838
diff changeset
   115
#endif
34e670460fe0 mingw / bcc fixes
Claus Gittinger <cg@exept.de>
parents: 1838
diff changeset
   116
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   117
typedef enum {
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   118
	  e_opmode_unspecified          /* processing done */
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   119
	, e_opmode_deflate              /* running deflate */
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   120
	, e_opmode_inflate              /* running inflate */
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   121
} e_opmode;
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   122
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   123
typedef struct {
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   124
	bz_stream       stream;         /* pointer to the external in -stream */
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   125
	char *          in_ref;         /* size    of the external in -stream */
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   126
	char *          out_ref;        /* pointer to the external out-stream */
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   127
	unsigned int    out_total;      /* size    of the external out-stream */
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   128
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   129
	e_opmode        op_mode;        /* current operational mode */
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   130
} zstream_s;
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   131
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   132
%}
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   133
! !
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   134
1308
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   135
!BZip2Stream class methodsFor:'documentation'!
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   136
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   137
copyright
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   138
"
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   139
 COPYRIGHT (c) 2002 by eXept Software AG
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   140
	      All Rights Reserved
1308
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   141
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   142
 This software is furnished under a license and may be used
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   143
 only in accordance with the terms of that license and with the
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   144
 inclusion of the above copyright notice.   This software may not
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   145
 be provided or otherwise made available to, or used by, any
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   146
 other person.  No title to or ownership of the software is
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   147
 hereby transferred.
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   148
"
d7bea6d0b3b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1196
diff changeset
   149
! !
1193
7688148ec90c Code formatting & clean up
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   150
1196
bba6d37ed88b BZipStream -> BZip2Stream
Stefan Vogel <sv@exept.de>
parents: 1195
diff changeset
   151
!BZip2Stream methodsFor:'low level'!
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   152
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   153
zclose
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   154
    "low level close of the zip stream
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   155
    "
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   156
%{
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   157
    OBJ _zstreamObj = __INST( zstream );
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   158
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   159
    if( _zstreamObj != nil )
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   160
    {
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   161
	zstream_s * _zstream = (zstream_s *) __externalBytesAddress( _zstreamObj );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   162
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   163
	__INST(zstream) = nil;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   164
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   165
	if( _zstream->stream.state != NULL )
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   166
	{
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   167
	    if( _zstream->op_mode == e_opmode_inflate )
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   168
		BZ2_bzDecompressEnd( & _zstream->stream );
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   169
	    else
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   170
		BZ2_bzCompressEnd( & _zstream->stream );
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   171
	}
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   172
	free( _zstream );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   173
    }
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   174
%}.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   175
!
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   176
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   177
zdeflate
1570
b6dd9a871cc2 Fix typo
Stefan Vogel <sv@exept.de>
parents: 1564
diff changeset
   178
    "low level - deflate"
b6dd9a871cc2 Fix typo
Stefan Vogel <sv@exept.de>
parents: 1564
diff changeset
   179
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   180
    |errorNo|
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   181
    errorNo := nil.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   182
%{
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   183
    OBJ _zstreamObj = __INST( zstream );
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   184
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   185
    if( _zstreamObj != nil )
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   186
    {
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   187
	int          _errorNo, _action;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   188
	unsigned int _bfsize;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   189
	zstream_s *  _zstream = (zstream_s *) __externalBytesAddress( _zstreamObj );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   190
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   191
	if( _zstream->op_mode != e_opmode_deflate )
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   192
	    RETURN( nil );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   193
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   194
	_bfsize = _zstream->out_total;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   195
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   196
	if( _zstream->stream.state == NULL )
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   197
	{
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   198
	    _zstream->op_mode = e_opmode_unspecified;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   199
	    RETURN( nil );
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   200
	}
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   201
	_action = (__INST(hitEOF) == true) ? BZ_FINISH : BZ_RUN;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   202
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   203
	_zstream->stream.avail_out = _bfsize;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   204
	_zstream->stream.next_out  = _zstream->out_ref;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   205
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   206
	_errorNo = BZ2_bzCompress( & _zstream->stream, _action );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   207
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   208
	if( _errorNo == BZ_STREAM_END )
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   209
	{
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   210
	    _zstream->stream.avail_in = 0;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   211
	    _zstream->stream.next_in  = NULL;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   212
	    _errorNo = BZ2_bzCompressEnd( & _zstream->stream );
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   213
	}
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   214
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   215
	if(   (_errorNo == BZ_OK)
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   216
	   || (_errorNo == BZ_RUN_OK)
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   217
	   || (_errorNo == BZ_FINISH_OK)
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   218
	  )
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   219
	{
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   220
	    if(   (_zstream->stream.avail_out != _bfsize)
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   221
	       || (_zstream->stream.avail_in  != 0)
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   222
	      )
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   223
	      RETURN( true );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   224
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   225
	    RETURN( false );
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   226
	}
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   227
	errorNo = __MKSMALLINT( _errorNo );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   228
    }
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   229
%}.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   230
    errorNo ifNil:[
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   231
	zstream ifNil:[self errorNotOpen].
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   232
	self invalidArgument.
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   233
    ].
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   234
    self zerror:errorNo.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   235
!
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   236
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   237
zdeflateInit
1570
b6dd9a871cc2 Fix typo
Stefan Vogel <sv@exept.de>
parents: 1564
diff changeset
   238
    "low level - open for reading"
b6dd9a871cc2 Fix typo
Stefan Vogel <sv@exept.de>
parents: 1564
diff changeset
   239
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   240
    |errorNo blockSize100k workFactor|
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   241
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   242
    errorNo       := nil.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   243
    blockSize100k := BlockSize.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   244
    workFactor    := 30.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   245
%{
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   246
    OBJ _zstreamObj = __INST( zstream );
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   247
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   248
    if( (_zstreamObj != nil) && __bothSmallInteger(blockSize100k, workFactor) )
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   249
    {
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   250
	int         _errorNo;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   251
	zstream_s * _zstream = (zstream_s *) __externalBytesAddress( _zstreamObj );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   252
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   253
	_zstream->op_mode = e_opmode_deflate;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   254
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   255
	_errorNo = BZ2_bzCompressInit( & _zstream->stream
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   256
				     , __intVal( blockSize100k ), 0, __intVal( workFactor ) );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   257
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   258
	if( _errorNo == BZ_OK )
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   259
	    RETURN( self );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   260
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   261
	errorNo = __MKSMALLINT( _errorNo );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   262
    }
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   263
%}.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   264
    errorNo ifNil:[
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   265
	zstream ifNil:[ self errorNotOpen ].
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   266
	self invalidArgument.
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   267
    ].
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   268
    self zerror:errorNo.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   269
!
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   270
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   271
zget_avail_out
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   272
    "low level - get the number of available out bytes
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   273
    "
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   274
%{
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   275
    OBJ _zstreamObj = __INST( zstream );
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   276
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   277
    if( _zstreamObj != nil )
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   278
    {
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   279
	unsigned int _count;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   280
	zstream_s *  _zstream = (zstream_s *) __externalBytesAddress( _zstreamObj );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   281
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   282
	_count = _zstream->out_total - _zstream->stream.avail_out;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   283
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   284
	RETURN( __MKSMALLINT (_count) );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   285
    }
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   286
%}.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   287
    self errorNotOpen.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   288
!
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   289
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   290
zinflate
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   291
    "low level - inflate
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   292
    "
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   293
    |errorNo|
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   294
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   295
    errorNo := nil.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   296
%{
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   297
    OBJ _zstreamObj = __INST( zstream );
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   298
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   299
    if( _zstreamObj != nil )
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   300
    {
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   301
	int         _errorNo, _count;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   302
	zstream_s * _zstream;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   303
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   304
	_zstream = (zstream_s *) __externalBytesAddress( _zstreamObj );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   305
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   306
	if( _zstream->op_mode != e_opmode_inflate )
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   307
	    RETURN( nil );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   308
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   309
	if( _zstream->stream.state == NULL )
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   310
	{
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   311
	    _zstream->op_mode = e_opmode_unspecified;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   312
	    RETURN( nil );
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   313
	}
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   314
	if( _zstream->stream.avail_in == 0 )
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   315
	    RETURN( __MKSMALLINT (0) );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   316
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   317
	_zstream->stream.avail_out = _zstream->out_total;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   318
	_zstream->stream.next_out  = _zstream->out_ref;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   319
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   320
	_errorNo = BZ2_bzDecompress( & _zstream->stream );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   321
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   322
	if( _errorNo == BZ_STREAM_END )
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   323
	    _errorNo = BZ2_bzDecompressEnd( & _zstream->stream );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   324
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   325
	if( _errorNo == BZ_OK )
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   326
	{
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   327
	    _count = _zstream->out_total - _zstream->stream.avail_out;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   328
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   329
	    RETURN( __MKSMALLINT (_count) );
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   330
	}
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   331
	errorNo = __MKSMALLINT( _errorNo );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   332
    }
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   333
%}.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   334
    errorNo ifNil:[ self errorNotOpen ].
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   335
    self zerror:errorNo.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   336
!
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   337
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   338
zinflateInit
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   339
    "low level - inflateInit
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   340
    "
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   341
    |errorNo|
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   342
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   343
    errorNo := nil.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   344
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   345
%{
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   346
    OBJ _zstreamObj = __INST( zstream );
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   347
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   348
    if( _zstreamObj != nil )
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   349
    {
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   350
	int         _errorNo;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   351
	zstream_s * _zstream = (zstream_s *) __externalBytesAddress( _zstreamObj );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   352
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   353
	_zstream->op_mode = e_opmode_inflate;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   354
	_errorNo = BZ2_bzDecompressInit( & _zstream->stream, 0, 1 );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   355
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   356
	if( _errorNo == BZ_OK )
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   357
	    RETURN( self );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   358
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   359
	_zstream->stream.avail_in = 0;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   360
	errorNo = __MKSMALLINT( _errorNo );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   361
    }
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   362
%}.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   363
    errorNo ifNil:[ self errorNotOpen ].
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   364
    self zerror:errorNo.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   365
!
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   366
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   367
zopen
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   368
    "low level - opens the zip stream
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   369
    "
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   370
    |outTotal|
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   371
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   372
    outTotal := outputBytes size.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   373
%{
1750
436ca57ad6be fix malloc definition
Stefan Vogel <sv@exept.de>
parents: 1570
diff changeset
   374
    extern void *malloc();
1564
Claus Gittinger <cg@exept.de>
parents: 1308
diff changeset
   375
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   376
    zstream_s * _zstream = (zstream_s *) malloc( sizeof(zstream_s) );
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   377
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   378
    if( _zstream )
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   379
    {
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   380
	OBJ     _zobj   = __MKEXTERNALADDRESS( _zstream );
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   381
	OBJ     _outObj = __INST( outputBytes );
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   382
	OBJ     _inpObj = __INST( inputBytes  );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   383
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   384
	_zstream->in_ref           = (char *) __externalBytesAddress( _inpObj );
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   385
	_zstream->stream.next_in   = NULL;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   386
	_zstream->stream.avail_in  = 0;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   387
	_zstream->stream.total_in_lo32  = 0;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   388
	_zstream->stream.total_in_hi32  = 0;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   389
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   390
	_zstream->out_total        = __intVal( outTotal );
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   391
	_zstream->out_ref          = (char *) __externalBytesAddress( _outObj );
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   392
	_zstream->stream.next_out  = _zstream->out_ref;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   393
	_zstream->stream.avail_out = _zstream->out_total;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   394
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   395
	_zstream->stream.total_out_lo32 = 0;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   396
	_zstream->stream.total_out_hi32 = 0;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   397
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   398
	_zstream->stream.bzalloc   = 0;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   399
	_zstream->stream.bzfree    = 0;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   400
	_zstream->stream.opaque    = 0;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   401
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   402
	_zstream->op_mode          = e_opmode_unspecified;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   403
1195
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   404
	__INST (zstream) = _zobj;
9d887847d1b6 Add BZipStream and ZipStream
Stefan Vogel <sv@exept.de>
parents: 1193
diff changeset
   405
	__STORE(self, _zobj);
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   406
    }
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   407
%}.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   408
!
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   409
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   410
zset_avail_in:count
1570
b6dd9a871cc2 Fix typo
Stefan Vogel <sv@exept.de>
parents: 1564
diff changeset
   411
    "set the 'avail_in'"
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   412
%{
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   413
    OBJ _zstreamObj = __INST( zstream );
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   414
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   415
    if( (_zstreamObj != nil) && __isSmallInteger(count) )
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   416
    {
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   417
	int         _count;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   418
	zstream_s * _zstream = (zstream_s *) __externalBytesAddress( _zstreamObj );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   419
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   420
	if( (_count = __intVal( count )) > 0 )
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   421
	{
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   422
	    char * _in_ref = _zstream->in_ref;
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   423
3916
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   424
	    _zstream->stream.avail_in = _count;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   425
	    _zstream->stream.next_in  = _in_ref;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   426
	} else {
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   427
	    _zstream->stream.avail_in = 0;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   428
	    _zstream->stream.next_in  = NULL;
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   429
	}
d797329e07d8 BZ2Stream for bcc
Claus Gittinger <cg@exept.de>
parents: 3915
diff changeset
   430
	RETURN( self );
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   431
    }
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   432
%}.
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   433
    zstream ifNil:[ self errorNotOpen ].
1570
b6dd9a871cc2 Fix typo
Stefan Vogel <sv@exept.de>
parents: 1564
diff changeset
   434
    self invalidArgument.
1059
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   435
! !
b47e4eff5543 *** empty log message ***
ca
parents:
diff changeset
   436
1196
bba6d37ed88b BZipStream -> BZip2Stream
Stefan Vogel <sv@exept.de>
parents: 1195
diff changeset
   437
!BZip2Stream class methodsFor:'documentation'!
1193
7688148ec90c Code formatting & clean up
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   438
7688148ec90c Code formatting & clean up
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   439
version
3915
34e670460fe0 mingw / bcc fixes
Claus Gittinger <cg@exept.de>
parents: 1838
diff changeset
   440
    ^ '$Header$'
1193
7688148ec90c Code formatting & clean up
Stefan Vogel <sv@exept.de>
parents: 1061
diff changeset
   441
! !