~ubuntu-branches/ubuntu/natty/ntop/natty

« back to all changes in this revision

Viewing changes to gdchart0.94c/zlib-1.1.3/contrib/minizip/minizip.c

  • Committer: Bazaar Package Importer
  • Author(s): Ola Lundqvist
  • Date: 2005-01-30 21:59:13 UTC
  • mfrom: (2.1.1 warty)
  • Revision ID: james.westby@ubuntu.com-20050130215913-xc3ke963bw49b3k4
Tags: 2:3.0-5
* Updated README.Debian file so users will understand what to do at
  install, closes: #291794, #287802.
* Updated ntop init script to give better output.
* Also changed log directory from /var/lib/ntop to /var/log/ntop,
  closes: #252352.
* Quoted the interface list to allow whitespace, closes: #267248.
* Added a couple of logcheck ignores, closes: #269321, #269319.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include <stdio.h>
2
 
#include <stdlib.h>
3
 
#include <string.h>
4
 
#include <time.h>
5
 
#include <errno.h>
6
 
#include <fcntl.h>
7
 
 
8
 
#ifdef unix
9
 
# include <unistd.h>
10
 
# include <utime.h>
11
 
# include <sys/types.h>
12
 
# include <sys/stat.h>
13
 
#else
14
 
# include <direct.h>
15
 
# include <io.h>
16
 
#endif
17
 
 
18
 
#include "zip.h"
19
 
 
20
 
 
21
 
#define WRITEBUFFERSIZE (16384)
22
 
#define MAXFILENAME (256)
23
 
 
24
 
#ifdef WIN32
25
 
uLong filetime(f, tmzip, dt)
26
 
    char *f;                /* name of file to get info on */
27
 
    tm_zip *tmzip;             /* return value: access, modific. and creation times */
28
 
    uLong *dt;             /* dostime */
29
 
{
30
 
  int ret = 0;
31
 
  {
32
 
      FILETIME ftLocal;
33
 
      HANDLE hFind;
34
 
      WIN32_FIND_DATA  ff32;
35
 
 
36
 
      hFind = FindFirstFile(f,&ff32);
37
 
      if (hFind != INVALID_HANDLE_VALUE)
38
 
      {
39
 
        FileTimeToLocalFileTime(&(ff32.ftLastWriteTime),&ftLocal);
40
 
        FileTimeToDosDateTime(&ftLocal,((LPWORD)dt)+1,((LPWORD)dt)+0);
41
 
        FindClose(hFind);
42
 
        ret = 1;
43
 
      }
44
 
  }
45
 
  return ret;
46
 
}
47
 
#else
48
 
#ifdef unix
49
 
uLong filetime(f, tmzip, dt)
50
 
    char *f;                /* name of file to get info on */
51
 
    tm_zip *tmzip;             /* return value: access, modific. and creation times */
52
 
    uLong *dt;             /* dostime */
53
 
{
54
 
  int ret=0;
55
 
  struct stat s;        /* results of stat() */
56
 
  struct tm* filedate;
57
 
  time_t tm_t=0;
58
 
  
59
 
  if (strcmp(f,"-")!=0)
60
 
  {
61
 
    char name[MAXFILENAME];
62
 
    int len = strlen(f);
63
 
    strcpy(name, f);
64
 
    if (name[len - 1] == '/')
65
 
      name[len - 1] = '\0';
66
 
    /* not all systems allow stat'ing a file with / appended */
67
 
    if (stat(name,&s)==0)
68
 
    {
69
 
      tm_t = s.st_mtime;
70
 
      ret = 1;
71
 
    }
72
 
  }
73
 
  filedate = localtime(&tm_t);
74
 
 
75
 
  tmzip->tm_sec  = filedate->tm_sec;
76
 
  tmzip->tm_min  = filedate->tm_min;
77
 
  tmzip->tm_hour = filedate->tm_hour;
78
 
  tmzip->tm_mday = filedate->tm_mday;
79
 
  tmzip->tm_mon  = filedate->tm_mon ;
80
 
  tmzip->tm_year = filedate->tm_year;
81
 
 
82
 
  return ret;
83
 
}
84
 
#else
85
 
uLong filetime(f, tmzip, dt)
86
 
    char *f;                /* name of file to get info on */
87
 
    tm_zip *tmzip;             /* return value: access, modific. and creation times */
88
 
    uLong *dt;             /* dostime */
89
 
{
90
 
    return 0;
91
 
}
92
 
#endif
93
 
#endif
94
 
 
95
 
 
96
 
 
97
 
 
98
 
int check_exist_file(filename)
99
 
    const char* filename;
100
 
{
101
 
        FILE* ftestexist;
102
 
    int ret = 1;
103
 
        ftestexist = fopen(filename,"rb");
104
 
        if (ftestexist==NULL)
105
 
        ret = 0;
106
 
    else
107
 
        fclose(ftestexist);
108
 
    return ret;
109
 
}
110
 
 
111
 
void do_banner()
112
 
{
113
 
        printf("MiniZip 0.15, demo of zLib + Zip package written by Gilles Vollant\n");
114
 
        printf("more info at http://wwww.winimage/zLibDll/unzip.htm\n\n");
115
 
}
116
 
 
117
 
void do_help()
118
 
{       
119
 
        printf("Usage : minizip [-o] file.zip [files_to_add]\n\n") ;
120
 
}
121
 
 
122
 
int main(argc,argv)
123
 
        int argc;
124
 
        char *argv[];
125
 
{
126
 
        int i;
127
 
        int opt_overwrite=0;
128
 
    int opt_compress_level=Z_DEFAULT_COMPRESSION;
129
 
    int zipfilenamearg = 0;
130
 
        char filename_try[MAXFILENAME];
131
 
    int zipok;
132
 
    int err=0;
133
 
    int size_buf=0;
134
 
    void* buf=NULL,
135
 
 
136
 
 
137
 
        do_banner();
138
 
        if (argc==1)
139
 
        {
140
 
                do_help();
141
 
                exit(0);
142
 
        return 0;
143
 
        }
144
 
        else
145
 
        {
146
 
                for (i=1;i<argc;i++)
147
 
                {
148
 
                        if ((*argv[i])=='-')
149
 
                        {
150
 
                                const char *p=argv[i]+1;
151
 
                                
152
 
                                while ((*p)!='\0')
153
 
                                {                       
154
 
                                        char c=*(p++);;
155
 
                                        if ((c=='o') || (c=='O'))
156
 
                                                opt_overwrite = 1;
157
 
                    if ((c>='0') && (c<='9'))
158
 
                        opt_compress_level = c-'0';
159
 
                                }
160
 
                        }
161
 
                        else
162
 
                                if (zipfilenamearg == 0)
163
 
                    zipfilenamearg = i ;
164
 
                }
165
 
        }
166
 
 
167
 
    size_buf = WRITEBUFFERSIZE;
168
 
    buf = (void*)malloc(size_buf);
169
 
    if (buf==NULL)
170
 
    {
171
 
        printf("Error allocating memory\n");
172
 
        return ZIP_INTERNALERROR;
173
 
    }
174
 
 
175
 
        if (zipfilenamearg==0)
176
 
        zipok=0;
177
 
    else
178
 
        {
179
 
        int i,len;
180
 
        int dot_found=0;
181
 
 
182
 
        zipok = 1 ;
183
 
                strcpy(filename_try,argv[zipfilenamearg]);
184
 
        len=strlen(filename_try);
185
 
        for (i=0;i<len;i++)
186
 
            if (filename_try[i]=='.')
187
 
                dot_found=1;
188
 
 
189
 
        if (dot_found==0)
190
 
            strcat(filename_try,".zip");
191
 
 
192
 
        if (opt_overwrite==0)
193
 
            if (check_exist_file(filename_try)!=0)
194
 
                        {
195
 
                char rep;
196
 
                                do
197
 
                                {
198
 
                                        char answer[128];
199
 
                                        printf("The file %s exist. Overwrite ? [y]es, [n]o : ",filename_try);
200
 
                                        scanf("%1s",answer);
201
 
                                        rep = answer[0] ;
202
 
                                        if ((rep>='a') && (rep<='z'))
203
 
                                                rep -= 0x20;
204
 
                                }
205
 
                                while ((rep!='Y') && (rep!='N'));
206
 
                if (rep=='N')
207
 
                    zipok = 0;
208
 
                        }
209
 
    }
210
 
 
211
 
    if (zipok==1)
212
 
    {
213
 
        zipFile zf;
214
 
        int errclose;
215
 
        zf = zipOpen(filename_try,0);
216
 
        if (zf == NULL)
217
 
        {
218
 
            printf("error opening %s\n",filename_try);
219
 
            err= ZIP_ERRNO;
220
 
        }
221
 
        else 
222
 
            printf("creating %s\n",filename_try);
223
 
 
224
 
        for (i=zipfilenamearg+1;(i<argc) && (err==ZIP_OK);i++)
225
 
        {
226
 
            if (((*(argv[i]))!='-') && ((*(argv[i]))!='/'))
227
 
            {
228
 
                FILE * fin;
229
 
                int size_read;
230
 
                const char* filenameinzip = argv[i];
231
 
                zip_fileinfo zi;
232
 
 
233
 
                zi.tmz_date.tm_sec = zi.tmz_date.tm_min = zi.tmz_date.tm_hour = 
234
 
                zi.tmz_date.tm_mday = zi.tmz_date.tm_min = zi.tmz_date.tm_year = 0;
235
 
                zi.dosDate = 0;
236
 
                zi.internal_fa = 0;
237
 
                zi.external_fa = 0;
238
 
                filetime(filenameinzip,&zi.tmz_date,&zi.dosDate);
239
 
 
240
 
 
241
 
                err = zipOpenNewFileInZip(zf,filenameinzip,&zi,
242
 
                                 NULL,0,NULL,0,NULL /* comment*/,
243
 
                                 (opt_compress_level != 0) ? Z_DEFLATED : 0,
244
 
                                 opt_compress_level);
245
 
 
246
 
                if (err != ZIP_OK)
247
 
                    printf("error in opening %s in zipfile\n",filenameinzip);
248
 
                else
249
 
                {
250
 
                    fin = fopen(filenameinzip,"rb");
251
 
                    if (fin==NULL)
252
 
                    {
253
 
                        err=ZIP_ERRNO;
254
 
                        printf("error in opening %s for reading\n",filenameinzip);
255
 
                    }
256
 
                }
257
 
 
258
 
                if (err == ZIP_OK)
259
 
                    do
260
 
                    {
261
 
                        err = ZIP_OK;
262
 
                        size_read = fread(buf,1,size_buf,fin);
263
 
                        if (size_read < size_buf)
264
 
                            if (feof(fin)==0)
265
 
                        {
266
 
                            printf("error in reading %s\n",filenameinzip);
267
 
                            err = ZIP_ERRNO;
268
 
                        }
269
 
 
270
 
                        if (size_read>0)
271
 
                        {
272
 
                            err = zipWriteInFileInZip (zf,buf,size_read);
273
 
                            if (err<0)
274
 
                            {
275
 
                                printf("error in writing %s in the zipfile\n",
276
 
                                                 filenameinzip);
277
 
                            }
278
 
                                
279
 
                        }
280
 
                    } while ((err == ZIP_OK) && (size_read>0));
281
 
 
282
 
                fclose(fin);
283
 
                if (err<0)
284
 
                    err=ZIP_ERRNO;
285
 
                else
286
 
                {                    
287
 
                    err = zipCloseFileInZip(zf);
288
 
                    if (err!=ZIP_OK)
289
 
                        printf("error in closing %s in the zipfile\n",
290
 
                                    filenameinzip);
291
 
                }
292
 
            }
293
 
        }
294
 
        errclose = zipClose(zf,NULL);
295
 
        if (errclose != ZIP_OK)
296
 
            printf("error in closing %s\n",filename_try);
297
 
   }
298
 
 
299
 
    free(buf);
300
 
    exit(0);
301
 
        return 0;  /* to avoid warning */
302
 
}