summary refs log tree commit diff
path: root/nss/nss_files/files-netgrp.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-07-25 22:19:16 +0000
committerUlrich Drepper <drepper@redhat.com>2000-07-25 22:19:16 +0000
commit3452aba811b77932788ac10de324653140bca936 (patch)
tree3204a06d66c29be1eb351211de1b7b8d77a31686 /nss/nss_files/files-netgrp.c
parent16093625a6a30a7977c8e8ed7bb7ce95ef17c8d1 (diff)
downloadglibc-3452aba811b77932788ac10de324653140bca936.tar.gz
glibc-3452aba811b77932788ac10de324653140bca936.tar.xz
glibc-3452aba811b77932788ac10de324653140bca936.zip
Update.
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.
Diffstat (limited to 'nss/nss_files/files-netgrp.c')
-rw-r--r--nss/nss_files/files-netgrp.c33
1 files changed, 25 insertions, 8 deletions
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;