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