aboutsummaryrefslogtreecommitdiff
path: root/nss/nss_files
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
parentf5348425d095f93cce1532c7ca20915aea480868 (diff)
downloadglibc-dbe31b9a738993b563382c602d092c970bdc79ae.zip
glibc-dbe31b9a738993b563382c602d092c970bdc79ae.tar.gz
glibc-dbe31b9a738993b563382c602d092c970bdc79ae.tar.bz2
* 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')
-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 8930780..1f3b138 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 *);