about summary refs log tree commit diff
path: root/nss/nss_files/files-parse.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-07-05 19:18:13 +0000
committerRoland McGrath <roland@gnu.org>1996-07-05 19:18:13 +0000
commitdbe31b9a738993b563382c602d092c970bdc79ae (patch)
treed2150cd99276abac237c29308b843f2a33db40d3 /nss/nss_files/files-parse.c
parentf5348425d095f93cce1532c7ca20915aea480868 (diff)
downloadglibc-dbe31b9a738993b563382c602d092c970bdc79ae.tar.gz
glibc-dbe31b9a738993b563382c602d092c970bdc79ae.tar.xz
glibc-dbe31b9a738993b563382c602d092c970bdc79ae.zip
* nss/nss_files/files-parse.c (parse_list): Set EOL from LINE if it
	points within DATA->linebuffer; otherwise use all of DATA->linebuffer
	itself, no need to skip past a NUL.

	* nss/nsswitch.h (known_function): Comment fix.
	* nss/nsswitch.c (nss_lookup_function): Rewritten using __tsearch
	directly.  Do the lookup and insertion with a single call, and fill in
	the tree node afterwards if new.
	(known_compare, nss_find_entry, nss_insert_entry): Functions removed.

	* misc/sys/select.h: #define __need_timespec before <sys/time.h> incl.
	(struct timeval): Add bodiless decl for scope.

	* time/time.h (struct timespec): Rename members from `ts_*' to `tv_*'.
  	Move struct timespec defn outside [_TIME_H] so it can be got with
 	#define __need_timespec.

	* time/sys/time.h (TIMEVAL_TO_TIMESPEC): Use `tv_*' instead of `ts_*'
	for `struct timespec' member names.
	(TIMESPEC_TO_TIMEVAL): Likewise.

	* nss/Makefile (extra-libs-others): New variable.

	* extra-lib.mk: Don't test for $($(lib)-no-lib-dep).  Instead match
	$(lib) in $(extra-libs-others).
	* sunrpc/Makefile (extra-libs-others): New variable.
	(librpcsvc-no-lib-dep): Variable removed.

Thu Jul  4 05:21:59 1996  David Mosberger-Tang  <davidm@azstarnet.com>

	* login/utmp.h: Fix typos.

	* misc/syslog.c (vsyslog): Use __send instead of send and
 	__connect instead of connect to avoid name-space collisions (e.g.,
 	with psgetty).
Diffstat (limited to 'nss/nss_files/files-parse.c')
-rw-r--r--nss/nss_files/files-parse.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/nss/nss_files/files-parse.c b/nss/nss_files/files-parse.c
index 8930780f1f..1f3b13886d 100644
--- a/nss/nss_files/files-parse.c
+++ b/nss/nss_files/files-parse.c
@@ -128,8 +128,15 @@ parse_list (char *line, struct parser_data *data, int datalen)
 {
   char *eol, **list, **p;
 
-  /* Find the end of the line buffer.  */
-  eol = strchr (data->linebuffer, '\0') + 1;
+  if (line >= data->linebuffer && line < (char *) data + datalen)
+    /* Find the end of the line buffer, we will use the space in DATA after
+       it for storing the vector of pointers.  */
+    eol = strchr (line, '\0') + 1;
+  else
+    /* LINE does not point within DATA->linebuffer, so that space is
+       not being used for scratch space right now.  We can use all of
+       it for the pointer vector storage.  */
+    eol = data->linebuffer;
   /* Adjust the pointer so it is aligned for storing pointers.  */
   eol += __alignof__ (char *) - 1;
   eol -= (eol - (char *) 0) % __alignof__ (char *);