11
# include <sys/types.h>
12
# include <sys/stat.h>
21
#define WRITEBUFFERSIZE (16384)
22
#define MAXFILENAME (256)
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 */
36
hFind = FindFirstFile(f,&ff32);
37
if (hFind != INVALID_HANDLE_VALUE)
39
FileTimeToLocalFileTime(&(ff32.ftLastWriteTime),&ftLocal);
40
FileTimeToDosDateTime(&ftLocal,((LPWORD)dt)+1,((LPWORD)dt)+0);
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 */
55
struct stat s; /* results of stat() */
61
char name[MAXFILENAME];
64
if (name[len - 1] == '/')
66
/* not all systems allow stat'ing a file with / appended */
73
filedate = localtime(&tm_t);
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;
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 */
98
int check_exist_file(filename)
103
ftestexist = fopen(filename,"rb");
104
if (ftestexist==NULL)
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");
119
printf("Usage : minizip [-o] file.zip [files_to_add]\n\n") ;
128
int opt_compress_level=Z_DEFAULT_COMPRESSION;
129
int zipfilenamearg = 0;
130
char filename_try[MAXFILENAME];
150
const char *p=argv[i]+1;
155
if ((c=='o') || (c=='O'))
157
if ((c>='0') && (c<='9'))
158
opt_compress_level = c-'0';
162
if (zipfilenamearg == 0)
167
size_buf = WRITEBUFFERSIZE;
168
buf = (void*)malloc(size_buf);
171
printf("Error allocating memory\n");
172
return ZIP_INTERNALERROR;
175
if (zipfilenamearg==0)
183
strcpy(filename_try,argv[zipfilenamearg]);
184
len=strlen(filename_try);
186
if (filename_try[i]=='.')
190
strcat(filename_try,".zip");
192
if (opt_overwrite==0)
193
if (check_exist_file(filename_try)!=0)
199
printf("The file %s exist. Overwrite ? [y]es, [n]o : ",filename_try);
202
if ((rep>='a') && (rep<='z'))
205
while ((rep!='Y') && (rep!='N'));
215
zf = zipOpen(filename_try,0);
218
printf("error opening %s\n",filename_try);
222
printf("creating %s\n",filename_try);
224
for (i=zipfilenamearg+1;(i<argc) && (err==ZIP_OK);i++)
226
if (((*(argv[i]))!='-') && ((*(argv[i]))!='/'))
230
const char* filenameinzip = argv[i];
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;
238
filetime(filenameinzip,&zi.tmz_date,&zi.dosDate);
241
err = zipOpenNewFileInZip(zf,filenameinzip,&zi,
242
NULL,0,NULL,0,NULL /* comment*/,
243
(opt_compress_level != 0) ? Z_DEFLATED : 0,
247
printf("error in opening %s in zipfile\n",filenameinzip);
250
fin = fopen(filenameinzip,"rb");
254
printf("error in opening %s for reading\n",filenameinzip);
262
size_read = fread(buf,1,size_buf,fin);
263
if (size_read < size_buf)
266
printf("error in reading %s\n",filenameinzip);
272
err = zipWriteInFileInZip (zf,buf,size_read);
275
printf("error in writing %s in the zipfile\n",
280
} while ((err == ZIP_OK) && (size_read>0));
287
err = zipCloseFileInZip(zf);
289
printf("error in closing %s in the zipfile\n",
294
errclose = zipClose(zf,NULL);
295
if (errclose != ZIP_OK)
296
printf("error in closing %s\n",filename_try);
301
return 0; /* to avoid warning */