summaryrefslogtreecommitdiff
path: root/sunrpc
diff options
context:
space:
mode:
Diffstat (limited to 'sunrpc')
-rw-r--r--sunrpc/authuxprot.c1
-rw-r--r--sunrpc/pmap_rmt.c2
-rw-r--r--sunrpc/proto.h8
-rw-r--r--sunrpc/rpc/auth_unix.h4
-rw-r--r--sunrpc/rpc/clnt.h21
-rw-r--r--sunrpc/rpc/pmap_clnt.h12
-rw-r--r--sunrpc/rpc/pmap_rmt.h4
-rw-r--r--sunrpc/rpc/rpc_msg.h1
-rw-r--r--sunrpc/rpc/xdr.h20
-rw-r--r--sunrpc/rpc_cout.c75
-rw-r--r--sunrpc/rpc_parse.h6
-rw-r--r--sunrpc/rpc_svcout.c14
-rw-r--r--sunrpc/xdr.c15
-rw-r--r--sunrpc/xdr_float.c8
-rw-r--r--sunrpc/xdr_mem.c53
-rw-r--r--sunrpc/xdr_rec.c8
-rw-r--r--sunrpc/xdr_stdio.c10
17 files changed, 149 insertions, 113 deletions
diff --git a/sunrpc/authuxprot.c b/sunrpc/authuxprot.c
index d172ebc655..9f0242fcb0 100644
--- a/sunrpc/authuxprot.c
+++ b/sunrpc/authuxprot.c
@@ -46,6 +46,7 @@ static char sccsid[] = "@(#)authunix_prot.c 1.15 87/08/11 Copyr 1984 Sun Micro";
/*
* XDR for unix authentication parameters.
+ * Unfortunately, none of these can be declared const.
*/
bool_t
xdr_authunix_parms (XDR * xdrs, struct authunix_parms *p)
diff --git a/sunrpc/pmap_rmt.c b/sunrpc/pmap_rmt.c
index c3667d4738..8ae93b8f6d 100644
--- a/sunrpc/pmap_rmt.c
+++ b/sunrpc/pmap_rmt.c
@@ -370,7 +370,7 @@ clnt_broadcast (prog, vers, proc, xargs, argsp, xresults, resultsp, eachresult)
stat = RPC_CANTRECV;
goto done_broad;
}
- if (inlen < sizeof (u_long))
+ if ((size_t) inlen < sizeof (u_long))
goto recv_again;
/*
* see if reply transaction id matches sent id.
diff --git a/sunrpc/proto.h b/sunrpc/proto.h
index ed010f8fab..6d2747f728 100644
--- a/sunrpc/proto.h
+++ b/sunrpc/proto.h
@@ -1,7 +1,7 @@
/****** rpc_clntout.c ******/
void write_stubs(void);
-void printarglist(proc_list *proc,
+void printarglist(proc_list *proc,
const char *addargname, const char *addargtype);
/****** rpc_cout.c ******/
@@ -15,9 +15,9 @@ void emit_single_in_line(declaration *decl, int flag, relation rel);
void print_datadef(definition *def);
void print_funcdef(definition *def);
void pxdrfuncdecl(const char *name, int pointerp);
-void pprocdef(proc_list *proc, version_list *vp,
+void pprocdef(proc_list *proc, version_list *vp,
const char *addargtype, int server_p, int mode);
-void pdeclaration(const char *name, declaration *dec, int tab,
+void pdeclaration(const char *name, declaration *dec, int tab,
const char *separator);
/****** rpc_main.c ******/
@@ -36,7 +36,7 @@ void write_sample_clnt_main(void);
/* see rpc_scan.h */
/****** rpc_svcout.c ******/
-int nullproc(proc_list *proc);
+int nullproc(const proc_list *proc);
void write_svc_aux(int nomain);
void write_msg_out(void);
diff --git a/sunrpc/rpc/auth_unix.h b/sunrpc/rpc/auth_unix.h
index 32d8d0aa35..d006f51f72 100644
--- a/sunrpc/rpc/auth_unix.h
+++ b/sunrpc/rpc/auth_unix.h
@@ -46,6 +46,10 @@
#define _RPC_AUTH_UNIX_H 1
#include <features.h>
+#include <sys/types.h>
+#include <rpc/types.h>
+#include <rpc/auth.h>
+#include <rpc/xdr.h>
__BEGIN_DECLS
diff --git a/sunrpc/rpc/clnt.h b/sunrpc/rpc/clnt.h
index 2cabc00d64..43a599ad25 100644
--- a/sunrpc/rpc/clnt.h
+++ b/sunrpc/rpc/clnt.h
@@ -38,6 +38,9 @@
#define _RPC_CLNT_H 1
#include <features.h>
+#include <sys/types.h>
+#include <rpc/types.h>
+#include <rpc/auth.h>
__BEGIN_DECLS
@@ -130,13 +133,13 @@ struct CLIENT {
AUTH *cl_auth; /* authenticator */
struct clnt_ops {
enum clnt_stat (*cl_call) __P ((CLIENT *, u_long, xdrproc_t,
- caddr_t, xdrproc_t,
- caddr_t, struct timeval));
+ caddr_t, xdrproc_t,
+ caddr_t, struct timeval));
/* call remote procedure */
void (*cl_abort) __P ((void)); /* abort a call */
- void (*cl_geterr) __P ((CLIENT *, struct rpc_err *));
+ void (*cl_geterr) __P ((CLIENT *, struct rpc_err *));
/* get specific error code */
- bool_t (*cl_freeres) __P ((CLIENT *, xdrproc_t, caddr_t));
+ bool_t (*cl_freeres) __P ((CLIENT *, xdrproc_t, caddr_t));
/* frees results */
void (*cl_destroy) __P ((CLIENT *)); /* destroy this structure */
bool_t (*cl_control) __P ((CLIENT *, int, char *));
@@ -270,7 +273,7 @@ struct CLIENT {
* u_long prog;
* u_long vers;
*/
-extern CLIENT *clntraw_create __P ((__const u_long __prog,
+extern CLIENT *clntraw_create __P ((__const u_long __prog,
__const u_long __vers));
@@ -283,7 +286,7 @@ extern CLIENT *clntraw_create __P ((__const u_long __prog,
* u_ong vers; -- version number
* char *prot; -- protocol
*/
-extern CLIENT *clnt_create __P ((__const char *__host, __const u_long __prog,
+extern CLIENT *clnt_create __P ((__const char *__host, __const u_long __prog,
__const u_long __vers, __const char *__prot));
@@ -334,7 +337,7 @@ extern CLIENT *clntudp_bufcreate __P ((struct sockaddr_in *__raddr,
int *__sockp, u_int __sendsz,
u_int __recvsz));
-extern int callrpc __P ((__const char *__host, __const u_long __prognum,
+extern int callrpc __P ((__const char *__host, __const u_long __prognum,
__const u_long __versnum, __const u_long __procnum,
__const xdrproc_t __inproc, __const char *__in,
__const xdrproc_t __outproc, char *__out));
@@ -354,9 +357,9 @@ extern void clnt_perrno __P ((enum clnt_stat __num)); /* stderr */
/*
* Print an English error message, given the client error code
*/
-extern void clnt_perror __P ((CLIENT *__clnt, __const char *__msg));
+extern void clnt_perror __P ((CLIENT *__clnt, __const char *__msg));
/* stderr */
-extern char *clnt_sperror __P ((CLIENT *__clnt, __const char *__msg));
+extern char *clnt_sperror __P ((CLIENT *__clnt, __const char *__msg));
/* string */
/*
diff --git a/sunrpc/rpc/pmap_clnt.h b/sunrpc/rpc/pmap_clnt.h
index 0b8d50f10f..45639e7dc4 100644
--- a/sunrpc/rpc/pmap_clnt.h
+++ b/sunrpc/rpc/pmap_clnt.h
@@ -38,6 +38,8 @@
#ifndef _RPC_PMAP_CLNT_H
#define _RPC_PMAP_CLNT_H 1
#include <features.h>
+#include <rpc/types.h>
+#include <rpc/xdr.h>
__BEGIN_DECLS
@@ -70,23 +72,23 @@ extern bool_t pmap_set __P ((__const u_long __program, __const u_long __vers,
extern bool_t pmap_unset __P ((__const u_long __program, __const u_long __vers));
extern struct pmaplist *pmap_getmaps __P ((struct sockaddr_in *__address));
extern enum clnt_stat pmap_rmtcall __P ((struct sockaddr_in *__addr,
- __const u_long __prog,
+ __const u_long __prog,
__const u_long __vers,
- __const u_long __proc,
+ __const u_long __proc,
xdrproc_t __xdrargs,
caddr_t __argsp, xdrproc_t __xdrres,
caddr_t __resp, struct timeval __tout,
u_long *__port_ptr));
-extern enum clnt_stat clnt_broadcast __P ((__const u_long __prog,
+extern enum clnt_stat clnt_broadcast __P ((__const u_long __prog,
__const u_long __vers,
- __const u_long __proc,
+ __const u_long __proc,
xdrproc_t __xargs,
caddr_t __argsp,
xdrproc_t __xresults,
caddr_t __resultsp,
resultproc_t __eachresult));
extern u_short pmap_getport __P ((struct sockaddr_in *__address,
- __const u_long __program,
+ __const u_long __program,
__const u_long __version,
u_int __protocol));
diff --git a/sunrpc/rpc/pmap_rmt.h b/sunrpc/rpc/pmap_rmt.h
index 2e1af7e3d0..6d32045c8e 100644
--- a/sunrpc/rpc/pmap_rmt.h
+++ b/sunrpc/rpc/pmap_rmt.h
@@ -39,7 +39,9 @@
#define _RPC_PMAP_RMT_H 1
#include <features.h>
-
+#include <sys/types.h>
+#include <rpc/types.h>
+#include <rpc/xdr.h>
__BEGIN_DECLS
diff --git a/sunrpc/rpc/rpc_msg.h b/sunrpc/rpc/rpc_msg.h
index 8f6b6a9da4..73996169d6 100644
--- a/sunrpc/rpc/rpc_msg.h
+++ b/sunrpc/rpc/rpc_msg.h
@@ -33,6 +33,7 @@
#define _RPC_MSG_H 1
#include <sys/cdefs.h>
+#include <rpc/xdr.h>
#include <rpc/clnt.h>
/*
diff --git a/sunrpc/rpc/xdr.h b/sunrpc/rpc/xdr.h
index eecb1e14be..aa1c702757 100644
--- a/sunrpc/rpc/xdr.h
+++ b/sunrpc/rpc/xdr.h
@@ -39,6 +39,8 @@
#define __XDR_HEADER__
#include <features.h>
+#include <sys/types.h>
+#include <rpc/types.h>
/* We need FILE. */
#include <stdio.h>
@@ -91,8 +93,17 @@ enum xdr_op
* This is the number of bytes per unit of external data.
*/
#define BYTES_PER_XDR_UNIT (4)
+/*
+ * This only works if the above is a power of 2. But it's defined to be
+ * 4 by the appropriate RFCs. So it will work. And it's normally quicker
+ * than the old routine.
+ */
+#if 1
+#define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1))
+#else /* this is the old routine */
#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \
* BYTES_PER_XDR_UNIT)
+#endif
/*
* The XDR handle.
@@ -108,7 +119,7 @@ struct XDR
{
bool_t (*x_getlong) __P ((XDR * __xdrs, long *__lp));
/* get a long from underlying stream */
- bool_t (*x_putlong) __P ((XDR * __xdrs, long *__lp));
+ bool_t (*x_putlong) __P ((XDR * __xdrs, __const long *__lp));
/* put a long to " */
bool_t (*x_getbytes) __P ((XDR * __xdrs, caddr_t __addr, u_int __len));
/* get some bytes from " */
@@ -243,6 +254,9 @@ struct xdr_discrim
/*
* These are the "generic" xdr routines.
+ * None of these can have const applied because it's not possible to
+ * know whether the call is a read or a write to the passed parameter
+ * also, the XDR structure is always updated by some of these calls.
*/
extern bool_t xdr_void __P ((void));
extern bool_t xdr_int __P ((XDR * __xdrs, int *__ip));
@@ -294,8 +308,8 @@ extern bool_t xdr_netobj __P ((XDR * __xdrs, struct netobj * __np));
*/
/* XDR using memory buffers */
-extern void xdrmem_create __P ((XDR * __xdrs, caddr_t __addr, u_int __size,
- enum xdr_op __op));
+extern void xdrmem_create __P ((XDR * __xdrs, __const caddr_t __addr,
+ u_int __size, enum xdr_op __op));
/* XDR using stdio library */
extern void xdrstdio_create __P ((XDR * __xdrs, FILE * __file,
diff --git a/sunrpc/rpc_cout.c b/sunrpc/rpc_cout.c
index 77319d9b15..ab3b24da74 100644
--- a/sunrpc/rpc_cout.c
+++ b/sunrpc/rpc_cout.c
@@ -45,10 +45,10 @@ char cout_rcsid[] =
#include "proto.h"
static void emit_enum(definition *def);
-static void emit_program(definition *def);
-static void emit_union(definition *def);
+static void emit_program(const definition *def);
+static void emit_union(const definition *def);
static void emit_struct(definition *def);
-static void emit_typedef(definition *def);
+static void emit_typedef(const definition *def);
static int findtype(const definition *def, const char *type);
static int undefined(const char *type);
static void print_generic_header(const char *procname, int pointerp);
@@ -59,8 +59,8 @@ static void print_ifclose(int indent);
static void print_ifstat(int indent, const char *prefix, const char *type,
relation rel, const char *amax,
const char *objname, const char *name);
-static void print_stat(int indent, declaration *dec);
-static void print_header(definition *def);
+static void print_stat(int indent, const declaration *dec);
+static void print_header(const definition *def);
static void print_trailer(void);
static char *upcase(const char *str);
@@ -77,15 +77,16 @@ emit(definition *def)
emit_program(def);
return;
}
- if(def->def_kind == DEF_TYPEDEF)
+ if (def->def_kind == DEF_TYPEDEF)
{
/* now we need to handle declarations like
- struct typedef foo foo;
- since we don't want this to be expanded into 2 calls to xdr_foo */
+ struct typedef foo foo;
+ since we don't want this to be expanded
+ into 2 calls to xdr_foo */
- if(strcmp(def->def.ty.old_type,def->def_name)==0)
- return;
- };
+ if (strcmp(def->def.ty.old_type,def->def_name)==0)
+ return;
+ };
print_header(def);
switch (def->def_kind) {
@@ -102,7 +103,8 @@ emit(definition *def)
emit_typedef(def);
break;
default:
- /* can't happen */
+ /* can't happen */
+ break;
}
print_trailer();
}
@@ -110,7 +112,6 @@ emit(definition *def)
static int
findtype(const definition *def, const char *type)
{
-
if (def->def_kind == DEF_PROGRAM || def->def_kind == DEF_CONST) {
return (0);
} else {
@@ -122,10 +123,7 @@ static int
undefined(const char *type)
{
definition *def;
-
def = (definition *) FINDVAL(defined, type, findtype);
-
-
return (def == NULL);
}
@@ -153,33 +151,25 @@ print_generic_header(const char *procname, int pointerp)
}
static void
-print_header(definition *def)
+print_header(const definition *def)
{
+ print_generic_header(def->def_name,
+ def->def_kind != DEF_TYPEDEF ||
+ !isvectordef(def->def.ty.old_type,
+ def->def.ty.rel));
-/*
- decl_list *dl;
- bas_type *ptr;
- int i;
- */
-
- print_generic_header( def->def_name,
- def->def_kind != DEF_TYPEDEF ||
- !isvectordef(def->def.ty.old_type, def->def.ty.rel));
-
- /* Now add Inline support */
-
-
- if(inlineflag == 0 )
- return;
- /*May cause lint to complain. but ... */
-f_print(fout, "\t register long *buf;\n\n");
+ /* Now add Inline support */
+ if(inlineflag == 0 )
+ return;
+ /*May cause lint to complain. but ... */
+ f_print(fout, "\t register long *buf;\n\n");
}
static void
-print_prog_header(proc_list *plist)
+print_prog_header(const proc_list *plist)
{
- print_generic_header( plist->args.argname, 1 );
+ print_generic_header(plist->args.argname, 1 );
}
static void
@@ -308,7 +298,7 @@ emit_enum(definition *def)
}
static void
-emit_program(definition *def)
+emit_program(const definition *def)
{
decl_list *dl;
version_list *vlist;
@@ -327,7 +317,7 @@ emit_program(definition *def)
}
static void
-emit_union(definition *def)
+emit_union(const definition *def)
{
declaration *dflt;
case_list *cl;
@@ -393,6 +383,8 @@ emit_union(definition *def)
f_print(fout, "\t}\n");
}
+/* this may be const. i haven't traced this one through yet. */
+
static void
emit_struct(definition *def)
{
@@ -446,9 +438,6 @@ emit_struct(definition *def)
return;
};
-
-
-
flag=PUT;
for(j=0; j<2; j++){
@@ -605,7 +594,7 @@ emit_struct(definition *def)
static void
-emit_typedef(definition *def)
+emit_typedef(const definition *def)
{
const char *prefix = def->def.ty.old_prefix;
const char *type = def->def.ty.old_type;
@@ -617,7 +606,7 @@ emit_typedef(definition *def)
}
static void
-print_stat(int indent, declaration *dec)
+print_stat(int indent, const declaration *dec)
{
const char *prefix = dec->prefix;
const char *type = dec->type;
diff --git a/sunrpc/rpc_parse.h b/sunrpc/rpc_parse.h
index 07c1f67833..8d48c85a07 100644
--- a/sunrpc/rpc_parse.h
+++ b/sunrpc/rpc_parse.h
@@ -31,7 +31,7 @@
/* @(#)rpc_parse.h 1.3 90/08/29 (C) 1987 SMI */
/*
- * rpc_parse.h, Definitions for the RPCL parser
+ * rpc_parse.h, Definitions for the RPCL parser
*/
enum defkind {
@@ -50,7 +50,7 @@ enum relation {
REL_VECTOR, /* fixed length array */
REL_ARRAY, /* variable length array */
REL_POINTER, /* pointer */
- REL_ALIAS, /* simple */
+ REL_ALIAS /* simple */
};
typedef enum relation relation;
@@ -113,7 +113,7 @@ struct arg_list {
const char *argname; /* name of struct for arg*/
decl_list *decls;
};
-
+
typedef struct arg_list arg_list;
struct proc_list {
diff --git a/sunrpc/rpc_svcout.c b/sunrpc/rpc_svcout.c
index d19b9b45eb..75eb695e87 100644
--- a/sunrpc/rpc_svcout.c
+++ b/sunrpc/rpc_svcout.c
@@ -51,10 +51,10 @@ static const char ROUTINE[] = "local";
char _errbuf[256]; /* For all messages */
-static void internal_proctype (proc_list * plist);
+static void internal_proctype (const proc_list * plist);
static void p_xdrfunc (const char *rname, const char *typename);
-static void write_real_program (definition * def);
-static void write_program (definition * def, const char *storage);
+static void write_real_program (const definition * def);
+static void write_program (const definition * def, const char *storage);
static void printerr (const char *err, const char *transp);
static void printif (const char *proc, const char *transp,
const char *prefix, const char *arg);
@@ -78,7 +78,7 @@ p_xdrfunc (const char *rname, const char *typename)
}
void
-internal_proctype (proc_list * plist)
+internal_proctype (const proc_list * plist)
{
f_print (fout, "static ");
ptype (plist->res_prefix, plist->res_type, 1);
@@ -321,7 +321,7 @@ write_programs (const char *storage)
Unpacks single user argument of printmsg_1 to call-by-value format
expected by printmsg_1. */
static void
-write_real_program (definition * def)
+write_real_program (const definition * def)
{
version_list *vp;
proc_list *proc;
@@ -388,7 +388,7 @@ write_real_program (definition * def)
}
static void
-write_program (definition * def, const char *storage)
+write_program (const definition * def, const char *storage)
{
version_list *vp;
proc_list *proc;
@@ -566,7 +566,7 @@ printif (const char *proc, const char *transp, const char *prefix,
}
int
-nullproc (proc_list * proc)
+nullproc (const proc_list * proc)
{
for (; proc != NULL; proc = proc->next)
{
diff --git a/sunrpc/xdr.c b/sunrpc/xdr.c
index d666119376..becc59bed3 100644
--- a/sunrpc/xdr.c
+++ b/sunrpc/xdr.c
@@ -93,10 +93,6 @@ xdr_int (xdrs, ip)
int *ip;
{
-#ifdef lint
- (void) (xdr_short (xdrs, (short *) ip));
- return (xdr_long (xdrs, (long *) ip));
-#else
#if INT_MAX < LONG_MAX
long l;
@@ -123,7 +119,6 @@ xdr_int (xdrs, ip)
#else
#error unexpected integer sizes in_xdr_int()
#endif
-#endif
}
/*
@@ -134,10 +129,6 @@ xdr_u_int (xdrs, up)
XDR *xdrs;
u_int *up;
{
-#ifdef lint
- (void) (xdr_short (xdrs, (short *) up));
- return (xdr_u_long (xdrs, (u_long *) up));
-#else
#if UINT_MAX < ULONG_MAX
u_long l;
@@ -164,7 +155,6 @@ xdr_u_int (xdrs, up)
#else
#error unexpected integer sizes in_xdr_u_int()
#endif
-#endif
}
/*
@@ -349,7 +339,6 @@ xdr_enum (xdrs, ep)
XDR *xdrs;
enum_t *ep;
{
-#ifndef lint
enum sizecheck
{
SIZEVAL
@@ -392,10 +381,6 @@ xdr_enum (xdrs, ep)
{
return FALSE;
}
-#else /* lint */
- (void) (xdr_short (xdrs, (short *) ep));
- return xdr_long (xdrs, (long *) ep);
-#endif /* lint */
}
/*
diff --git a/sunrpc/xdr_float.c b/sunrpc/xdr_float.c
index be5a07d028..2e1e37f0a2 100644
--- a/sunrpc/xdr_float.c
+++ b/sunrpc/xdr_float.c
@@ -87,8 +87,8 @@ static struct sgl_limits {
bool_t
xdr_float(xdrs, fp)
- register XDR *xdrs;
- register float *fp;
+ XDR *xdrs;
+ float *fp;
{
#ifdef vax
struct ieee_single is;
@@ -207,8 +207,8 @@ static struct dbl_limits {
bool_t
xdr_double(xdrs, dp)
- register XDR *xdrs;
- double *dp;
+ XDR *xdrs;
+ double *dp;
{
#ifdef vax
struct ieee_double id;
diff --git a/sunrpc/xdr_mem.c b/sunrpc/xdr_mem.c
index 481a8664b5..8e88e41ea2 100644
--- a/sunrpc/xdr_mem.c
+++ b/sunrpc/xdr_mem.c
@@ -47,13 +47,13 @@ static char sccsid[] = "@(#)xdr_mem.c 1.19 87/08/11 Copyr 1984 Sun Micro";
#include <rpc/rpc.h>
static bool_t xdrmem_getlong (XDR *, long *);
-static bool_t xdrmem_putlong (XDR *, long *);
+static bool_t xdrmem_putlong (XDR *, const long *);
static bool_t xdrmem_getbytes (XDR *, caddr_t, u_int);
-static bool_t xdrmem_putbytes (XDR *, caddr_t, u_int);
-static u_int xdrmem_getpos (XDR *);
+static bool_t xdrmem_putbytes (XDR *, const caddr_t, u_int);
+static u_int xdrmem_getpos (const XDR *);
static bool_t xdrmem_setpos (XDR *, u_int);
static long *xdrmem_inline (XDR *, int);
-static void xdrmem_destroy (XDR *);
+static void xdrmem_destroy (const XDR *);
static const struct xdr_ops xdrmem_ops =
{
@@ -74,7 +74,7 @@ static const struct xdr_ops xdrmem_ops =
void
xdrmem_create (xdrs, addr, size, op)
XDR *xdrs;
- caddr_t addr;
+ const caddr_t addr;
u_int size;
enum xdr_op op;
{
@@ -85,11 +85,21 @@ xdrmem_create (xdrs, addr, size, op)
xdrs->x_handy = size;
}
+/*
+ * Nothing needs to be done for the memory case. The argument is clearly
+ * const.
+ */
+
static void
-xdrmem_destroy (XDR *xdrs)
+xdrmem_destroy (const XDR *xdrs)
{
}
+/*
+ * Gets the next word from the memory referenced by xdrs and places it
+ * in the long pointed to by lp. It then increments the private word to
+ * point at the next element. Neither object pointed to is const
+ */
static bool_t
xdrmem_getlong (xdrs, lp)
XDR *xdrs;
@@ -103,10 +113,15 @@ xdrmem_getlong (xdrs, lp)
return TRUE;
}
+/*
+ * Puts the long pointed to by lp in the memory referenced by xdrs. It
+ * then increments the private word to point at the next element. The
+ * long pointed at is const
+ */
static bool_t
xdrmem_putlong (xdrs, lp)
XDR *xdrs;
- long *lp;
+ const long *lp;
{
if ((xdrs->x_handy -= 4) < 0)
@@ -116,6 +131,12 @@ xdrmem_putlong (xdrs, lp)
return TRUE;
}
+/*
+ * Gets an unaligned number of bytes from the xdrs structure and writes them
+ * to the address passed in addr. Be very careful when calling this routine
+ * as it could leave the xdrs pointing to an unaligned structure which is not
+ * a good idea. None of the things pointed to are const.
+ */
static bool_t
xdrmem_getbytes (xdrs, addr, len)
XDR *xdrs;
@@ -130,10 +151,14 @@ xdrmem_getbytes (xdrs, addr, len)
return TRUE;
}
+/*
+ * The complementary function to the above. The same warnings apply about
+ * unaligned data. The source address is const.
+ */
static bool_t
xdrmem_putbytes (xdrs, addr, len)
XDR *xdrs;
- caddr_t addr;
+ const caddr_t addr;
u_int len;
{
@@ -144,14 +169,21 @@ xdrmem_putbytes (xdrs, addr, len)
return TRUE;
}
+/*
+ * Not sure what this one does. But it clearly doesn't modify the contents
+ * of xdrs. **FIXME** does this not assume u_int == u_long?
+ */
static u_int
xdrmem_getpos (xdrs)
- XDR *xdrs;
+ const XDR *xdrs;
{
return (u_long) xdrs->x_private - (u_long) xdrs->x_base;
}
+/*
+ * xdrs modified
+ */
static bool_t
xdrmem_setpos (xdrs, pos)
XDR *xdrs;
@@ -167,6 +199,9 @@ xdrmem_setpos (xdrs, pos)
return TRUE;
}
+/*
+ * xdrs modified
+ */
static long *
xdrmem_inline (xdrs, len)
XDR *xdrs;
diff --git a/sunrpc/xdr_rec.c b/sunrpc/xdr_rec.c
index af2f9f5ed7..66b33f8456 100644
--- a/sunrpc/xdr_rec.c
+++ b/sunrpc/xdr_rec.c
@@ -54,9 +54,9 @@ static char sccsid[] = "@(#)xdr_rec.c 1.21 87/08/11 Copyr 1984 Sun Micro";
#include <rpc/rpc.h>
static bool_t xdrrec_getlong (XDR *, long *);
-static bool_t xdrrec_putlong (XDR *, long *);
+static bool_t xdrrec_putlong (XDR *, const long *);
static bool_t xdrrec_getbytes (XDR *, caddr_t, u_int);
-static bool_t xdrrec_putbytes (XDR *, caddr_t, u_int);
+static bool_t xdrrec_putbytes (XDR *, const caddr_t, u_int);
static u_int xdrrec_getpos (XDR *);
static bool_t xdrrec_setpos (XDR *, u_int);
static long *xdrrec_inline (XDR *, int);
@@ -221,7 +221,7 @@ xdrrec_getlong (xdrs, lp)
static bool_t
xdrrec_putlong (xdrs, lp)
XDR *xdrs;
- long *lp;
+ const long *lp;
{
RECSTREAM *rstrm = (RECSTREAM *) xdrs->x_private;
int32_t *dest_lp = (int32_t *) rstrm->out_finger;
@@ -276,7 +276,7 @@ xdrrec_getbytes (xdrs, addr, len)
static bool_t
xdrrec_putbytes (xdrs, addr, len)
XDR *xdrs;
- caddr_t addr;
+ const caddr_t addr;
u_int len;
{
RECSTREAM *rstrm = (RECSTREAM *) xdrs->x_private;
diff --git a/sunrpc/xdr_stdio.c b/sunrpc/xdr_stdio.c
index f95bc70be1..ddd726d8cb 100644
--- a/sunrpc/xdr_stdio.c
+++ b/sunrpc/xdr_stdio.c
@@ -46,9 +46,9 @@ static char sccsid[] = "@(#)xdr_stdio.c 1.16 87/08/11 Copyr 1984 Sun Micro";
#include <rpc/xdr.h>
static bool_t xdrstdio_getlong (XDR *, long *);
-static bool_t xdrstdio_putlong (XDR *, long *);
+static bool_t xdrstdio_putlong (XDR *, const long *);
static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int);
-static bool_t xdrstdio_putbytes (XDR *, caddr_t, u_int);
+static bool_t xdrstdio_putbytes (XDR *, const caddr_t, u_int);
static u_int xdrstdio_getpos (XDR *);
static bool_t xdrstdio_setpos (XDR *, u_int);
static long *xdrstdio_inline (XDR *, int);
@@ -114,7 +114,7 @@ xdrstdio_getlong (xdrs, lp)
}
static bool_t
-xdrstdio_putlong (XDR *xdrs, long *lp)
+xdrstdio_putlong (XDR *xdrs, const long *lp)
{
long mycopy = htonl (*lp);
@@ -127,7 +127,7 @@ xdrstdio_putlong (XDR *xdrs, long *lp)
static bool_t
xdrstdio_getbytes (xdrs, addr, len)
XDR *xdrs;
- caddr_t addr;
+ const caddr_t addr;
u_int len;
{
@@ -137,7 +137,7 @@ xdrstdio_getbytes (xdrs, addr, len)
}
static bool_t
-xdrstdio_putbytes (XDR *xdrs, caddr_t addr, u_int len)
+xdrstdio_putbytes (XDR *xdrs, const caddr_t addr, u_int len)
{
if ((len != 0) && (fwrite (addr, (int) len, 1, (FILE *) xdrs->x_private) != 1))
return FALSE;