1999-07-09  Ulrich Drepper  <drepper@cygnus.com>

	* Versions.def (libnsl): Add GLIBC_2.2.
	* nis/Versions (libnsl) [GLIBC_2.2]: Add xdr_ypall.

1999-07-08  Cristian Gafton  <gafton@redhat.com>

	* nis/yp_xdr.c (xdr_ypall): New function.
This commit is contained in:
Ulrich Drepper 1999-07-09 13:05:42 +00:00
parent 019e7a645a
commit 56ad7b2cec
4 changed files with 60 additions and 2 deletions

View file

@ -1,3 +1,12 @@
1999-07-09 Ulrich Drepper <drepper@cygnus.com>
* Versions.def (libnsl): Add GLIBC_2.2.
* nis/Versions (libnsl) [GLIBC_2.2]: Add xdr_ypall.
1999-07-08 Cristian Gafton <gafton@redhat.com>
* nis/yp_xdr.c (xdr_ypall): New function.
1999-07-09 Andreas Schwab <schwab@suse.de>
* elf/Makefile (headers): Remove bits/dlfcn.h and dlfcn.h.

View file

@ -32,6 +32,7 @@ libmachuser {
libnsl {
GLIBC_2.0
GLIBC_2.1 GLIBC_2.0
GLIBC_2.2 GLIBC_2.1
}
libnss_compat {
GLIBC_2.0

View file

@ -48,12 +48,15 @@ libnsl {
# This functions are needed by the NIS+ tools and rpc.nisd,
# they should never be used in a normal user program !
__free_fdresult; __nis_default_access; __nis_default_group;
__nis_default_owner; __nis_default_ttl; __nis_finddirectory;
__free_fdresult; __nis_default_access; __nis_default_group;
__nis_default_owner; __nis_default_ttl; __nis_finddirectory;
__nis_hash; __nisbind_connect; __nisbind_create;
__nisbind_destroy; __nisbind_next;
readColdStartFile; writeColdStartFile;
}
GLIBC_2.2 {
xdr_ypall;
}
}
libnss_compat {

View file

@ -28,6 +28,7 @@
*/
#include <rpcsvc/yp.h>
#include <rpcsvc/ypclnt.h>
bool_t
xdr_ypstat (XDR *xdrs, ypstat *objp)
@ -298,3 +299,47 @@ xdr_ypbind_setdom (XDR *xdrs, ypbind_setdom *objp)
return FALSE;
return TRUE;
}
bool_t
xdr_ypall(XDR *xdrs, struct ypall_callback *incallback)
{
struct ypresp_key_val out;
char key[YPMAXRECORD], val[YPMAXRECORD];
/*
* Set up key/val struct to be used during the transaction.
*/
memset(&out, 0, sizeof out);
out.key.keydat_val = key;
out.key.keydat_len = sizeof(key);
out.val.valdat_val = val;
out.val.valdat_len = sizeof(val);
for (;;) {
bool_t more, status;
/* Values pending? */
if (!xdr_bool(xdrs, &more))
return FALSE; /* can't tell! */
if (!more)
return TRUE; /* no more */
/* Transfer key/value pair. */
status = xdr_ypresp_key_val(xdrs, &out);
/*
* If we succeeded, call the callback function.
* The callback will return TRUE when it wants
* no more values. If we fail, indicate the
* error.
*/
if (status) {
if ((*incallback->foreach)(out.stat,
(char *)out.key.keydat_val, out.key.keydat_len,
(char *)out.val.valdat_val, out.val.valdat_len,
incallback->data))
return TRUE;
} else
return FALSE;
}
}