Hi Mark
thanks for your input.
Didn't work though :(
I've put a bit of debug messages to see where it is passing and it always pass in the "compr" check:
pad = size % TAR_BLOCKSIZE ? (TAR_BLOCKSIZE - (size % TAR_BLOCKSIZE)) : 0;
if (compr) {
if (off == gzseek(dbio->gzs, 0, SEEK_CUR)) {
gzsek = gzseek(dbio->gzs, (long)size + pad, SEEK_CUR);
printf("gzseek \n");
}
else if (pad) {
gzseek(dbio->gzs, pad, SEEK_CUR);
printf("pad gzseek \n");
}
Now the loop says:
LibClamAV debug: cli_tgzload: Loading COPYING, size: 17992
gzseek
LibClamAV debug: cli_tgzload: Loading COPYING, size: 17992
gzseek
so it's in the first part of the "if".
Thinking it could have been a problem with gzseek I've added the "gzsek" variable so I can check the return value:
if ( gzsek == -1 )
break;
but it stays in loop.
So it could eventually be a problem with the libz library ....
I've filed a bug to bugzilla, but try to find also by myself.
Pierluigi