Santiago Vila a écrit :
On Fri, 25 Nov 2005, Gürkan Sengün wrote:


Package: unzip
Version: 5.52-5
Severity: normal

$ uname -a
GNU/kFreeBSD gnu 5.4-1-686 #0 Sun Nov 20 17:50:29 CET 2005 i686 i386 AMD
Sempron(tm)   3000+ GNU/kFreeBSD

how to reproduce:
$ wget http://www.braingames.getput.com/mog/downloads/mog-sources.zip
$ unzip mog-sources.zip
Archive:  mog-sources.zip
error [mog-sources.zip]:  start of central directory not found;
 zipfile corrupt.
 (please check that you have transferred or created the zipfile in the
 appropriate BINARY mode and that you have compiled UnZip properly)

after the patch:
$ unzip mog-sources.zip
Archive:  mog-sources.zip
 inflating: MoGv62-sources/bitmaps.cpp
 inflating: MoGv62-sources/bitmaps.h
 inflating: MoGv62-sources/debug-report.cpp
 inflating: MoGv62-sources/demons.cpp

Please apply this patch and also forward it to upstream:

00:51 < aurel32> --- unzip-5.52.orig/unix/unxcfg.h
00:51 < aurel32> +++ unzip-5.52/unix/unxcfg.h
00:51 < aurel32> @@ -15,6 +15,7 @@
00:51 < aurel32>  #include <sys/types.h>          /* off_t, time_t, dev_t, ...
*/
00:51 < aurel32>  #include <sys/stat.h>
00:51 < aurel32> +#include <unistd.h>
00:51 < aurel32>  #ifndef COHERENT
00:51 < aurel32>  #  include <fcntl.h>            /* O_BINARY for open() w/o
CR/LF translation */


It is not enough that you provide a patch. They will surely reject the
patch, as apparently they don't want to include unistd.h unconditionally.

The current code uses the __GLIBC__ macro here and there (well, sometimes
in combination with __GNU__, which is redundant). It will help if you
could explain why it does not work without the patch, and why it works
on Linux-based systems.

The problem is that off_t is a 64-bit type on GNU/kFreeBSD, whereas it is a 32-bit type on GNU/Linux. Thus lseek takes a 64-bit argument. If you don't include unistd.h, the lseek function is not defined, and gcc assumes that it takes int (32-bit) for its arguments, which is wrong there. BTW, even on GNU/Linux, gcc warns with an implicit definition of the lseek function.

--
  .''`.  Aurelien Jarno             | GPG: 1024D/F1BCDB73
 : :' :  Debian developer           | Electrical Engineer
 `. `'   [EMAIL PROTECTED]         | [EMAIL PROTECTED]
   `-    people.debian.org/~aurel32 | www.aurel32.net


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to