summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--Makerules17
-rw-r--r--posix/regex.c53
3 files changed, 66 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index d09be8496c..7a67fc7212 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/Makerules b/Makerules
index 32dacce4f0..530b1acb3f 100644
--- a/Makerules
+++ b/Makerules
@@ -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");