aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--Versions.def1
-rw-r--r--nis/Versions7
-rw-r--r--nis/yp_xdr.c45
4 files changed, 60 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index a5c8f74..37b8ff2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/Versions.def b/Versions.def
index 1353a08..a68df43 100644
--- a/Versions.def
+++ b/Versions.def
@@ -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
diff --git a/nis/Versions b/nis/Versions
index d26cba7..fff3726 100644
--- a/nis/Versions
+++ b/nis/Versions
@@ -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 {
diff --git a/nis/yp_xdr.c b/nis/yp_xdr.c
index f189169..f962c4d 100644
--- a/nis/yp_xdr.c
+++ b/nis/yp_xdr.c
@@ -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;
+ }
+}