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