Joe Conway <mail@joeconway.com> writes:
> Other than these 4 warnings, I get a clean compile on Red Hat 9 and 8.0
> systems.
I see a couple other warnings when building on HPUX, but all are in ecpg:
gcc -O1 -Wall -Wmissing-prototypes -Wmissing-declarations -g -fpic -I../../../../src/interfaces/ecpg/include
-I../../../../src/include/utils-I../../../../src/include -D_XOPEN_SOURCE_EXTENDED -g -c -o datetime.o datetime.c
datetime.c: In function `PGTYPESdate_fmt_asc':
datetime.c:240: warning: implicit declaration of function `snprintf'
gcc -O1 -Wall -Wmissing-prototypes -Wmissing-declarations -g -fpic -I../../../../src/interfaces/ecpg/include
-I../../../../src/include/utils-I../../../../src/include -D_XOPEN_SOURCE_EXTENDED -g -c -o common.o common.c
common.c: In function `pgtypes_fmt_replace':
common.c:83: warning: implicit declaration of function `snprintf'
gcc -O1 -Wall -Wmissing-prototypes -Wmissing-declarations -g -fpic -I../../../../src/interfaces/ecpg/include
-I../../../../src/include/utils-I../../../../src/include -D_XOPEN_SOURCE_EXTENDED -g -c -o dt_common.o dt_common.c
This happens because the ecpg versions of these files ignore the
Postgres convention that everything should include postgres.h or
postgres_fe.h first. I have been planning to bug Michael about why that
is; I think it will create a bunch of portability gotchas beyond this
one. (Our code associated with 64-bit-offset file I/O, in particular,
is known to break on some platforms when this rule is violated.)
AFAIK the only way to get rid of the flex-related warnings is to not use
yylineno. This seems like a good idea to me (when I got rid of yylineno
in plpgsql's lexer, there were a number of benefits), but I don't have
time to look at it ...
regards, tom lane