From 2ec465ffc4aa987eb3710e15d1ab3643917c064b Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 15 Jul 2002 02:22:52 +0000 Subject: [PATCH] Symlink fixes. Still broken, though. --- archivers/zip.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/archivers/zip.c b/archivers/zip.c index d353ff48..ede808ae 100644 --- a/archivers/zip.c +++ b/archivers/zip.c @@ -577,7 +577,7 @@ static char *get_zip_realpath(void *in, ZIPentry *entry) else /* symlink target path is compressed... */ { z_stream stream; - PHYSFS_uint32 compsize = entry->uncompressed_size; + PHYSFS_uint32 compsize = entry->compressed_size; PHYSFS_uint8 *compressed = (PHYSFS_uint8 *) malloc(compsize); if (compressed != NULL) { @@ -590,8 +590,11 @@ static char *get_zip_realpath(void *in, ZIPentry *entry) stream.avail_out = size; if (zlib_err(inflateInit2(&stream, -MAX_WBITS)) == Z_OK) { - rc = (zlib_err(inflate(&stream, Z_FINISH)) == Z_OK); + rc = zlib_err(inflate(&stream, Z_FINISH)); inflateEnd(&stream); + + /* both are acceptable outcomes... */ + rc = ((rc == Z_OK) || (rc == Z_STREAM_END)); } /* if */ } /* if */ free(compressed); @@ -636,7 +639,12 @@ static int entry_is_symlink(ZIPentry *entry, PHYSFS_uint32 extern_attr) return ( (version_does_symlinks(entry->version)) && (entry->uncompressed_size > 0) && - (extern_attr & 0x00120000) /* symlink flag. */ + + #if 0 /* !!! FIXME ... this check is incorrect for some files! */ + (extern_attr & 0x0120000) /* symlink flag. */ + #else + 0 /* always fail for now. Symlinks will just be small files. */ + #endif ); } /* entry_is_symlink */