Mercurial > hg > sv-dependency-builds
comparison src/bzip2-1.0.6/dlltest.c @ 89:8a15ff55d9af
Add bzip2, zlib, liblo, portaudio sources
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Wed, 20 Mar 2013 13:59:52 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
88:fe7c3a0b0259 | 89:8a15ff55d9af |
---|---|
1 /* | |
2 minibz2 | |
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. | |
6 | |
7 usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename] | |
8 */ | |
9 | |
10 #define BZ_IMPORT | |
11 #include <stdio.h> | |
12 #include <stdlib.h> | |
13 #include "bzlib.h" | |
14 #ifdef _WIN32 | |
15 #include <io.h> | |
16 #endif | |
17 | |
18 | |
19 #ifdef _WIN32 | |
20 | |
21 #define BZ2_LIBNAME "libbz2-1.0.2.DLL" | |
22 | |
23 #include <windows.h> | |
24 static int BZ2DLLLoaded = 0; | |
25 static HINSTANCE BZ2DLLhLib; | |
26 int BZ2DLLLoadLibrary(void) | |
27 { | |
28 HINSTANCE hLib; | |
29 | |
30 if(BZ2DLLLoaded==1){return 0;} | |
31 hLib=LoadLibrary(BZ2_LIBNAME); | |
32 if(hLib == NULL){ | |
33 fprintf(stderr,"Can't load %s\n",BZ2_LIBNAME); | |
34 return -1; | |
35 } | |
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"); | |
44 | |
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"); | |
49 return -1; | |
50 } | |
51 BZ2DLLLoaded=1; | |
52 BZ2DLLhLib=hLib; | |
53 return 0; | |
54 | |
55 } | |
56 int BZ2DLLFreeLibrary(void) | |
57 { | |
58 if(BZ2DLLLoaded==0){return 0;} | |
59 FreeLibrary(BZ2DLLhLib); | |
60 BZ2DLLLoaded=0; | |
61 } | |
62 #endif /* WIN32 */ | |
63 | |
64 void usage(void) | |
65 { | |
66 puts("usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]"); | |
67 } | |
68 | |
69 int main(int argc,char *argv[]) | |
70 { | |
71 int decompress = 0; | |
72 int level = 9; | |
73 char *fn_r = NULL; | |
74 char *fn_w = NULL; | |
75 | |
76 #ifdef _WIN32 | |
77 if(BZ2DLLLoadLibrary()<0){ | |
78 fprintf(stderr,"Loading of %s failed. Giving up.\n", BZ2_LIBNAME); | |
79 exit(1); | |
80 } | |
81 printf("Loading of %s succeeded. Library version is %s.\n", | |
82 BZ2_LIBNAME, BZ2_bzlibVersion() ); | |
83 #endif | |
84 while(++argv,--argc){ | |
85 if(**argv =='-' || **argv=='/'){ | |
86 char *p; | |
87 | |
88 for(p=*argv+1;*p;p++){ | |
89 if(*p=='d'){ | |
90 decompress = 1; | |
91 }else if('1'<=*p && *p<='9'){ | |
92 level = *p - '0'; | |
93 }else{ | |
94 usage(); | |
95 exit(1); | |
96 } | |
97 } | |
98 }else{ | |
99 break; | |
100 } | |
101 } | |
102 if(argc>=1){ | |
103 fn_r = *argv; | |
104 argc--;argv++; | |
105 }else{ | |
106 fn_r = NULL; | |
107 } | |
108 if(argc>=1){ | |
109 fn_w = *argv; | |
110 argc--;argv++; | |
111 }else{ | |
112 fn_w = NULL; | |
113 } | |
114 { | |
115 int len; | |
116 char buff[0x1000]; | |
117 char mode[10]; | |
118 | |
119 if(decompress){ | |
120 BZFILE *BZ2fp_r = NULL; | |
121 FILE *fp_w = NULL; | |
122 | |
123 if(fn_w){ | |
124 if((fp_w = fopen(fn_w,"wb"))==NULL){ | |
125 printf("can't open [%s]\n",fn_w); | |
126 perror("reason:"); | |
127 exit(1); | |
128 } | |
129 }else{ | |
130 fp_w = stdout; | |
131 } | |
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"); | |
135 exit(1); | |
136 } | |
137 while((len=BZ2_bzread(BZ2fp_r,buff,0x1000))>0){ | |
138 fwrite(buff,1,len,fp_w); | |
139 } | |
140 BZ2_bzclose(BZ2fp_r); | |
141 if(fp_w != stdout) fclose(fp_w); | |
142 }else{ | |
143 BZFILE *BZ2fp_w = NULL; | |
144 FILE *fp_r = NULL; | |
145 | |
146 if(fn_r){ | |
147 if((fp_r = fopen(fn_r,"rb"))==NULL){ | |
148 printf("can't open [%s]\n",fn_r); | |
149 perror("reason:"); | |
150 exit(1); | |
151 } | |
152 }else{ | |
153 fp_r = stdin; | |
154 } | |
155 mode[0]='w'; | |
156 mode[1] = '0' + level; | |
157 mode[2] = '\0'; | |
158 | |
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"); | |
162 exit(1); | |
163 } | |
164 while((len=fread(buff,1,0x1000,fp_r))>0){ | |
165 BZ2_bzwrite(BZ2fp_w,buff,len); | |
166 } | |
167 BZ2_bzclose(BZ2fp_w); | |
168 if(fp_r!=stdin)fclose(fp_r); | |
169 } | |
170 } | |
171 #ifdef _WIN32 | |
172 BZ2DLLFreeLibrary(); | |
173 #endif | |
174 return 0; | |
175 } |