aboutsummaryrefslogtreecommitdiff
path: root/dlltest.c
diff options
context:
space:
mode:
authorJulian Seward <jseward@acm.org>1999-09-04 22:13:13 +0200
committerJulian Seward <jseward@acm.org>1999-09-04 22:13:13 +0200
commitf93cd82a9a7094ad90fd19bbc6ccf6f4627f8060 (patch)
treec95407df5665f5a7395683f07552f2b13f2e501f /dlltest.c
parent977101ad5f833f5c0a574bfeea408e5301a6b052 (diff)
downloadbzip2-f93cd82a9a7094ad90fd19bbc6ccf6f4627f8060.tar.gz
bzip2-f93cd82a9a7094ad90fd19bbc6ccf6f4627f8060.tar.bz2
bzip2-f93cd82a9a7094ad90fd19bbc6ccf6f4627f8060.zip
bzip2-0.9.5dbzip2-0.9.5d
Diffstat (limited to 'dlltest.c')
-rw-r--r--dlltest.c242
1 files changed, 122 insertions, 120 deletions
diff --git a/dlltest.c b/dlltest.c
index ee81bcd..e5639f1 100644
--- a/dlltest.c
+++ b/dlltest.c
@@ -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;
24static HINSTANCE BZ2DLLhLib; 24static HINSTANCE BZ2DLLhLib;
25int BZ2DLLLoadLibrary(void) 25int 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}
48int BZ2DLLFreeLibrary(void) 48int 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
56void usage(void) 56void 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
61void main(int argc,char *argv[]) 61int 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}