about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog19
-rw-r--r--csu/defs.awk9
-rw-r--r--intl/tst-translit.c1
-rw-r--r--linuxthreads/internals.h5
-rw-r--r--linuxthreads/pthread.c6
-rw-r--r--nss/nss_files/files-netgrp.c33
-rw-r--r--resolv/resolv.h24
7 files changed, 71 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index 031d30dd6d..0fbdf5ef90 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2000-07-25  Mark Kettenis  <kettenis@gnu.org>
+
+	* nss/nss_files/files-netgrp.c (strip_whitespace): New function.
+	(_nss_netgroup_parseline): Use strip_whitespace to strip off any
+	leading and trailing spaces from host, user and domain name.
+
+2000-07-25  Jes Sorensen  <jes@linuxcare.com>
+
+	* csu/defs.awk: Add support for need_endp.
+
+2000-07-25  Mark Kettenis  <kettenis@gnu.org>
+
+	* resolv/resolv.h: Remove __P from res_send_qhook and
+	res_send_rhook typedefs.
+
+2000-07-25  Bruno Haible  <haible@clisp.cons.org>
+
+	* intl/tst-translit.c (main): Unset OUTPUT_CHARSET.
+
 2000-07-25  Ulrich Drepper  <drepper@redhat.com>
 
 	* iconv/gconv_builtin.h: Add WCHAR_T alias.
diff --git a/csu/defs.awk b/csu/defs.awk
index a006c983e2..7ca5a33646 100644
--- a/csu/defs.awk
+++ b/csu/defs.awk
@@ -1,8 +1,13 @@
-/^[ 	]*\.end/   { need_end = 1 }
+/^[ 	]*\.endp/	 { need_endp = 1 }
+/^[ 	]*\.end/	 { need_end = 1 }
 /^[ 	]*\.align/ { if($2 > max) max = $2; }
 
 END {
-    if(need_end)
+    if(need_endp)
+    {
+	print "#define END_INIT .endp _init";
+	print "#define END_FINI .endp _fini";
+    } else if(need_end)
     {
 	print "#define END_INIT .end _init";
 	print "#define END_FINI .end _fini";
diff --git a/intl/tst-translit.c b/intl/tst-translit.c
index 4bd8749dac..79085dfeb0 100644
--- a/intl/tst-translit.c
+++ b/intl/tst-translit.c
@@ -29,6 +29,7 @@ main (void)
   const char *s;
 
   setenv ("LANGUAGE", "existing-locale", 1);
+  unsetenv ("OUTPUT_CHARSET");
   textdomain ("translit");
   bindtextdomain ("translit", OBJPFX "domaindir");
 
diff --git a/linuxthreads/internals.h b/linuxthreads/internals.h
index 7335611669..2ed49295ee 100644
--- a/linuxthreads/internals.h
+++ b/linuxthreads/internals.h
@@ -20,16 +20,13 @@
 /* Includes */
 
 #include <limits.h>
+#include <resolv.h>
 #include <setjmp.h>
 #include <signal.h>
 #include <unistd.h>
 #include <sys/types.h>
 #include <bits/libc-tsd.h> /* for _LIBC_TSD_KEY_N */
 
-#define __RES_PTHREAD_INTERNAL
-#include <resolv.h> /* for per-thread resolver context */
-
-
 #include "pt-machine.h"
 #include "semaphore.h"
 #include "../linuxthreads_db/thread_dbP.h"
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c
index 1d93366380..3a669c8dec 100644
--- a/linuxthreads/pthread.c
+++ b/linuxthreads/pthread.c
@@ -30,6 +30,12 @@
 #include "spinlock.h"
 #include "restart.h"
 
+/* We need the global/static resolver state here.  */
+#include <resolv.h>
+#undef _res
+
+extern struct __res_state _res;
+
 /* Sanity check.  */
 #if __ASSUME_REALTIME_SIGNALS && !defined __SIGRTMIN
 # error "This must not happen; new kernel assumed but old headers"
diff --git a/nss/nss_files/files-netgrp.c b/nss/nss_files/files-netgrp.c
index eb6e673ad0..4ffafb2233 100644
--- a/nss/nss_files/files-netgrp.c
+++ b/nss/nss_files/files-netgrp.c
@@ -1,5 +1,5 @@
 /* Netgroup file parser in nss_files modules.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -159,6 +159,24 @@ _nss_files_endnetgrent (struct __netgrent *result)
   return NSS_STATUS_SUCCESS;
 }
 
+static char *
+strip_whitespace (char *str)
+{
+  char *cp = str;
+
+  /* Skip leading spaces.  */
+  while (isspace (*cp))
+    cp++;
+
+  str = cp;
+  while (*cp != '\0' && ! isspace(*cp))
+    cp++;
+
+  /* Null-terminate, stripping off any trailing spaces.  */
+  *cp = '\0';
+
+  return *str == '\0' ? NULL : str;
+}
 
 enum nss_status
 _nss_netgroup_parseline (char **cursor, struct __netgrent *result,
@@ -235,15 +253,14 @@ _nss_netgroup_parseline (char **cursor, struct __netgrent *result,
       memcpy (buffer, host, cp - host);
       result->type = triple_val;
 
-      buffer[(user - host) - 1] = '\0';
-      result->val.triple.host = *host == ',' ? NULL : buffer;
+      buffer[(user - host) - 1] = '\0';	/* Replace ',' with '\0'.  */
+      result->val.triple.host = strip_whitespace (buffer);
 
-      buffer[(domain - host) - 1] = '\0';
-      result->val.triple.user = *user == ',' ? NULL : buffer + (user - host);
+      buffer[(domain - host) - 1] = '\0'; /* Replace ',' with '\0'.  */
+      result->val.triple.user = strip_whitespace (buffer + (user - host));
 
-      buffer[(cp - host) - 1] = '\0';
-      result->val.triple.domain =
-	*domain == ')' ? NULL : buffer + (domain - host);
+      buffer[(cp - host) - 1] = '\0'; /* Replace ')' with '\0'.  */
+      result->val.triple.domain = strip_whitespace (buffer + (domain - host));
 
       status = NSS_STATUS_SUCCESS;
 
diff --git a/resolv/resolv.h b/resolv/resolv.h
index d9f798b3b2..c7374b8bfc 100644
--- a/resolv/resolv.h
+++ b/resolv/resolv.h
@@ -87,19 +87,19 @@
 typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error }
 	res_sendhookact;
 
-typedef res_sendhookact (*res_send_qhook)__P((struct sockaddr_in * const *ns,
-					      const u_char **query,
-					      int *querylen,
-					      u_char *ans,
-					      int anssiz,
-					      int *resplen));
+typedef res_sendhookact (*res_send_qhook) (struct sockaddr_in * const *ns,
+					   const u_char **query,
+					   int *querylen,
+					   u_char *ans,
+					   int anssiz,
+					   int *resplen);
 
-typedef res_sendhookact (*res_send_rhook)__P((const struct sockaddr_in *ns,
-					      const u_char *query,
-					      int querylen,
-					      u_char *ans,
-					      int anssiz,
-					      int *resplen));
+typedef res_sendhookact (*res_send_rhook) (const struct sockaddr_in *ns,
+					   const u_char *query,
+					   int querylen,
+					   u_char *ans,
+					   int anssiz,
+					   int *resplen);
 
 struct res_sym {
 	int	number;		/* Identifying number, like T_MX */