* 2550 Garcia Avenue
* Mountain View, California 94043
*/
-#if !defined(lint) && defined(SCCSIDS)
+#if 0
static char sccsid[] = "@(#)svc_simple.c 1.18 87/08/11 Copyr 1984 Sun Micro";
#endif
*
* Copyright (C) 1984, Sun Microsystems, Inc.
*/
+
#define __FORCE_GLIBC
-#define _GNU_SOURCE
#include <features.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
-#include <rpc/rpc.h>
+#include "rpc_private.h"
#include <rpc/pmap_clnt.h>
#include <sys/socket.h>
#include <netdb.h>
# define fputs(s, f) _IO_fputs (s, f)
#endif
+/* Experimentally off - libc_hidden_proto(strdup) */
+/* Experimentally off - libc_hidden_proto(memset) */
+/* libc_hidden_proto(asprintf) */
+/* libc_hidden_proto(fputs) */
+/* libc_hidden_proto(write) */
+/* libc_hidden_proto(exit) */
+/* libc_hidden_proto(svc_sendreply) */
+/* libc_hidden_proto(svc_register) */
+/* libc_hidden_proto(svcerr_decode) */
+/* libc_hidden_proto(svcudp_create) */
+/* libc_hidden_proto(pmap_unset) */
+/* libc_hidden_proto(xdr_void) */
+
struct proglst_
{
char *(*p_progname) (char *);
xdrproc_t p_inproc, p_outproc;
struct proglst_ *p_nxt;
};
-#ifdef _RPC_THREAD_SAFE_
-#define proglst ((struct proglst_ *)RPC_THREAD_VARIABLE(svcsimple_proglst_s))
+#ifdef __UCLIBC_HAS_THREADS__
+#define proglst (*(struct proglst_ **)&RPC_THREAD_VARIABLE(svcsimple_proglst_s))
#else
static struct proglst_ *proglst;
#endif
static void universal (struct svc_req *rqstp, SVCXPRT *transp_s);
-#ifdef _RPC_THREAD_SAFE_
-#define transp ((SVCXPRT *)RPC_THREAD_VARIABLE(svcsimple_transp_s))
+#ifdef __UCLIBC_HAS_THREADS__
+#define transp (*(SVCXPRT **)&RPC_THREAD_VARIABLE(svcsimple_transp_s))
#else
static SVCXPRT *transp;
#endif
+int registerrpc (u_long prognum, u_long versnum, u_long procnum,
+ char *(*progname) (char *), xdrproc_t inproc, xdrproc_t outproc);
int
registerrpc (u_long prognum, u_long versnum, u_long procnum,
char *(*progname) (char *), xdrproc_t inproc, xdrproc_t outproc)
if (pl->p_prognum == prog && pl->p_procnum == proc)
{
/* decode arguments into a CLEAN buffer */
- bzero (xdrbuf, sizeof (xdrbuf)); /* required ! */
+ memset (xdrbuf, 0, sizeof (xdrbuf)); /* required ! */
if (!svc_getargs (transp_l, pl->p_inproc, xdrbuf))
{
svcerr_decode (transp_l);