> It's not really your fault, but the GNU regex code (lib/regcomp.c) > has an annoying portability problem, because what could easily have been > a compile-time decision was postponed until run-time. A good compiler > complains about loss of significant bits when BITSET_WORD_BITS < 64: > > if (BITSET_WORD_BITS == 64) > { > dfa->word_char[0] = UINT64_C (0x03ff000000000000); > dfa->word_char[1] = UINT64_C (0x07fffffe87fffffe); > > Not fatal, however, only annoying. (And, I claim, stupid. And > relatively easy to fix, unless you _really_ like it the way it is, which > seems to be the case for the GNU regex maintainer.)
Actually, on VAX (where a 64-bit integer type in unavailable), it's fatal: CC /decc /include = ([], [.VAX], [-.SRC.VAX], [-.VMS]) /prefix_library_entri es = (all_entries, except = (getopt, optarg, opterr, optind, optopt)) /objec t = [.VAX]REGEX.OBJ /define = (VMS, _POSIX_EXIT, OS_TYPE="""VMS VAX V7.3""" , - "ENABLE_DEBUG" , "HAVE_LIBSSL", "ENABLE_NTLM" ) [-.LIB]REGEX.C dfa->word_char[0] = UINT64_C (0x03ff000000000000); ..............................^ %CC-E-INTCONST, Ill-formed integer constant. At line number 963 in SYS$SYSDEVICE:[UTILITY.SOURCE.WGET.WGET-1_ 13_4_56-620C.LIB]REGCOMP.C;1. dfa->word_char[1] = UINT64_C (0x07fffffe87fffffe); ..............................^ %CC-E-INTCONST, Ill-formed integer constant. At line number 964 in SYS$SYSDEVICE:[UTILITY.SOURCE.WGET.WGET-1_ 13_4_56-620C.LIB]REGCOMP.C;1. > I assume that I'll find more problems as I try to get the new code > into the VMS builders, but those are the ones which popped up first. I'm such a pessimist. Actually, with a little adjustment to the VMS-specific files, building on Alpha (and, I assume, on IA64 -- What could go wrong?) seems to be ok. Even more amazingly, I seem to have found a truly stupid-looking work-around for that should-have-been-compile-time conditionality problem in the GNU regex code on VAX: # ifdef __VAX # define UINT64_C(c) 0 Apparently, at least in some cases, one piece of truly stupid code can cancel out another. HAVE_FSEEKO and HAVE_FTELLO (also unavailable on VAX) seem to get about as much respect as HAVE_SYS_SELECT_H and HAVE_SYS_SOCKET_H, but I should be able to deal with that, too. I haven't done any serious testing (just fetched a Web page on Alpha), but, except for the problems previously reported, builds on VMS should be possible. ------------------------------------------------------------------------ Steven M. Schweda sms@antinode-info 382 South Warwick Street (+1) 651-699-9818 Saint Paul MN 55105-2547