summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--include/string.h12
-rw-r--r--misc/syslog.c2
-rw-r--r--string/argz-stringify.c4
-rw-r--r--string/strndup.c6
5 files changed, 29 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index d8a44e959e..2e206aba55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2001-08-30  Ulrich Drepper  <drepper@redhat.com>
+
+	* string/argz-stringify.c (__argz_stringify): Use __strnlen
+	instead of strnlen.
+	* include/string.h (strndupa): Redefine here to use __strnlen
+	instead of strnlen.
+	* string/strndup.c (__strndup): Use __strnlen not strnlen.
+
+	* misc/syslog.c (vsyslog): Fix typo in last change (connect ->
+	connected).
+
 2001-08-30  Jakub Jelinek  <jakub@redhat.com>
 
 	* sysdeps/alpha/dl-machine.h (elf_machine_rela): Don't handle
diff --git a/include/string.h b/include/string.h
index 7d268ecfb1..8dda2f1b7e 100644
--- a/include/string.h
+++ b/include/string.h
@@ -47,4 +47,16 @@ extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen);
 /* Now the real definitions.  We do this here since some of the functions
    above are defined as macros in the headers.  */
 #include <string/string.h>
+
+/* Alternative version which doesn't pollute glibc's namespace.  */
+#undef strndupa
+#define strndupa(s, n)							      \
+  (__extension__							      \
+    ({									      \
+      __const char *__old = (s);					      \
+      size_t __len = __strnlen (__old, (n));				      \
+      char *__new = (char *) __builtin_alloca (__len + 1);		      \
+      __new[__len] = '\0';						      \
+      (char *) memcpy (__new, __old, __len);				      \
+    }))
 #endif
diff --git a/misc/syslog.c b/misc/syslog.c
index 58f81996aa..a27eb2ab92 100644
--- a/misc/syslog.c
+++ b/misc/syslog.c
@@ -247,7 +247,7 @@ vsyslog(pri, fmt, ap)
 		openlog_internal(LogTag, LogStat | LOG_NDELAY, 0);
 	      }
 
-	    if (!connect || __send(LogFile, buf, bufsize, 0) < 0)
+	    if (!connected || __send(LogFile, buf, bufsize, 0) < 0)
 	      {
 		closelog_internal ();	/* attempt re-open next time */
 		/*
diff --git a/string/argz-stringify.c b/string/argz-stringify.c
index 364555fa8d..9e1c0c7da6 100644
--- a/string/argz-stringify.c
+++ b/string/argz-stringify.c
@@ -1,5 +1,5 @@
 /* Routines for dealing with '\0' separated arg vectors.
-   Copyright (C) 1995,96,97,2000 Free Software Foundation, Inc.
+   Copyright (C) 1995,96,97,2000,2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by Miles Bader <miles@gnu.org>
 
@@ -29,7 +29,7 @@ __argz_stringify (char *argz, size_t len, int sep)
   if (len > 0)
     while (1)
       {
-	size_t part_len = strnlen (argz, len);
+	size_t part_len = __strnlen (argz, len);
 	argz += part_len;
 	len -= part_len;
 	if (len-- <= 1)		/* includes final '\0' we want to stop at */
diff --git a/string/strndup.c b/string/strndup.c
index 0bb6080262..98f497c7ed 100644
--- a/string/strndup.c
+++ b/string/strndup.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -42,8 +42,8 @@ __strndup (s, n)
      const char *s;
      size_t n;
 {
-  size_t len = strnlen (s, n);
-  char *new = malloc (len + 1);
+  size_t len = __strnlen (s, n);
+  char *new = (char *) malloc (len + 1);
 
   if (new == NULL)
     return NULL;