about summary refs log tree commit diff
path: root/nis/nss_nisplus
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-08-02 21:00:51 +0000
committerUlrich Drepper <drepper@redhat.com>1997-08-02 21:00:51 +0000
commit8f2ece695d8822e9ecc63ecd157e90bf17a6fe65 (patch)
tree8391ab64ce8c9c6e45d137905f75f1d17c9ed987 /nis/nss_nisplus
parent3996f34b46043ed8ea8fdc6f44377d969d64396b (diff)
downloadglibc-8f2ece695d8822e9ecc63ecd157e90bf17a6fe65.tar.gz
glibc-8f2ece695d8822e9ecc63ecd157e90bf17a6fe65.tar.xz
glibc-8f2ece695d8822e9ecc63ecd157e90bf17a6fe65.zip
1997-08-02 21:27  Ulrich Drepper  <drepper@cygnus.com>

	* inet/Makefile (headers): Rename netinet/inbits.h to bits/in.h.
	* inet/netinet/in.h: Include bits/in.h instead of netinet/inbits.h.
	* sysdeps/generic/netinet/inbits.h: Move to...
	* sysdeps/generic/bits/in.h: ... here.
	* sysdeps/unix/sysv/linux/bits/inbits.h: Move to ...
	* sysdeps/unix/sysv/linux/bits/in.h: ... here.

	* nis/Makefile (headers): Add bits/nislib.h.
	* nis/rpcsvc/nislib.h: Moved to ....
	* nis/bits/nislib.h: ... here.

	* nis/nss_compat/compat-grp.c: Don't include <rpcsvc/nislib.h>.
	* nis/nss_compat/compat-pwd.c: Likewise.
	* nis/nss_compat/compat-spwd.c: Likewise.
	* nis/nss_nisplus/nisplus-alias.c: Likewise.
	* nis/nss_nisplus/nisplus-ethers.c: Likewise.
	* nis/nss_nisplus/nisplus-grp.c: Likewise.
	* nis/nss_nisplus/nisplus-hosts.c: Likewise.
	* nis/nss_nisplus/nisplus-netgrp.c: Likewise.
	* nis/nss_nisplus/nisplus-ntework.c: Likewise.
	* nis/nss_nisplus/nisplus-proto.c: Likewise.
	* nis/nss_nisplus/nisplus-publickey.c: Likewise.
	* nis/nss_nisplus/nisplus-pwd.c: Likewise.
	* nis/nss_nisplus/nisplus-rpc.c: Likewise.
	* nis/nss_nisplus/nisplus-service.c: Likewise.
	* nis/nss_nisplus/nisplus-spwd.c: Likewise.

	* nis/rpcsvc/nis.x: Include bits/nislib.h, not rpcsvc/nislib.h.
	* nis/rpcsvc/nis.h: Likewise.

	* inet/getnameinfo.c (nrl_domainname): Change return type to const
	char *.
	(getnameinfo): Change type of local variable c to const char *.

	* inet/inet_ntoa.c: Rewrite to use __libc_once for initialization.
	* stdlib/fmtmsg.c: Likewise.

	* intl/bindtextdom.c: Update from latest gettext.
	* intl/dcgettext.c: Likewise.
	* intl/finddomain.c: Likewise.
	* intl/l10nflist.c: Likewise.
	* intl/localealias.c: Likewise.
	* intl/textdomain.c: Likewise.

	* login/getutid_r.c: Remove parameter to setutent call.
	* login/getutline_r.c: Likewise.

	* posix/wordexp.c: Complete rewrite.  Not fully implemented yet,
	though.  Patch by Tim Waugh <tim@cyberelk.demon.co.uk>.

	* stdio-common/printf_fp.c: Remove relative include paths.
	* stdio-common/printf_fphex.c: Likewise.

	* sysdeps/generic/crypt.h: Cleanup.  Don't define non standard
	elements unless __USE_GNU.

	* sysdeps/generic/vlimit.c: Pretty print.
	* sysdeps/generic/vtimes.c: Likewise.

	* sysdeps/i386/elf/bsd-_setjmp.S: New file.  Empty dummy file.
	* sysdeps/i386/elf/bsd-setjmp.S: New file.  Empty dummy file.
	* sysdeps/i386/elf/setjmp.S: New file.  Define __setjmp and also
	weak definitions of setjmp and _setjmp.

	* sysdeps/i386/fpu/bits/mathinline.h: More patches by John Bowman.

	* sysdeps/stub/if_index.h: Set errno in all functions and add
	stub warnings.

	* sysdeps/stub/libc-lock.h: Add __libc_once.

1997-08-02 01:57  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/ptrace.c: Don't set errno in error
	case since the __syscall_ptrace call already did this.
	Reported by Philip Gladstone <philip@talon.raptor.com>.

1997-07-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* sysdeps/unix/sysv/linux/sys/fsuid.h: Change include
	<gnu/types.h> to <sys/types.h>.

1997-08-01 23:18  Ulrich Drepper  <drepper@cygnus.com>

	* csu/defs.awk: Fix regexp for end and align.
	Patch by Klaus Espenlaub <kespenla@hydra.informatik.uni-ulm.de>.

	* locale/programs/localedef.c (print_escaped): New function.
	(show_info): Use print_escaped if strings can control unprintable
	characters.
	Patch by Jochen Hein <jochen.hein@delphi.central.de>.

1997-08-01 18:45  Thorsten Kukuk  <kukuk@vt.uni-paderborn.de>

	* nis/nss_nisplus/nisplus-alias.c: Fix NULL pointer problems
	* nis/nss_nisplus/nisplus-grp.c: Likewise.

1997-07-31  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/dl-profile.c (_dl_start_profile): Use _dl_sysdep_error
	instead of fprintf.

1997-07-31  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* manual/socket.texi (Host Address Functions): Fix arguments of
	@deftypefun.

1997-07-31  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/dl-runtime.c: Avoid warning about profile_fixup being
	unused.

	* sysdeps/m68k/dl-machine.h: Add support for shared library
	profiling.

1997-07-31  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* md5-crypt/Makefile (extra-objs): Add onlymd5-crypt.o for
	dependencies.

1997-07-31  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Make-dist (subdirs): Distribute both aout and elf.

1997-07-31 23:04  Mark Kettenis  <kettenis@phys.uva.nl>

	* login/utmp-private.h: Remove reset argument from backend
	setutent.
	* login/getutent_r.c (__setutent): Allways call the setutent
	function in the daemon backend.
	(setutent_unknown): Function removed.
	(getutent_unknown, pututline_unknown): Call __setutent instead of
	setutent_unknown.
	* login/utmp_file.c (setutent_file): Removed reset argument.  All
	callers changed.
	* login/utmp_daemon.c (setutent_daemon): Removed reset
	argument.  All callers changed.  Try to open connection even if a
	previous connection failed, but first check if the sockets exist
	in the filesystem.

	* login/utmp_daemon.c (pututline_daemon): Try to open connection
	before reporting failure.

	* login/programs/database.c (open_database): Create compatibility
	file if it does not already exist.  Supply mode argument in open
	calls to guarantee that created files have the proper protection.

	* login/programs/utmpd.c (main): Remove files created by a
	previous `bind' before creating sockets.
	Suggested by a sun <asum@zoology.washington.edu>.

1997-07-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* math/libm-test.c: Remove unneeded function check_int_exec.

	* BUGS: Correct typos.

	* gmon/gmon.c: Add alias for monstartup, declare _strerror_internal.

1997-07-30  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* manual/socket.texi (Host Address Functions): Reformat inet_ntop
	entry to confirm with expected behaviour of some scripts.

	* libc.map: Add functions/variables in global namespace,
	remove wildcards.

1997-07-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* resolv/libresolv.map: Add variables and routines used by named,
	nslookup and other bind utils.
	* libc.map: Likewise.

1997-07-31 00:35  Philip Blundell  <Philip.Blundell@pobox.com>

	* sysdeps/unix/sysv/linux/if_index.c: Rewrite to avoid using /proc
	filesystem.
	* inet/test_ifindex.c: New file.
	* inet/Makefile (tests): Add test_ifindex.

1997-08-01 04:25  Ulrich Drepper  <drepper@cygnus.com>

	* nis/nss_nisplus/nisplus-parser.c: Fix another bug in the parser.
	Patch by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>.

	* manual/errno.texi: Fix typo.
	Reported by Erik Talvola <etalvo@sapient.com>.

	(write_hist): Remove dependency on 32 bit int.
Diffstat (limited to 'nis/nss_nisplus')
-rw-r--r--nis/nss_nisplus/nisplus-alias.c16
-rw-r--r--nis/nss_nisplus/nisplus-ethers.c16
-rw-r--r--nis/nss_nisplus/nisplus-grp.c16
-rw-r--r--nis/nss_nisplus/nisplus-hosts.c29
-rw-r--r--nis/nss_nisplus/nisplus-netgrp.c1
-rw-r--r--nis/nss_nisplus/nisplus-network.c15
-rw-r--r--nis/nss_nisplus/nisplus-parser.c19
-rw-r--r--nis/nss_nisplus/nisplus-proto.c9
-rw-r--r--nis/nss_nisplus/nisplus-publickey.c1
-rw-r--r--nis/nss_nisplus/nisplus-pwd.c9
-rw-r--r--nis/nss_nisplus/nisplus-rpc.c3
-rw-r--r--nis/nss_nisplus/nisplus-service.c3
-rw-r--r--nis/nss_nisplus/nisplus-spwd.c1
13 files changed, 73 insertions, 65 deletions
diff --git a/nis/nss_nisplus/nisplus-alias.c b/nis/nss_nisplus/nisplus-alias.c
index 0a16b3890f..8d682d785c 100644
--- a/nis/nss_nisplus/nisplus-alias.c
+++ b/nis/nss_nisplus/nisplus-alias.c
@@ -24,7 +24,6 @@
 #include <aliases.h>
 #include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 
 #include "nss-nisplus.h"
 
@@ -153,6 +152,8 @@ _nss_nisplus_parse_aliasent (nis_result *result, unsigned long entry,
 static enum nss_status
 internal_setaliasent (void)
 {
+  enum nss_status status;
+
   if (result)
     nis_freeresult (result);
   result = NULL;
@@ -162,12 +163,13 @@ internal_setaliasent (void)
 
   next_entry = 0;
   result = nis_list(tablename_val, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
+  status = niserr2nss (result->status);
+  if (status != NSS_STATUS_SUCCESS)
     {
       nis_freeresult (result);
       result = NULL;
     }
-  return niserr2nss (result->status);
+  return status;
 }
 
 enum nss_status
@@ -206,7 +208,13 @@ internal_nisplus_getaliasent_r (struct aliasent *alias,
   int parse_res;
 
   if (result == NULL)
-    internal_setaliasent ();
+    {
+      enum nss_status status;
+
+      status = internal_setaliasent ();
+      if (result == NULL || status != NSS_STATUS_SUCCESS)
+	return status;
+    }
 
   /* Get the next entry until we found a correct one. */
   do
diff --git a/nis/nss_nisplus/nisplus-ethers.c b/nis/nss_nisplus/nisplus-ethers.c
index d7c3720932..cfdb3dc4e1 100644
--- a/nis/nss_nisplus/nisplus-ethers.c
+++ b/nis/nss_nisplus/nisplus-ethers.c
@@ -25,7 +25,6 @@
 #include <netdb.h>
 #include <netinet/ether.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 #include <netinet/if_ether.h>
 
 #include "nss-nisplus.h"
@@ -153,7 +152,7 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer,
   do
     {
       nis_result *saved_result;
-      
+
       if (result == NULL)
 	{
 	  saved_result = NULL;
@@ -175,7 +174,7 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer,
 	    }
 	}
 
-      if ((parse_res = _nss_nisplus_parse_etherent (result, ether, buffer, 
+      if ((parse_res = _nss_nisplus_parse_etherent (result, ether, buffer,
 						    buflen)) == -1)
 	{
 	  nis_freeresult (result);
@@ -187,7 +186,7 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer,
 	  if (saved_result != NULL)
 	    nis_freeresult (saved_result);
 	}
-      
+
     } while (!parse_res);
 
   return NSS_STATUS_SUCCESS;
@@ -233,14 +232,14 @@ _nss_nisplus_gethostton_r (const char *name, struct etherent *eth,
 	  nis_freeresult (result);
 	  return status;
 	}
-      
+
       if ((parse_res = _nss_nisplus_parse_etherent (result, eth, buffer,
 						    buflen)) == -1)
 	{
 	  nis_freeresult (result);
 	  return NSS_STATUS_TRYAGAIN;
 	}
-	  
+
       if (parse_res)
         return NSS_STATUS_SUCCESS;
     }
@@ -282,16 +281,15 @@ _nss_nisplus_getntohost_r (const struct ether_addr *addr,
 	  return status;
 	}
 
-      if ((parse_res = _nss_nisplus_parse_etherent (result, eth, buffer, 
+      if ((parse_res = _nss_nisplus_parse_etherent (result, eth, buffer,
 						    buflen)) == -1)
 	{
 	  nis_freeresult (result);
 	  return NSS_STATUS_TRYAGAIN;
 	}
-      
+
       if (parse_res)
 	return NSS_STATUS_SUCCESS;
     }
   return NSS_STATUS_NOTFOUND;
 }
-
diff --git a/nis/nss_nisplus/nisplus-grp.c b/nis/nss_nisplus/nisplus-grp.c
index 08e9e040fe..1031d69ac9 100644
--- a/nis/nss_nisplus/nisplus-grp.c
+++ b/nis/nss_nisplus/nisplus-grp.c
@@ -24,7 +24,6 @@
 #include <string.h>
 #include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 
 #include "nss-nisplus.h"
 #include "nisplus-parser.h"
@@ -57,6 +56,8 @@ _nss_create_tablename (void)
 static enum nss_status
 internal_setgrent (void)
 {
+  enum nss_status status;
+
   if (result)
     nis_freeresult (result);
   result = NULL;
@@ -67,12 +68,13 @@ internal_setgrent (void)
       return NSS_STATUS_UNAVAIL;
 
   result = nis_list (tablename_val, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
-  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
+  status = niserr2nss (result->status);
+  if (status != NSS_STATUS_SUCCESS)
     {
       nis_freeresult (result);
       result = NULL;
     }
-  return niserr2nss (result->status);
+  return status;
 }
 
 enum nss_status
@@ -109,7 +111,13 @@ internal_nisplus_getgrent_r (struct group *gr, char *buffer, size_t buflen)
   int parse_res;
 
   if (result == NULL)
-    internal_setgrent ();
+    {
+      enum nss_status status;
+
+      status = internal_setgrent ();
+      if (result == NULL || status != NSS_STATUS_SUCCESS)
+	return status;
+    }
 
   /* Get the next entry until we found a correct one. */
   do
diff --git a/nis/nss_nisplus/nisplus-hosts.c b/nis/nss_nisplus/nisplus-hosts.c
index 10f939e341..89a8bf7564 100644
--- a/nis/nss_nisplus/nisplus-hosts.c
+++ b/nis/nss_nisplus/nisplus-hosts.c
@@ -26,7 +26,6 @@
 #include <arpa/inet.h>
 #include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 
 #include "nss-nisplus.h"
 
@@ -98,7 +97,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host,
 
   if (NISENTRYLEN (0, 0, result) + 1 > room_left)
     goto no_more_room;
-  
+
   p = stpncpy (first_unused, NISENTRYVAL (0, 0, result),
 	       NISENTRYLEN (0, 0, result));
   *p = '\0';
@@ -114,7 +113,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host,
 	{
 	  if (NISENTRYLEN (i, 1, result) + 2 > room_left)
 	    goto no_more_room;
-	  
+
 	  *p++ = ' ';
 	  p = stpncpy (p, NISENTRYVAL (i, 1, result),
 		       NISENTRYLEN (i, 1, result));
@@ -131,7 +130,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host,
   host->h_addr_list = (char **) first_unused;
   if (room_left < 2 * sizeof (char *))
     goto no_more_room;
-  
+
   room_left -= (2 * sizeof (char *));
   host->h_addr_list[0] = data;
   host->h_addr_list[1] = NULL;
@@ -242,7 +241,7 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer,
 	  result = nis_first_entry(tablename_val);
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
             {
-              enum nss_status retval = niserr2nss (result->status);	      
+              enum nss_status retval = niserr2nss (result->status);
               if (retval == NSS_STATUS_TRYAGAIN)
                 {
                   *herrnop = NETDB_INTERNAL;
@@ -250,12 +249,12 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer,
                 }
               return retval;
             }
-	  
+
 	}
       else
 	{
 	  nis_result *res2;
-	  
+
 	  saved_res = result;
 	  res2 = nis_next_entry(tablename_val, &result->cookie);
 	  result = res2;
@@ -273,7 +272,7 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer,
               return retval;
             }
 	}
-      
+
       parse_res = _nss_nisplus_parse_hostent (result, AF_INET6,
 					      host, buffer, buflen);
       if (parse_res < 1 && errno != ERANGE)
@@ -288,9 +287,9 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer,
         }
       if (saved_res != NULL)
 	nis_freeresult (saved_res);
-      
+
     } while (!parse_res);
-  
+
   return NSS_STATUS_SUCCESS;
 }
 
@@ -349,10 +348,10 @@ _nss_nisplus_gethostbyname2_r (const char *name, int af, struct hostent *host,
       else
 	sprintf(buf, "[cname=%s],%s", NISENTRYVAL(0, 0, result),
 		tablename_val);
-      
+
       nis_freeresult (result);
       result = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-      
+
       retval = niserr2nss (result->status);
       if (retval != NSS_STATUS_SUCCESS)
         {
@@ -369,7 +368,7 @@ _nss_nisplus_gethostbyname2_r (const char *name, int af, struct hostent *host,
 	_nss_nisplus_parse_hostent (result, af, host, buffer, buflen);
 
       nis_freeresult (result);
-      
+
       if (parse_res > 0)
 	return NSS_STATUS_SUCCESS;
 
@@ -435,10 +434,10 @@ _nss_nisplus_gethostbyaddr_r (const char *addr, int addrlen, int type,
       parse_res = _nss_nisplus_parse_hostent (result, type, host,
 					      buffer, buflen);
       nis_freeresult (result);
-      
+
       if (parse_res > 0)
 	return NSS_STATUS_SUCCESS;
-      
+
       *herrnop = NETDB_INTERNAL;
       if (parse_res == -1)
 	return NSS_STATUS_TRYAGAIN;
diff --git a/nis/nss_nisplus/nisplus-netgrp.c b/nis/nss_nisplus/nisplus-netgrp.c
index 9c38539de8..967eec898c 100644
--- a/nis/nss_nisplus/nisplus-netgrp.c
+++ b/nis/nss_nisplus/nisplus-netgrp.c
@@ -25,7 +25,6 @@
 #include <netgroup.h>
 #include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 
 #include "nss-nisplus.h"
 
diff --git a/nis/nss_nisplus/nisplus-network.c b/nis/nss_nisplus/nisplus-network.c
index 57362dba78..ff71af8573 100644
--- a/nis/nss_nisplus/nisplus-network.c
+++ b/nis/nss_nisplus/nisplus-network.c
@@ -25,7 +25,6 @@
 #include <arpa/inet.h>
 #include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 
 #include "nss-nisplus.h"
 
@@ -86,7 +85,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network,
         {
           if (NISENTRYLEN (i, 1, result) + 2 > room_left)
 	    goto no_more_room;
-	  
+
 	  *p++ = ' ';
           p = stpncpy (p, NISENTRYVAL (i, 1, result),
                        NISENTRYLEN (i, 1, result));
@@ -217,7 +216,7 @@ internal_nisplus_getnetent_r (struct netent *network, char *buffer,
 	  if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
 	    {
 	      int retval;
-	      
+
 	      retval = niserr2nss (result->status);
 	      nis_freeresult (result);
 	      result = NULL;
@@ -254,15 +253,15 @@ internal_nisplus_getnetent_r (struct netent *network, char *buffer,
 	    }
 	}
 
-      if ((parse_res = _nss_nisplus_parse_netent (result, network, buffer, 
+      if ((parse_res = _nss_nisplus_parse_netent (result, network, buffer,
 						  buflen)) == -1)
         {
           *herrnop = NETDB_INTERNAL;
           return NSS_STATUS_TRYAGAIN;
         }
-      
+
     } while (!parse_res);
-  
+
   return NSS_STATUS_SUCCESS;
 }
 
@@ -301,7 +300,7 @@ _nss_nisplus_getnetbyname_r (const char *name, struct netent *network,
     {
       nis_result *result;
       char buf[strlen (name) + 255 + tablename_len];
-      
+
       /* Search at first in the alias list, and use the correct name
 	 for the next search */
       sprintf(buf, "[name=%s],%s", name, tablename_val);
@@ -390,7 +389,7 @@ _nss_nisplus_getnetbyaddr_r (const unsigned long addr, const int type,
 
     if (parse_res > 0)
       return NSS_STATUS_SUCCESS;
-    
+
     *herrnop = NETDB_INTERNAL;
     if (parse_res == -1)
       return NSS_STATUS_TRYAGAIN;
diff --git a/nis/nss_nisplus/nisplus-parser.c b/nis/nss_nisplus/nisplus-parser.c
index 3d0ff32e57..db5f487159 100644
--- a/nis/nss_nisplus/nisplus-parser.c
+++ b/nis/nss_nisplus/nisplus-parser.c
@@ -212,20 +212,23 @@ _nss_nisplus_parse_grent (nis_result *result, u_long entry,
       room_left -= sizeof (char *);
       gr->gr_mem[count] = line;
 
-      while (*line != '\0' && *line != ',' && !isspace(*line))
+      while (*line != '\0' && *line != ',' && !isspace (*line))
 	++line;
 
-      if (line != gr->gr_mem[count])
+      if (*line == ',' || isspace (*line))
 	{
-	  if (*line != '\0')
-	    {
-	      *line = '\0';
+	  int is = isspace (*line);
+
+	  *line = '\0';
+	  if (is)
+	    while (*line != '\0' && (*line == ',' || isspace (*line)))
 	      ++line;
-	    }
+	  else
+	    ++line;
 	  ++count;
 	}
       else
-	gr->gr_mem[count] = NULL;
+	gr->gr_mem[count+1] = NULL;
     }
   if (room_left < sizeof (char *))
       goto no_more_room;
@@ -241,7 +244,7 @@ _nss_nisplus_parse_spent (nis_result *result, struct spwd *sp,
 {
   char *first_unused = buffer;
   size_t room_left = buflen;
-  
+
   if (result == NULL)
     return 0;
 
diff --git a/nis/nss_nisplus/nisplus-proto.c b/nis/nss_nisplus/nisplus-proto.c
index 707a0e5296..ddfce86905 100644
--- a/nis/nss_nisplus/nisplus-proto.c
+++ b/nis/nss_nisplus/nisplus-proto.c
@@ -24,7 +24,6 @@
 #include <string.h>
 #include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 
 #include "nss-nisplus.h"
 
@@ -212,7 +211,7 @@ internal_nisplus_getprotoent_r (struct protoent *proto, char *buffer,
       else
 	{
 	  nis_result *res;
-	  
+
 	  saved_res = result;
 	  res = nis_next_entry (tablename_val, &result->cookie);
 	  result = res;
@@ -224,7 +223,7 @@ internal_nisplus_getprotoent_r (struct protoent *proto, char *buffer,
 	    }
 	}
 
-      if ((parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, 
+      if ((parse_res = _nss_nisplus_parse_protoent (result, proto, buffer,
 						    buflen)) == -1)
 	{
 	  nis_freeresult (result);
@@ -346,10 +345,10 @@ _nss_nisplus_getprotobynumber_r (const int number, struct protoent *proto,
 
     if (parse_res == -1)
       return NSS_STATUS_TRYAGAIN;
-    
+
     if (parse_res)
       return NSS_STATUS_SUCCESS;
-    
+
     return NSS_STATUS_NOTFOUND;
   }
 }
diff --git a/nis/nss_nisplus/nisplus-publickey.c b/nis/nss_nisplus/nisplus-publickey.c
index 4c596b8ada..554da95754 100644
--- a/nis/nss_nisplus/nisplus-publickey.c
+++ b/nis/nss_nisplus/nisplus-publickey.c
@@ -25,7 +25,6 @@
 #include <syslog.h>
 #include <rpc/rpc.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 #ifdef HAVE_SECURE_RPC
 #include <rpc/key_prot.h>
 extern int xdecrypt (char *, char *);
diff --git a/nis/nss_nisplus/nisplus-pwd.c b/nis/nss_nisplus/nisplus-pwd.c
index 2c1fb19cab..e358b060e1 100644
--- a/nis/nss_nisplus/nisplus-pwd.c
+++ b/nis/nss_nisplus/nisplus-pwd.c
@@ -23,7 +23,6 @@
 #include <string.h>
 #include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 
 #include "nss-nisplus.h"
 
@@ -97,7 +96,7 @@ internal_nisplus_getpwent_r (struct passwd *pw, char *buffer, size_t buflen)
   do
     {
       nis_result *saved_res;
-      
+
       if (result == NULL)
 	{
 	  saved_res = NULL;
@@ -123,7 +122,7 @@ internal_nisplus_getpwent_r (struct passwd *pw, char *buffer, size_t buflen)
 	    }
 	}
 
-      if ((parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, 
+      if ((parse_res = _nss_nisplus_parse_pwent (result, pw, buffer,
 						 buflen)) == -1)
 	{
 	  nis_freeresult (result);
@@ -192,7 +191,7 @@ _nss_nisplus_getpwnam_r (const char *name, struct passwd *pw,
 
       if (parse_res)
 	return NSS_STATUS_SUCCESS;
-      
+
       return NSS_STATUS_NOTFOUND;
     }
 }
@@ -227,7 +226,7 @@ _nss_nisplus_getpwuid_r (const uid_t uid, struct passwd *pw,
 
     if (parse_res == -1)
       return NSS_STATUS_TRYAGAIN;
-    
+
     if (parse_res)
       return NSS_STATUS_SUCCESS;
 
diff --git a/nis/nss_nisplus/nisplus-rpc.c b/nis/nss_nisplus/nisplus-rpc.c
index b70c2ebbca..6682a7502a 100644
--- a/nis/nss_nisplus/nisplus-rpc.c
+++ b/nis/nss_nisplus/nisplus-rpc.c
@@ -24,7 +24,6 @@
 #include <bits/libc-lock.h>
 #include <rpc/netdb.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 
 #include "nss-nisplus.h"
 
@@ -225,7 +224,7 @@ internal_nisplus_getrpcent_r (struct rpcent *rpc, char *buffer,
 	    }
 	}
 
-      if ((parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, 
+      if ((parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer,
 						  buflen)) == -1)
 	{
 	  nis_freeresult (result);
diff --git a/nis/nss_nisplus/nisplus-service.c b/nis/nss_nisplus/nisplus-service.c
index 37042d9d13..e8a12145d3 100644
--- a/nis/nss_nisplus/nisplus-service.c
+++ b/nis/nss_nisplus/nisplus-service.c
@@ -24,7 +24,6 @@
 #include <string.h>
 #include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 
 #include "nss-nisplus.h"
 
@@ -205,7 +204,7 @@ internal_nisplus_getservent_r (struct servent *serv, char *buffer,
   do
     {
       nis_result *saved_res;
-      
+
       if (result == NULL)
 	{
 	  saved_res = NULL;
diff --git a/nis/nss_nisplus/nisplus-spwd.c b/nis/nss_nisplus/nisplus-spwd.c
index c7f1e2a567..507aa4bcad 100644
--- a/nis/nss_nisplus/nisplus-spwd.c
+++ b/nis/nss_nisplus/nisplus-spwd.c
@@ -23,7 +23,6 @@
 #include <string.h>
 #include <bits/libc-lock.h>
 #include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
 
 #include "nss-nisplus.h"
 #include "nisplus-parser.h"