Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 9 Jul 1999 13:05:42 +0000 (13:05 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 9 Jul 1999 13:05:42 +0000 (13:05 +0000)
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.

ChangeLog
Versions.def
nis/Versions
nis/yp_xdr.c

index a5c8f74..37b8ff2 100644 (file)
--- 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.
index 1353a08..a68df43 100644 (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
index d26cba7..fff3726 100644 (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 {
index f189169..f962c4d 100644 (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;
+    }
+}