diff options
Diffstat (limited to 'dlltest.c')
-rw-r--r-- | dlltest.c | 242 |
1 files changed, 122 insertions, 120 deletions
@@ -1,17 +1,17 @@ | |||
1 | /* | 1 | /* |
2 | minibz2 | 2 | minibz2 |
3 | libbz2.dll test program. | 3 | libbz2.dll test program. |
4 | by Yoshioka Tsuneo(QWF00133@nifty.ne.jp/tsuneo-y@is.aist-nara.ac.jp) | 4 | by Yoshioka Tsuneo(QWF00133@nifty.ne.jp/tsuneo-y@is.aist-nara.ac.jp) |
5 | This file is Public Domain. | 5 | This file is Public Domain. |
6 | welcome any email to me. | 6 | welcome any email to me. |
7 | 7 | ||
8 | usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename] | 8 | usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename] |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #define BZ_IMPORT | 11 | #define BZ_IMPORT |
12 | #include "bzlib.h" | ||
13 | #include <stdio.h> | 12 | #include <stdio.h> |
14 | #include <stdlib.h> | 13 | #include <stdlib.h> |
14 | #include "bzlib.h" | ||
15 | #ifdef _WIN32 | 15 | #ifdef _WIN32 |
16 | #include <io.h> | 16 | #include <io.h> |
17 | #endif | 17 | #endif |
@@ -24,140 +24,142 @@ static int BZ2DLLLoaded = 0; | |||
24 | static HINSTANCE BZ2DLLhLib; | 24 | static HINSTANCE BZ2DLLhLib; |
25 | int BZ2DLLLoadLibrary(void) | 25 | int BZ2DLLLoadLibrary(void) |
26 | { | 26 | { |
27 | HINSTANCE hLib; | 27 | HINSTANCE hLib; |
28 | 28 | ||
29 | if(BZ2DLLLoaded==1){return 0;} | 29 | if(BZ2DLLLoaded==1){return 0;} |
30 | hLib=LoadLibrary("libbz2.dll"); | 30 | hLib=LoadLibrary("libbz2.dll"); |
31 | if(hLib == NULL){ | 31 | if(hLib == NULL){ |
32 | puts("Can't load libbz2.dll"); | 32 | puts("Can't load libbz2.dll"); |
33 | return -1; | 33 | return -1; |
34 | } | 34 | } |
35 | BZ2DLLLoaded=1; | 35 | BZ2DLLLoaded=1; |
36 | BZ2DLLhLib=hLib; | 36 | BZ2DLLhLib=hLib; |
37 | bzlibVersion=GetProcAddress(hLib,"bzlibVersion"); | 37 | bzlibVersion=GetProcAddress(hLib,"bzlibVersion"); |
38 | bzopen=GetProcAddress(hLib,"bzopen"); | 38 | bzopen=GetProcAddress(hLib,"bzopen"); |
39 | bzdopen=GetProcAddress(hLib,"bzdopen"); | 39 | bzdopen=GetProcAddress(hLib,"bzdopen"); |
40 | bzread=GetProcAddress(hLib,"bzread"); | 40 | bzread=GetProcAddress(hLib,"bzread"); |
41 | bzwrite=GetProcAddress(hLib,"bzwrite"); | 41 | bzwrite=GetProcAddress(hLib,"bzwrite"); |
42 | bzflush=GetProcAddress(hLib,"bzflush"); | 42 | bzflush=GetProcAddress(hLib,"bzflush"); |
43 | bzclose=GetProcAddress(hLib,"bzclose"); | 43 | bzclose=GetProcAddress(hLib,"bzclose"); |
44 | bzerror=GetProcAddress(hLib,"bzerror"); | 44 | bzerror=GetProcAddress(hLib,"bzerror"); |
45 | return 0; | 45 | return 0; |
46 | 46 | ||
47 | } | 47 | } |
48 | int BZ2DLLFreeLibrary(void) | 48 | int BZ2DLLFreeLibrary(void) |
49 | { | 49 | { |
50 | if(BZ2DLLLoaded==0){return 0;} | 50 | if(BZ2DLLLoaded==0){return 0;} |
51 | FreeLibrary(BZ2DLLhLib); | 51 | FreeLibrary(BZ2DLLhLib); |
52 | BZ2DLLLoaded=0; | 52 | BZ2DLLLoaded=0; |
53 | } | 53 | } |
54 | #endif /* WIN32 */ | 54 | #endif /* WIN32 */ |
55 | 55 | ||
56 | void usage(void) | 56 | void usage(void) |
57 | { | 57 | { |
58 | puts("usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]"); | 58 | puts("usage: minibz2 [-d] [-{1,2,..9}] [[srcfilename] destfilename]"); |
59 | } | 59 | } |
60 | 60 | ||
61 | void main(int argc,char *argv[]) | 61 | int main(int argc,char *argv[]) |
62 | { | 62 | { |
63 | int decompress = 0; | 63 | int decompress = 0; |
64 | int level = 9; | 64 | int level = 9; |
65 | char *fn_r,*fn_w; | 65 | char *fn_r = NULL; |
66 | char *fn_w = NULL; | ||
66 | 67 | ||
67 | #ifdef _WIN32 | 68 | #ifdef _WIN32 |
68 | if(BZ2DLLLoadLibrary()<0){ | 69 | if(BZ2DLLLoadLibrary()<0){ |
69 | puts("can't load dll"); | 70 | puts("can't load dll"); |
70 | exit(1); | 71 | exit(1); |
71 | } | 72 | } |
72 | #endif | 73 | #endif |
73 | while(++argv,--argc){ | 74 | while(++argv,--argc){ |
74 | if(**argv =='-' || **argv=='/'){ | 75 | if(**argv =='-' || **argv=='/'){ |
75 | char *p; | 76 | char *p; |
76 | 77 | ||
77 | for(p=*argv+1;*p;p++){ | 78 | for(p=*argv+1;*p;p++){ |
78 | if(*p=='d'){ | 79 | if(*p=='d'){ |
79 | decompress = 1; | 80 | decompress = 1; |
80 | }else if('1'<=*p && *p<='9'){ | 81 | }else if('1'<=*p && *p<='9'){ |
81 | level = *p - '0'; | 82 | level = *p - '0'; |
82 | }else{ | 83 | }else{ |
83 | usage(); | 84 | usage(); |
84 | exit(1); | 85 | exit(1); |
85 | } | 86 | } |
86 | } | 87 | } |
87 | }else{ | 88 | }else{ |
88 | break; | 89 | break; |
89 | } | 90 | } |
90 | } | 91 | } |
91 | if(argc>=1){ | 92 | if(argc>=1){ |
92 | fn_r = *argv; | 93 | fn_r = *argv; |
93 | argc--;argv++; | 94 | argc--;argv++; |
94 | }else{ | 95 | }else{ |
95 | fn_r = NULL; | 96 | fn_r = NULL; |
96 | } | 97 | } |
97 | if(argc>=1){ | 98 | if(argc>=1){ |
98 | fn_w = *argv; | 99 | fn_w = *argv; |
99 | argc--;argv++; | 100 | argc--;argv++; |
100 | }else{ | 101 | }else{ |
101 | fn_w = NULL; | 102 | fn_w = NULL; |
102 | } | 103 | } |
103 | { | 104 | { |
104 | int len; | 105 | int len; |
105 | char buff[0x1000]; | 106 | char buff[0x1000]; |
106 | char mode[10]; | 107 | char mode[10]; |
107 | 108 | ||
108 | if(decompress){ | 109 | if(decompress){ |
109 | BZFILE *BZ2fp_r; | 110 | BZFILE *BZ2fp_r = NULL; |
110 | FILE *fp_w; | 111 | FILE *fp_w = NULL; |
111 | 112 | ||
112 | if(fn_w){ | 113 | if(fn_w){ |
113 | if((fp_w = fopen(fn_w,"wb"))==NULL){ | 114 | if((fp_w = fopen(fn_w,"wb"))==NULL){ |
114 | printf("can't open [%s]\n",fn_w); | 115 | printf("can't open [%s]\n",fn_w); |
115 | perror("reason:"); | 116 | perror("reason:"); |
116 | exit(1); | 117 | exit(1); |
117 | } | 118 | } |
118 | }else{ | 119 | }else{ |
119 | fp_w = stdout; | 120 | fp_w = stdout; |
120 | } | 121 | } |
121 | if((BZ2fp_r == NULL && (BZ2fp_r = bzdopen(fileno(stdin),"rb"))==NULL) | 122 | if((BZ2fp_r == NULL && (BZ2fp_r = bzdopen(fileno(stdin),"rb"))==NULL) |
122 | || (BZ2fp_r != NULL && (BZ2fp_r = bzopen(fn_r,"rb"))==NULL)){ | 123 | || (BZ2fp_r != NULL && (BZ2fp_r = bzopen(fn_r,"rb"))==NULL)){ |
123 | printf("can't bz2openstream\n"); | 124 | printf("can't bz2openstream\n"); |
124 | exit(1); | 125 | exit(1); |
125 | } | 126 | } |
126 | while((len=bzread(BZ2fp_r,buff,0x1000))>0){ | 127 | while((len=bzread(BZ2fp_r,buff,0x1000))>0){ |
127 | fwrite(buff,1,len,fp_w); | 128 | fwrite(buff,1,len,fp_w); |
128 | } | 129 | } |
129 | bzclose(BZ2fp_r); | 130 | bzclose(BZ2fp_r); |
130 | if(fp_w != stdout) fclose(fp_w); | 131 | if(fp_w != stdout) fclose(fp_w); |
131 | }else{ | 132 | }else{ |
132 | BZFILE *BZ2fp_w; | 133 | BZFILE *BZ2fp_w = NULL; |
133 | FILE *fp_r; | 134 | FILE *fp_r = NULL; |
134 | 135 | ||
135 | if(fn_r){ | 136 | if(fn_r){ |
136 | if((fp_r = fopen(fn_r,"rb"))==NULL){ | 137 | if((fp_r = fopen(fn_r,"rb"))==NULL){ |
137 | printf("can't open [%s]\n",fn_r); | 138 | printf("can't open [%s]\n",fn_r); |
138 | perror("reason:"); | 139 | perror("reason:"); |
139 | exit(1); | 140 | exit(1); |
140 | } | 141 | } |
141 | }else{ | 142 | }else{ |
142 | fp_r = stdin; | 143 | fp_r = stdin; |
143 | } | 144 | } |
144 | mode[0]='w'; | 145 | mode[0]='w'; |
145 | mode[1] = '0' + level; | 146 | mode[1] = '0' + level; |
146 | mode[2] = '\0'; | 147 | mode[2] = '\0'; |
147 | 148 | ||
148 | if((fn_w == NULL && (BZ2fp_w = bzdopen(fileno(stdout),mode))==NULL) | 149 | if((fn_w == NULL && (BZ2fp_w = bzdopen(fileno(stdout),mode))==NULL) |
149 | || (fn_w !=NULL && (BZ2fp_w = bzopen(fn_w,mode))==NULL)){ | 150 | || (fn_w !=NULL && (BZ2fp_w = bzopen(fn_w,mode))==NULL)){ |
150 | printf("can't bz2openstream\n"); | 151 | printf("can't bz2openstream\n"); |
151 | exit(1); | 152 | exit(1); |
152 | } | 153 | } |
153 | while((len=fread(buff,1,0x1000,fp_r))>0){ | 154 | while((len=fread(buff,1,0x1000,fp_r))>0){ |
154 | bzwrite(BZ2fp_w,buff,len); | 155 | bzwrite(BZ2fp_w,buff,len); |
155 | } | 156 | } |
156 | bzclose(BZ2fp_w); | 157 | bzclose(BZ2fp_w); |
157 | if(fp_r!=stdin)fclose(fp_r); | 158 | if(fp_r!=stdin)fclose(fp_r); |
158 | } | 159 | } |
159 | } | 160 | } |
160 | #ifdef _WIN32 | 161 | #ifdef _WIN32 |
161 | BZ2DLLFreeLibrary(); | 162 | BZ2DLLFreeLibrary(); |
162 | #endif | 163 | #endif |
164 | return 0; | ||
163 | } | 165 | } |