From safestack.h, line 113, in 1.0 beta 3:
typedef char *STRING;
typedef const char *CSTRING;
Using such generic names seems like a really bad idea - its asking for
conflicts. And they do happen, at least on windows. The problem is
that one of the windows headers, ntsecapi.h around line 134, also define
STRING:
typedef struct _STRING {
USHORT Length;
USHORT MaximumLength;
PCHAR Buffer;
} STRING, *PSTRING;
To see this blow up, compile postgresql 8.4 setting the --with-openssl
flag, using mingw. You'll get this error:
gcc -O2 -g -mms-bitfields -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing
-fwrapv -I../../../../src/include -I/usr/local/include
-I./src/include/port/win32 -DEXEC_BACKEND -I/usr/local/include/libxml2
"-I../../../../src/include/port/win32" -DBUILDING_DLL -c
-o printtup.o printtup.c
In file included from ../../../../src/include/libpq/libpq-be.h:51,
from ../../../../src/include/libpq/libpq.h:21,
from printtup.c:19:
c:\development\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/ntsecapi.h:137:
error: conflicting types for 'STRING'
C:/Development/msys/local/include/openssl/safestack.h:113: note:
previous declaration of 'STRING' was here
I assume other programs that use openssl and ntsecapi will also fail to
compile. Any chance these generic typedefs can be changed to something
like OPENSSL_STRING and OPENSSL_CSTRING?
Thanks,
Charlie Savage
http://cfis.savagexi.com
Specifically, when building postgresql 8.4 these names mingw,
Thanks,
Charlie
smime.p7s
Description: S/MIME cryptographic signature