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