diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-02-16 17:42:46 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-02-16 17:42:46 +0000 |
commit | 880f421fc30003d1626429e8796d43b91d71cab9 (patch) | |
tree | dd3aff8b9397dd9177ed24a32d4e6fd2f841ebdd /nis/nss_nisplus/nisplus-network.c | |
parent | f565518e7e393419f99457792971ce71215d02cc (diff) | |
download | glibc-880f421fc30003d1626429e8796d43b91d71cab9.tar glibc-880f421fc30003d1626429e8796d43b91d71cab9.tar.gz glibc-880f421fc30003d1626429e8796d43b91d71cab9.tar.bz2 glibc-880f421fc30003d1626429e8796d43b91d71cab9.zip |
Update.
1998-02-16 17:33 Ulrich Drepper <drepper@cygnus.com>
* elf/rtld.c (dl_main): Recognize --library-path parameter and
pass value (or NULL) to _dl_init_paths.
* elf/dl-load.c (_dl_init_paths): Change to take one parameter,
replacing local variable llp. If llp is NULL examine LD_LIBRARY_PATH
environment variable.
* elf/link.h: Change prototype for _dl_init_paths.
* elf/dl-support.c: Pass NULL in _dl_init_paths call.
* localedata/Makefile (distribute): Add test files.
1998-02-17 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* localedata/tests/{test1.cm, test2.cm, test3.cm, test4.cm,
test1.def, test2.def, test3.def, test4.def}: Simple input files
for localedef. Contributed by Yung-Ching Hsiao
<yhsiao@cae.wisc.edu>.
* localedata/Makefile (tests): Call tst-locale.sh.
* localedata/tst-locale.sh: New file, regression tests for some
localedef problems.
1998-02-15 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/nss_nisplus/nisplus-alias.c: Use __stpncpy.
* nis/nss_nisplus/nisplus-hosts.c: Make sure buffer is always NUL
terminated.
* nis/nss_nisplus/nisplus-network.c: Likewise.
* nis/nss_nisplus/nisplus-proto.c: Likewise.
* nis/nss_nisplus/nisplus-rpc.c: Likewise.
* nis/nss_nisplus/nisplus-service.c: Likewise.
Add more changes from TI-RPC 2.3 for rpcgen to fix include/C++ bug
and support generating thread safe RPC code.
* sunrpc/rpc_main.c: Add changes.
* sunrpc/rpc_clntout.c: Likewise.
* sunrpc/rpc_cout.c: Likewise.
* sunrpc/rpc_hout.c: Likewise.
* sunrpc/rpc_parse.c: Likewise.
* sunrpc/rpc_sample.c: Likewise.
* sunrpc/rpc_scan.c: Likewise.
* sunrpc/rpc_svcout.c: Likewise.
* sunrpc/rpc_util.c: Likewise.
* sunrpc/rpc_util.h: Add new structs and prototypes.
* sunrpc/proto.h: Remove prototypes for static functions.
1998-02-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* locale/programs/ld-messages.c (messages_finish): Don't skip
error checking when being quiet.
* locale/programs/ld-ctype.c (ctype_finish): Likewise.
(set_class_defaults): Likewise.
* locale/programs/charmap.c (parse_charmap): Likewise.
* locale/programs/ld-collate.c (collate_finish): Likewise.
* locale/programs/ld-monetary.c (monetary_finish): Likewise.
* locale/programs/ld-time.c (time_finish): Likewise.
* locale/programs/locfile.c (write_locale_data): Likewise.
* locale/programs/ld-ctype.c (ctype_class_to): Silently ignore
unknown characters and empty ranges.
* locale/programs/ld-collate.c (collate_order_elem): When
processing an ellipsis properly form a linked list in the result
table, fix typo when allocating ordering array.
[PR libc/419]
1998-02-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/Makefile (ld-map): Define.
(rtld-ldscript): Define. Change all `$(objpfx)rtld-ldscript' to
`$(rtld-ldscript)'.
($(objpfx)ld.so): Combine the two versions of this rule. Depend
on $(ld-map).
(rtld-link): Combine the two versions of this definition. Fixed
to make it work when no symbol versioning is used.
1998-02-16 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig (build-program-cmd): Use --library-path parameter to
ld.so instead of environment variable.
* sunrpc/Makefile (rpcgen-cmd): Don't use -$ parameter.
* sunrpc/rpc_main.c: Remove support for -$$ option again.
1998-02-16 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* Make-dist: Respect with-cvs setting.
* MakeTAGS (all-pot): Likewise.
* sysdeps/sparc/sparc32/Makefile: Likewise.
* sysdeps/mach/hurd/Makefile: Likewise.
* stdlib/Makefile: Likewise.
* posix/Makefile: Likewise.
* intl/Makefile: Likewise.
* po/Makefile (linguas): Likewise
Diffstat (limited to 'nis/nss_nisplus/nisplus-network.c')
-rw-r--r-- | nis/nss_nisplus/nisplus-network.c | 85 |
1 files changed, 50 insertions, 35 deletions
diff --git a/nis/nss_nisplus/nisplus-network.c b/nis/nss_nisplus/nisplus-network.c index b39a54fe03..f152c49f11 100644 --- a/nis/nss_nisplus/nisplus-network.c +++ b/nis/nss_nisplus/nisplus-network.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997. @@ -79,7 +79,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network, p = first_unused; line = p; - for (i = 0; i < result->objects.objects_len; i++) + for (i = 0; i < result->objects.objects_len; ++i) { if (strcmp (NISENTRYVAL (i, 1, result), network->n_name) != 0) { @@ -93,7 +93,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network, room_left -= (NISENTRYLEN (i, 1, result) + 1); } } - ++p; + *p++ = '\0'; first_unused = p; /* Adjust the pointer so it is aligned for @@ -106,7 +106,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network, room_left -= (2 * sizeof (char *)); network->n_aliases[0] = NULL; - i = 0; + i = 0; while (*line != '\0') { /* Skip leading blanks. */ @@ -125,17 +125,14 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network, while (*line != '\0' && *line != ' ') ++line; - if (line != network->n_aliases[i]) - { - if (*line != '\0') - { - *line = '\0'; - ++line; - } + if (*line == ' ') + { + *line = '\0'; + ++line; ++i; } else - network->n_aliases[i] = NULL; + network->n_aliases[i+1] = NULL; } return 1; @@ -385,39 +382,57 @@ _nss_nisplus_getnetbyaddr_r (const unsigned long addr, const int type, nis_result *result; char buf[1024 + tablename_len]; struct in_addr in; + char buf2[256]; + int b2len; in = inet_makeaddr (addr, 0); - sprintf (buf, "[addr=%s],%s", inet_ntoa (in), tablename_val); - - result = nis_list (buf, EXPAND_NAME, NULL, NULL); + strcpy (buf2, inet_ntoa (in)); + b2len = strlen (buf2); - retval = niserr2nss (result->status); - if (retval != NSS_STATUS_SUCCESS) + while (1) { - if (retval == NSS_STATUS_TRYAGAIN) + sprintf (buf, "[addr=%s],%s", buf2, tablename_val); + result = nis_list (buf, EXPAND_NAME, NULL, NULL); + + retval = niserr2nss (result->status); + if (retval != NSS_STATUS_SUCCESS) { - *errnop = errno; - *herrnop = NETDB_INTERNAL; + if (buf2[b2len -2] == '.' && buf2[b2len -1] == '0') + { + /* Try again, but with trailing dot(s) + removed (one by one) */ + buf2[b2len - 2] = '\0'; + b2len -= 2; + continue; + } + else + return NSS_STATUS_NOTFOUND; + + if (retval == NSS_STATUS_TRYAGAIN) + { + *errnop = errno; + *herrnop = NETDB_INTERNAL; + } + nis_freeresult (result); + return retval; } - nis_freeresult (result); - return retval; - } - parse_res = _nss_nisplus_parse_netent (result, network, buffer, buflen, - errnop); + parse_res = _nss_nisplus_parse_netent (result, network, buffer, + buflen, errnop); - nis_freeresult (result); + nis_freeresult (result); - if (parse_res > 0) - return NSS_STATUS_SUCCESS; + if (parse_res > 0) + return NSS_STATUS_SUCCESS; - *herrnop = NETDB_INTERNAL; - if (parse_res == -1) - { - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; + *herrnop = NETDB_INTERNAL; + if (parse_res == -1) + { + *errnop = ERANGE; + return NSS_STATUS_TRYAGAIN; + } + else + return NSS_STATUS_NOTFOUND; } - else - return NSS_STATUS_NOTFOUND; } } |