~ubuntu-branches/ubuntu/saucy/clamav/saucy

« back to all changes in this revision

Viewing changes to win32/3rdparty/bzip2/dlltest.c

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-04-11 19:58:58 UTC
  • Revision ID: james.westby@ubuntu.com-20100411195858-exax6ky1jyzpa1h7
Tags: 0.96+dfsg-1ubuntu1
* Merge from Debian Unstable.  Remaining Ubuntu changes:
  - Drop initial signature definitions from clamav-base
  - Drop build-dep on electric-fence (in Universe)
  - Add apparmor profiles for clamd and freshclam along with maintainer
    script changes
* Adjust debconf processing for new option to the default priority procuces
  valid configuration files

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
}