diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | Makerules | 17 | ||||
-rw-r--r-- | posix/regex.c | 53 |
3 files changed, 66 insertions, 12 deletions
@@ -1,3 +1,11 @@ +Sat Dec 16 10:33:11 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> + + * Makerules: Use $(do-install-so) for installing shared objects. + (do-install-so): New canned sequence. Make a symlink LIB.so after + installing LIB.so.VERSION. + + * inet/netinet/in.h: Fixed typo in IPPORT_WHOIS. + Fri Dec 15 04:41:22 1995 Ulrich Drepper <drepper@gnu.ai.mit.edu> * stdio-common/Makefile (tests): Add bug10. @@ -482,14 +482,21 @@ install-lib-nosubdir: $(foreach so,$(install-lib.so),\ install: $(slibdir)/libc.so$(libc.so-version) $(slibdir)/lib$(libprefix)c.so$(libc.so-version): $(common-objpfx)libc.so - $(do-install-program) + $(do-install-so) + +define do-install-so +$(do-install-program) +$(patsubst %,ln -s -f $(@F) $(@D)/$(patsubst %$*.so,%,$(<F))$(libprefix)$*.so,\ + $(filter-out %.so,$@)) +endef -$(foreach v,$(sort $(foreach so,$(install-lib.so),.so$($(so)-version))),\ +so-versions := $(sort $(foreach so,$(install-lib.so),.so$($(so)-version))) +$(foreach v,$(so-versions),\ $(libdir)/lib$(libprefix)%$v): $(common-objpfx)lib%.so - $(do-install-program) -$(foreach v,$(sort $(foreach so,$(install-lib.so),.so$($(so)-version))),\ + $(do-install-so) +$(foreach v,$(so-versions),\ $(libdir)/$(libprefix)%$v): $(common-objpfx)%.so - $(do-install-program) + $(do-install-so) endif ifdef install-bin diff --git a/posix/regex.c b/posix/regex.c index b4d87edcbf..ee066b5efa 100644 --- a/posix/regex.c +++ b/posix/regex.c @@ -3448,12 +3448,14 @@ static boolean alt_match_null_string_p (), : (d) == string2 - 1 ? *(end1 - 1) : *(d)) \ == Sword) +/* Disabled due to a compiler bug -- see comment at case wordbound */ +#if 0 /* Test if the character before D and the one at D differ with respect to being word-constituent. */ #define AT_WORD_BOUNDARY(d) \ (AT_STRINGS_BEG (d) || AT_STRINGS_END (d) \ || WORDCHAR_P (d - 1) != WORDCHAR_P (d)) - +#endif /* Free everything we malloc. */ #ifdef MATCH_MAY_ALLOCATE @@ -4677,17 +4679,54 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop) break; } - case wordbound: - DEBUG_PRINT1 ("EXECUTING wordbound.\n"); - if (AT_WORD_BOUNDARY (d)) +#if 0 + /* The DEC Alpha C compiler 3.x generates incorrect code for the + test WORDCHAR_P (d - 1) != WORDCHAR_P (d) in the expansion of + AT_WORD_BOUNDARY, so this code is disabled. Expanding the + macro and introducing temporary variables works around the bug. */ + + case wordbound: + DEBUG_PRINT1 ("EXECUTING wordbound.\n"); + if (AT_WORD_BOUNDARY (d)) break; - goto fail; + goto fail; case notwordbound: - DEBUG_PRINT1 ("EXECUTING notwordbound.\n"); + DEBUG_PRINT1 ("EXECUTING notwordbound.\n"); if (AT_WORD_BOUNDARY (d)) goto fail; - break; + break; +#else + case wordbound: + { + boolean prevchar, thischar; + + DEBUG_PRINT1 ("EXECUTING wordbound.\n"); + if (AT_STRINGS_BEG (d) || AT_STRINGS_END (d)) + break; + + prevchar = WORDCHAR_P (d - 1); + thischar = WORDCHAR_P (d); + if (prevchar != thischar) + break; + goto fail; + } + + case notwordbound: + { + boolean prevchar, thischar; + + DEBUG_PRINT1 ("EXECUTING notwordbound.\n"); + if (AT_STRINGS_BEG (d) || AT_STRINGS_END (d)) + goto fail; + + prevchar = WORDCHAR_P (d - 1); + thischar = WORDCHAR_P (d); + if (prevchar != thischar) + goto fail; + break; + } +#endif case wordbeg: DEBUG_PRINT1 ("EXECUTING wordbeg.\n"); |