about summary refs log tree commit diff
path: root/sunrpc
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-05-21 01:48:59 +0000
committerUlrich Drepper <drepper@redhat.com>1997-05-21 01:48:59 +0000
commit1f205a479b43e5e40672fe5b4ae8f717b28c41b1 (patch)
tree0611b2d3503d81c55b27b235119ae999f1271178 /sunrpc
parent43b0e40f85770cd1f362c3abbad41e09bd9f0b17 (diff)
downloadglibc-1f205a479b43e5e40672fe5b4ae8f717b28c41b1.tar.gz
glibc-1f205a479b43e5e40672fe5b4ae8f717b28c41b1.tar.xz
glibc-1f205a479b43e5e40672fe5b4ae8f717b28c41b1.zip
1997-05-21 02:49  Ulrich Drepper  <drepper@cygnus.com>

	* gnu-versions.h (_GNU_OBSTACK_INTERFACE_VERSION): Set to 2 since
	interface was changed with addition of _obstack_memory_used.
	Suggested by Ian Taylor <ian@cygnus.com>.

	* malloc/obstack.c: Include <config.h>.  Include <stdlib.h> only
	if __GNU_LIBRARY__ or HAVE_STDLIB_H is defined.
	Reported by Ian Taylor <ian@cygnus.com>.

	* dirent/Makefile (routines): Add versionsort.
	* dirent/dirent.h: Add prototype for versionsort.
	* dirent/versionsort.c: New file.
	* manual/filesys.texi: Add documentation for versionsort.
	* manual/string.texi: Add documentation for strverscmp.
	* string/Makefile (routines): Add strverscmp.
	(tests): Add tst-svc.
	* string/string.h: Add prototype for strverscmp.
	* string/strverscmp.c: New file.
	* string/tst-svc.c: New file.  Test for strverscmp.
	* string/tst-svc.input: New file.  Input data for tst-svc.
	* string/tst-svc.expect: New file.  Expected out from tst-svc.

	* math/Makefile (calls): Add s_signbit.

	* po/sv.po: Update.

	* resolv/nss_dns/dns-host.c: Add casts to prevent warnings.
	* sunrpc/pmap_rmt.c: Likewise.

	* string/basename.c: Don't use ISO C definition style.
	Include <config.h> is HAVE_CONFIG_H is defined.

	* sunrpc/proto.h: Add `const' wherever possible.
	* sunrpc/rpc_cout.c: Likewise.
	* sunrpc/rpc_svcout.c: Likewise.
	* sunrpc/xdr_mem.c: Likewise.
	* sunrpc/xdr_rec.c: Likewise.
	* sunrpc/xdr_stdio.c: Likewise.
	* sunrpc/rpc_parse.c: Delete comma from end of enum definition.
	* sunrpc/xdr.c: Little code cleanups.
	* sunrpc/xdr_flaot.c: Likewise.
	Patches by Matthew Wilcox <matthew.wilcox@chbs.mhs.ciba.com>.

	* sysdeps/i386/fpu/__math.h (__finite): Fix typo.

	* sysdeps/unix/sysv/linux/shmdt.c: Add cast to prevent warning.

	* time/europe: Update from tzdata1997f.
	* time/zic.c: Update from tzcode1997e.

1997-05-20 19:20  Miguel de Icaza <miguel@athena.nuclecu.unam.mx>

	* sysdeps/sparc/setjmp.S: Flush windows.
	Bug found by Richard Henderson.

1997-05-19 12:54  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* misc/efgcvt_r.c (fcvt_r, ecvt_r): Rewritten as to fit the specs.

1997-05-19 18:41  Thorsten Kukuk  <kukuk@uni-paderborn.de>

	* nis/nss_nisplus/nisplus-spwd.c (_nss_nisplus_parse_spent): Use
	atol instead of atoi.

1997-05-18 00:22  Philip Blundell <pjb27@cam.ac.uk>

	* inet/Makefile (routines): Add if_index.
	* sysdeps/unix/sysv/linux/if_index.c: New file.
	* sysdeps/stub/if_index.c: New file.
	* sysdeps/unix/sysv/linux/net/if.h: Add prototypes for routines in
	if_index.c (required by IPv6 basic API).
	* sysdeps/unix/sysv/linux/netinet/in.h: Add struct ipv6_pktinfo.

1997-05-17 23:29  Philip Blundell  <pjb27@cam.ac.uk>

	* sysdeps/unix/sysv/linux/netinet/in.h: Update IPv6 definitions
	for new advanced API draft.

1997-05-13 21:33  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* stdio-common/printf_fp.c: Only use the field width for deciding
	on padding when printing special values.
	* stdio-common/printf_fphex.c: Likewise.

1997-05-15 13:14  Miles Bader  <miles@gnu.ai.mit.edu>

	Changes by Thomas Bushnell <thomas@gnu.ai.mit.edu>:
	* hurd/hurdauth.c (_S_msg_add_auth): Implement correctly.

1997-05-12 14:50  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* hurd/hurdsig.c (_hurdsig_init): Double size of sigthread stack;
	msg_add_auth was overflowing it.

1997-05-12 21:20  Richard Henderson  <rth@tamu.edu>

	* elf/dl-lookup.c (_dl_lookup_symbol_skip): Call _dl_signal_error
	when we can't find the symbol.

1997-05-12 16:54  Ulrich Drepper  <drepper@cygnus.com>

	* posix/regex.c: Fix handling of 32-bit Windog environments.
	Patch by Arnold Robbins <arnold@skeeve.atl.ga.us>.

1997-05-10 23:26  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/m68k/syscalls.list: Add cacheflush.

1997-05-10 11:40  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/ldd.bash.in: Remove spurious quote character from version
	message.

1997-05-10 08:49  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* locale/programs/locale.c (write_charmaps): Don't get stuck in a
	loop if the file ends in a long line without newline.
	* locale/programs/charmap.c (charmap_read): Likewise.

1997-05-12 03:47  Ulrich Drepper  <drepper@cygnus.com>

	* sunrpc/rpc/xdr.h: Include more headers to be self-contained.
	* sunrpc/rpc/svc_auth.h: Likewise.
	* sunrpc/rpc/svc.h: Likewise.
	* sunrpc/rpc/rpc_msg.h: Likewise.
	* sunrpc/rpc/pmap_rmt.h: Likewise.
	* sunrpc/rpc/pmap_clnt.h: Likewise.
	* sunrpc/rpc/clnt.h: Likewise.
	* sunrpc/rpc/auth_unix.h: Likewise.
	* sysdeps/generic/rpc/auth.h: Likewise.
	Patches by Michael Deutschmann <ldeutsch@mail.netshop.net>.

1997-05-11 15:29  Philip Blundell  <pjb27@cam.ac.uk>

	* sysdeps/stub/sigaction.c (__sigaction): Correct typo.
	* sysdeps/standalone/arm/errnos.h: New file.
	* sysdeps/stub/sys/param.h: Add dummy definition of MAXSYMLINKS.
	* sysdeps/unix/arm/fork.S: New file.
	* sysdeps/unix/sysv/linux/arm/sysdep.h: New file.
	* sysdeps/stub/tempname.c (__stdio_gen_tempname): Add missing
	`streamptr' argument.
	* sysdeps/stub/vdprintf.c: Remove second copy of file (!), include
	<stdarg.h> to get va_list defined, return 0 not NULL.
	* sysdeps/unix/sysv/linux/statfsbuf.h: Include <gnu/types.h>.
	* sysdeps/unix/sysv/linux/arm/syscall.S: New file.
	* sysdeps/stub/direntry.h (struct dirent): Add missing ';'.
	* sysdeps/stub/seekdir.c (seekdir): Likewise.
	* sysdeps/stub/dirfd.c (dirfd): Argument dirp is DIR*, not FILE*.
	* sysdeps/standalone/dirstream.h: Define struct __dirstream
	not DIR; <dirent.h> provides typedef.
	* sysdeps/unix/sysv/linux/arm/clone.S: New file.
	* sysdeps/unix/sysv/linux/arm/socket.S: New file.
	* sysdeps/stub/sysconf.c (__sysconf): Fix typos.

1997-05-01 06:35  Geoff Keating  <geoffk@ozemail.com.au>

	* sysdeps/powerpc/Dist: New file.
	* sysdeps/powerpc/Makefile: New file.
	* sysdeps/powerpc/fclrexcpt.c: New file.
	* sysdeps/powerpc/fegetenv.c: New file.
	* sysdeps/powerpc/fegetround.c: New file.
	* sysdeps/powerpc/feholdexcpt.c: New file.
	* sysdeps/powerpc/fenvbits.h: New file.
	* sysdeps/powerpc/fenv_const.c: New file.
	* sysdeps/powerpc/fenv_libc.h: New file.
	* sysdeps/powerpc/fesetenv.c: New file.
	* sysdeps/powerpc/fesetround.c: New file.
	* sysdeps/powerpc/feupdateenv.c: New file.
	* sysdeps/powerpc/fgetexcptflg.c: New file.
	* sysdeps/powerpc/fraiseexcpt.c: New file.
	* sysdeps/powerpc/fsetexcptflg.c: New file.
	* sysdeps/powerpc/ftestexcept.c: New file.
	* sysdeps/powerpc/mathbits.h: New file.

	* sysdeps/powerpc/dl-machine.h: Wrap in #ifndef dl_machine_h;
	define elf_machine_lookup_noexec_p, elf_machine_lookup_noplt_p,
	ELF_MACHINE_RELOC_NOPLT; consequent changes to elf_machine_rela.

	* sysdeps/powerpc/__math.h: Remove definition for hypot and __sgn.

	* sysdep/powerpc/fpu_control.h: Correct IEEE default mode.

	* sysdeps/unix/sysv/linux/powerpc/sysdep.h: Don't use .text, but
	instead .section ".text".

1997-04-25 05:06  Geoff Keating  <geoffk@ozemail.com.au>

	* sysdeps/powerpc/__longjmp.S: Use symbolic register numbering.
	* sysdeps/powerpc/bsd-_setjmp.S: Likewise.
	* sysdeps/powerpc/bsd-setjmp.S: Likewise.
	* sysdeps/powerpc/setjmp.S: Likewise.

	* sysdeps/unix/sysv/linux/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/socket.S: Likewise.
	* sysdeps/unix/sysv/linux/syscall.S: Likewise.

1997-04-20 04:37  Geoff Keating  <geoffk@ozemail.com.au>

	* sysdeps/powerpc/strchr.s: New file.
	* sysdeps/powerpc/strcmp.s: New (ugly) file.
	* sysdeps/powerpc/memset.s: New file.
	* string/tester.c: Include prototype and _GNU_SOURCE to make
	standalone compilation possible. Give strcmp a better
	test. Give memset a better test.

1997-04-05 06:34  Geoff Keating  <geoffk@ozemail.com.au>

	* sysdeps/powerpc/strlen.s: Fixed bugs (how did it ever pass its
	tests before?). Changed to symbolic register numbering as an
	experiment.
	* sysdeps/powerpc/ffs.c: Don't include bstring.h, it doesn't
	exist.
	* sysdeps/rs6000/ffs.c: Likewise.

1997-05-12 02:28  Ulrich Drepper  <drepper@cygnus.com>

	* time/sys/time.h: Make second argument of setitimer const.
	Patch by Michael Deutschmann <ldeutsch@mail.netshop.net>.
	* sysdeps/stub/setitimer.c: Likewise.
	* sysdeps/mach/hurd/setitimer.c: Likewise.
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;