3
libbz2.dll test program.
4
by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
5
This file is Public Domain. Welcome any email to me.
7
usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]
21
#define BZ2_LIBNAME "libbz2-1.0.2.DLL"
24
static int BZ2DLLLoaded = 0;
25
static HINSTANCE BZ2DLLhLib;
26
int BZ2DLLLoadLibrary(void)
30
if(BZ2DLLLoaded==1){return 0;}
31
hLib=LoadLibrary(BZ2_LIBNAME);
33
fprintf(stderr,"Can't load %s\n",BZ2_LIBNAME);
36
BZ2_bzlibVersion=GetProcAddress(hLib,"BZ2_bzlibVersion");
37
BZ2_bzopen=GetProcAddress(hLib,"BZ2_bzopen");
38
BZ2_bzdopen=GetProcAddress(hLib,"BZ2_bzdopen");
39
BZ2_bzread=GetProcAddress(hLib,"BZ2_bzread");
40
BZ2_bzwrite=GetProcAddress(hLib,"BZ2_bzwrite");
41
BZ2_bzflush=GetProcAddress(hLib,"BZ2_bzflush");
42
BZ2_bzclose=GetProcAddress(hLib,"BZ2_bzclose");
43
BZ2_bzerror=GetProcAddress(hLib,"BZ2_bzerror");
45
if (!BZ2_bzlibVersion || !BZ2_bzopen || !BZ2_bzdopen
46
|| !BZ2_bzread || !BZ2_bzwrite || !BZ2_bzflush
47
|| !BZ2_bzclose || !BZ2_bzerror) {
48
fprintf(stderr,"GetProcAddress failed.\n");
56
int BZ2DLLFreeLibrary(void)
58
if(BZ2DLLLoaded==0){return 0;}
59
FreeLibrary(BZ2DLLhLib);
66
puts("usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]");
69
int main(int argc,char *argv[])
77
if(BZ2DLLLoadLibrary()<0){
78
fprintf(stderr,"Loading of %s failed. Giving up.\n", BZ2_LIBNAME);
81
printf("Loading of %s succeeded. Library version is %s.\n",
82
BZ2_LIBNAME, BZ2_bzlibVersion() );
85
if(**argv =='-' || **argv=='/'){
88
for(p=*argv+1;*p;p++){
91
}else if('1'<=*p && *p<='9'){
120
BZFILE *BZ2fp_r = NULL;
124
if((fp_w = fopen(fn_w,"wb"))==NULL){
125
printf("can't open [%s]\n",fn_w);
132
if((fn_r == NULL && (BZ2fp_r = BZ2_bzdopen(fileno(stdin),"rb"))==NULL)
133
|| (fn_r != NULL && (BZ2fp_r = BZ2_bzopen(fn_r,"rb"))==NULL)){
134
printf("can't bz2openstream\n");
137
while((len=BZ2_bzread(BZ2fp_r,buff,0x1000))>0){
138
fwrite(buff,1,len,fp_w);
140
BZ2_bzclose(BZ2fp_r);
141
if(fp_w != stdout) fclose(fp_w);
143
BZFILE *BZ2fp_w = NULL;
147
if((fp_r = fopen(fn_r,"rb"))==NULL){
148
printf("can't open [%s]\n",fn_r);
156
mode[1] = '0' + level;
159
if((fn_w == NULL && (BZ2fp_w = BZ2_bzdopen(fileno(stdout),mode))==NULL)
160
|| (fn_w !=NULL && (BZ2fp_w = BZ2_bzopen(fn_w,mode))==NULL)){
161
printf("can't bz2openstream\n");
164
while((len=fread(buff,1,0x1000,fp_r))>0){
165
BZ2_bzwrite(BZ2fp_w,buff,len);
167
BZ2_bzclose(BZ2fp_w);
168
if(fp_r!=stdin)fclose(fp_r);