about summary refs log tree commit diff
path: root/sunrpc
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1996-11-20 03:45:51 +0000
committerUlrich Drepper <drepper@redhat.com>1996-11-20 03:45:51 +0000
commit84384f5b6aaa622236ada8c9a7ff51f40b91fc20 (patch)
treea44eb8cd85e2a868fa8cd24f8c9cf7fc7d0e7f8c /sunrpc
parentc44db1b1985cb3c41ea9cd76fc5dd60edd087842 (diff)
downloadglibc-84384f5b6aaa622236ada8c9a7ff51f40b91fc20.tar.gz
glibc-84384f5b6aaa622236ada8c9a7ff51f40b91fc20.tar.xz
glibc-84384f5b6aaa622236ada8c9a7ff51f40b91fc20.zip
Wed Nov 20 02:04:11 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/sigsuspend.c: Make sigsuspend a weak
	alias of __sigsuspend.

	* grp/grp.h: Correct comment about POSIX compliance.
	* pwd/pwd.h: Likewise.

	* login/utmp.h: Update copyright and pretty-print prototypes.
	* sysdeps/generic/paths.h: Add _PATH_LASTLOG, _PATH_UTMP and
	_PATH_WTMP from utmpbits.h.
	* sysdeps/unix/sysv/linux/paths.h: Likewise.
	* sysdeps/generic/utmpbits.h: Remove here.
	* sysdeps/gnu/utmpbits.h: Likewise.

	* misc/sys/uio.h: Place __BEGIN_DECLS correctly.
	Pretty-print prototypes.

	* sysdeps/unix/sysv/linux/sparc/clone.S: New file.  Taken from
	LinuxThreads-0.5.

Tue Nov 19 13:43:07 1996  Richard Henderson  <rth@tamu.edu>

	* inet/ether_hton.c: Include <string.h>.
	* inet/ether_ntoh.c: Likewise.
	* inet/rexec.c: Get errno, index, getpass, getlogin from headers.
	* misc/search.h: Fix hcreate_r argument type (unsigned -> size_t).

	* misc/sys/cdefs.h: Change __long_double_t definition from typedef
	to define.  Jim Nance reports problems building XEmacs otherwise.

	* resolv/gethnamaddr.c: Protect h_errno redefinition.
	* resolv/getnetnamadr.c: Likewise.
	* resolv/herror.c: Likewise.

	* sysdeps/generic/sigset.h (__SIGSETFN): Operator ## doesn't work
	with -traditional.  Reported by Eric Youngdale.  While we're at this,
	don't do error checking in the __ functions.  This is consistent
	with the sysv4 definitions and seems Right.
	* signal/signal.h: Don't __OPTIMIZE__ sigops to __ versions.  Add
	prototype for __sigsuspend.
	* sysdeps/posix/sigblock.c: Optimize sigmask <-> sigset_t conversions
	for sigset_t == unsigned long.  De-ansidecl-ify.  Reformat copyright.
	* sysdeps/posix/sigpause.c: Likewise.
	* sysdeps/posix/sigsetmask.c: Likewise.
	* sysdeps/posix/sigvec.c: Likewise.
	* sysdeps/posix/sigintr.c: Reformat copyright.
	* sysdeps/posix/signal.c: Check signal number out of range since
	__sigismember doesn't anymore.  Reformat copyright.
	* sysdeps/posix/sigwait.c: Use __ versions of sigfillset, sigismember,
	sigdelset, sigaction, and sigsuspend.

	* stdlib/drand48-iter.c (__drand48_iterate): Cast state fragments
	to the wider type before shifting.

	* sysdeps/alpha/bsd-_setjmp.S: Silence assembler warning "$at used
	without .set noat" in profiling hook.
	* sysdeps/alpha/bsd-setjmp.S: Likewise.
	* sysdeps/alpha/htonl.S: Likewise.
	* sysdeps/alpha/htons.S: Likewise.
	* sysdeps/alpha/s_copysign.S: Likewise.
	* sysdeps/alpha/setjmp.S: Likewise.
	* sysdeps/alpha/stpcpy.S: Likewise.
	* sysdeps/alpha/strcat.S: Likewise.
	* sysdeps/alpha/strcpy.S: Likewise.
	* sysdeps/alpha/strncat.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/brk.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/llseek.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise.  Rename
	function to __sigsuspend and add weak alias.
	* sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise.  Add missing END.

	* sysdeps/alpha/w_sqrt.S: Define _ERRNO_H so <errnos.h> defines EDOM.

	* sysdeps/unix/execve.S: Match PSEUDO_END symbol with the symbol
	SYSCALL__ actually generated.

	* sysdeps/unix/sysv/linux/errnos.h [_LIBC_REENTRANT]: Reflexively
	#define __set_errno, as several imported subsystems (eg. BIND) check
	that the symbol is defined.

	* sysdeps/unix/sysv/linux/getsysstats.c: Include <alloca.h>.

	* sysdeps/alpha/memcpy.S: Temporarily remove until I can find a bug
	that manifests in GCC.

Tue Nov 19 11:10:05 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* sysdeps/posix/writev.c (writev): COUNT parm is now int.
	* sysdeps/posix/readv.c (readv): Likewise.

Tue Nov 19 15:28:29 1996  Ulrich Drepper  <drepper@cygnus.com>

	* nss/nss_dns/dns-network.c: Change return type of all functions
	to enum nss_status.
	Reported by NIIBE Yutaka.
	* nss/nss_dns/dns-host.c: Update copyright.

Fri Nov 15 20:16:38 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config.make.in: Remove definition of top_absdir.
	* configure.in: Likewise. Use $(..) instead.
	* Makerules (make-link): Use $(..) to find rellns-sh script.

Sat Nov 16 15:52:29 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* manual/nss.texi (Name Service Switch): Fix reference to
	`frobnicate'.

Fri Nov 15 22:08:33 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
	sys/mtio.h.

Mon Nov 18 05:51:13 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/waitstatus.h (__WIFSIGNALED): Rename local
	variable from __stat to __status to prevent shadowing.
	* sunrpc/rpc/clnt.h (clntudp_create, clntudp_bufcreate): Likewise
	for parameter __wait.
	Reported by NIIBE Yutaka.

Mon Nov 18 02:05:38 1996  Ulrich Drepper  <drepper@cygnus.com>

	* misc/regexp.c: New file.  Implementation of obsolete interface
	to regular expression matcher (required in XPG4.2).
	* misc/regexp.h: New file.  Header for above.
	* misc/Makefile (headers): Add regexp.h.
	(routines): Add regexp.c.
	Update copyright.

Sun Nov 17 21:50:24 1996  Andreas Jaeger  <aj@arthur.pfalz.de>

	* stdlib/tst-strtod.c (main): Add arguments for main.
	* stdlib/tst-strtol.c (main): Likewise.

Sun Nov 17 21:15:05 1996  Ulrich Drepper  <drepper@cygnus.com>

	* configure.in: Substitute libc_cv_slibdir and libc_cv_sysconfdir
	in output files.
	* sysdepes/unix/sysv/linux/configure: Define libc_cv_slibdir to /lib
	and sysconfdir to /etc if $prefix is /usr.
	* config.make.in: Add slibdir, sysconfdir and BASH to be replaced.

	* elf/Makefile ($(objpfx)ldd): Install ldd.bash.in if
	$(have-bash2) is yes.
	* elf/ldd.bash.in: Add copyright and various cleanups.
	* elf/ldd.sh.in: Likewise.

	Implement RTLD_NEXT.
	* elf/dlfcn.h: Define RTLD_NEXT.
	* elf/dl-deps.c: Build second searchlist which contains duplicates.
	* elf/dl-lookup.c (_dl_lookup_symbol_skip): New function.  Used
	for RTLD_NEXT lookup.
	Rewrite _dl_lookup_symbol to put common parts for both lookup
	functions in a separate function.
	* elf/dlsym.c: Handle RTLD_NEXT by calling _dl_lookup_symbol_skip.
	* elf/link.h (struct link_map): Add l_dupsearchlist and
	l_ndupsearchlist.
	Add prototype for _dl_lookup_symbol_skip.

	* sunrpc/Makefile (rpcsvc): Add rusers.
	* sunrpc/rpcsvc/rnusers.x: Remove.  Obsolteted by rusers.x.
	* sunrpc/rpcsvc/rusers.x: New file.

Sun Nov 17 04:24:35 1996  Ulrich Drepper  <drepper@cygnus.com>

	* stdio-common/vfprintf.c [USE_IN_LIBIO] (buffered_vfprintf): Call
	__libc_lock_init for local lock.
	Reported by a sun <asun@zoology.washington.edu>.
	[!USE_IN_LIBIO] (PAD): Optimize a bit.
Diffstat (limited to 'sunrpc')
-rw-r--r--sunrpc/Makefile2
-rw-r--r--sunrpc/rpc/clnt.h24
-rw-r--r--sunrpc/rpcsvc/rnusers.x86
-rw-r--r--sunrpc/rpcsvc/rusers.x223
4 files changed, 237 insertions, 98 deletions
diff --git a/sunrpc/Makefile b/sunrpc/Makefile
index 82d4ea78ca..dda826a906 100644
--- a/sunrpc/Makefile
+++ b/sunrpc/Makefile
@@ -52,7 +52,7 @@ headers = $(addprefix rpc/,auth.h auth_unix.h clnt.h netdb.h pmap_clnt.h \
 	  $(rpcsvc:%=rpcsvc/%) $(rpcsvc:%.x=rpcsvc/%.h)
 rpcsvc = bootparam.x nlm_prot.x rstat.x \
 	 yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
-	 rnusers.x spray.x nfs_prot.x rquota.x
+	 rusers.x spray.x nfs_prot.x rquota.x
 install-others = $(includedir)/rpcsvc/bootparam_prot.h \
 		 $(sysconfdir)/rpc
 generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c)
diff --git a/sunrpc/rpc/clnt.h b/sunrpc/rpc/clnt.h
index e9e67210c3..2e1ff26314 100644
--- a/sunrpc/rpc/clnt.h
+++ b/sunrpc/rpc/clnt.h
@@ -278,7 +278,7 @@ extern CLIENT *clnttcp_create __P ((struct sockaddr_in *__raddr,
  *	struct sockaddr_in *raddr;
  *	u_long program;
  *	u_long version;
- *	struct timeval wait;
+ *	struct timeval wait_resend;
  *	int *sockp;
  *
  * Same as above, but you specify max packet sizes.
@@ -287,35 +287,37 @@ extern CLIENT *clnttcp_create __P ((struct sockaddr_in *__raddr,
  *	struct sockaddr_in *raddr;
  *	u_long program;
  *	u_long version;
- *	struct timeval wait;
+ *	struct timeval wait_resend;
  *	int *sockp;
  *	u_int sendsz;
  *	u_int recvsz;
  */
 extern CLIENT *clntudp_create __P ((struct sockaddr_in *__raddr,
 				    u_long __program, u_long __version,
-				    struct timeval __wait, int *__sockp));
+				    struct timeval __wait_resend,
+				    int *__sockp));
 extern CLIENT *clntudp_bufcreate __P ((struct sockaddr_in *__raddr,
 				       u_long __program, u_long __version,
-				       struct timeval __wait, int *__sockp,
-				       u_int __sendsz, u_int __recvsz));
+				       struct timeval __wait_resend,
+				       int *__sockp, u_int __sendsz,
+				       u_int __recvsz));
 
 /*
  * Print why creation failed
  */
-void clnt_pcreateerror __P ((char *__msg));	/* stderr */
-char *clnt_spcreateerror __P ((char *__msg));	/* string */
+extern void clnt_pcreateerror __P ((char *__msg));	/* stderr */
+extern char *clnt_spcreateerror __P ((char *__msg));	/* string */
 
 /*
  * Like clnt_perror(), but is more verbose in its output
  */
-void clnt_perrno __P ((enum clnt_stat __num));	/* stderr */
+extern void clnt_perrno __P ((enum clnt_stat __num));	/* stderr */
 
 /*
  * Print an English error message, given the client error code
  */
-void clnt_perror __P ((CLIENT *__clnt, char *__msg)); 	/* stderr */
-char *clnt_sperror __P ((CLIENT *__clnt, char *__msg));	/* string */
+extern void clnt_perror __P ((CLIENT *__clnt, char *__msg)); 	/* stderr */
+extern char *clnt_sperror __P ((CLIENT *__clnt, char *__msg));	/* string */
 
 /*
  * If a creation fails, the following allows the user to figure out why.
@@ -332,7 +334,7 @@ extern struct rpc_createerr rpc_createerr;
 /*
  * Copy error message to buffer.
  */
-char *clnt_sperrno __P ((enum clnt_stat __num));	/* string */
+extern char *clnt_sperrno __P ((enum clnt_stat __num));	/* string */
 
 
 
diff --git a/sunrpc/rpcsvc/rnusers.x b/sunrpc/rpcsvc/rnusers.x
deleted file mode 100644
index 257df1e6e9..0000000000
--- a/sunrpc/rpcsvc/rnusers.x
+++ /dev/null
@@ -1,86 +0,0 @@
-/* @(#)rnusers.x	2.1 88/08/01 4.0 RPCSRC */
-/* @(#)rnusers.x 1.2 87/09/20 Copyr 1987 Sun Micro */
-
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part.  Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
- * 
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- * 
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- * 
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- * 
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- * 
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California  94043
- */
-
-/*
- * Find out about remote users
- */
-
-const MAXUSERS = 100;
-const MAXUTLEN = 256;
-
-struct utmp {
-	string ut_line<MAXUTLEN>;
-	string ut_name<MAXUTLEN>;
-	string ut_host<MAXUTLEN>;
-	int ut_time;
-};
-
-
-struct utmpidle {
-	utmp ui_utmp;
-	unsigned int ui_idle;
-};
-
-typedef utmp utmparr<MAXUSERS>;
-
-typedef utmpidle utmpidlearr<MAXUSERS>;
-
-program RUSERSPROG {
-	/*
-	 * Includes idle information
-	 */
-	version RUSERSVERS_IDLE {
-		int
-		RUSERSPROC_NUM(void) = 1;
-
-		utmpidlearr
-		RUSERSPROC_NAMES(void) = 2;
-
-		utmpidlearr
-		RUSERSPROC_ALLNAMES(void) = 3;
-	} = 1;
-
-	/*
-	 * Old version does not include idle information
-	 */
-	version RUSERSVERS_ORIG {
-		int
-		RUSERSPROC_NUM(void) = 1;
-
-		utmparr
-		RUSERSPROC_NAMES(void) = 2;
-
-		utmparr
-		RUSERSPROC_ALLNAMES(void) = 3;
-	} = 2;
-} = 100002;
-	
diff --git a/sunrpc/rpcsvc/rusers.x b/sunrpc/rpcsvc/rusers.x
new file mode 100644
index 0000000000..86fca74f87
--- /dev/null
+++ b/sunrpc/rpcsvc/rusers.x
@@ -0,0 +1,223 @@
+/*
+ * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
+ * unrestricted use provided that this legend is included on all tape
+ * media and as a part of the software program in whole or part.  Users
+ * may copy or modify Sun RPC without charge, but are not authorized
+ * to license or distribute it to anyone else except as part of a product or
+ * program developed by the user.
+ * 
+ * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
+ * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * 
+ * Sun RPC is provided with no support and without any obligation on the
+ * part of Sun Microsystems, Inc. to assist in its use, correction,
+ * modification or enhancement.
+ * 
+ * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
+ * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
+ * OR ANY PART THEREOF.
+ * 
+ * In no event will Sun Microsystems, Inc. be liable for any lost revenue
+ * or profits or other special, indirect and consequential damages, even if
+ * Sun has been advised of the possibility of such damages.
+ * 
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California  94043
+ */
+
+%/*
+% * Find out about remote users
+% */
+
+const RUSERS_MAXUSERLEN = 32;
+const RUSERS_MAXLINELEN = 32;
+const RUSERS_MAXHOSTLEN = 257;
+
+struct rusers_utmp {
+	string ut_user<RUSERS_MAXUSERLEN>;	/* aka ut_name */
+	string ut_line<RUSERS_MAXLINELEN>;	/* device */
+	string ut_host<RUSERS_MAXHOSTLEN>;	/* host user logged on from */
+	int ut_type;				/* type of entry */
+	int ut_time;				/* time entry was made */
+	unsigned int ut_idle;			/* minutes idle */
+};
+
+typedef rusers_utmp utmp_array<>;
+
+#ifdef RPC_HDR
+%
+%/*
+% * Values for ut_type field above.
+% */
+#endif
+const	RUSERS_EMPTY = 0;
+const	RUSERS_RUN_LVL = 1;
+const	RUSERS_BOOT_TIME = 2;
+const	RUSERS_OLD_TIME = 3;
+const	RUSERS_NEW_TIME = 4;
+const	RUSERS_INIT_PROCESS = 5;
+const	RUSERS_LOGIN_PROCESS = 6;
+const	RUSERS_USER_PROCESS = 7;
+const	RUSERS_DEAD_PROCESS = 8;
+const	RUSERS_ACCOUNTING = 9;
+
+program RUSERSPROG {
+
+	version RUSERSVERS_3 {
+		int
+		RUSERSPROC_NUM(void) = 1;
+
+		utmp_array
+		RUSERSPROC_NAMES(void) = 2;
+
+		utmp_array
+		RUSERSPROC_ALLNAMES(void) = 3;
+	} = 3;
+
+} = 100002;
+
+#ifdef RPC_HDR
+%
+%
+%#ifdef	__cplusplus
+%extern "C" {
+%#endif
+%
+%/*
+% * The following structures are used by version 2 of the rusersd protocol.
+% * They were not developed with rpcgen, so they do not appear as RPCL.
+% */
+%
+%#define	RUSERSVERS_IDLE 2
+%#define	RUSERSVERS 3		/* current version */
+%#define	MAXUSERS 100
+%
+%/*
+% * This is the structure used in version 2 of the rusersd RPC service.
+% * It corresponds to the utmp structure for BSD sytems.
+% */
+%struct ru_utmp {
+%	char	ut_line[8];		/* tty name */
+%	char	ut_name[8];		/* user id */
+%	char	ut_host[16];		/* host name, if remote */
+%	long	ut_time;		/* time on */
+%};
+%
+%struct utmparr {
+%       struct ru_utmp **uta_arr;
+%       int uta_cnt;
+%};
+%typedef struct utmparr utmparr;
+%int xdr_utmparr();
+%
+%struct utmpidle {
+%	struct ru_utmp ui_utmp;
+%	unsigned ui_idle;
+%};
+%
+%struct utmpidlearr {
+%	struct utmpidle **uia_arr;
+%	int uia_cnt;
+%};
+%
+%int xdr_utmpidlearr();
+%
+%#ifdef	__cplusplus
+%}
+%#endif
+#endif
+
+
+#ifdef	RPC_XDR
+%bool_t
+%xdr_utmp(xdrs, objp)
+%	XDR *xdrs;
+%	struct ru_utmp *objp;
+%{
+%	/* Since the fields are char foo [xxx], we should not free them. */
+%	if (xdrs->x_op != XDR_FREE)
+%	{
+%		char *ptr;
+%		ptr = objp->ut_line;
+%		if (!xdr_string (xdrs, &ptr, sizeof (objp->ut_line))) {
+%			return (FALSE);
+%		}
+%		ptr = objp->ut_name;
+%		if (!xdr_string (xdrs, &ptr, sizeof (objp->ut_name))) {
+%			return (FALSE);
+%		}
+%		ptr = objp->ut_host;
+%		if (!xdr_string (xdrs, &ptr, sizeof (objp->ut_host))) {
+%			return (FALSE);
+%		}
+%	}
+%	if (!xdr_long(xdrs, &objp->ut_time)) {
+%		return (FALSE);
+%	}
+%	return (TRUE);
+%}
+%
+%bool_t
+%xdr_utmpptr(xdrs, objpp)
+%	XDR *xdrs;
+%	struct ru_utmp **objpp;
+%{
+%	if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct ru_utmp), 
+%			   xdr_utmp)) {
+%		return (FALSE);
+%	}
+%	return (TRUE);
+%}
+%
+%bool_t
+%xdr_utmparr(xdrs, objp)
+%	XDR *xdrs;
+%	struct utmparr *objp;
+%{
+%	if (!xdr_array(xdrs, (char **)&objp->uta_arr, (u_int *)&objp->uta_cnt,
+%		       MAXUSERS, sizeof(struct ru_utmp *), xdr_utmpptr)) {
+%		return (FALSE);
+%	}
+%	return (TRUE);
+%}
+%
+%bool_t
+%xdr_utmpidle(xdrs, objp)
+%	XDR *xdrs;
+%	struct utmpidle *objp;
+%{
+%	if (!xdr_utmp(xdrs, &objp->ui_utmp)) {
+%		return (FALSE);
+%	}
+%	if (!xdr_u_int(xdrs, &objp->ui_idle)) {
+%		return (FALSE);
+%	}
+%	return (TRUE);
+%}
+%
+%bool_t
+%xdr_utmpidleptr(xdrs, objpp)
+%	XDR *xdrs;
+%	struct utmpidle **objpp;
+%{
+%	if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct utmpidle), 
+%			   xdr_utmpidle)) {
+%		return (FALSE);
+%	}
+%	return (TRUE);
+%}
+%
+%bool_t
+%xdr_utmpidlearr(xdrs, objp)
+%	XDR *xdrs;
+%	struct utmpidlearr *objp;
+%{
+%	if (!xdr_array(xdrs, (char **)&objp->uia_arr, (u_int *)&objp->uia_cnt,
+%		       MAXUSERS, sizeof(struct utmpidle *), xdr_utmpidleptr)) {
+%		return (FALSE);
+%	}
+%	return (TRUE);
+%}
+#endif