On 8/11/06, Martin Schröder
http://sarovar.org/download.php/1064/pdftex-1.40.0-beta-20060811.tar.bz2 http://sarovar.org/download.php/1065/pdftex-1.40.0-beta-20060725-20060811.di...
--------------------------------------------------------------- pdfTeX 3.141592-1.40.0-beta-20060811 was released on 2006-08-11 [...]
Please have a look at libs/obsdcompat; it has a bunch of very nice (and safe) string functions. And it allows the safe use of the __attribute__-feature of gcc.
Until now, pdftex could be built using a c99 compiler. There seems
to be a bug in
gcc 4.1's strsep under "std-c99".
I was able to build this (using the two patches posted to this thread)
on Fedora Core 5 and also SGI Irix 6.5 (using the SGI MIPSPro "c99"
compiler), but both builds had problems in libs/obsdcompat when using
c99.
For FC5, configure failed to detect strsep when using "gcc -std=c99":
$ gcc --version
gcc (GCC) 4.1.1 20060525 (Red Hat 4.1.1-1)
$ ./my-build
[...]
gcc -std=c99 -g -O2 -march=i686 -Wall -Wpointer-arith -Wuninitialized
-Wsign-compare -Wno-pointer-sign -I. -I.. -I -I/.. -DHAVE_CONFIG_H
-c ../../../src/libs/obsdcompat/strsep.c
../../../src/libs/obsdcompat/strsep.c:53: error: expected identifier
or '(' before '__extension__'
../../../src/libs/obsdcompat/strsep.c:53: error: expected identifier
or '(' before ')' token
make[1]: *** [strsep.o] Error 1
make[1]: Leaving directory
`/nfs/amigo/diomedea/disk2/TeX/src/pdftex-1.40.0-beta-20060811/i686-linux/libs/obsdcompat'
Note the "-I<null>" and "-I<null>/..", which didn't seem to bother
gcc, but did bother SGI's
compiler.
Other people have reported this error with gcc 4.1 and the workaround
is to add -DHAVE_STRSEP to the compiler flags. I got past this by
editing config.h to "#define HAVE_STRSEP 1" and running the last make
step in the build script. The entry in config.log was:
configure:5077: checking whether strsep is declared
configure:5106: gcc -c -std=c99 -g -O2 -march=i686 -Wall
-Wpointer-arith -Wuninitialized -Wsign-compare -Wno-pointer-sign
conftest.c >&5
conftest.c: In function 'main':
conftest.c:50: error: 'strsep' undeclared (first use in this function)
conftest.c:50: error: (Each undeclared identifier is reported only once
conftest.c:50: error: for each function it appears in.)
conftest.c:50: warning: unused variable 'p'
configure:5112: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME "OpenBSD-Compat"
[...]
| #define HAVE_STRING_H 1
[...]
| /* end confdefs.h. */
|
| #ifdef HAVE_STRING_H
| # include