Witam
Piszę program który musi zzipować kilka plików w jedno archiwum żeby je później wysłać. Problem mam przy zipowaniu tych plików - używam do tego minizip-a zawartego w zlib-ie. Program będzie działał na linuksie, zamieniłem już nawet "\n" na "(char)13" żeby upewnić się że to nie wina innego kodowania końca linii. Kiedy zipuje pliki np png to wszystko jest ok ale po zzipowaniu plików tekstowych i rozpakowaniu archiwum pod windowsem (na linuksie wszystko działa ok - rozpakowują się poprawnie) zamiast plików tekstowych mam foldery o nazwie np plik1.txt. Czy ktoś spotkał się z takim problemem ? Niżej kod mojej funkcji zipującej - przekazuję do niej tylko ścieżki plików które wcześniej zamykam więc to raczej nie wina niezamkniętych plików.
void Zipuj(char* sciezka,char* label)
{
zipFile plikZip;
FILE* kompr;
zip_fileinfo zipfi;
void* extrafield_local=NULL;
uInt size_extrafield_local=0;
void* extrafield_global=NULL;
uInt size_extrafield_global=0;
unsigned len;
char sciezkaZip[20],global_comment[40]="komentarz";
strcpy(sciezkaZip,label);
strcat(sciezkaZip,".zip");
if( (plikZip=zipOpen(sciezkaZip, APPEND_STATUS_ADDINZIP)) ==NULL)
{
plikZip=zipOpen(sciezkaZip,0);
}
kompr=fopen(sciezka,"rb");
len=MAX_BUF;
unsigned char *buf=new unsigned char[len];
printf(":%s:\n",sciezka);
zipOpenNewFileInZip(plikZip,
sciezka,
&zipfi,
extrafield_local,
size_extrafield_local,
extrafield_global,
size_extrafield_global,
NULL,
Z_DEFLATED,
Z_DEFAULT_COMPRESSION);
do{
len=(int)fread(buf,1/*sizeof(unsigned char)*/,len,kompr);
if (len>0)
{
zipWriteInFileInZip(plikZip,
buf,
len);
}
}while(len>0);
fclose(kompr);
delete buf;
zipCloseFileInZip(plikZip);
zipClose(plikZip, global_comment);
}