3 libbz2.dll test program.
\r
4 by Yoshioka Tsuneo(QWF00133@nifty.ne.jp/tsuneo-y@is.aist-nara.ac.jp)
\r
5 This file is Public Domain.
\r
6 welcome any email to me.
\r
8 usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]
\r
22 #define BZ2_LIBNAME "libbz2-1.0.2.DLL"
\r
24 #include <windows.h>
\r
25 static int BZ2DLLLoaded = 0;
\r
26 static HINSTANCE BZ2DLLhLib;
\r
27 int BZ2DLLLoadLibrary(void)
\r
31 if(BZ2DLLLoaded==1){return 0;}
\r
32 hLib=LoadLibrary(BZ2_LIBNAME);
\r
34 fprintf(stderr,"Can't load %s\n",BZ2_LIBNAME);
\r
37 BZ2_bzlibVersion=GetProcAddress(hLib,"BZ2_bzlibVersion");
\r
38 BZ2_bzopen=GetProcAddress(hLib,"BZ2_bzopen");
\r
39 BZ2_bzdopen=GetProcAddress(hLib,"BZ2_bzdopen");
\r
40 BZ2_bzread=GetProcAddress(hLib,"BZ2_bzread");
\r
41 BZ2_bzwrite=GetProcAddress(hLib,"BZ2_bzwrite");
\r
42 BZ2_bzflush=GetProcAddress(hLib,"BZ2_bzflush");
\r
43 BZ2_bzclose=GetProcAddress(hLib,"BZ2_bzclose");
\r
44 BZ2_bzerror=GetProcAddress(hLib,"BZ2_bzerror");
\r
46 if (!BZ2_bzlibVersion || !BZ2_bzopen || !BZ2_bzdopen
\r
47 || !BZ2_bzread || !BZ2_bzwrite || !BZ2_bzflush
\r
48 || !BZ2_bzclose || !BZ2_bzerror) {
\r
49 fprintf(stderr,"GetProcAddress failed.\n");
\r
57 int BZ2DLLFreeLibrary(void)
\r
59 if(BZ2DLLLoaded==0){return 0;}
\r
60 FreeLibrary(BZ2DLLhLib);
\r
67 puts("usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]");
\r
70 int main(int argc,char *argv[])
\r
78 if(BZ2DLLLoadLibrary()<0){
\r
79 fprintf(stderr,"Loading of %s failed. Giving up.\n", BZ2_LIBNAME);
\r
82 printf("Loading of %s succeeded. Library version is %s.\n",
\r
83 BZ2_LIBNAME, BZ2_bzlibVersion() );
\r
85 while(++argv,--argc){
\r
86 if(**argv =='-' || **argv=='/'){
\r
89 for(p=*argv+1;*p;p++){
\r
92 }else if('1'<=*p && *p<='9'){
\r
121 BZFILE *BZ2fp_r = NULL;
\r
125 if((fp_w = fopen(fn_w,"wb"))==NULL){
\r
126 printf("can't open [%s]\n",fn_w);
\r
133 if((fn_r == NULL && (BZ2fp_r = BZ2_bzdopen(fileno(stdin),"rb"))==NULL)
\r
134 || (fn_r != NULL && (BZ2fp_r = BZ2_bzopen(fn_r,"rb"))==NULL)){
\r
135 printf("can't bz2openstream\n");
\r
138 while((len=BZ2_bzread(BZ2fp_r,buff,0x1000))>0){
\r
139 fwrite(buff,1,len,fp_w);
\r
141 BZ2_bzclose(BZ2fp_r);
\r
142 if(fp_w != stdout) fclose(fp_w);
\r
144 BZFILE *BZ2fp_w = NULL;
\r
148 if((fp_r = fopen(fn_r,"rb"))==NULL){
\r
149 printf("can't open [%s]\n",fn_r);
\r
157 mode[1] = '0' + level;
\r
160 if((fn_w == NULL && (BZ2fp_w = BZ2_bzdopen(fileno(stdout),mode))==NULL)
\r
161 || (fn_w !=NULL && (BZ2fp_w = BZ2_bzopen(fn_w,mode))==NULL)){
\r
162 printf("can't bz2openstream\n");
\r
165 while((len=fread(buff,1,0x1000,fp_r))>0){
\r
166 BZ2_bzwrite(BZ2fp_w,buff,len);
\r
168 BZ2_bzclose(BZ2fp_w);
\r
169 if(fp_r!=stdin)fclose(fp_r);
\r
173 BZ2DLLFreeLibrary();
\r