Implement _autofssys, _cladm, _lgrpsys, and _lgrp_home_fast
[kopensolaris-gnu/glibc.git] / sunrpc / clnt_raw.c
index 18ae241..44ea03e 100644 (file)
@@ -45,21 +45,26 @@ static char sccsid[] = "@(#)clnt_raw.c 1.22 87/08/11 Copyr 1984 Sun Micro";
 #include <rpc/rpc.h>
 #include <rpc/svc.h>
 #include <rpc/xdr.h>
+#include <libintl.h>
 
 #define MCALL_MSG_SIZE 24
 
 /*
  * This is the "network" we will be moving stuff over.
  */
-static struct clntraw_private
+struct clntraw_private_s
   {
     CLIENT client_object;
     XDR xdr_stream;
     char _raw_buf[UDPMSGSIZE];
     char mashl_callmsg[MCALL_MSG_SIZE];
     u_int mcnt;
-  }
- *clntraw_private;
+  };
+#ifdef _RPC_THREAD_SAFE_
+#define clntraw_private RPC_THREAD_VARIABLE(clntraw_private_s)
+#else
+static struct clntraw_private_s *clntraw_private;
+#endif
 
 static enum clnt_stat clntraw_call (CLIENT *, u_long, xdrproc_t, caddr_t,
                                    xdrproc_t, caddr_t, struct timeval);
@@ -69,7 +74,7 @@ static bool_t clntraw_freeres (CLIENT *, xdrproc_t, caddr_t);
 static bool_t clntraw_control (CLIENT *, int, char *);
 static void clntraw_destroy (CLIENT *);
 
-static struct clnt_ops client_ops =
+static const struct clnt_ops client_ops =
 {
   clntraw_call,
   clntraw_abort,
@@ -85,18 +90,20 @@ static struct clnt_ops client_ops =
 CLIENT *
 clntraw_create (u_long prog, u_long vers)
 {
-  struct clntraw_private *clp = clntraw_private;
+  struct clntraw_private_s *clp = clntraw_private;
   struct rpc_msg call_msg;
-  XDR *xdrs = &clp->xdr_stream;
-  CLIENT *client = &clp->client_object;
+  XDR *xdrs;
+  CLIENT *client;
 
   if (clp == 0)
     {
-      clp = (struct clntraw_private *) calloc (1, sizeof (*clp));
+      clp = (struct clntraw_private_s *) calloc (1, sizeof (*clp));
       if (clp == 0)
        return (0);
       clntraw_private = clp;
     }
+  xdrs = &clp->xdr_stream;
+  client = &clp->client_object;
   /*
    * pre-serialize the static part of the call msg and stash it away
    */
@@ -104,10 +111,10 @@ clntraw_create (u_long prog, u_long vers)
   call_msg.rm_call.cb_rpcvers = RPC_MSG_VERSION;
   call_msg.rm_call.cb_prog = prog;
   call_msg.rm_call.cb_vers = vers;
-  xdrmem_create (xdrs, clp->mashl_callmsg, MCALL_MSG_SIZE, XDR_ENCODE);
-  if (!xdr_callhdr (xdrs, &call_msg))
+  INTUSE(xdrmem_create) (xdrs, clp->mashl_callmsg, MCALL_MSG_SIZE, XDR_ENCODE);
+  if (!INTUSE(xdr_callhdr) (xdrs, &call_msg))
     {
-      perror (_ ("clnt_raw.c - Fatal header serialization error."));
+      perror (_ ("clnt_raw.c: fatal header serialization error"));
     }
   clp->mcnt = XDR_GETPOS (xdrs);
   XDR_DESTROY (xdrs);
@@ -115,13 +122,13 @@ clntraw_create (u_long prog, u_long vers)
   /*
    * Set xdrmem for client/server shared buffer
    */
-  xdrmem_create (xdrs, clp->_raw_buf, UDPMSGSIZE, XDR_FREE);
+  INTUSE(xdrmem_create) (xdrs, clp->_raw_buf, UDPMSGSIZE, XDR_FREE);
 
   /*
    * create client handle
    */
-  client->cl_ops = &client_ops;
-  client->cl_auth = authnone_create ();
+  client->cl_ops = (struct clnt_ops *) &client_ops;
+  client->cl_auth = INTUSE(authnone_create) ();
   return client;
 }
 
@@ -135,7 +142,7 @@ clntraw_call (h, proc, xargs, argsp, xresults, resultsp, timeout)
      caddr_t resultsp;
      struct timeval timeout;
 {
-  struct clntraw_private *clp = clntraw_private;
+  struct clntraw_private_s *clp = clntraw_private;
   XDR *xdrs = &clp->xdr_stream;
   struct rpc_msg msg;
   enum clnt_stat status;
@@ -163,7 +170,7 @@ call_again:
    * We have to call server input routine here because this is
    * all going on in one process. Yuk.
    */
-  svc_getreq (1);
+  INTUSE(svc_getreq) (1);
 
   /*
    * get results
@@ -173,7 +180,7 @@ call_again:
   msg.acpted_rply.ar_verf = _null_auth;
   msg.acpted_rply.ar_results.where = resultsp;
   msg.acpted_rply.ar_results.proc = xresults;
-  if (!xdr_replymsg (xdrs, &msg))
+  if (!INTUSE(xdr_replymsg) (xdrs, &msg))
     return RPC_CANTDECODERES;
   _seterr_reply (&msg, &error);
   status = error.re_status;
@@ -200,7 +207,7 @@ call_again:
       if (msg.acpted_rply.ar_verf.oa_base != NULL)
        {
          xdrs->x_op = XDR_FREE;
-         (void) xdr_opaque_auth (xdrs, &(msg.acpted_rply.ar_verf));
+         (void) INTUSE(xdr_opaque_auth) (xdrs, &(msg.acpted_rply.ar_verf));
        }
     }
 
@@ -219,7 +226,7 @@ clntraw_freeres (cl, xdr_res, res_ptr)
      xdrproc_t xdr_res;
      caddr_t res_ptr;
 {
-  struct clntraw_private *clp = clntraw_private;
+  struct clntraw_private_s *clp = clntraw_private;
   XDR *xdrs = &clp->xdr_stream;
   bool_t rval;