#39 closed defect (fixed)
mygetopt.c fails compilation on 64-bit FreeBSD
Reported by: | saper@system.pl | Owned by: | Jean-Yves Lamoureux |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | core | Version: | 0.99.beta13 |
Keywords: | 64bit amd64 FreeBSD getopt mygetopt | Cc: | |
Product: | img2txt |
Description
Hello, mygetopt.c fails on amd64 FreeBSD:
cc -DHAVE_CONFIG_H -I. -I.. -I.. -I../cucul -I../caca -DLIBCACA=1 -DX_DISPLAY_MISSING=1 -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include/freetype2 -O2 -fno-strict-aliasing -pipe -fno-strength-reduce -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wstrict-prototypes -Wshadow -Waggregate-return -Wmissing-prototypes -Wnested-externs -Wsign-compare -MT img2txt-img2txt.o -MD -MP -MF .deps/img2txt-img2txt.Tpo -c -o img2txt-img2txt.o `test -f 'img2txt.c' || echo './'`img2txt.c mv -f .deps/img2txt-img2txt.Tpo .deps/img2txt-img2txt.Po cc -DHAVE_CONFIG_H -I. -I.. -I.. -I../cucul -I../caca -DLIBCACA=1 -DX_DISPLAY_MISSING=1 -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include/freetype2 -O2 -fno-strict-aliasing -pipe -fno-strength-reduce -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wstrict-prototypes -Wshadow -Waggregate-return -Wmissing-prototypes -Wnested-externs -Wsign-compare -MT img2txt-mygetopt.o -MD -MP -MF .deps/img2txt-mygetopt.Tpo -c -o img2txt-mygetopt.o `test -f 'mygetopt.c' || echo './'`mygetopt.c mygetopt.c:29: error: conflicting types for 'uintptr_t' /usr/include/stdint.h:102: error: previous declaration of 'uintptr_t' was here mygetopt.c: In function 'mygetopt': mygetopt.c:46: warning: cast from pointer to integer of different size mygetopt.c:46: warning: cast to pointer from integer of different size *** Error code 1
1) There is some strange construct like this (mygetopt.c:46):
char **argv = (char **)(uintptr_t)_argv;
What is this needed for?
2) and above (mygetopt.c:29):
#ifndef __intptr_t_defined typedef unsigned int uintptr_t; #endif
3) I had to change this to:
#ifndef _INTPTR_T_DECLARED typedef unsigned int uintptr_t; #endif
and now 64-bit pointers are working.
On the other hand, since we have:
% grep -i getopt /usr/obj//usr/ports/graphics/libcaca/work/libcaca-0.99.beta13/config.h /* Define to 1 if you have the <getopt.h> header file. */ #define HAVE_GETOPT_H 1 /* Define to 1 if you have the `getopt_long' function. */ #define HAVE_GETOPT_LONG 1
the "mygetopt.[ch]" code isn't going to be used at all. Maybe it makes sense to skip building this component altogether?
Greets,
--Marcin
Change History (2)
comment:1 Changed 17 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:2 Changed 15 years ago by
Component: | img2txt → core |
---|---|
Product: | → img2txt |
Note: See
TracTickets for help on using
tickets.
(In [1815]) * Don't use mygetopt.c in img2txt if the system has getopt_long.