@@ -14107,40 +14107,20 @@ nptl
bits
manual
sunrpc
-rpc_hout.c
tst-xdrmem2.c
-rpc_util.h
getrpcbynumber_r.c
xdr_intXX_t.c
-rpc_tblout.c
svc.c
-rpc_svcout.c
get_myaddr.c
getrpcport.c
auth_unix.c
rpc_prot.c
svcauth_des.c
-rpc_clntout.c
des_soft.c
thrsvc.c
xdr_rec.c
rpcinfo.c
rpcsvc
-sm_inter.x
-spray.x
-nfs_prot.x
-bootparam.h
-klm_prot.x
-key_prot.x
-rstat.x
-rusers.x
-rex.x
-yppasswd.x
-mount.x
-bootparam_prot.x
-rquota.x
-nlm_prot.x
-rpc_main.c
pmap_prot.c
pmap_prot2.c
rtime.c
@@ -14150,7 +14130,6 @@ svc_simple.c
svc_raw.c
getrpcent.c
pmap_rmt.c
-rpc_sample.c
pm_getport.c
openchild.c
xdr_stdio.c
@@ -14187,11 +14166,8 @@ clnt.h
pmap_clnt.c
xdr.c
bindrsvprt.c
-rpc_parse.c
Makefile
-rpc_util.c
des_crypt.c
-rpc_parse.h
key_call.c
authdes_prot.c
xdr_float.c
@@ -14201,7 +14177,6 @@ clnt_gen.c
getrpcbyname_r.c
getrpcbyname.c
clnt_udp.c
-proto.h
publickey.c
svc_auth.c
etc.rpc
@@ -14214,18 +14189,15 @@ rpc_dtable.c
clnt_unix.c
rpcgen.c
auth_none.c
-rpc_scan.c
authuxprot.c
svc_udp.c
Versions
test-rpcent.c
svc_run.c
key_prot.c
-rpc_cout.c
pm_getmaps.c
xdr_ref.c
getrpcbynumber.c
-rpc_scan.h
ChangeLog.old-ports-arm
libc-abis
configure.ac
@@ -157,10 +157,6 @@
/* Define if multi-arch DSOs should be generated. */
#undef USE_MULTIARCH
-/* Define if obsolete RPC code should be made available for user-level code
- to link against. */
-#undef LINK_OBSOLETE_RPC
-
/* Define if obsolete libnsl code should be made available for user-level
code to link against. */
#undef LINK_OBSOLETE_NSL
@@ -96,7 +96,6 @@ build-profile = @profile@
build-static-nss = @static_nss@
cross-compiling = @cross_compiling@
force-install = @force_install@
-link-obsolete-rpc = @link_obsolete_rpc@
build-obsolete-nsl = @build_obsolete_nsl@
build-crypt = @build_crypt@
build-nscd = @build_nscd@
@@ -674,7 +674,6 @@ have_tunables
build_pt_chown
build_nscd
build_obsolete_nsl
-link_obsolete_rpc
libc_cv_static_nss_crypt
libc_cv_nss_crypt
build_crypt
@@ -785,7 +784,6 @@ enable_multi_arch
enable_experimental_malloc
enable_crypt
enable_nss_crypt
-enable_obsolete_rpc
enable_obsolete_nsl
enable_systemtap
enable_build_nscd
@@ -1457,8 +1455,6 @@ Optional Features:
--disable-crypt do not build nor install the passphrase hashing
library, libcrypt
--enable-nss-crypt enable libcrypt to use nss
- --enable-obsolete-rpc build and install the obsolete RPC code for
- link-time usage
--enable-obsolete-nsl build and install the obsolete libnsl library and
depending NSS modules
--enable-systemtap enable systemtap static probe points [default=no]
@@ -3640,20 +3636,6 @@ fi
-# Check whether --enable-obsolete-rpc was given.
-if test "${enable_obsolete_rpc+set}" = set; then :
- enableval=$enable_obsolete_rpc; link_obsolete_rpc=$enableval
-else
- link_obsolete_rpc=no
-fi
-
-
-
-if test "$link_obsolete_rpc" = yes; then
- $as_echo "#define LINK_OBSOLETE_RPC 1" >>confdefs.h
-
-fi
-
# Check whether --enable-obsolete-nsl was given.
if test "${enable_obsolete_nsl+set}" = set; then :
enableval=$enable_obsolete_nsl; build_obsolete_nsl=$enableval
@@ -3785,7 +3767,7 @@ main ()
{
#ifndef __CET__
-#error no CET compiler support
+# error no CET compiler support
#endif
;
return 0;
@@ -376,17 +376,6 @@ AC_SUBST(libc_cv_nss_crypt)
AC_SUBST(libc_cv_static_nss_crypt)
-AC_ARG_ENABLE([obsolete-rpc],
- AC_HELP_STRING([--enable-obsolete-rpc],
- [build and install the obsolete RPC code for link-time usage]),
- [link_obsolete_rpc=$enableval],
- [link_obsolete_rpc=no])
-AC_SUBST(link_obsolete_rpc)
-
-if test "$link_obsolete_rpc" = yes; then
- AC_DEFINE(LINK_OBSOLETE_RPC)
-fi
-
AC_ARG_ENABLE([obsolete-nsl],
AC_HELP_STRING([--enable-obsolete-nsl],
[build and install the obsolete libnsl library and depending NSS modules]),
@@ -625,12 +625,7 @@ for linking")
# define libc_hidden_tls_proto(name, attrs...) hidden_tls_proto (name, ##attrs)
# define libc_hidden_def(name) hidden_def (name)
# define libc_hidden_weak(name) hidden_weak (name)
-# ifdef LINK_OBSOLETE_RPC
- /* libc_hidden_nolink_sunrpc should only get used in sunrpc code. */
-# define libc_hidden_nolink_sunrpc(name, version) hidden_def (name)
-# else
-# define libc_hidden_nolink_sunrpc(name, version) hidden_nolink (name, libc, version)
-# endif
+# define libc_hidden_nolink(name, version) hidden_nolink (name, libc, version)
# define libc_hidden_ver(local, name) hidden_ver (local, name)
# define libc_hidden_data_def(name) hidden_data_def (name)
# define libc_hidden_tls_def(name) hidden_tls_def (name)
@@ -127,15 +127,9 @@
#define compat_symbol_reference_2(local, symbol, name) \
symbol_version_reference (local, symbol, name)
-# ifdef LINK_OBSOLETE_RPC
-/* Export the symbol for both static and dynamic linking. */
-# define libc_sunrpc_symbol(name, aliasname, version) \
- strong_alias (name, aliasname)
-# else
/* Export the symbol only for shared-library compatibility. */
-# define libc_sunrpc_symbol(name, aliasname, version) \
+#define libc_sunrpc_symbol(name, aliasname, version) \
compat_symbol (libc, name, aliasname, version);
-# endif
/* The TEST_COMPAT macro acts just like the SHLIB_COMPAT macro except
that it does not check IS_IN. It is used by tests that are testing
@@ -340,9 +340,7 @@ databases above is @code{compat [NOTFOUND=return] files}. If the
@code{--enable-obsolete-nsl} option was not used the default value
for the services is @code{files}.
-For all other databases the default value is @code{files} unless
-@theglibc{} was configured with @code{--enable-obsolete-rpc} option, in
-which case it the default value is @code{nis [NOTFOUND=return] files}.
+For all other databases the default value is @code{files}.
@cindex optimizing NSS
A second point is that the user should try to optimize the lookup
@@ -396,8 +396,7 @@ class Context(object):
extra_glibcs=[{'variant': 'disable-multi-arch',
'cfg': ['--disable-multi-arch']},
{'variant': 'enable-obsolete',
- 'cfg': ['--enable-obsolete-rpc',
- '--enable-obsolete-nsl']},
+ 'cfg': ['--enable-obsolete-nsl']},
{'variant': 'static-pie',
'cfg': ['--enable-static-pie']},
{'variant': 'x32-static-pie',
@@ -414,8 +413,7 @@ class Context(object):
{'variant': 'enable-obsolete',
'arch': 'i686',
'ccopts': '-m32 -march=i686',
- 'cfg': ['--enable-obsolete-rpc',
- '--enable-obsolete-nsl']},
+ 'cfg': ['--enable-obsolete-nsl']},
{'arch': 'i486',
'ccopts': '-m32 -march=i486'},
{'arch': 'i586',
@@ -26,7 +26,7 @@ include ../Makeconfig
# distribution with some additional changes from the TI-RPC package
# which is also available from Sun. The files are heavily changed to
# compile cleanly and to fit in the GNU environment. All the code
-# from Sun's rpc, etc, and rpcgen subdirectories is in this directory;
+# from Sun's rpc, and etc subdirectories is in this directory;
# the rpc subdirectory contains only the header files. Other than
# that, several files were renamed so as not to exceed 14-character
# file name limits:
@@ -45,23 +45,7 @@ include ../Makeconfig
# svc_auth_unix.c -> svc_authux.c
# xdr_reference.c -> xdr_ref.c
-rpcsvc = bootparam_prot.x nlm_prot.x rstat.x \
- yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
- rusers.x spray.x nfs_prot.x rquota.x key_prot.x
-headers-sunrpc = $(addprefix rpc/,auth.h auth_unix.h clnt.h pmap_clnt.h \
- pmap_prot.h pmap_rmt.h rpc.h rpc_msg.h \
- svc.h svc_auth.h types.h xdr.h auth_des.h \
- key_prot.h) \
- $(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h
headers = rpc/netdb.h
-install-others = $(inst_sysconfdir)/rpc
-generated += $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \
- $(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen
-generated-dirs += rpcsvc
-
-ifeq ($(link-obsolete-rpc),yes)
-headers += $(headers-sunrpc)
-endif
ifeq ($(build-shared),yes)
need-export-routines := auth_des auth_unix clnt_gen clnt_perr clnt_tcp \
@@ -79,20 +63,9 @@ routines := auth_none authuxprot bindrsvprt clnt_raw clnt_simp \
getrpcent_r getrpcbyname_r getrpcbynumber_r \
clnt_unix svc_unix create_xid $(need-export-routines) \
rpc_gethostbyname
-ifneq ($(link-obsolete-rpc),yes)
# We only add the RPC for compatibility to libc.so.
shared-only-routines = $(routines)
endif
-endif
-
-ifeq ($(link-obsolete-rpc),yes)
-install-bin := rpcgen
-rpcgen-objs = rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o \
- rpc_scan.o rpc_util.o rpc_svcout.o rpc_clntout.o \
- rpc_tblout.o rpc_sample.o
-extra-objs = $(rpcgen-objs) $(addprefix cross-,$(rpcgen-objs))
-others += rpcgen
-endif
tests = tst-xdrmem tst-xdrmem2 test-rpcent tst-udp-error tst-udp-timeout \
tst-udp-nonblocking
@@ -104,22 +77,6 @@ tests += tst-udp-garbage
tests-internal += tst-svc_register
endif
-ifeq ($(run-built-tests),yes)
-ifeq ($(link-obsolete-rpc),yes)
-rpcgen-tests := $(objpfx)bug20790.out
-tests-special += $(rpcgen-tests)
-endif
-endif
-
-ifeq ($(link-obsolete-rpc),yes)
-headers += $(rpcsvc:%.x=rpcsvc/%.h)
-extra-libs := librpcsvc
-extra-libs-others := librpcsvc # Make it in `others' pass, not `lib' pass.
-librpcsvc-routines = $(rpcsvc:%.x=x%)
-librpcsvc-inhibit-o = .os # Build no shared rpcsvc library.
-omit-deps = $(librpcsvc-routines)
-endif
-
ifeq (yes,$(build-shared))
rpc-compat-routines = $(addprefix compat-,$(need-export-routines))
rpc-compat-routines.os = $(addprefix $(objpfx), \
@@ -137,19 +94,6 @@ $(rpc-compat-routines.os): $(objpfx)compat-%.os: %.c $(before-compile)
$(compile-command.c) -DEXPORT_RPC_SYMBOLS
endif
-CFLAGS-xbootparam_prot.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xnlm_prot.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xrstat.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xyppasswd.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xklm_prot.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xrex.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xsm_inter.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xmount.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xrusers.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xspray.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xnfs_prot.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xrquota.c += -Wno-unused $(PIC-ccflag)
-CFLAGS-xkey_prot.c += -Wno-unused $(PIC-ccflag)
CFLAGS-auth_unix.c += -fexceptions
CFLAGS-key_call.c += -fexceptions
CFLAGS-pmap_rmt.c += -fexceptions
@@ -163,85 +107,12 @@ $(objpfx)tst-udp-error: $(common-objpfx)linkobj/libc.so
$(objpfx)tst-svc_register: \
$(common-objpfx)linkobj/libc.so $(shared-thread-library)
-$(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs))
-
-cross-rpcgen-objs := $(addprefix $(objpfx)cross-,$(rpcgen-objs))
-
-# When generic makefile support for build system programs is
-# available, it should replace this code. See
-# <https://sourceware.org/bugzilla/show_bug.cgi?id=14087>.
-$(cross-rpcgen-objs): $(objpfx)cross-%.o: %.c $(before-compile)
- $(BUILD_CC) $($(basename $(<F))-CFLAGS) $(ALL_BUILD_CFLAGS) $< \
- $(OUTPUT_OPTION) $(native-compile-mkdep-flags) -c
-
-$(objpfx)cross-rpcgen: $(cross-rpcgen-objs)
- $(BUILD_CC) $^ $(BUILD_LDFLAGS) -o $@
-
-# This makes sure -DIN_MODULE is passed for all these modules.
-cpp-srcs-left := $(rpcgen-objs:.o=.c)
-lib := nonlib
-include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left))
-
-# How we run rpcgen to generate sources and headers in the rules below.
-# Setting CPP tells it how to run the C preprocessor correctly. Note
-# that $(built-program-file) requires that the just-built cross-rpcgen
-# binary be the second dependency listed in each rule using rpcgen-cmd.
-rpcgen-cmd = CPP='$(CC) -E -x c-header' $(built-program-file) -Y ../scripts
-
# Install the rpc data base file.
$(inst_sysconfdir)/rpc: etc.rpc $(+force)
$(do-install)
-
-# Generate the rpcsvc headers with rpcgen.
-# We use a stamp file to avoid unnessary recompilation each time rpcgen is
-# relinked.
-$(rpcsvc:%.x=$(objpfx)rpcsvc/%.h): $(objpfx)rpcsvc/%.h: $(objpfx)rpcsvc/%.stmp
- @:
-$(objpfx)rpcsvc/%.stmp: rpcsvc/%.x $(objpfx)cross-rpcgen
- $(make-target-directory)
- -@rm -f ${@:stmp=T} $@
- $(rpcgen-cmd) -h $< -o ${@:stmp=T}
- $(move-if-change) $(@:stmp=T) $(@:stmp=h)
- touch $@
-
-# Generate the rpcsvc XDR functions with rpcgen.
-$(rpcsvc:%.x=$(objpfx)x%.c): $(objpfx)x%.c: $(objpfx)x%.stmp
- @:
-$(objpfx)x%.stmp: rpcsvc/%.x $(objpfx)cross-rpcgen
- -@rm -f ${@:stmp=T} $@
- $(rpcgen-cmd) -c $< -o ${@:stmp=T}
- $(move-if-change) $(@:stmp=T) $(@:stmp=c)
- touch $@
-
-# The generated source files depend on the corresponding generated headers.
-# Gratuitous dependency on generated .c file here just gets it mentioned to
-# avoid being an intermediate file and getting removed.
-define o-iterator-doit
-$(rpcsvc:%.x=$(objpfx)x%$o): $(objpfx)x%$o: $(objpfx)x%.c $(objpfx)rpcsvc/%.h
-endef
-object-suffixes-left = $(filter-out $(librpcsvc-inhibit-o),$(object-suffixes))
-include $(o-iterator)
-
-rpcsvc-dt-files := $(foreach o,$(filter-out $(librpcsvc-inhibit-o),\
- $(object-suffixes)),\
- $(rpcsvc:%.x=$(objpfx)x%$o.dt))
-rpcsvc-depfiles := $(patsubst %.dt,%.d,$(wildcard $(rpcsvc-dt-files))) \
- $(wildcard $(rpcsvc-dt-files:.dt=.d))
-ifdef rpcsvc-depfiles
-ifneq ($(no_deps),t)
--include $(rpcsvc-depfiles)
-endif
-endif
$(objpfx)thrsvc: $(common-objpfx)linkobj/libc.so $(shared-thread-library)
-ifeq ($(run-built-tests),yes)
-$(rpcgen-tests): $(objpfx)%.out: %.x $(objpfx)rpcgen
- -rm -f $@
- $(built-program-cmd) -c $< -o $@; \
- $(evaluate-test)
-endif
-
$(objpfx)tst-udp-timeout: $(common-objpfx)linkobj/libc.so
$(objpfx)tst-udp-nonblocking: $(common-objpfx)linkobj/libc.so
$(objpfx)tst-udp-garbage: \
@@ -119,7 +119,7 @@ authdes_create (const char *servername, u_int window,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (authdes_create)
#else
-libc_hidden_nolink_sunrpc (authdes_create, GLIBC_2_1)
+libc_hidden_nolink (authdes_create, GLIBC_2_1)
#endif
AUTH *
@@ -213,7 +213,7 @@ failed:
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (authdes_pk_create)
#else
-libc_hidden_nolink_sunrpc (authdes_pk_create, GLIBC_2_1)
+libc_hidden_nolink (authdes_pk_create, GLIBC_2_1)
#endif
/*
@@ -96,7 +96,7 @@ authnone_create (void)
__libc_once (authnone_private_guard, authnone_create_once);
return &authnone_private.no_client;
}
-libc_hidden_nolink_sunrpc (authnone_create, GLIBC_2_0)
+libc_hidden_nolink (authnone_create, GLIBC_2_0)
static bool_t
authnone_marshal (AUTH *client, XDR *xdrs)
@@ -151,7 +151,7 @@ no_memory:
marshal_new_auth (auth);
return auth;
}
-libc_hidden_nolink_sunrpc (authunix_create, GLIBC_2_0)
+libc_hidden_nolink (authunix_create, GLIBC_2_0)
/*
* Returns an auth handle with parameters determined by doing lots of
@@ -218,7 +218,7 @@ authunix_create_default (void)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (authunix_create_default)
#else
-libc_hidden_nolink_sunrpc (authunix_create_default, GLIBC_2_0)
+libc_hidden_nolink (authunix_create_default, GLIBC_2_0)
#endif
/*
@@ -64,7 +64,7 @@ xdr_authdes_cred (XDR *xdrs, struct authdes_cred *cred)
return FALSE;
}
}
-libc_hidden_nolink_sunrpc (xdr_authdes_cred, GLIBC_2_1)
+libc_hidden_nolink (xdr_authdes_cred, GLIBC_2_1)
bool_t
@@ -79,4 +79,4 @@ xdr_authdes_verf (register XDR *xdrs, register struct authdes_verf *verf)
sizeof (verf->adv_int_u)));
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_authdes_verf, GLIBC_2_1)
+libc_hidden_nolink (xdr_authdes_verf, GLIBC_2_1)
@@ -64,4 +64,4 @@ xdr_authunix_parms (XDR * xdrs, struct authunix_parms *p)
}
return FALSE;
}
-libc_hidden_nolink_sunrpc (xdr_authunix_parms, GLIBC_2_0)
+libc_hidden_nolink (xdr_authunix_parms, GLIBC_2_0)
deleted file mode 100644
@@ -1 +0,0 @@
-program TPROG { version TVERS { int FUNC(int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) = 1; } = 1; } = 1;
@@ -143,5 +143,5 @@ clnt_create (const char *hostname, u_long prog, u_long vers,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clnt_create)
#else
-libc_hidden_nolink_sunrpc (clnt_create, GLIBC_2_0)
+libc_hidden_nolink (clnt_create, GLIBC_2_0)
#endif
@@ -124,7 +124,7 @@ clnt_sperror (CLIENT * rpch, const char *msg)
return str;
}
-libc_hidden_nolink_sunrpc (clnt_sperror, GLIBC_2_0)
+libc_hidden_nolink (clnt_sperror, GLIBC_2_0)
void
clnt_perror (CLIENT * rpch, const char *msg)
@@ -134,7 +134,7 @@ clnt_perror (CLIENT * rpch, const char *msg)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clnt_perror)
#else
-libc_hidden_nolink_sunrpc (clnt_perror, GLIBC_2_0)
+libc_hidden_nolink (clnt_perror, GLIBC_2_0)
#endif
@@ -267,7 +267,7 @@ clnt_perrno (enum clnt_stat num)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clnt_perrno)
#else
-libc_hidden_nolink_sunrpc (clnt_perrno, GLIBC_2_0)
+libc_hidden_nolink (clnt_perrno, GLIBC_2_0)
#endif
char *
@@ -305,7 +305,7 @@ clnt_spcreateerror (const char *msg)
return str;
}
-libc_hidden_nolink_sunrpc (clnt_spcreateerror, GLIBC_2_0)
+libc_hidden_nolink (clnt_spcreateerror, GLIBC_2_0)
void
clnt_pcreateerror (const char *msg)
@@ -315,7 +315,7 @@ clnt_pcreateerror (const char *msg)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clnt_pcreateerror)
#else
-libc_hidden_nolink_sunrpc (clnt_pcreateerror, GLIBC_2_0)
+libc_hidden_nolink (clnt_pcreateerror, GLIBC_2_0)
#endif
struct auth_errtab
@@ -126,7 +126,7 @@ clntraw_create (u_long prog, u_long vers)
client->cl_auth = authnone_create ();
return client;
}
-libc_hidden_nolink_sunrpc (clntraw_create, GLIBC_2_0)
+libc_hidden_nolink (clntraw_create, GLIBC_2_0)
static enum clnt_stat
clntraw_call (CLIENT *h, u_long proc, xdrproc_t xargs, caddr_t argsp,
@@ -117,7 +117,7 @@ callrpc (const char *host, u_long prognum, u_long versnum, u_long procnum,
crp->valid = 0;
return (int) clnt_stat;
}
-libc_hidden_nolink_sunrpc (callrpc, GLIBC_2_0)
+libc_hidden_nolink (callrpc, GLIBC_2_0)
void
__rpc_thread_clnt_cleanup (void)
@@ -221,7 +221,7 @@ fooy:
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clnttcp_create)
#else
-libc_hidden_nolink_sunrpc (clnttcp_create, GLIBC_2_0)
+libc_hidden_nolink (clnttcp_create, GLIBC_2_0)
#endif
static enum clnt_stat
@@ -211,7 +211,7 @@ fooy:
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (__libc_clntudp_bufcreate)
#else
-libc_hidden_nolink_sunrpc (__libc_clntudp_bufcreate, GLIBC_PRIVATE)
+libc_hidden_nolink (__libc_clntudp_bufcreate, GLIBC_PRIVATE)
#endif
CLIENT *
@@ -222,7 +222,7 @@ clntudp_bufcreate (struct sockaddr_in *raddr, u_long program, u_long version,
return __libc_clntudp_bufcreate (raddr, program, version, wait,
sockp, sendsz, recvsz, 0);
}
-libc_hidden_nolink_sunrpc (clntudp_bufcreate, GLIBC_2_0)
+libc_hidden_nolink (clntudp_bufcreate, GLIBC_2_0)
CLIENT *
clntudp_create (struct sockaddr_in *raddr, u_long program, u_long version,
@@ -234,7 +234,7 @@ clntudp_create (struct sockaddr_in *raddr, u_long program, u_long version,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clntudp_create)
#else
-libc_hidden_nolink_sunrpc (clntudp_create, GLIBC_2_0)
+libc_hidden_nolink (clntudp_create, GLIBC_2_0)
#endif
static int
@@ -201,7 +201,7 @@ fooy:
mem_free ((caddr_t) h, sizeof (CLIENT));
return (CLIENT *) NULL;
}
-libc_hidden_nolink_sunrpc (clntunix_create, GLIBC_2_1)
+libc_hidden_nolink (clntunix_create, GLIBC_2_1)
static enum clnt_stat
clntunix_call (CLIENT *h, u_long proc, xdrproc_t xdr_args, caddr_t args_ptr,
@@ -99,5 +99,5 @@ get_myaddress (struct sockaddr_in *addr)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (get_myaddress)
#else
-libc_hidden_nolink_sunrpc (get_myaddress, GLIBC_2_0)
+libc_hidden_nolink (get_myaddress, GLIBC_2_0)
#endif
@@ -81,7 +81,7 @@ key_setsecret (char *secretkey)
}
return 0;
}
-libc_hidden_nolink_sunrpc (key_setsecret, GLIBC_2_1)
+libc_hidden_nolink (key_setsecret, GLIBC_2_1)
/* key_secretkey_is_set() returns 1 if the keyserver has a secret key
* stored for the caller's effective uid; it returns 0 otherwise
@@ -110,7 +110,7 @@ key_secretkey_is_set (void)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (key_secretkey_is_set)
#else
-libc_hidden_nolink_sunrpc (key_secretkey_is_set, GLIBC_2_1)
+libc_hidden_nolink (key_secretkey_is_set, GLIBC_2_1)
#endif
int
@@ -134,7 +134,7 @@ key_encryptsession (char *remotename, des_block *deskey)
*deskey = res.cryptkeyres_u.deskey;
return 0;
}
-libc_hidden_nolink_sunrpc (key_encryptsession, GLIBC_2_1)
+libc_hidden_nolink (key_encryptsession, GLIBC_2_1)
int
key_decryptsession (char *remotename, des_block *deskey)
@@ -156,7 +156,7 @@ key_decryptsession (char *remotename, des_block *deskey)
*deskey = res.cryptkeyres_u.deskey;
return 0;
}
-libc_hidden_nolink_sunrpc (key_decryptsession, GLIBC_2_1)
+libc_hidden_nolink (key_decryptsession, GLIBC_2_1)
int
key_encryptsession_pk (char *remotename, netobj *remotekey,
@@ -181,7 +181,7 @@ key_encryptsession_pk (char *remotename, netobj *remotekey,
*deskey = res.cryptkeyres_u.deskey;
return 0;
}
-libc_hidden_nolink_sunrpc (key_encryptsession_pk, GLIBC_2_1)
+libc_hidden_nolink (key_encryptsession_pk, GLIBC_2_1)
int
key_decryptsession_pk (char *remotename, netobj *remotekey,
@@ -206,7 +206,7 @@ key_decryptsession_pk (char *remotename, netobj *remotekey,
*deskey = res.cryptkeyres_u.deskey;
return 0;
}
-libc_hidden_nolink_sunrpc (key_decryptsession_pk, GLIBC_2_1)
+libc_hidden_nolink (key_decryptsession_pk, GLIBC_2_1)
int
key_gendes (des_block *key)
@@ -240,7 +240,7 @@ key_gendes (des_block *key)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (key_gendes)
#else
-libc_hidden_nolink_sunrpc (key_gendes, GLIBC_2_1)
+libc_hidden_nolink (key_gendes, GLIBC_2_1)
#endif
int
@@ -260,7 +260,7 @@ key_setnet (struct key_netstarg *arg)
}
return 1;
}
-libc_hidden_nolink_sunrpc (key_setnet, GLIBC_2_1)
+libc_hidden_nolink (key_setnet, GLIBC_2_1)
int
key_get_conv (char *pkey, des_block *deskey)
@@ -279,7 +279,7 @@ key_get_conv (char *pkey, des_block *deskey)
*deskey = res.cryptkeyres_u.deskey;
return 0;
}
-libc_hidden_nolink_sunrpc (key_get_conv, GLIBC_2_1)
+libc_hidden_nolink (key_get_conv, GLIBC_2_1)
/*
* Hack to allow the keyserver to use AUTH_DES (for authenticated
@@ -39,7 +39,7 @@ xdr_keystatus (XDR * xdrs, keystatus * objp)
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_keystatus, GLIBC_2_0)
+libc_hidden_nolink (xdr_keystatus, GLIBC_2_0)
bool_t
xdr_keybuf (XDR * xdrs, keybuf objp)
@@ -49,7 +49,7 @@ xdr_keybuf (XDR * xdrs, keybuf objp)
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_keybuf, GLIBC_2_0)
+libc_hidden_nolink (xdr_keybuf, GLIBC_2_0)
bool_t
xdr_netnamestr (XDR * xdrs, netnamestr * objp)
@@ -59,7 +59,7 @@ xdr_netnamestr (XDR * xdrs, netnamestr * objp)
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_netnamestr, GLIBC_2_1)
+libc_hidden_nolink (xdr_netnamestr, GLIBC_2_1)
bool_t
xdr_cryptkeyarg (XDR * xdrs, cryptkeyarg * objp)
@@ -72,7 +72,7 @@ xdr_cryptkeyarg (XDR * xdrs, cryptkeyarg * objp)
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_cryptkeyarg, GLIBC_2_0)
+libc_hidden_nolink (xdr_cryptkeyarg, GLIBC_2_0)
bool_t
xdr_cryptkeyarg2 (XDR * xdrs, cryptkeyarg2 * objp)
@@ -85,7 +85,7 @@ xdr_cryptkeyarg2 (XDR * xdrs, cryptkeyarg2 * objp)
return FALSE;
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_cryptkeyarg2, GLIBC_2_0)
+libc_hidden_nolink (xdr_cryptkeyarg2, GLIBC_2_0)
bool_t
xdr_cryptkeyres (XDR * xdrs, cryptkeyres * objp)
@@ -103,7 +103,7 @@ xdr_cryptkeyres (XDR * xdrs, cryptkeyres * objp)
}
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_cryptkeyres, GLIBC_2_0)
+libc_hidden_nolink (xdr_cryptkeyres, GLIBC_2_0)
bool_t
xdr_unixcred (XDR * xdrs, unixcred * objp)
@@ -118,7 +118,7 @@ xdr_unixcred (XDR * xdrs, unixcred * objp)
return FALSE;
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_unixcred, GLIBC_2_1)
+libc_hidden_nolink (xdr_unixcred, GLIBC_2_1)
bool_t
xdr_getcredres (XDR * xdrs, getcredres * objp)
@@ -136,7 +136,7 @@ xdr_getcredres (XDR * xdrs, getcredres * objp)
}
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_getcredres, GLIBC_2_1)
+libc_hidden_nolink (xdr_getcredres, GLIBC_2_1)
bool_t
xdr_key_netstarg (XDR * xdrs, key_netstarg * objp)
@@ -149,7 +149,7 @@ xdr_key_netstarg (XDR * xdrs, key_netstarg * objp)
return FALSE;
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_key_netstarg, GLIBC_2_0)
+libc_hidden_nolink (xdr_key_netstarg, GLIBC_2_0)
bool_t
xdr_key_netstres (XDR * xdrs, key_netstres * objp)
@@ -167,4 +167,4 @@ xdr_key_netstres (XDR * xdrs, key_netstres * objp)
}
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_key_netstres, GLIBC_2_0)
+libc_hidden_nolink (xdr_key_netstres, GLIBC_2_0)
@@ -55,7 +55,7 @@ user2netname (char netname[MAXNETNAMELEN + 1], const uid_t uid,
netname[i - 1] = '\0';
return 1;
}
-libc_hidden_nolink_sunrpc (user2netname, GLIBC_2_1)
+libc_hidden_nolink (user2netname, GLIBC_2_1)
int
host2netname (char netname[MAXNETNAMELEN + 1], const char *host,
@@ -119,7 +119,7 @@ host2netname (char netname[MAXNETNAMELEN + 1], const char *host,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (host2netname)
#else
-libc_hidden_nolink_sunrpc (host2netname, GLIBC_2_1)
+libc_hidden_nolink (host2netname, GLIBC_2_1)
#endif
int
@@ -135,7 +135,7 @@ getnetname (char name[MAXNETNAMELEN + 1])
dummy = user2netname (name, uid, NULL);
return (dummy);
}
-libc_hidden_nolink_sunrpc (getnetname, GLIBC_2_1)
+libc_hidden_nolink (getnetname, GLIBC_2_1)
/* Type of the lookup function for netname2user. */
typedef int (*netname2user_function) (const char netname[MAXNETNAMELEN + 1],
@@ -185,7 +185,7 @@ netname2user (const char netname[MAXNETNAMELEN + 1], uid_t * uidp, gid_t * gidp,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (netname2user)
#else
-libc_hidden_nolink_sunrpc (netname2user, GLIBC_2_1)
+libc_hidden_nolink (netname2user, GLIBC_2_1)
#endif
int
@@ -212,4 +212,4 @@ netname2host (const char netname[MAXNETNAMELEN + 1], char *hostname,
return 1;
}
-libc_hidden_nolink_sunrpc (netname2host, GLIBC_2_1)
+libc_hidden_nolink (netname2host, GLIBC_2_1)
@@ -85,4 +85,4 @@ pmap_getmaps (struct sockaddr_in *address)
address->sin_port = 0;
return head;
}
-libc_hidden_nolink_sunrpc (pmap_getmaps, GLIBC_2_0)
+libc_hidden_nolink (pmap_getmaps, GLIBC_2_0)
@@ -136,7 +136,7 @@ __libc_rpc_getport (struct sockaddr_in *address, u_long program,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (__libc_rpc_getport)
#else
-libc_hidden_nolink_sunrpc (__libc_rpc_getport, GLIBC_PRIVATE)
+libc_hidden_nolink (__libc_rpc_getport, GLIBC_PRIVATE)
#endif
@@ -151,4 +151,4 @@ pmap_getport (struct sockaddr_in *address, u_long program, u_long version,
{
return __libc_rpc_getport (address, program, version, protocol, 5, 60);
}
-libc_hidden_nolink_sunrpc (pmap_getport, GLIBC_2_0)
+libc_hidden_nolink (pmap_getport, GLIBC_2_0)
@@ -132,7 +132,7 @@ pmap_set (u_long program, u_long version, int protocol, u_short port)
/* (void)close(socket); CLNT_DESTROY closes it */
return rslt;
}
-libc_hidden_nolink_sunrpc (pmap_set, GLIBC_2_0)
+libc_hidden_nolink (pmap_set, GLIBC_2_0)
/*
* Remove the mapping between program,version and port.
@@ -163,4 +163,4 @@ pmap_unset (u_long program, u_long version)
/* (void)close(socket); CLNT_DESTROY already closed it */
return rslt;
}
-libc_hidden_nolink_sunrpc (pmap_unset, GLIBC_2_0)
+libc_hidden_nolink (pmap_unset, GLIBC_2_0)
@@ -48,4 +48,4 @@ xdr_pmap (XDR *xdrs, struct pmap *regs)
return xdr_u_long (xdrs, ®s->pm_port);
return FALSE;
}
-libc_hidden_nolink_sunrpc (xdr_pmap, GLIBC_2_0)
+libc_hidden_nolink (xdr_pmap, GLIBC_2_0)
@@ -109,4 +109,4 @@ xdr_pmaplist (XDR *xdrs, struct pmaplist **rp)
rp = freeing ? &next : &((*rp)->pml_next);
}
}
-libc_hidden_nolink_sunrpc (xdr_pmaplist, GLIBC_2_0)
+libc_hidden_nolink (xdr_pmaplist, GLIBC_2_0)
@@ -101,7 +101,7 @@ pmap_rmtcall (struct sockaddr_in *addr, u_long prog, u_long vers, u_long proc,
addr->sin_port = 0;
return stat;
}
-libc_hidden_nolink_sunrpc (pmap_rmtcall, GLIBC_2_0)
+libc_hidden_nolink (pmap_rmtcall, GLIBC_2_0)
/*
@@ -134,7 +134,7 @@ xdr_rmtcall_args (XDR *xdrs, struct rmtcallargs *cap)
}
return FALSE;
}
-libc_hidden_nolink_sunrpc (xdr_rmtcall_args, GLIBC_2_0)
+libc_hidden_nolink (xdr_rmtcall_args, GLIBC_2_0)
/*
* XDR remote call results
@@ -155,7 +155,7 @@ xdr_rmtcallres (XDR *xdrs, struct rmtcallres *crp)
}
return FALSE;
}
-libc_hidden_nolink_sunrpc (xdr_rmtcallres, GLIBC_2_0)
+libc_hidden_nolink (xdr_rmtcallres, GLIBC_2_0)
/*
@@ -389,4 +389,4 @@ done_broad:
AUTH_DESTROY (unix_auth);
return stat;
}
-libc_hidden_nolink_sunrpc (clnt_broadcast, GLIBC_2_0)
+libc_hidden_nolink (clnt_broadcast, GLIBC_2_0)
deleted file mode 100644
@@ -1,65 +0,0 @@
-/****** rpc_clntout.c ******/
-
-void write_stubs(void);
-void printarglist(proc_list *proc, const char *result,
- const char *addargname, const char *addargtype);
-
-/****** rpc_cout.c ******/
-
-void emit (definition *def);
-
-/****** rpc_hout.c ******/
-
-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,
- const char *addargtype, int server_p, int mode);
-void pdeclaration(const char *name, declaration *dec, int tab,
- const char *separator);
-void print_xdr_func_def (char* name, int pointerp, int i);
-
-/****** rpc_main.c ******/
- /* nil */
-
-/****** rpc_parse.c ******/
-definition *get_definition(void);
-
-/****** rpc_sample.c ******/
-void write_sample_svc(definition *def);
-int write_sample_clnt(definition *def);
-void add_sample_msg(void);
-void write_sample_clnt_main(void);
-
-/****** rpc_scan.c ******/
- /* see rpc_scan.h */
-
-/****** rpc_svcout.c ******/
-int nullproc(const proc_list *proc);
-void write_svc_aux(int nomain);
-void write_msg_out(void);
-
-/****** rpc_tblout.c ******/
-void write_tables(void);
-
-/****** rpc_util.c ******/
-void reinitialize(void);
-int streq(const char *a, const char *b);
-void error(const char *msg) __attribute__ ((noreturn));
-void crash(void) __attribute__ ((noreturn));
-void tabify(FILE *f, int tab);
-char *make_argname(const char *pname, const char *vname);
-void add_type(int len, const char *type);
-
-/* This header is the last one included in all rpc_*.c files,
- so we define stuff for cross-rpcgen here to avoid conflicts with
- $build's C library and $host's glibc. */
-
-#ifdef IS_IN_build
-
-/* Disable translated messages when built for $build and used in
- building glibc. */
-#define _(X) (X)
-#define textdomain(X) ((void) 0)
-
-#endif
@@ -71,7 +71,7 @@ getpublickey (const char *name, char *key)
return status == NSS_STATUS_SUCCESS;
}
-libc_hidden_nolink_sunrpc (getpublickey, GLIBC_2_0)
+libc_hidden_nolink (getpublickey, GLIBC_2_0)
int
@@ -114,4 +114,4 @@ getsecretkey (const char *name, char *key, const char *passwd)
return status == NSS_STATUS_SUCCESS;
}
-libc_hidden_nolink_sunrpc (getsecretkey, GLIBC_2_0)
+libc_hidden_nolink (getsecretkey, GLIBC_2_0)
deleted file mode 100644
@@ -1,333 +0,0 @@
-/*
- * rpc_clntout.c, Client-stub outputter for the RPC protocol compiler
- * Copyright (c) 2010, Oracle America, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include <stdio.h>
-#include <string.h>
-#include "rpc/types.h"
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-#define DEFAULT_TIMEOUT 25 /* in seconds */
-static const char RESULT[] = "clnt_res";
-
-static void write_program (definition * def);
-static void printbody (proc_list * proc);
-static const char *ampr (const char *type);
-static void printbody (proc_list * proc);
-
-
-void
-write_stubs (void)
-{
- list *l;
- definition *def;
-
- fprintf (fout,
- "\n/* Default timeout can be changed using clnt_control() */\n");
- fprintf (fout, "static struct timeval TIMEOUT = { %d, 0 };\n",
- DEFAULT_TIMEOUT);
- for (l = defined; l != NULL; l = l->next)
- {
- def = (definition *) l->val;
- if (def->def_kind == DEF_PROGRAM)
- {
- write_program (def);
- }
- }
-}
-
-static void
-write_program (definition * def)
-{
- version_list *vp;
- proc_list *proc;
-
- for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
- {
- for (proc = vp->procs; proc != NULL; proc = proc->next)
- {
- fprintf (fout, "\n");
- if (mtflag == 0)
- {
- ptype (proc->res_prefix, proc->res_type, 1);
- fprintf (fout, "*\n");
- pvname (proc->proc_name, vp->vers_num);
- printarglist (proc, RESULT, "clnt", "CLIENT *");
- }
- else
- {
- fprintf (fout, "enum clnt_stat \n");
- pvname (proc->proc_name, vp->vers_num);
- printarglist (proc, RESULT, "clnt", "CLIENT *");
- }
- fprintf (fout, "{\n");
- printbody (proc);
- fprintf (fout, "}\n");
- }
- }
-}
-
-/* Writes out declarations of procedure's argument list.
- In either ANSI C style, in one of old rpcgen style (pass by reference),
- or new rpcgen style (multiple arguments, pass by value);
- */
-
-/* sample addargname = "clnt"; sample addargtype = "CLIENT * " */
-
-void
-printarglist (proc_list * proc, const char *result,
- const char *addargname, const char *addargtype)
-{
-
- decl_list *l;
-
- if (!newstyle)
- { /* old style: always pass argument by reference */
- if (Cflag)
- { /* C++ style heading */
- fprintf (fout, "(");
- ptype (proc->args.decls->decl.prefix,
- proc->args.decls->decl.type, 1);
-
- if (mtflag)
- {/* Generate result field */
- fprintf (fout, "*argp, ");
- ptype(proc->res_prefix, proc->res_type, 1);
- fprintf (fout, "*%s, %s%s)\n", result, addargtype, addargname);
- }
- else
- fprintf (fout, "*argp, %s%s)\n", addargtype, addargname);
- }
- else
- {
- if (!mtflag)
- fprintf (fout, "(argp, %s)\n", addargname);
- else
- fprintf (fout, "(argp, %s, %s)\n", result, addargname);
- fprintf (fout, "\t");
- ptype (proc->args.decls->decl.prefix,
- proc->args.decls->decl.type, 1);
- fprintf (fout, "*argp;\n");
- if (mtflag)
- {
- fprintf (fout, "\t");
- ptype (proc->res_prefix, proc->res_type, 1);
- fprintf (fout, "*%s;\n", result);
- }
- }
- }
- else if (streq (proc->args.decls->decl.type, "void"))
- {
- /* newstyle, 0 argument */
- if (mtflag)
- {
- fprintf (fout, "(");
- if (Cflag)
- {
- ptype(proc->res_prefix, proc->res_type, 1);
- fprintf (fout, "*%s, %s%s)\n", result, addargtype, addargname);
- }
- else
- fprintf (fout, "(%s)\n", addargname);
- }
- else if (Cflag)
- fprintf (fout, "(%s%s)\n", addargtype, addargname);
- else
- fprintf (fout, "(%s)\n", addargname);
- }
- else
- {
- /* new style, 1 or multiple arguments */
- if (!Cflag)
- {
- fprintf (fout, "(");
- for (l = proc->args.decls; l != NULL; l = l->next)
- fprintf (fout, "%s, ", l->decl.name);
- if (mtflag)
- fprintf (fout, "%s, ", result);
- fprintf (fout, "%s)\n", addargname);
- for (l = proc->args.decls; l != NULL; l = l->next)
- {
- pdeclaration (proc->args.argname, &l->decl, 1, ";\n");
- }
- if (mtflag)
- {
- fprintf (fout, "\t");
- ptype (proc->res_prefix, proc->res_type, 1);
- fprintf (fout, "*%s;\n", result);
- }
- }
- else
- { /* C++ style header */
- fprintf (fout, "(");
- for (l = proc->args.decls; l != NULL; l = l->next)
- {
- pdeclaration (proc->args.argname, &l->decl, 0, ", ");
- }
- if (mtflag)
- {
- ptype (proc->res_prefix, proc->res_type, 1);
- fprintf (fout, "*%s, ", result);
- }
- fprintf (fout, " %s%s)\n", addargtype, addargname);
- }
- }
-
- if (!Cflag)
- fprintf (fout, "\t%s%s;\n", addargtype, addargname);
-}
-
-
-static
-const char *
-ampr (const char *type)
-{
- if (isvectordef (type, REL_ALIAS))
- {
- return "";
- }
- else
- {
- return "&";
- }
-}
-
-static void
-printbody (proc_list * proc)
-{
- decl_list *l;
- bool_t args2 = (proc->arg_num > 1);
-/* int i; */
-
- /* For new style with multiple arguments, need a structure in which
- to stuff the arguments. */
- if (newstyle && args2)
- {
- fprintf (fout, "\t%s", proc->args.argname);
- fprintf (fout, " arg;\n");
- }
- if (!mtflag)
- {
- fprintf (fout, "\tstatic ");
- if (streq (proc->res_type, "void"))
- {
- fprintf (fout, "char ");
- }
- else
- {
- ptype (proc->res_prefix, proc->res_type, 0);
- }
- fprintf (fout, "%s;\n", RESULT);
- fprintf (fout, "\n");
- fprintf (fout, "\tmemset((char *)%s%s, 0, sizeof(%s));\n",
- ampr (proc->res_type), RESULT, RESULT);
- }
- if (newstyle && !args2 && (streq (proc->args.decls->decl.type, "void")))
- {
- /* newstyle, 0 arguments */
- if (mtflag)
- fprintf (fout, "\t return ");
- else
- fprintf (fout, "\t if ");
- fprintf (fout,
- "(clnt_call (clnt, %s, (xdrproc_t) xdr_void, ", proc->proc_name);
-
- fprintf (fout,
- "(caddr_t) NULL,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,",
- stringfix(proc->res_type), (mtflag)?"":ampr(proc->res_type),
- RESULT);
- if (mtflag)
- fprintf (fout, "\n\t\tTIMEOUT));\n\n");
- else
- fprintf (fout, "\n\t\tTIMEOUT) != RPC_SUCCESS) {\n");
- }
- else if (newstyle && args2)
- {
- /* newstyle, multiple arguments: stuff arguments into structure */
- for (l = proc->args.decls; l != NULL; l = l->next)
- {
- fprintf (fout, "\targ.%s = %s;\n",
- l->decl.name, l->decl.name);
- }
- if (mtflag)
- fprintf (fout, "\treturn ");
- else
- fprintf (fout, "\tif ");
-
- fprintf (fout,
- "(clnt_call (clnt, %s, (xdrproc_t) xdr_%s", proc->proc_name,
- proc->args.argname);
- fprintf (fout,
- ", (caddr_t) &arg,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,",
- stringfix(proc->res_type), (mtflag)?"":ampr(proc->res_type),
- RESULT);
- if (mtflag)
- fprintf (fout, "\n\t\tTIMEOUT));\n");
- else
- fprintf (fout, "\n\t\tTIMEOUT) != RPC_SUCCESS) {\n");
- }
- else
- { /* single argument, new or old style */
- if (!mtflag)
- fprintf (fout,
- "\tif (clnt_call (clnt, %s,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,\n\t\tTIMEOUT) != RPC_SUCCESS) {\n",
- proc->proc_name,
- stringfix (proc->args.decls->decl.type),
- (newstyle ? "&" : ""),
- (newstyle ? proc->args.decls->decl.name : "argp"),
- stringfix (proc->res_type), ampr (proc->res_type),
- RESULT);
- else
- fprintf(fout,
- "\treturn (clnt_call(clnt, %s,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,\n\t\t(xdrproc_t) xdr_%s, (caddr_t) %s%s,\n\t\tTIMEOUT));\n",
- proc->proc_name,
- stringfix (proc->args.decls->decl.type),
- (newstyle ? "&" : ""),
- (newstyle ? proc->args.decls->decl.name : "argp"),
- stringfix (proc->res_type), "",
- RESULT);
- }
- if (!mtflag)
- {
- fprintf (fout, "\t\treturn (NULL);\n");
- fprintf (fout, "\t}\n");
- if (streq (proc->res_type, "void"))
- {
- fprintf (fout, "\treturn ((void *)%s%s);\n",
- ampr (proc->res_type), RESULT);
- }
- else
- {
- fprintf (fout, "\treturn (%s%s);\n", ampr (proc->res_type), RESULT);
- }
- }
-}
@@ -195,4 +195,4 @@ xdr_callmsg (XDR *xdrs, struct rpc_msg *cmsg)
return xdr_opaque_auth (xdrs, &(cmsg->rm_call.cb_verf));
return FALSE;
}
-libc_hidden_nolink_sunrpc (xdr_callmsg, GLIBC_2_0)
+libc_hidden_nolink (xdr_callmsg, GLIBC_2_0)
@@ -43,15 +43,15 @@
section but we cannot add const to the type because this isn't how
the variable is declared. So we use the section attribute. */
struct opaque_auth _null_auth __attribute__ ((nocommon));
-libc_hidden_nolink_sunrpc (_null_auth, GLIBC_2_0)
+libc_hidden_nolink (_null_auth, GLIBC_2_0)
/* The variables need the nocommon attribute, so that it is possible
to create aliases and specify symbol versions. */
fd_set svc_fdset __attribute__ ((nocommon));
-libc_hidden_nolink_sunrpc (svc_fdset, GLIBC_2_0)
+libc_hidden_nolink (svc_fdset, GLIBC_2_0)
struct rpc_createerr rpc_createerr __attribute__ ((nocommon));
-libc_hidden_nolink_sunrpc (rpc_createerr, GLIBC_2_0)
+libc_hidden_nolink (rpc_createerr, GLIBC_2_0)
struct pollfd *svc_pollfd __attribute__ ((nocommon));
-libc_hidden_nolink_sunrpc (svc_pollfd, GLIBC_2_2)
+libc_hidden_nolink (svc_pollfd, GLIBC_2_2)
int svc_max_pollfd __attribute__ ((nocommon));
-libc_hidden_nolink_sunrpc (svc_max_pollfd, GLIBC_2_2)
+libc_hidden_nolink (svc_max_pollfd, GLIBC_2_2)
deleted file mode 100644
@@ -1,811 +0,0 @@
-/*
- * From: @(#)rpc_cout.c 1.13 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_cout.c, XDR routine outputter for the RPC protocol compiler
- */
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-static void emit_enum (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 (const definition * def);
-static void emit_inline (int indent, declaration * decl, int flag);
-static void emit_single_in_line (int indent, declaration *decl, int flag,
- relation rel);
-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);
-static void print_ifopen (int indent, const char *name);
-static void print_ifarg (const char *arg);
-static void print_ifsizeof (int indent, const char *prefix, const char *type);
-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, const declaration * dec);
-static void print_header (const definition * def);
-static void print_trailer (void);
-static char *upcase (const char *str);
-
-/*
- * Emit the C-routine for the given definition
- */
-void
-emit (definition * def)
-{
- if (def->def_kind == DEF_CONST)
- {
- return;
- }
- if (def->def_kind == DEF_PROGRAM)
- {
- emit_program (def);
- return;
- }
- 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 */
-
- if (strcmp (def->def.ty.old_type, def->def_name) == 0)
- return;
- };
-
- print_header (def);
- switch (def->def_kind)
- {
- case DEF_UNION:
- emit_union (def);
- break;
- case DEF_ENUM:
- emit_enum (def);
- break;
- case DEF_STRUCT:
- emit_struct (def);
- break;
- case DEF_TYPEDEF:
- emit_typedef (def);
- break;
- default:
- /* can't happen */
- break;
- }
- print_trailer ();
-}
-
-static int
-findtype (const definition * def, const char *type)
-{
- if (def->def_kind == DEF_PROGRAM || def->def_kind == DEF_CONST)
- {
- return 0;
- }
- else
- {
- return (streq (def->def_name, type));
- }
-}
-
-static int
-undefined (const char *type)
-{
- definition *def;
- def = (definition *) FINDVAL (defined, type, findtype);
- return (def == NULL);
-}
-
-
-static void
-print_generic_header (const char *procname, int pointerp)
-{
- f_print (fout, "\n");
- f_print (fout, "bool_t\n");
- if (Cflag)
- {
- f_print (fout, "xdr_%s (", procname);
- f_print (fout, "XDR *xdrs, ");
- f_print (fout, "%s ", procname);
- if (pointerp)
- f_print (fout, "*");
- f_print (fout, "objp)\n{\n");
- }
- else
- {
- f_print (fout, "xdr_%s (xdrs, objp)\n", procname);
- f_print (fout, "\tXDR *xdrs;\n");
- f_print (fout, "\t%s ", procname);
- if (pointerp)
- f_print (fout, "*");
- f_print (fout, "objp;\n{\n");
- }
-}
-
-static void
-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));
-
- /* Now add Inline support */
-
- if (inlineflag == 0)
- return;
- /*May cause lint to complain. but ... */
- f_print (fout, "\tregister int32_t *buf;\n\n");
-}
-
-static void
-print_prog_header (const proc_list * plist)
-{
- print_generic_header (plist->args.argname, 1);
-}
-
-static void
-print_trailer (void)
-{
- f_print (fout, "\treturn TRUE;\n");
- f_print (fout, "}\n");
-}
-
-
-static void
-print_ifopen (int indent, const char *name)
-{
- tabify (fout, indent);
- f_print (fout, " if (!xdr_%s (xdrs", name);
-}
-
-static void
-print_ifarg (const char *arg)
-{
- f_print (fout, ", %s", arg);
-}
-
-static void
-print_ifsizeof (int indent, const char *prefix, const char *type)
-{
- if (indent)
- {
- fprintf (fout, ",\n");
- tabify (fout, indent);
- }
- else
- fprintf (fout, ", ");
-
- if (streq (type, "bool"))
- fprintf (fout, "sizeof (bool_t), (xdrproc_t) xdr_bool");
- else
- {
- fprintf (fout, "sizeof (");
- if (undefined (type) && prefix)
- {
- f_print (fout, "%s ", prefix);
- }
- fprintf (fout, "%s), (xdrproc_t) xdr_%s", type, type);
- }
-}
-
-static void
-print_ifclose (int indent)
-{
- f_print (fout, "))\n");
- tabify (fout, indent);
- f_print (fout, "\t return FALSE;\n");
-}
-
-static void
-print_ifstat (int indent, const char *prefix, const char *type, relation rel,
- const char *amax, const char *objname, const char *name)
-{
- const char *alt = NULL;
-
- switch (rel)
- {
- case REL_POINTER:
- print_ifopen (indent, "pointer");
- print_ifarg ("(char **)");
- f_print (fout, "%s", objname);
- print_ifsizeof (0, prefix, type);
- break;
- case REL_VECTOR:
- if (streq (type, "string"))
- {
- alt = "string";
- }
- else if (streq (type, "opaque"))
- {
- alt = "opaque";
- }
- if (alt)
- {
- print_ifopen (indent, alt);
- print_ifarg (objname);
- }
- else
- {
- print_ifopen (indent, "vector");
- print_ifarg ("(char *)");
- f_print (fout, "%s", objname);
- }
- print_ifarg (amax);
- if (!alt)
- {
- print_ifsizeof (indent + 1, prefix, type);
- }
- break;
- case REL_ARRAY:
- if (streq (type, "string"))
- {
- alt = "string";
- }
- else if (streq (type, "opaque"))
- {
- alt = "bytes";
- }
- if (streq (type, "string"))
- {
- print_ifopen (indent, alt);
- print_ifarg (objname);
- }
- else
- {
- if (alt)
- {
- print_ifopen (indent, alt);
- }
- else
- {
- print_ifopen (indent, "array");
- }
- print_ifarg ("(char **)");
- if (*objname == '&')
- {
- f_print (fout, "%s.%s_val, (u_int *) %s.%s_len",
- objname, name, objname, name);
- }
- else
- {
- f_print (fout, "&%s->%s_val, (u_int *) &%s->%s_len",
- objname, name, objname, name);
- }
- }
- print_ifarg (amax);
- if (!alt)
- {
- print_ifsizeof (indent + 1, prefix, type);
- }
- break;
- case REL_ALIAS:
- print_ifopen (indent, type);
- print_ifarg (objname);
- break;
- }
- print_ifclose (indent);
-}
-
-static void
-emit_enum (definition * def)
-{
- (void) def;
-
- print_ifopen (1, "enum");
- print_ifarg ("(enum_t *) objp");
- print_ifclose (1);
-}
-
-static void
-emit_program (const definition * def)
-{
- decl_list *dl;
- version_list *vlist;
- proc_list *plist;
-
- for (vlist = def->def.pr.versions; vlist != NULL; vlist = vlist->next)
- for (plist = vlist->procs; plist != NULL; plist = plist->next)
- {
- if (!newstyle || plist->arg_num < 2)
- continue; /* old style, or single argument */
- print_prog_header (plist);
- for (dl = plist->args.decls; dl != NULL;
- dl = dl->next)
- print_stat (1, &dl->decl);
- print_trailer ();
- }
-}
-
-static void
-emit_union (const definition * def)
-{
- declaration *dflt;
- case_list *cl;
- declaration *cs;
- char *object;
- const char *vecformat = "objp->%s_u.%s";
- const char *format = "&objp->%s_u.%s";
-
- print_stat (1, &def->def.un.enum_decl);
- f_print (fout, "\tswitch (objp->%s) {\n", def->def.un.enum_decl.name);
- for (cl = def->def.un.cases; cl != NULL; cl = cl->next)
- {
-
- f_print (fout, "\tcase %s:\n", cl->case_name);
- if (cl->contflag == 1) /* a continued case statement */
- continue;
- cs = &cl->case_decl;
- if (!streq (cs->type, "void"))
- {
- object = alloc (strlen (def->def_name) + strlen (format) +
- strlen (cs->name) + 1);
- if (isvectordef (cs->type, cs->rel))
- {
- s_print (object, vecformat, def->def_name,
- cs->name);
- }
- else
- {
- s_print (object, format, def->def_name,
- cs->name);
- }
- print_ifstat (2, cs->prefix, cs->type, cs->rel, cs->array_max,
- object, cs->name);
- free (object);
- }
- f_print (fout, "\t\tbreak;\n");
- }
- dflt = def->def.un.default_decl;
- if (dflt != NULL)
- {
- if (!streq (dflt->type, "void"))
- {
- f_print (fout, "\tdefault:\n");
- object = alloc (strlen (def->def_name) + strlen (format) +
- strlen (dflt->name) + 1);
- if (isvectordef (dflt->type, dflt->rel))
- {
- s_print (object, vecformat, def->def_name,
- dflt->name);
- }
- else
- {
- s_print (object, format, def->def_name,
- dflt->name);
- }
-
- print_ifstat (2, dflt->prefix, dflt->type, dflt->rel,
- dflt->array_max, object, dflt->name);
- free (object);
- f_print (fout, "\t\tbreak;\n");
- }
- else
- {
- f_print (fout, "\tdefault:\n");
- f_print (fout, "\t\tbreak;\n");
- }
- }
- else
- {
- f_print (fout, "\tdefault:\n");
- f_print (fout, "\t\treturn FALSE;\n");
- }
-
- f_print (fout, "\t}\n");
-}
-
-static void
-inline_struct (definition *def, int flag)
-{
- decl_list *dl;
- int i, size;
- decl_list *cur = NULL;
- decl_list *psav;
- bas_type *ptr;
- char *sizestr;
- const char *plus;
- char ptemp[256];
- int indent = 1;
-
- if (flag == PUT)
- f_print (fout, "\n\tif (xdrs->x_op == XDR_ENCODE) {\n");
- else
- f_print (fout,
- "\t\treturn TRUE;\n\t} else if (xdrs->x_op == XDR_DECODE) {\n");
-
- i = 0;
- size = 0;
- sizestr = NULL;
- for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
- { /* xxx */
- /* now walk down the list and check for basic types */
- if ((dl->decl.prefix == NULL) &&
- ((ptr = find_type (dl->decl.type)) != NULL) &&
- ((dl->decl.rel == REL_ALIAS) || (dl->decl.rel == REL_VECTOR)))
- {
- if (i == 0)
- cur = dl;
- ++i;
-
- if (dl->decl.rel == REL_ALIAS)
- size += ptr->length;
- else
- {
- /* this is required to handle arrays */
- if (sizestr == NULL)
- plus = "";
- else
- plus = "+ ";
-
- if (ptr->length != 1)
- s_print (ptemp, " %s %s * %d", plus, dl->decl.array_max,
- ptr->length);
- else
- s_print (ptemp, " %s%s ", plus, dl->decl.array_max);
-
- /*now concatenate to sizestr !!!! */
- if (sizestr == NULL)
- sizestr = strdup (ptemp);
- else
- {
- sizestr = realloc (sizestr, strlen (sizestr) +
- strlen (ptemp) + 1);
- if (sizestr == NULL)
- {
- f_print (stderr, "Fatal error : no memory \n");
- crash ();
- };
- sizestr = strcat (sizestr, ptemp);
- /*build up length of array */
- }
- }
- }
- else
- {
- if (i > 0)
- {
- if (sizestr == NULL && size < inlineflag)
- {
- /* don't expand into inline code if size < inlineflag */
- while (cur != dl)
- {
- print_stat (indent + 1, &cur->decl);
- cur = cur->next;
- }
- }
- else
- {
- /* were already looking at a xdr_inlineable structure */
- tabify (fout, indent + 1);
- if (sizestr == NULL)
- f_print (fout, "buf = XDR_INLINE (xdrs, %d * BYTES_PER_XDR_UNIT);", size);
- else if (size == 0)
- f_print (fout,
- "buf = XDR_INLINE (xdrs, (%s) * BYTES_PER_XDR_UNIT);",
- sizestr);
- else
- f_print (fout,
- "buf = XDR_INLINE (xdrs, (%d + (%s)) * BYTES_PER_XDR_UNIT);",
- size, sizestr);
- f_print (fout, "\n");
- tabify (fout, indent + 1);
- fprintf (fout, "if (buf == NULL) {\n");
- psav = cur;
- while (cur != dl)
- {
- print_stat (indent + 2, &cur->decl);
- cur = cur->next;
- }
-
- f_print (fout, "\n\t\t} else {\n");
- cur = psav;
- while (cur != dl)
- {
- emit_inline (indent + 1, &cur->decl, flag);
- cur = cur->next;
- }
- tabify (fout, indent + 1);
- f_print (fout, "}\n");
- }
- }
- size = 0;
- i = 0;
- free (sizestr);
- sizestr = NULL;
- print_stat (indent + 1, &dl->decl);
- }
- }
- if (i > 0)
- {
- if (sizestr == NULL && size < inlineflag)
- {
- /* don't expand into inline code if size < inlineflag */
- while (cur != dl)
- {
- print_stat (indent + 1, &cur->decl);
- cur = cur->next;
- }
- }
- else
- {
- /* were already looking at a xdr_inlineable structure */
- if (sizestr == NULL)
- f_print (fout,
- "\t\tbuf = XDR_INLINE (xdrs, %d * BYTES_PER_XDR_UNIT);",
- size);
- else if (size == 0)
- f_print (fout,
- "\t\tbuf = XDR_INLINE (xdrs, (%s) * BYTES_PER_XDR_UNIT);",
- sizestr);
- else
- f_print (fout,
- "\t\tbuf = XDR_INLINE (xdrs, (%d + %s)* BYTES_PER_XDR_UNIT);",
- size, sizestr);
- f_print (fout, "\n\t\tif (buf == NULL) {\n");
- psav = cur;
- while (cur != NULL)
- {
- print_stat (indent + 2, &cur->decl);
- cur = cur->next;
- }
- f_print (fout, "\t\t} else {\n");
-
- cur = psav;
- while (cur != dl)
- {
- emit_inline (indent + 2, &cur->decl, flag);
- cur = cur->next;
- }
- f_print (fout, "\t\t}\n");
- }
- }
-}
-
-/* this may be const. i haven't traced this one through yet. */
-
-static void
-emit_struct (definition * def)
-{
- decl_list *dl;
- int j, size, flag;
- bas_type *ptr;
- int can_inline;
-
-
- if (inlineflag == 0)
- {
- /* No xdr_inlining at all */
- for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
- print_stat (1, &dl->decl);
- return;
- }
-
- for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
- if (dl->decl.rel == REL_VECTOR)
- {
- f_print (fout, "\tint i;\n");
- break;
- }
-
- size = 0;
- can_inline = 0;
- /*
- * Make a first pass and see if inling is possible.
- */
- for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
- if ((dl->decl.prefix == NULL) &&
- ((ptr = find_type (dl->decl.type)) != NULL) &&
- ((dl->decl.rel == REL_ALIAS) || (dl->decl.rel == REL_VECTOR)))
- {
- if (dl->decl.rel == REL_ALIAS)
- size += ptr->length;
- else
- {
- can_inline = 1;
- break; /* can be inlined */
- }
- }
- else
- {
- if (size >= inlineflag)
- {
- can_inline = 1;
- break; /* can be inlined */
- }
- size = 0;
- }
- if (size > inlineflag)
- can_inline = 1;
-
- if (can_inline == 0)
- { /* can not inline, drop back to old mode */
- for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
- print_stat (1, &dl->decl);
- return;
- };
-
- flag = PUT;
- for (j = 0; j < 2; j++)
- {
- inline_struct (def, flag);
- if (flag == PUT)
- flag = GET;
- }
-
- f_print (fout, "\t return TRUE;\n\t}\n\n");
-
- /* now take care of XDR_FREE case */
-
- for (dl = def->def.st.decls; dl != NULL; dl = dl->next)
- print_stat (1, &dl->decl);
-}
-
-static void
-emit_typedef (const definition * def)
-{
- const char *prefix = def->def.ty.old_prefix;
- const char *type = def->def.ty.old_type;
- const char *amax = def->def.ty.array_max;
- relation rel = def->def.ty.rel;
-
- print_ifstat (1, prefix, type, rel, amax, "objp", def->def_name);
-}
-
-static void
-print_stat (int indent, const declaration * dec)
-{
- const char *prefix = dec->prefix;
- const char *type = dec->type;
- const char *amax = dec->array_max;
- relation rel = dec->rel;
- char name[256];
-
- if (isvectordef (type, rel))
- {
- s_print (name, "objp->%s", dec->name);
- }
- else
- {
- s_print (name, "&objp->%s", dec->name);
- }
- print_ifstat (indent, prefix, type, rel, amax, name, dec->name);
-}
-
-
-static void
-emit_inline (int indent, declaration * decl, int flag)
-{
- switch (decl->rel)
- {
- case REL_ALIAS:
- emit_single_in_line (indent, decl, flag, REL_ALIAS);
- break;
- case REL_VECTOR:
- tabify (fout, indent);
- f_print (fout, "{\n");
- tabify (fout, indent + 1);
- f_print (fout, "register %s *genp;\n\n", decl->type);
- tabify (fout, indent + 1);
- f_print (fout,
- "for (i = 0, genp = objp->%s;\n", decl->name);
- tabify (fout, indent + 2);
- f_print (fout, "i < %s; ++i) {\n", decl->array_max);
- emit_single_in_line (indent + 2, decl, flag, REL_VECTOR);
- tabify (fout, indent + 1);
- f_print (fout, "}\n");
- tabify (fout, indent);
- f_print (fout, "}\n");
- break;
- default:
- break;
- /* ?... do nothing I guess */
- }
-}
-
-static void
-emit_single_in_line (int indent, declaration *decl, int flag, relation rel)
-{
- char *upp_case;
- int freed = 0;
-
- tabify (fout, indent);
- if (flag == PUT)
- f_print (fout, "IXDR_PUT_");
- else
- {
- if (rel == REL_ALIAS)
- f_print (fout, "objp->%s = IXDR_GET_", decl->name);
- else
- f_print (fout, "*genp++ = IXDR_GET_");
- }
-
- upp_case = upcase (decl->type);
-
- /* hack - XX */
- if (!strcmp (upp_case, "INT"))
- {
- free (upp_case);
- freed = 1;
- /* Casting is safe since the `freed' flag is set. */
- upp_case = (char *) "LONG";
- }
-
- if (!strcmp (upp_case, "U_INT"))
- {
- free (upp_case);
- freed = 1;
- /* Casting is safe since the `freed' flag is set. */
- upp_case = (char *) "U_LONG";
- }
-
- if (flag == PUT)
- {
- if (rel == REL_ALIAS)
- f_print (fout, "%s(buf, objp->%s);\n", upp_case, decl->name);
- else
- f_print (fout, "%s(buf, *genp++);\n", upp_case);
- }
- else
- {
- f_print (fout, "%s(buf);\n", upp_case);
- }
-
- if (!freed)
- free (upp_case);
-}
-
-
-static char *
-upcase (const char *str)
-{
- char *ptr, *hptr;
- ptr = malloc (strlen (str) + 1);
- if (ptr == NULL)
- {
- f_print (stderr, "malloc failed\n");
- exit (1);
- }
- hptr = ptr;
- while (*str != '\0')
- *ptr++ = toupper (*str++);
-
- *ptr = '\0';
- return hptr;
-}
@@ -47,4 +47,4 @@ _rpc_dtablesize (void)
return size;
}
-libc_hidden_nolink_sunrpc (_rpc_dtablesize, GLIBC_2_0)
+libc_hidden_nolink (_rpc_dtablesize, GLIBC_2_0)
deleted file mode 100644
@@ -1,607 +0,0 @@
-/*
- * From: @(#)rpc_hout.c 1.12 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_hout.c, Header file outputter for the RPC protocol compiler
- */
-#include <stdio.h>
-#include <ctype.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-static void pconstdef (definition * def);
-static void pargdef (definition * def);
-static void pstructdef (definition * def);
-static void puniondef (definition * def);
-static void pdefine (const char *name, const char *num);
-static int define_printed (proc_list * stop, version_list * start);
-static void pprogramdef (definition * def);
-static void parglist (proc_list * proc, const char *addargtype);
-static void penumdef (definition * def);
-static void ptypedef (definition * def);
-static int undefined2 (const char *type, const char *stop);
-
-/* store away enough information to allow the XDR functions to be spat
- out at the end of the file */
-
-static void
-storexdrfuncdecl (const char *name, int pointerp)
-{
- xdrfunc * xdrptr;
-
- xdrptr = (xdrfunc *) malloc(sizeof (struct xdrfunc));
-
- xdrptr->name = (char *)name;
- xdrptr->pointerp = pointerp;
- xdrptr->next = NULL;
-
- if (xdrfunc_tail == NULL)
- {
- xdrfunc_head = xdrptr;
- xdrfunc_tail = xdrptr;
- }
- else
- {
- xdrfunc_tail->next = xdrptr;
- xdrfunc_tail = xdrptr;
- }
-}
-
-/*
- * Print the C-version of an xdr definition
- */
-void
-print_datadef (definition *def)
-{
-
- if (def->def_kind == DEF_PROGRAM) /* handle data only */
- return;
-
- if (def->def_kind != DEF_CONST)
- {
- f_print (fout, "\n");
- }
- switch (def->def_kind)
- {
- case DEF_STRUCT:
- pstructdef (def);
- break;
- case DEF_UNION:
- puniondef (def);
- break;
- case DEF_ENUM:
- penumdef (def);
- break;
- case DEF_TYPEDEF:
- ptypedef (def);
- break;
- case DEF_PROGRAM:
- pprogramdef (def);
- break;
- case DEF_CONST:
- pconstdef (def);
- break;
- }
- if (def->def_kind != DEF_PROGRAM && def->def_kind != DEF_CONST)
- {
- storexdrfuncdecl(def->def_name,
- def->def_kind != DEF_TYPEDEF ||
- !isvectordef(def->def.ty.old_type,
- def->def.ty.rel));
- }
-}
-
-
-void
-print_funcdef (definition *def)
-{
- switch (def->def_kind)
- {
- case DEF_PROGRAM:
- f_print (fout, "\n");
- pprogramdef (def);
- break;
- default:
- break;
- /* ?... shouldn't happen I guess */
- }
-}
-
-void
-print_xdr_func_def (char *name, int pointerp, int i)
-{
- if (i == 2)
- {
- f_print (fout, "extern bool_t xdr_%s ();\n", name);
- return;
- }
- else
- f_print(fout, "extern bool_t xdr_%s (XDR *, %s%s);\n", name,
- name, pointerp ? "*" : "");
-}
-
-static void
-pconstdef (definition *def)
-{
- pdefine (def->def_name, def->def.co);
-}
-
-/* print out the definitions for the arguments of functions in the
- header file
- */
-static void
-pargdef (definition * def)
-{
- decl_list *l;
- version_list *vers;
- const char *name;
- proc_list *plist;
-
- for (vers = def->def.pr.versions; vers != NULL; vers = vers->next)
- {
- for (plist = vers->procs; plist != NULL;
- plist = plist->next)
- {
-
- if (!newstyle || plist->arg_num < 2)
- {
- continue; /* old style or single args */
- }
- name = plist->args.argname;
- f_print (fout, "struct %s {\n", name);
- for (l = plist->args.decls;
- l != NULL; l = l->next)
- {
- pdeclaration (name, &l->decl, 1, ";\n");
- }
- f_print (fout, "};\n");
- f_print (fout, "typedef struct %s %s;\n", name, name);
- storexdrfuncdecl (name, 1);
- f_print (fout, "\n");
- }
- }
-
-}
-
-static void
-pstructdef (definition *def)
-{
- decl_list *l;
- const char *name = def->def_name;
-
- f_print (fout, "struct %s {\n", name);
- for (l = def->def.st.decls; l != NULL; l = l->next)
- {
- pdeclaration (name, &l->decl, 1, ";\n");
- }
- f_print (fout, "};\n");
- f_print (fout, "typedef struct %s %s;\n", name, name);
-}
-
-static void
-puniondef (definition *def)
-{
- case_list *l;
- const char *name = def->def_name;
- declaration *decl;
-
- f_print (fout, "struct %s {\n", name);
- decl = &def->def.un.enum_decl;
- if (streq (decl->type, "bool"))
- {
- f_print (fout, "\tbool_t %s;\n", decl->name);
- }
- else
- {
- f_print (fout, "\t%s %s;\n", decl->type, decl->name);
- }
- f_print (fout, "\tunion {\n");
- for (l = def->def.un.cases; l != NULL; l = l->next)
- {
- if (l->contflag == 0)
- pdeclaration (name, &l->case_decl, 2, ";\n");
- }
- decl = def->def.un.default_decl;
- if (decl && !streq (decl->type, "void"))
- {
- pdeclaration (name, decl, 2, ";\n");
- }
- f_print (fout, "\t} %s_u;\n", name);
- f_print (fout, "};\n");
- f_print (fout, "typedef struct %s %s;\n", name, name);
-}
-
-static void
-pdefine (const char *name, const char *num)
-{
- f_print (fout, "#define %s %s\n", name, num);
-}
-
-static int
-define_printed (proc_list *stop, version_list *start)
-{
- version_list *vers;
- proc_list *proc;
-
- for (vers = start; vers != NULL; vers = vers->next)
- {
- for (proc = vers->procs; proc != NULL; proc = proc->next)
- {
- if (proc == stop)
- {
- return 0;
- }
- else if (streq (proc->proc_name, stop->proc_name))
- {
- return 1;
- }
- }
- }
- abort ();
- /* NOTREACHED */
-}
-
-static void
-pfreeprocdef (const char *name, const char *vers, int mode)
-{
- f_print (fout, "extern int ");
- pvname (name, vers);
- if (mode == 1)
- f_print (fout,"_freeresult (SVCXPRT *, xdrproc_t, caddr_t);\n");
- else
- f_print (fout,"_freeresult ();\n");
-}
-
-static void
-pprogramdef (definition *def)
-{
- version_list *vers;
- proc_list *proc;
- int i;
- const char *ext;
-
- pargdef (def);
-
- pdefine (def->def_name, def->def.pr.prog_num);
- for (vers = def->def.pr.versions; vers != NULL; vers = vers->next)
- {
- if (tblflag)
- {
- f_print (fout, "extern struct rpcgen_table %s_%s_table[];\n",
- locase (def->def_name), vers->vers_num);
- f_print (fout, "extern %s_%s_nproc;\n",
- locase (def->def_name), vers->vers_num);
- }
- pdefine (vers->vers_name, vers->vers_num);
-
- /*
- * Print out 2 definitions, one for ANSI-C, another for
- * old K & R C
- */
-
- if(!Cflag)
- {
- ext = "extern ";
- for (proc = vers->procs; proc != NULL;
- proc = proc->next)
- {
- if (!define_printed(proc, def->def.pr.versions))
- {
- pdefine (proc->proc_name, proc->proc_num);
- }
- f_print (fout, "%s", ext);
- pprocdef (proc, vers, NULL, 0, 2);
-
- if (mtflag)
- {
- f_print(fout, "%s", ext);
- pprocdef (proc, vers, NULL, 1, 2);
- }
- }
- pfreeprocdef (def->def_name, vers->vers_num, 2);
- }
- else
- {
- for (i = 1; i < 3; i++)
- {
- if (i == 1)
- {
- f_print (fout, "\n#if defined(__STDC__) || defined(__cplusplus)\n");
- ext = "extern ";
- }
- else
- {
- f_print (fout, "\n#else /* K&R C */\n");
- ext = "extern ";
- }
-
- for (proc = vers->procs; proc != NULL; proc = proc->next)
- {
- if (!define_printed(proc, def->def.pr.versions))
- {
- pdefine(proc->proc_name, proc->proc_num);
- }
- f_print (fout, "%s", ext);
- pprocdef (proc, vers, "CLIENT *", 0, i);
- f_print (fout, "%s", ext);
- pprocdef (proc, vers, "struct svc_req *", 1, i);
- }
- pfreeprocdef (def->def_name, vers->vers_num, i);
- }
- f_print (fout, "#endif /* K&R C */\n");
- }
- }
-}
-
-void
-pprocdef (proc_list * proc, version_list * vp,
- const char *addargtype, int server_p, int mode)
-{
- if (mtflag)
- {/* Print MT style stubs */
- if (server_p)
- f_print (fout, "bool_t ");
- else
- f_print (fout, "enum clnt_stat ");
- }
- else
- {
- ptype (proc->res_prefix, proc->res_type, 1);
- f_print (fout, "* ");
- }
- if (server_p)
- pvname_svc (proc->proc_name, vp->vers_num);
- else
- pvname (proc->proc_name, vp->vers_num);
-
- /*
- * mode 1 = ANSI-C, mode 2 = K&R C
- */
- if (mode == 1)
- parglist (proc, addargtype);
- else
- f_print (fout, "();\n");
-}
-
-/* print out argument list of procedure */
-static void
-parglist (proc_list *proc, const char *addargtype)
-{
- decl_list *dl;
-
- f_print(fout,"(");
- if (proc->arg_num < 2 && newstyle &&
- streq (proc->args.decls->decl.type, "void"))
- {
- /* 0 argument in new style: do nothing */
- }
- else
- {
- for (dl = proc->args.decls; dl != NULL; dl = dl->next)
- {
- ptype (dl->decl.prefix, dl->decl.type, 1);
- if (!newstyle)
- f_print (fout, "*"); /* old style passes by reference */
-
- f_print (fout, ", ");
- }
- }
- if (mtflag)
- {
- ptype(proc->res_prefix, proc->res_type, 1);
- f_print(fout, "*, ");
- }
-
- f_print (fout, "%s);\n", addargtype);
-}
-
-static void
-penumdef (definition *def)
-{
- const char *name = def->def_name;
- enumval_list *l;
- const char *last = NULL;
- int count = 0;
-
- f_print (fout, "enum %s {\n", name);
- for (l = def->def.en.vals; l != NULL; l = l->next)
- {
- f_print (fout, "\t%s", l->name);
- if (l->assignment)
- {
- f_print (fout, " = %s", l->assignment);
- last = l->assignment;
- count = 1;
- }
- else
- {
- if (last == NULL)
- {
- f_print (fout, " = %d", count++);
- }
- else
- {
- f_print (fout, " = %s + %d", last, count++);
- }
- }
- f_print (fout, ",\n");
- }
- f_print (fout, "};\n");
- f_print (fout, "typedef enum %s %s;\n", name, name);
-}
-
-static void
-ptypedef (definition *def)
-{
- const char *name = def->def_name;
- const char *old = def->def.ty.old_type;
- char prefix[8]; /* enough to contain "struct ", including NUL */
- relation rel = def->def.ty.rel;
-
- if (!streq (name, old))
- {
- if (streq (old, "string"))
- {
- old = "char";
- rel = REL_POINTER;
- }
- else if (streq (old, "opaque"))
- {
- old = "char";
- }
- else if (streq (old, "bool"))
- {
- old = "bool_t";
- }
- if (undefined2 (old, name) && def->def.ty.old_prefix)
- {
- s_print (prefix, "%s ", def->def.ty.old_prefix);
- }
- else
- {
- prefix[0] = 0;
- }
- f_print (fout, "typedef ");
- switch (rel)
- {
- case REL_ARRAY:
- f_print (fout, "struct {\n");
- f_print (fout, "\tu_int %s_len;\n", name);
- f_print (fout, "\t%s%s *%s_val;\n", prefix, old, name);
- f_print (fout, "} %s", name);
- break;
- case REL_POINTER:
- f_print (fout, "%s%s *%s", prefix, old, name);
- break;
- case REL_VECTOR:
- f_print (fout, "%s%s %s[%s]", prefix, old, name,
- def->def.ty.array_max);
- break;
- case REL_ALIAS:
- f_print (fout, "%s%s %s", prefix, old, name);
- break;
- }
- f_print (fout, ";\n");
- }
-}
-
-void
-pdeclaration (const char *name, declaration * dec, int tab,
- const char *separator)
-{
- char buf[8]; /* enough to hold "struct ", include NUL */
- const char *prefix;
- const char *type;
-
- if (streq (dec->type, "void"))
- {
- return;
- }
- tabify (fout, tab);
- if (streq (dec->type, name) && !dec->prefix)
- {
- f_print (fout, "struct ");
- }
- if (streq (dec->type, "string"))
- {
- f_print (fout, "char *%s", dec->name);
- }
- else
- {
- prefix = "";
- if (streq (dec->type, "bool"))
- {
- type = "bool_t";
- }
- else if (streq (dec->type, "opaque"))
- {
- type = "char";
- }
- else
- {
- if (dec->prefix)
- {
- s_print (buf, "%s ", dec->prefix);
- prefix = buf;
- }
- type = dec->type;
- }
- switch (dec->rel)
- {
- case REL_ALIAS:
- f_print (fout, "%s%s %s", prefix, type, dec->name);
- break;
- case REL_VECTOR:
- f_print (fout, "%s%s %s[%s]", prefix, type, dec->name,
- dec->array_max);
- break;
- case REL_POINTER:
- f_print (fout, "%s%s *%s", prefix, type, dec->name);
- break;
- case REL_ARRAY:
- f_print (fout, "struct {\n");
- tabify (fout, tab);
- f_print (fout, "\tu_int %s_len;\n", dec->name);
- tabify (fout, tab);
- f_print (fout, "\t%s%s *%s_val;\n", prefix, type, dec->name);
- tabify (fout, tab);
- f_print (fout, "} %s", dec->name);
- break;
- }
- }
- f_print (fout, "%s", separator);
-}
-
-static int
-undefined2 (const char *type, const char *stop)
-{
- list *l;
- definition *def;
-
- for (l = defined; l != NULL; l = l->next)
- {
- def = (definition *) l->val;
- if (def->def_kind != DEF_PROGRAM)
- {
- if (streq (def->def_name, stop))
- {
- return 1;
- }
- else if (streq (def->def_name, type))
- {
- return 0;
- }
- }
- }
- return 1;
-}
deleted file mode 100644
@@ -1,1451 +0,0 @@
-/*
- * From @(#)rpc_main.c 1.30 89/03/30
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_main.c, Top level of the RPC protocol compiler.
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <libintl.h>
-#include <locale.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "rpc_scan.h"
-#include "proto.h"
-
-#include "../version.h"
-#define PACKAGE _libc_intl_domainname
-
-#define EXTEND 1 /* alias for TRUE */
-#define DONT_EXTEND 0 /* alias for FALSE */
-
-struct commandline
- {
- int cflag; /* xdr C routines */
- int hflag; /* header file */
- int lflag; /* client side stubs */
- int mflag; /* server side stubs */
- int nflag; /* netid flag */
- int sflag; /* server stubs for the given transport */
- int tflag; /* dispatch Table file */
- int Ssflag; /* produce server sample code */
- int Scflag; /* produce client sample code */
- int makefileflag; /* Generate a template Makefile */
- const char *infile; /* input module name */
- const char *outfile; /* output module name */
- };
-
-
-static const char *cmdname;
-
-static const char *svcclosetime = "120";
-static int cppDefined; /* explicit path for C preprocessor */
-static const char *CPP = "/lib/cpp";
-static const char CPPFLAGS[] = "-C";
-static char *pathbuf;
-static int cpp_pid;
-static const char *allv[] =
-{
- "rpcgen", "-s", "udp", "-s", "tcp"
-};
-static int allc = sizeof (allv) / sizeof (allv[0]);
-static const char *allnv[] =
-{
- "rpcgen", "-s", "netpath",
-};
-static int allnc = sizeof (allnv) / sizeof (allnv[0]);
-
-/*
- * machinations for handling expanding argument list
- */
-static void addarg (const char *); /* add another argument to the list */
-static void putarg (int, const char *); /* put argument at specified location */
-static void clear_args (void); /* clear argument list */
-static void checkfiles (const char *, const char *);
- /* check if out file already exists */
-
-static void clear_args (void);
-static char *extendfile (const char *file, const char *ext);
-static void open_output (const char *infile, const char *outfile);
-static void add_warning (void);
-static void clear_args (void);
-static void find_cpp (void);
-static void open_input (const char *infile, const char *define);
-static int check_nettype (const char *name, const char *list_to_check[]);
-static void c_output (const char *infile, const char *define,
- int extend, const char *outfile);
-static void h_output (const char *infile, const char *define,
- int extend, const char *outfile);
-static void s_output (int argc, const char *argv[], const char *infile,
- const char *define, int extend,
- const char *outfile, int nomain, int netflag);
-static void l_output (const char *infile, const char *define,
- int extend, const char *outfile);
-static void t_output (const char *infile, const char *define,
- int extend, const char *outfile);
-static void svc_output (const char *infile, const char *define,
- int extend, const char *outfile);
-static void clnt_output (const char *infile, const char *define,
- int extend, const char *outfile);
-static void mkfile_output (struct commandline *cmd);
-static int do_registers (int argc, const char *argv[]);
-static void addarg (const char *cp);
-static void putarg (int whereto, const char *cp);
-static void checkfiles (const char *infile, const char *outfile);
-static int parseargs (int argc, const char *argv[], struct commandline *cmd);
-static void usage (FILE *stream, int status) __attribute__ ((noreturn));
-static void options_usage (FILE *stream, int status) __attribute__ ((noreturn));
-static void print_version (void);
-static void c_initialize (void);
-static char *generate_guard (const char *pathname);
-
-
-#define ARGLISTLEN 20
-#define FIXEDARGS 2
-
-static const char *arglist[ARGLISTLEN];
-static int argcount = FIXEDARGS;
-
-
-int nonfatalerrors; /* errors */
-int inetdflag /* = 1 */ ; /* Support for inetd *//* is now the default */
-int pmflag; /* Support for port monitors */
-int logflag; /* Use syslog instead of fprintf for errors */
-int tblflag; /* Support for dispatch table file */
-int mtflag; /* Support for MT */
-
-#define INLINE 3
-/*length at which to start doing an inline */
-
-int inlineflag = INLINE; /* length at which to start doing an inline. 3 = default
- if 0, no xdr_inline code */
-
-int indefinitewait; /* If started by port monitors, hang till it wants */
-int exitnow; /* If started by port monitors, exit after the call */
-int timerflag; /* TRUE if !indefinite && !exitnow */
-int newstyle; /* newstyle of passing arguments (by value) */
-int Cflag = 1; /* ANSI C syntax */
-int CCflag; /* C++ files */
-static int allfiles; /* generate all files */
-int tirpcflag; /* generating code for tirpc, by default */
-xdrfunc *xdrfunc_head; /* xdr function list */
-xdrfunc *xdrfunc_tail; /* xdr function list */
-
-int
-main (int argc, const char *argv[])
-{
- struct commandline cmd;
-
- setlocale (LC_ALL, "");
- textdomain (_libc_intl_domainname);
-
- (void) memset ((char *) &cmd, 0, sizeof (struct commandline));
- clear_args ();
- if (!parseargs (argc, argv, &cmd))
- usage (stderr, 1);
-
- if (cmd.cflag || cmd.hflag || cmd.lflag || cmd.tflag || cmd.sflag ||
- cmd.mflag || cmd.nflag || cmd.Ssflag || cmd.Scflag)
- {
- checkfiles (cmd.infile, cmd.outfile);
- }
- else
- checkfiles (cmd.infile, NULL);
-
- if (cmd.cflag)
- c_output (cmd.infile, "-DRPC_XDR", DONT_EXTEND, cmd.outfile);
- else if (cmd.hflag)
- h_output (cmd.infile, "-DRPC_HDR", DONT_EXTEND, cmd.outfile);
- else if (cmd.lflag)
- l_output (cmd.infile, "-DRPC_CLNT", DONT_EXTEND, cmd.outfile);
- else if (cmd.sflag || cmd.mflag || (cmd.nflag))
- s_output (argc, argv, cmd.infile, "-DRPC_SVC", DONT_EXTEND,
- cmd.outfile, cmd.mflag, cmd.nflag);
- else if (cmd.tflag)
- t_output (cmd.infile, "-DRPC_TBL", DONT_EXTEND, cmd.outfile);
- else if (cmd.Ssflag)
- svc_output (cmd.infile, "-DRPC_SERVER", DONT_EXTEND, cmd.outfile);
- else if (cmd.Scflag)
- clnt_output (cmd.infile, "-DRPC_CLIENT", DONT_EXTEND, cmd.outfile);
- else if (cmd.makefileflag)
- mkfile_output (&cmd);
- else
- {
- /* the rescans are required, since cpp may effect input */
- c_output (cmd.infile, "-DRPC_XDR", EXTEND, "_xdr.c");
- reinitialize ();
- h_output (cmd.infile, "-DRPC_HDR", EXTEND, ".h");
- reinitialize ();
- l_output (cmd.infile, "-DRPC_CLNT", EXTEND, "_clnt.c");
- reinitialize ();
- if (inetdflag || !tirpcflag)
- s_output (allc, allv, cmd.infile, "-DRPC_SVC", EXTEND,
- "_svc.c", cmd.mflag, cmd.nflag);
- else
- s_output (allnc, allnv, cmd.infile, "-DRPC_SVC",
- EXTEND, "_svc.c", cmd.mflag, cmd.nflag);
- if (tblflag)
- {
- reinitialize ();
- t_output (cmd.infile, "-DRPC_TBL", EXTEND, "_tbl.i");
- }
- if (allfiles)
- {
- reinitialize ();
- svc_output (cmd.infile, "-DRPC_SERVER", EXTEND, "_server.c");
- reinitialize ();
- clnt_output (cmd.infile, "-DRPC_CLIENT", EXTEND, "_client.c");
- }
- if (allfiles || (cmd.makefileflag == 1))
- {
- reinitialize ();
- mkfile_output (&cmd);
- }
- }
-
- return nonfatalerrors;
-}
-
-/*
- * add extension to filename
- */
-static char *
-extendfile (const char *file, const char *ext)
-{
- char *res;
- const char *p;
-
- res = alloc (strlen (file) + strlen (ext) + 1);
- if (res == NULL)
- abort ();
- p = strrchr (file, '.');
- if (p == NULL)
- p = file + strlen (file);
- strcpy (res, file);
- strcpy (res + (p - file), ext);
- return res;
-}
-
-/*
- * Open output file with given extension
- */
-static void
-open_output (const char *infile, const char *outfile)
-{
- if (outfile == NULL)
- {
- fout = stdout;
- return;
- }
-
- if (infile != NULL && streq (outfile, infile))
- {
- fprintf (stderr, _ ("%s: output would overwrite %s\n"), cmdname,
- infile);
- crash ();
- }
- fout = fopen (outfile, "w");
- if (fout == NULL)
- {
- fprintf (stderr, _ ("%s: unable to open %s: %m\n"), cmdname, outfile);
- crash ();
- }
- record_open (outfile);
-}
-
-/* Close the output file and check for write errors. */
-static void
-close_output (const char *outfile)
-{
- if (fclose (fout) == EOF)
- {
- fprintf (stderr, _("%s: while writing output %s: %m"), cmdname,
- outfile ?: "<stdout>");
- crash ();
- }
-}
-
-static void
-add_warning (void)
-{
- fprintf (fout, "/*\n");
- fprintf (fout, " * Please do not edit this file.\n");
- fprintf (fout, " * It was generated using rpcgen.\n");
- fprintf (fout, " */\n\n");
-}
-
-/* clear list of arguments */
-static void
-clear_args (void)
-{
- int i;
- for (i = FIXEDARGS; i < ARGLISTLEN; ++i)
- arglist[i] = NULL;
- argcount = FIXEDARGS;
-}
-
-/* make sure that a CPP exists */
-static void
-find_cpp (void)
-{
- struct stat64 buf;
-
- if (stat64 (CPP, &buf) == 0)
- return;
-
- if (cppDefined) /* user specified cpp but it does not exist */
- {
- fprintf (stderr, _ ("cannot find C preprocessor: %s\n"), CPP);
- crash ();
- }
-
- /* fall back to system CPP */
- CPP = "cpp";
-}
-
-/*
- * Open input file with given define for C-preprocessor
- */
-static void
-open_input (const char *infile, const char *define)
-{
- int pd[2];
-
- infilename = (infile == NULL) ? "<stdin>" : infile;
- if (pipe (pd) != 0)
- {
- perror ("pipe");
- exit (1);
- }
- cpp_pid = fork ();
- switch (cpp_pid)
- {
- case 0:
- find_cpp ();
- putarg (0, CPP);
- putarg (1, CPPFLAGS);
- addarg (define);
- if (infile)
- addarg (infile);
- addarg ((char *) NULL);
- close (1);
- dup2 (pd[1], 1);
- close (pd[0]);
- execvp (arglist[0], (char **) arglist);
- if (errno == ENOENT)
- {
- fprintf (stderr, _ ("cannot find C preprocessor: %s\n"), CPP);
- exit (1);
- }
- perror ("execvp");
- exit (1);
- case -1:
- perror ("fork");
- exit (1);
- }
- close (pd[1]);
- fin = fdopen (pd[0], "r");
- if (fin == NULL)
- {
- fprintf (stderr, "%s: ", cmdname);
- perror (infilename);
- crash ();
- }
-}
-
-/* Close the connection to the C-preprocessor and check for successfull
- termination. */
-static void
-close_input (void)
-{
- int status;
-
- fclose (fin);
- /* Check the termination status. */
- if (waitpid (cpp_pid, &status, 0) < 0)
- {
- perror ("waitpid");
- crash ();
- }
- if (WIFSIGNALED (status) || WEXITSTATUS (status) != 0)
- {
- if (WIFSIGNALED (status))
- fprintf (stderr, _("%s: C preprocessor failed with signal %d\n"),
- cmdname, WTERMSIG (status));
- else
- fprintf (stderr, _("%s: C preprocessor failed with exit code %d\n"),
- cmdname, WEXITSTATUS (status));
- crash ();
- }
-}
-
-/* valid tirpc nettypes */
-static const char *valid_ti_nettypes[] =
-{
- "netpath",
- "visible",
- "circuit_v",
- "datagram_v",
- "circuit_n",
- "datagram_n",
- "udp",
- "tcp",
- "raw",
- NULL
-};
-
-/* valid inetd nettypes */
-static const char *valid_i_nettypes[] =
-{
- "udp",
- "tcp",
- NULL
-};
-
-static int
-check_nettype (const char *name, const char *list_to_check[])
-{
- int i;
- for (i = 0; list_to_check[i] != NULL; i++)
- {
- if (strcmp (name, list_to_check[i]) == 0)
- {
- return 1;
- }
- }
- fprintf (stderr, _ ("illegal nettype: `%s'\n"), name);
- return 0;
-}
-
-/*
- * Compile into an XDR routine output file
- */
-
-static void
-c_output (const char *infile, const char *define, int extend,
- const char *outfile)
-{
- definition *def;
- char *include;
- const char *outfilename;
- long tell;
-
- c_initialize ();
- open_input (infile, define);
- outfilename = extend ? extendfile (infile, outfile) : outfile;
- open_output (infile, outfilename);
- add_warning ();
- if (infile && (include = extendfile (infile, ".h")))
- {
- fprintf (fout, "#include \"%s\"\n", include);
- free (include);
- /* .h file already contains rpc/rpc.h */
- }
- else
- fprintf (fout, "#include <rpc/rpc.h>\n");
- tell = ftell (fout);
- while ((def = get_definition ()) != NULL)
- emit (def);
-
- if (extend && tell == ftell (fout))
- unlink (outfilename);
- close_input ();
- close_output (outfilename);
-}
-
-void
-c_initialize (void)
-{
-
- /* add all the starting basic types */
-
- add_type (1, "int");
- add_type (1, "long");
- add_type (1, "short");
- add_type (1, "bool");
-
- add_type (1, "u_int");
- add_type (1, "u_long");
- add_type (1, "u_short");
-
-}
-
-char rpcgen_table_dcl[] = "struct rpcgen_table {\n\
- char *(*proc)();\n\
- xdrproc_t xdr_arg;\n\
- unsigned len_arg;\n\
- xdrproc_t xdr_res;\n\
- unsigned len_res;\n\
-};\n";
-
-
-static char *
-generate_guard (const char *pathname)
-{
- const char *filename;
- char *guard, *tmp;
-
- filename = strrchr (pathname, '/'); /* find last component */
- filename = ((filename == NULL) ? pathname : filename + 1);
- guard = extendfile (filename, "_H_RPCGEN");
- /* convert to upper case */
- tmp = guard;
- while (*tmp)
- {
- if (islower (*tmp))
- *tmp = toupper (*tmp);
- tmp++;
- }
-
- return guard;
-}
-
-/*
- * Compile into an XDR header file
- */
-
-
-static void
-h_output (const char *infile, const char *define, int extend,
- const char *outfile)
-{
- xdrfunc *xdrfuncp;
- definition *def;
- const char *ifilename;
- const char *outfilename;
- long tell;
- char *guard;
- list *l;
-
- open_input (infile, define);
- outfilename = extend ? extendfile (infile, outfile) : outfile;
- open_output (infile, outfilename);
- add_warning ();
- ifilename = (infile == NULL) ? "STDIN" : infile;
- guard = generate_guard (outfilename ? outfilename : ifilename);
-
- fprintf (fout, "#ifndef _%s\n#define _%s\n\n", guard,
- guard);
-
- fprintf (fout, "#include <rpc/rpc.h>\n\n");
-
- if (mtflag)
- {
- fprintf (fout, "#include <pthread.h>\n");
- }
-
- /* put the C++ support */
- if (Cflag && !CCflag)
- {
- fprintf (fout, "\n#ifdef __cplusplus\n");
- fprintf (fout, "extern \"C\" {\n");
- fprintf (fout, "#endif\n\n");
- }
-
- tell = ftell (fout);
- /* print data definitions */
- while ((def = get_definition ()) != NULL)
- {
- print_datadef (def);
- }
-
- /* print function declarations.
- Do this after data definitions because they might be used as
- arguments for functions */
- for (l = defined; l != NULL; l = l->next)
- {
- print_funcdef (l->val);
- }
- /* Now print all xdr func declarations */
- if (xdrfunc_head != NULL)
- {
- fprintf (fout, "\n/* the xdr functions */\n");
- if (CCflag)
- {
- fprintf (fout, "\n#ifdef __cplusplus\n");
- fprintf (fout, "extern \"C\" {\n");
- fprintf (fout, "#endif\n");
- }
- if (!Cflag)
- {
- xdrfuncp = xdrfunc_head;
- while (xdrfuncp != NULL)
- {
- print_xdr_func_def (xdrfuncp->name,
- xdrfuncp->pointerp, 2);
- xdrfuncp = xdrfuncp->next;
- }
- }
- else
- {
- int i;
-
- for (i = 1; i < 3; ++i)
- {
- if (i == 1)
- fprintf (fout, "\n#if defined(__STDC__) || defined(__cplusplus)\n");
- else
- fprintf (fout, "\n#else /* K&R C */\n");
-
- xdrfuncp = xdrfunc_head;
- while (xdrfuncp != NULL)
- {
- print_xdr_func_def (xdrfuncp->name,
- xdrfuncp->pointerp, i);
- xdrfuncp = xdrfuncp->next;
- }
- }
- fprintf (fout, "\n#endif /* K&R C */\n");
- }
- }
-
- if (extend && tell == ftell (fout))
- {
- unlink (outfilename);
- }
- else if (tblflag)
- {
- fprintf (fout, "%s", rpcgen_table_dcl);
- }
-
- if (Cflag)
- {
- fprintf (fout, "\n#ifdef __cplusplus\n");
- fprintf (fout, "}\n");
- fprintf (fout, "#endif\n");
- }
-
- fprintf (fout, "\n#endif /* !_%s */\n", guard);
- free (guard);
- close_input ();
- close_output (outfilename);
-}
-
-/*
- * Compile into an RPC service
- */
-static void
-s_output (int argc, const char *argv[], const char *infile, const char *define,
- int extend, const char *outfile, int nomain, int netflag)
-{
- char *include;
- definition *def;
- int foundprogram = 0;
- const char *outfilename;
-
- open_input (infile, define);
- outfilename = extend ? extendfile (infile, outfile) : outfile;
- open_output (infile, outfilename);
- add_warning ();
- if (infile && (include = extendfile (infile, ".h")))
- {
- fprintf (fout, "#include \"%s\"\n", include);
- free (include);
- }
- else
- fprintf (fout, "#include <rpc/rpc.h>\n");
-
- fprintf (fout, "#include <stdio.h>\n");
- fprintf (fout, "#include <stdlib.h>\n");
- fprintf (fout, "#include <rpc/pmap_clnt.h>\n");
- if (Cflag)
- fprintf (fout, "#include <string.h>\n");
- if (strcmp (svcclosetime, "-1") == 0)
- indefinitewait = 1;
- else if (strcmp (svcclosetime, "0") == 0)
- exitnow = 1;
- else if (inetdflag || pmflag)
- {
- fprintf (fout, "#include <signal.h>\n");
- timerflag = 1;
- }
-
- if (!tirpcflag && inetdflag)
- fprintf (fout, "#include <sys/ioctl.h> /* ioctl, TIOCNOTTY */\n");
- if (Cflag && (inetdflag || pmflag))
- {
- fprintf (fout, "#include <sys/types.h> /* open */\n");
- fprintf (fout, "#include <sys/stat.h> /* open */\n");
- fprintf (fout, "#include <fcntl.h> /* open */\n");
- fprintf (fout, "#include <unistd.h> /* getdtablesize */\n");
- }
- if (tirpcflag && !(Cflag && (inetdflag || pmflag)))
- fprintf (fout, "#include <sys/types.h>\n");
-
- fprintf (fout, "#include <memory.h>\n");
- if (inetdflag || !tirpcflag)
- {
- fprintf (fout, "#include <sys/socket.h>\n");
- fprintf (fout, "#include <netinet/in.h>\n");
- }
-
- if ((netflag || pmflag) && tirpcflag && !nomain)
- {
- fprintf (fout, "#include <netconfig.h>\n");
- }
- if ( /*timerflag && */ tirpcflag)
- fprintf (fout, "#include <sys/resource.h> /* rlimit */\n");
- if (logflag || inetdflag || pmflag)
- {
- fprintf (fout, "#include <syslog.h>\n");
- }
-
- /* for ANSI-C */
- if (Cflag)
- fprintf (fout, "\n#ifndef SIG_PF\n#define SIG_PF void(*)(int)\n#endif\n");
-
- if (timerflag)
- fprintf (fout, "\n#define _RPCSVC_CLOSEDOWN %s\n", svcclosetime);
- while ((def = get_definition ()) != NULL)
- {
- foundprogram |= (def->def_kind == DEF_PROGRAM);
- }
- if (extend && !foundprogram)
- {
- unlink (outfilename);
- return;
- }
- write_most (infile, netflag, nomain);
- if (!nomain)
- {
- if (!do_registers (argc, argv))
- {
- if (outfilename)
- unlink (outfilename);
- usage (stderr, 1);
- }
- write_rest ();
- }
- close_input ();
- close_output (outfilename);
-}
-
-/*
- * generate client side stubs
- */
-static void
-l_output (const char *infile, const char *define, int extend,
- const char *outfile)
-{
- char *include;
- definition *def;
- int foundprogram = 0;
- const char *outfilename;
-
- open_input (infile, define);
- outfilename = extend ? extendfile (infile, outfile) : outfile;
- open_output (infile, outfilename);
- add_warning ();
- if (Cflag)
- fprintf (fout, "#include <memory.h> /* for memset */\n");
- if (infile && (include = extendfile (infile, ".h")))
- {
- fprintf (fout, "#include \"%s\"\n", include);
- free (include);
- }
- else
- fprintf (fout, "#include <rpc/rpc.h>\n");
- while ((def = get_definition ()) != NULL)
- {
- foundprogram |= (def->def_kind == DEF_PROGRAM);
- }
- if (extend && !foundprogram)
- {
- unlink (outfilename);
- return;
- }
- write_stubs ();
- close_input ();
- close_output (outfilename);
-}
-
-/*
- * generate the dispatch table
- */
-static void
-t_output (const char *infile, const char *define, int extend,
- const char *outfile)
-{
- definition *def;
- int foundprogram = 0;
- const char *outfilename;
-
- open_input (infile, define);
- outfilename = extend ? extendfile (infile, outfile) : outfile;
- open_output (infile, outfilename);
- add_warning ();
- while ((def = get_definition ()) != NULL)
- {
- foundprogram |= (def->def_kind == DEF_PROGRAM);
- }
- if (extend && !foundprogram)
- {
- unlink (outfilename);
- return;
- }
- write_tables ();
- close_input ();
- close_output (outfilename);
-}
-
-/* sample routine for the server template */
-static void
-svc_output (const char *infile, const char *define, int extend,
- const char *outfile)
-{
- definition *def;
- char *include;
- const char *outfilename;
- long tell;
-
- open_input (infile, define);
- outfilename = extend ? extendfile (infile, outfile) : outfile;
- checkfiles (infile, outfilename);
- /*check if outfile already exists.
- if so, print an error message and exit */
- open_output (infile, outfilename);
- add_sample_msg ();
-
- if (infile && (include = extendfile (infile, ".h")))
- {
- fprintf (fout, "#include \"%s\"\n", include);
- free (include);
- }
- else
- fprintf (fout, "#include <rpc/rpc.h>\n");
-
- tell = ftell (fout);
- while ((def = get_definition ()) != NULL)
- {
- write_sample_svc (def);
- }
- if (extend && tell == ftell (fout))
- {
- unlink (outfilename);
- }
- close_input ();
- close_output (outfilename);
-}
-
-
-/* sample main routine for client */
-static void
-clnt_output (const char *infile, const char *define, int extend,
- const char *outfile)
-{
- definition *def;
- char *include;
- const char *outfilename;
- long tell;
- int has_program = 0;
-
- open_input (infile, define);
- outfilename = extend ? extendfile (infile, outfile) : outfile;
- checkfiles (infile, outfilename);
- /*check if outfile already exists.
- if so, print an error message and exit */
-
- open_output (infile, outfilename);
- add_sample_msg ();
- if (infile && (include = extendfile (infile, ".h")))
- {
- fprintf (fout, "#include \"%s\"\n", include);
- free (include);
- }
- else
- fprintf (fout, "#include <rpc/rpc.h>\n");
- tell = ftell (fout);
- while ((def = get_definition ()) != NULL)
- {
- has_program += write_sample_clnt (def);
- }
-
- if (has_program)
- write_sample_clnt_main ();
-
- if (extend && tell == ftell (fout))
- {
- unlink (outfilename);
- }
- close_input ();
- close_output (outfilename);
-}
-
-static const char space[] = " ";
-
-static char *
-file_name (const char *file, const char *ext)
-{
- char *temp;
- temp = extendfile (file, ext);
-
- if (access (temp, F_OK) != -1)
- return (temp);
-
- free (temp);
- return (char *) space;
-}
-
-static void
-mkfile_output (struct commandline *cmd)
-{
- char *mkfilename;
- char *clientname, *clntname, *xdrname, *hdrname;
- char *servername, *svcname, *servprogname, *clntprogname;
-
- svcname = file_name (cmd->infile, "_svc.c");
- clntname = file_name (cmd->infile, "_clnt.c");
- xdrname = file_name (cmd->infile, "_xdr.c");
- hdrname = file_name (cmd->infile, ".h");
-
- if (allfiles)
- {
- servername = extendfile (cmd->infile, "_server.c");
- clientname = extendfile (cmd->infile, "_client.c");
- }
- else
- {
- servername = (char *) space;
- clientname = (char *) space;
- }
- servprogname = extendfile (cmd->infile, "_server");
- clntprogname = extendfile (cmd->infile, "_client");
-
- if (allfiles)
- {
- char *cp, *temp;
-
- mkfilename = alloc (strlen ("Makefile.") + strlen (cmd->infile) + 1);
- if (mkfilename == NULL)
- abort ();
- temp = strrchr (cmd->infile, '.');
- cp = stpcpy (mkfilename, "Makefile.");
- if (temp != NULL)
- *((char *) stpncpy (cp, cmd->infile, temp - cmd->infile)) = '\0';
- else
- stpcpy (cp, cmd->infile);
-
- }
- else
- mkfilename = (char *) cmd->outfile;
-
- checkfiles (NULL, mkfilename);
- open_output (NULL, mkfilename);
-
- fprintf (fout, "\n# This is a template Makefile generated by rpcgen\n");
-
- f_print (fout, "\n# Parameters\n\n");
-
- f_print (fout, "CLIENT = %s\nSERVER = %s\n\n", clntprogname, servprogname);
- f_print (fout, "SOURCES_CLNT.c = \nSOURCES_CLNT.h = \n");
- f_print (fout, "SOURCES_SVC.c = \nSOURCES_SVC.h = \n");
- f_print (fout, "SOURCES.x = %s\n\n", cmd->infile);
- f_print (fout, "TARGETS_SVC.c = %s %s %s \n",
- svcname, servername, xdrname);
- f_print (fout, "TARGETS_CLNT.c = %s %s %s \n",
- clntname, clientname, xdrname);
- f_print (fout, "TARGETS = %s %s %s %s %s %s\n\n",
- hdrname, xdrname, clntname,
- svcname, clientname, servername);
-
- f_print (fout, "OBJECTS_CLNT = $(SOURCES_CLNT.c:%%.c=%%.o) \
-$(TARGETS_CLNT.c:%%.c=%%.o)");
-
- f_print (fout, "\nOBJECTS_SVC = $(SOURCES_SVC.c:%%.c=%%.o) \
-$(TARGETS_SVC.c:%%.c=%%.o)");
-
- f_print (fout, "\n# Compiler flags \n");
- if (mtflag)
- fprintf (fout, "\nCPPFLAGS += -D_REENTRANT\nCFLAGS += -g \nLDLIBS \
-+= -lnsl -lpthread \n ");
- else
- f_print (fout, "\nCFLAGS += -g \nLDLIBS += -lnsl\n");
- f_print (fout, "RPCGENFLAGS = \n");
-
- f_print (fout, "\n# Targets \n\n");
-
- f_print (fout, "all : $(CLIENT) $(SERVER)\n\n");
- f_print (fout, "$(TARGETS) : $(SOURCES.x) \n");
- f_print (fout, "\trpcgen $(RPCGENFLAGS) $(SOURCES.x)\n\n");
- f_print (fout, "$(OBJECTS_CLNT) : $(SOURCES_CLNT.c) $(SOURCES_CLNT.h) \
-$(TARGETS_CLNT.c) \n\n");
-
- f_print (fout, "$(OBJECTS_SVC) : $(SOURCES_SVC.c) $(SOURCES_SVC.h) \
-$(TARGETS_SVC.c) \n\n");
- f_print (fout, "$(CLIENT) : $(OBJECTS_CLNT) \n");
- f_print (fout, "\t$(LINK.c) -o $(CLIENT) $(OBJECTS_CLNT) \
-$(LDLIBS) \n\n");
- f_print (fout, "$(SERVER) : $(OBJECTS_SVC) \n");
- f_print (fout, "\t$(LINK.c) -o $(SERVER) $(OBJECTS_SVC) $(LDLIBS)\n\n ");
- f_print (fout, "clean:\n\t $(RM) core $(TARGETS) $(OBJECTS_CLNT) \
-$(OBJECTS_SVC) $(CLIENT) $(SERVER)\n\n");
- close_output (mkfilename);
-
- free (clntprogname);
- free (servprogname);
- if (servername != space)
- free (servername);
- if (clientname != space)
- free (clientname);
- if (mkfilename != (char *) cmd->outfile)
- free (mkfilename);
- if (svcname != space)
- free (svcname);
- if (clntname != space)
- free (clntname);
- if (xdrname != space)
- free (xdrname);
- if (hdrname != space)
- free (hdrname);
-}
-
-/*
- * Perform registrations for service output
- * Return 0 if failed; 1 otherwise.
- */
-static int
-do_registers (int argc, const char *argv[])
-{
- int i;
-
- if (inetdflag || !tirpcflag)
- {
- for (i = 1; i < argc; i++)
- {
- if (streq (argv[i], "-s"))
- {
- if (!check_nettype (argv[i + 1], valid_i_nettypes))
- return 0;
- write_inetd_register (argv[i + 1]);
- i++;
- }
- }
- }
- else
- {
- for (i = 1; i < argc; i++)
- if (streq (argv[i], "-s"))
- {
- if (!check_nettype (argv[i + 1], valid_ti_nettypes))
- return 0;
- write_nettype_register (argv[i + 1]);
- i++;
- }
- else if (streq (argv[i], "-n"))
- {
- write_netid_register (argv[i + 1]);
- i++;
- }
- }
- return 1;
-}
-
-/*
- * Add another argument to the arg list
- */
-static void
-addarg (const char *cp)
-{
- if (argcount >= ARGLISTLEN)
- {
- fprintf (stderr, _("rpcgen: too many defines\n"));
- crash ();
- /*NOTREACHED */
- }
- arglist[argcount++] = cp;
-}
-
-static void
-putarg (int whereto, const char *cp)
-{
- if (whereto >= ARGLISTLEN)
- {
- fprintf (stderr, _("rpcgen: arglist coding error\n"));
- crash ();
- /*NOTREACHED */
- }
- arglist[whereto] = cp;
-}
-
-/*
- * if input file is stdin and an output file is specified then complain
- * if the file already exists. Otherwise the file may get overwritten
- * If input file does not exist, exit with an error
- */
-
-static void
-checkfiles (const char *infile, const char *outfile)
-{
- struct stat64 buf;
-
- if (infile) /* infile ! = NULL */
- if (stat64 (infile, &buf) < 0)
- {
- perror (infile);
- crash ();
- }
- if (outfile)
- {
- if (stat64 (outfile, &buf) < 0)
- return; /* file does not exist */
- else
- {
- fprintf (stderr,
- /* TRANS: the file will not be removed; this is an
- TRANS: informative message. */
- _("file `%s' already exists and may be overwritten\n"),
- outfile);
- crash ();
- }
- }
-}
-
-/*
- * Parse command line arguments
- */
-static int
-parseargs (int argc, const char *argv[], struct commandline *cmd)
-{
- int i;
- int j;
- int c;
- char flag[(1 << 8 * sizeof (char))];
- int nflags;
-
- cmdname = argv[0];
- cmd->infile = cmd->outfile = NULL;
- if (argc < 2)
- {
- return (0);
- }
- allfiles = 0;
- flag['c'] = 0;
- flag['h'] = 0;
- flag['l'] = 0;
- flag['m'] = 0;
- flag['o'] = 0;
- flag['s'] = 0;
- flag['n'] = 0;
- flag['t'] = 0;
- flag['S'] = 0;
- flag['C'] = 0;
- flag['M'] = 0;
-
- for (i = 1; i < argc; i++)
- {
- if (argv[i][0] != '-')
- {
- if (cmd->infile)
- {
- fprintf (stderr,
- _("Cannot specify more than one input file!\n"));
- return 0;
- }
- cmd->infile = argv[i];
- }
- else if (strcmp (argv[i], "--help") == 0)
- usage (stdout, 0);
- else if (strcmp (argv[i], "--version") == 0)
- print_version ();
- else
- {
- for (j = 1; argv[i][j] != 0; j++)
- {
- c = argv[i][j];
- switch (c)
- {
- case 'a':
- allfiles = 1;
- break;
- case 'c':
- case 'h':
- case 'l':
- case 'm':
- case 't':
- if (flag[c])
- return 0;
- flag[c] = 1;
- break;
- case 'S':
- /* sample flag: Ss or Sc.
- Ss means set flag['S'];
- Sc means set flag['C'];
- Sm means set flag['M']; */
- c = argv[i][++j]; /* get next char */
- if (c == 's')
- c = 'S';
- else if (c == 'c')
- c = 'C';
- else if (c == 'm')
- c = 'M';
- else
- return 0;
-
- if (flag[c])
- return 0;
- flag[c] = 1;
- break;
- case 'C': /* ANSI C syntax */
- Cflag = 1;
- break;
-
- case 'k': /* K&R C syntax */
- Cflag = 0;
- break;
-
- case 'b': /* turn TIRPC flag off for
- generating backward compatible
- */
- tirpcflag = 0;
- break;
-
- case '5': /* turn TIRPC flag on for
- generating SysVr4 compatible
- */
- tirpcflag = 1;
- break;
- case 'I':
- inetdflag = 1;
- break;
- case 'N':
- newstyle = 1;
- break;
- case 'L':
- logflag = 1;
- break;
- case 'K':
- if (++i == argc)
- {
- return (0);
- }
- svcclosetime = argv[i];
- goto nextarg;
- case 'T':
- tblflag = 1;
- break;
- case 'M':
- mtflag = 1;
- break;
- case 'i':
- if (++i == argc)
- {
- return (0);
- }
- inlineflag = atoi (argv[i]);
- goto nextarg;
- case 'n':
- case 'o':
- case 's':
- if (argv[i][j - 1] != '-' ||
- argv[i][j + 1] != 0)
- {
- return (0);
- }
- flag[c] = 1;
- if (++i == argc)
- {
- return (0);
- }
- if (c == 's')
- {
- if (!streq (argv[i], "udp") &&
- !streq (argv[i], "tcp"))
- return 0;
- }
- else if (c == 'o')
- {
- if (cmd->outfile)
- return 0;
- cmd->outfile = argv[i];
- }
- goto nextarg;
- case 'D':
- if (argv[i][j - 1] != '-')
- return 0;
- addarg (argv[i]);
- goto nextarg;
- case 'Y':
- if (++i == argc)
- return 0;
- {
- size_t len = strlen (argv[i]);
- pathbuf = malloc (len + 5);
- if (pathbuf == NULL)
- {
- perror (cmdname);
- crash ();
- }
- stpcpy (stpcpy (pathbuf,
- argv[i]),
- "/cpp");
- CPP = pathbuf;
- cppDefined = 1;
- goto nextarg;
- }
-
- default:
- return 0;
- }
- }
- nextarg:
- ;
- }
- }
-
- cmd->cflag = flag['c'];
- cmd->hflag = flag['h'];
- cmd->lflag = flag['l'];
- cmd->mflag = flag['m'];
- cmd->nflag = flag['n'];
- cmd->sflag = flag['s'];
- cmd->tflag = flag['t'];
- cmd->Ssflag = flag['S'];
- cmd->Scflag = flag['C'];
- cmd->makefileflag = flag['M'];
-
- if (tirpcflag)
- {
- pmflag = inetdflag ? 0 : 1; /* pmflag or inetdflag is always TRUE */
- if ((inetdflag && cmd->nflag))
- { /* netid not allowed with inetdflag */
- fprintf (stderr, _("Cannot use netid flag with inetd flag!\n"));
- return 0;
- }
- }
- else
- { /* 4.1 mode */
- pmflag = 0; /* set pmflag only in tirpcmode */
- if (cmd->nflag)
- { /* netid needs TIRPC */
- f_print (stderr, _("Cannot use netid flag without TIRPC!\n"));
- return (0);
- }
- }
-
- if (newstyle && (tblflag || cmd->tflag))
- {
- f_print (stderr, _("Cannot use table flags with newstyle!\n"));
- return (0);
- }
-
- /* check no conflicts with file generation flags */
- nflags = cmd->cflag + cmd->hflag + cmd->lflag + cmd->mflag +
- cmd->sflag + cmd->nflag + cmd->tflag + cmd->Ssflag + cmd->Scflag;
-
- if (nflags == 0)
- {
- if (cmd->outfile != NULL || cmd->infile == NULL)
- {
- return (0);
- }
- }
- else if (cmd->infile == NULL &&
- (cmd->Ssflag || cmd->Scflag || cmd->makefileflag))
- {
- fprintf (stderr,
- _("\"infile\" is required for template generation flags.\n"));
- return 0;
- }
- if (nflags > 1)
- {
- fprintf (stderr, _("Cannot have more than one file generation flag!\n"));
- return 0;
- }
- return 1;
-}
-
-static void
-usage (FILE *stream, int status)
-{
- fprintf (stream, _("usage: %s infile\n"), cmdname);
- fprintf (stream, _("\t%s [-abkCLNTM][-Dname[=value]] [-i size] \
-[-I [-K seconds]] [-Y path] infile\n"), cmdname);
- fprintf (stream, _("\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] \
-[-o outfile] [infile]\n"), cmdname);
- fprintf (stream, _("\t%s [-s nettype]* [-o outfile] [infile]\n"), cmdname);
- fprintf (stream, _("\t%s [-n netid]* [-o outfile] [infile]\n"), cmdname);
- options_usage (stream, status);
- exit (status);
-}
-
-static void
-options_usage (FILE *stream, int status)
-{
- f_print (stream, _("options:\n"));
- f_print (stream, _("-a\t\tgenerate all files, including samples\n"));
- f_print (stream, _("-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"));
- f_print (stream, _("-c\t\tgenerate XDR routines\n"));
- f_print (stream, _("-C\t\tANSI C mode\n"));
- f_print (stream, _("-Dname[=value]\tdefine a symbol (same as #define)\n"));
- f_print (stream, _("-h\t\tgenerate header file\n"));
- f_print (stream, _("-i size\t\tsize at which to start generating inline code\n"));
- f_print (stream, _("-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"));
- f_print (stream, _("-K seconds\tserver exits after K seconds of inactivity\n"));
- f_print (stream, _("-l\t\tgenerate client side stubs\n"));
- f_print (stream, _("-L\t\tserver errors will be printed to syslog\n"));
- f_print (stream, _("-m\t\tgenerate server side stubs\n"));
- f_print (stream, _("-M\t\tgenerate MT-safe code\n"));
- f_print (stream, _("-n netid\tgenerate server code that supports named netid\n"));
- f_print (stream, _("-N\t\tsupports multiple arguments and call-by-value\n"));
- f_print (stream, _("-o outfile\tname of the output file\n"));
- f_print (stream, _("-s nettype\tgenerate server code that supports named nettype\n"));
- f_print (stream, _("-Sc\t\tgenerate sample client code that uses remote procedures\n"));
- f_print (stream, _("-Ss\t\tgenerate sample server code that defines remote procedures\n"));
- f_print (stream, _("-Sm \t\tgenerate makefile template \n"));
- f_print (stream, _("-t\t\tgenerate RPC dispatch table\n"));
- f_print (stream, _("-T\t\tgenerate code to support RPC dispatch tables\n"));
- f_print (stream, _("-Y path\t\tdirectory name to find C preprocessor (cpp)\n"));
- f_print (stream, _("-5\t\tSysVr4 compatibility mode\n"));
- f_print (stream, _("--help\t\tgive this help list\n"));
- f_print (stream, _("--version\tprint program version\n"));
-
- f_print (stream, _("\n\
-For bug reporting instructions, please see:\n\
-%s.\n"), REPORT_BUGS_TO);
- exit (status);
-}
-
-static void
-print_version (void)
-{
- printf ("rpcgen %s%s\n", PKGVERSION, VERSION);
- exit (0);
-}
deleted file mode 100644
@@ -1,687 +0,0 @@
-/*
- * From: @(#)rpc_parse.c 1.8 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_parse.c, Parser for the RPC protocol compiler
- * Copyright (C) 1987 Sun Microsystems, Inc.
- */
-#include <stdio.h>
-#include <string.h>
-#include "rpc/types.h"
-#include "rpc_scan.h"
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-#define ARGNAME "arg"
-
-static void isdefined (definition * defp);
-static void def_struct (definition * defp);
-static void def_program (definition * defp);
-static void def_enum (definition * defp);
-static void def_const (definition * defp);
-static void def_union (definition * defp);
-static void check_type_name (const char *name, int new_type);
-static void def_typedef (definition * defp);
-static void get_declaration (declaration * dec, defkind dkind);
-static void get_prog_declaration (declaration * dec, defkind dkind, int num);
-static void get_type (const char **prefixp, const char **typep, defkind dkind);
-static void unsigned_dec (const char **typep);
-
-/*
- * return the next definition you see
- */
-definition *
-get_definition (void)
-{
- definition *defp;
- token tok;
-
- defp = ALLOC (definition);
- get_token (&tok);
- switch (tok.kind)
- {
- case TOK_STRUCT:
- def_struct (defp);
- break;
- case TOK_UNION:
- def_union (defp);
- break;
- case TOK_TYPEDEF:
- def_typedef (defp);
- break;
- case TOK_ENUM:
- def_enum (defp);
- break;
- case TOK_PROGRAM:
- def_program (defp);
- break;
- case TOK_CONST:
- def_const (defp);
- break;
- case TOK_EOF:
- free (defp);
- return (NULL);
- default:
- error ("definition keyword expected");
- }
- scan (TOK_SEMICOLON, &tok);
- isdefined (defp);
- return (defp);
-}
-
-static void
-isdefined (definition * defp)
-{
- STOREVAL (&defined, defp);
-}
-
-static void
-def_struct (definition * defp)
-{
- token tok;
- declaration dec;
- decl_list *decls;
- decl_list **tailp;
-
- defp->def_kind = DEF_STRUCT;
-
- scan (TOK_IDENT, &tok);
- defp->def_name = tok.str;
- scan (TOK_LBRACE, &tok);
- tailp = &defp->def.st.decls;
- do
- {
- get_declaration (&dec, DEF_STRUCT);
- decls = ALLOC (decl_list);
- decls->decl = dec;
- *tailp = decls;
- tailp = &decls->next;
- scan (TOK_SEMICOLON, &tok);
- peek (&tok);
- }
- while (tok.kind != TOK_RBRACE);
- get_token (&tok);
- *tailp = NULL;
-}
-
-static void
-def_program (definition * defp)
-{
- token tok;
- declaration dec;
- decl_list *decls;
- decl_list **tailp;
- version_list *vlist;
- version_list **vtailp;
- proc_list *plist;
- proc_list **ptailp;
- int num_args;
- bool_t isvoid = FALSE; /* whether first argument is void */
- defp->def_kind = DEF_PROGRAM;
- scan (TOK_IDENT, &tok);
- defp->def_name = tok.str;
- scan (TOK_LBRACE, &tok);
- vtailp = &defp->def.pr.versions;
- tailp = &defp->def.st.decls;
- scan (TOK_VERSION, &tok);
- do
- {
- scan (TOK_IDENT, &tok);
- vlist = ALLOC (version_list);
- vlist->vers_name = tok.str;
- scan (TOK_LBRACE, &tok);
- ptailp = &vlist->procs;
- do
- {
- /* get result type */
- plist = ALLOC (proc_list);
- get_type (&plist->res_prefix, &plist->res_type,
- DEF_PROGRAM);
- if (streq (plist->res_type, "opaque"))
- {
- error ("illegal result type");
- }
- scan (TOK_IDENT, &tok);
- plist->proc_name = tok.str;
- scan (TOK_LPAREN, &tok);
- /* get args - first one */
- num_args = 1;
- isvoid = FALSE;
- /* type of DEF_PROGRAM in the first
- * get_prog_declaration and DEF_STURCT in the next
- * allows void as argument if it is the only argument
- */
- get_prog_declaration (&dec, DEF_PROGRAM, num_args);
- if (streq (dec.type, "void"))
- isvoid = TRUE;
- decls = ALLOC (decl_list);
- plist->args.decls = decls;
- decls->decl = dec;
- tailp = &decls->next;
- /* get args */
- while (peekscan (TOK_COMMA, &tok))
- {
- num_args++;
- get_prog_declaration (&dec, DEF_STRUCT,
- num_args);
- decls = ALLOC (decl_list);
- decls->decl = dec;
- *tailp = decls;
- if (streq (dec.type, "void"))
- isvoid = TRUE;
- tailp = &decls->next;
- }
- /* multiple arguments are only allowed in newstyle */
- if (!newstyle && num_args > 1)
- {
- error ("only one argument is allowed");
- }
- if (isvoid && num_args > 1)
- {
- error ("illegal use of void in program definition");
- }
- *tailp = NULL;
- scan (TOK_RPAREN, &tok);
- scan (TOK_EQUAL, &tok);
- scan_num (&tok);
- scan (TOK_SEMICOLON, &tok);
- plist->proc_num = tok.str;
- plist->arg_num = num_args;
- *ptailp = plist;
- ptailp = &plist->next;
- peek (&tok);
- }
- while (tok.kind != TOK_RBRACE);
- *ptailp = NULL;
- *vtailp = vlist;
- vtailp = &vlist->next;
- scan (TOK_RBRACE, &tok);
- scan (TOK_EQUAL, &tok);
- scan_num (&tok);
- vlist->vers_num = tok.str;
- /* make the argument structure name for each arg */
- for (plist = vlist->procs; plist != NULL;
- plist = plist->next)
- {
- plist->args.argname = make_argname (plist->proc_name,
- vlist->vers_num);
- /* free the memory ?? */
- }
- scan (TOK_SEMICOLON, &tok);
- scan2 (TOK_VERSION, TOK_RBRACE, &tok);
- }
- while (tok.kind == TOK_VERSION);
- scan (TOK_EQUAL, &tok);
- scan_num (&tok);
- defp->def.pr.prog_num = tok.str;
- *vtailp = NULL;
-}
-
-
-static void
-def_enum (definition * defp)
-{
- token tok;
- enumval_list *elist;
- enumval_list **tailp;
-
- defp->def_kind = DEF_ENUM;
- scan (TOK_IDENT, &tok);
- defp->def_name = tok.str;
- scan (TOK_LBRACE, &tok);
- tailp = &defp->def.en.vals;
- do
- {
- scan (TOK_IDENT, &tok);
- elist = ALLOC (enumval_list);
- elist->name = tok.str;
- elist->assignment = NULL;
- scan3 (TOK_COMMA, TOK_RBRACE, TOK_EQUAL, &tok);
- if (tok.kind == TOK_EQUAL)
- {
- scan_num (&tok);
- elist->assignment = tok.str;
- scan2 (TOK_COMMA, TOK_RBRACE, &tok);
- }
- *tailp = elist;
- tailp = &elist->next;
- }
- while (tok.kind != TOK_RBRACE);
- *tailp = NULL;
-}
-
-static void
-def_const (definition * defp)
-{
- token tok;
-
- defp->def_kind = DEF_CONST;
- scan (TOK_IDENT, &tok);
- defp->def_name = tok.str;
- scan (TOK_EQUAL, &tok);
- scan2 (TOK_IDENT, TOK_STRCONST, &tok);
- defp->def.co = tok.str;
-}
-
-static void
-def_union (definition *defp)
-{
- token tok;
- declaration dec;
- case_list *cases;
-/* case_list *tcase; */
- case_list **tailp;
-#if 0
- int flag;
-#endif
-
- defp->def_kind = DEF_UNION;
- scan (TOK_IDENT, &tok);
- defp->def_name = tok.str;
- scan (TOK_SWITCH, &tok);
- scan (TOK_LPAREN, &tok);
- get_declaration (&dec, DEF_UNION);
- defp->def.un.enum_decl = dec;
- tailp = &defp->def.un.cases;
- scan (TOK_RPAREN, &tok);
- scan (TOK_LBRACE, &tok);
- scan (TOK_CASE, &tok);
- while (tok.kind == TOK_CASE)
- {
- scan2 (TOK_IDENT, TOK_CHARCONST, &tok);
- cases = ALLOC (case_list);
- cases->case_name = tok.str;
- scan (TOK_COLON, &tok);
- /* now peek at next token */
-#if 0
- flag = 0;
-#endif
- if (peekscan (TOK_CASE, &tok))
- {
-
- do
- {
- scan2 (TOK_IDENT, TOK_CHARCONST, &tok);
- cases->contflag = 1; /* continued case statement */
- *tailp = cases;
- tailp = &cases->next;
- cases = ALLOC (case_list);
- cases->case_name = tok.str;
- scan (TOK_COLON, &tok);
-
- }
- while (peekscan (TOK_CASE, &tok));
- }
-#if 0
- else if (flag)
- {
-
- *tailp = cases;
- tailp = &cases->next;
- cases = ALLOC (case_list);
- };
-#endif
-
- get_declaration (&dec, DEF_UNION);
- cases->case_decl = dec;
- cases->contflag = 0; /* no continued case statement */
- *tailp = cases;
- tailp = &cases->next;
- scan (TOK_SEMICOLON, &tok);
-
- scan3 (TOK_CASE, TOK_DEFAULT, TOK_RBRACE, &tok);
- }
- *tailp = NULL;
- if (tok.kind == TOK_DEFAULT)
- {
- scan (TOK_COLON, &tok);
- get_declaration (&dec, DEF_UNION);
- defp->def.un.default_decl = ALLOC (declaration);
- *defp->def.un.default_decl = dec;
- scan (TOK_SEMICOLON, &tok);
- scan (TOK_RBRACE, &tok);
- }
- else
- {
- defp->def.un.default_decl = NULL;
- }
-}
-
-static const char *reserved_words[] =
-{
- "array",
- "bytes",
- "destroy",
- "free",
- "getpos",
- "inline",
- "pointer",
- "reference",
- "setpos",
- "sizeof",
- "union",
- "vector",
- NULL
-};
-
-static const char *reserved_types[] =
-{
- "opaque",
- "string",
- NULL
-};
-
-/*
- * check that the given name is not one that would eventually result in
- * xdr routines that would conflict with internal XDR routines.
- */
-static void
-check_type_name (const char *name, int new_type)
-{
- int i;
- char tmp[100];
-
- for (i = 0; reserved_words[i] != NULL; i++)
- {
- if (strcmp (name, reserved_words[i]) == 0)
- {
- sprintf (tmp,
- "illegal (reserved) name :\'%s\' in type definition", name);
- error (tmp);
- }
- }
- if (new_type)
- {
- for (i = 0; reserved_types[i] != NULL; i++)
- {
- if (strcmp (name, reserved_types[i]) == 0)
- {
- sprintf (tmp,
- "illegal (reserved) name :\'%s\' in type definition", name);
- error (tmp);
- }
- }
- }
-}
-
-
-
-static void
-def_typedef (definition * defp)
-{
- declaration dec;
-
- defp->def_kind = DEF_TYPEDEF;
- get_declaration (&dec, DEF_TYPEDEF);
- defp->def_name = dec.name;
- check_type_name (dec.name, 1);
- defp->def.ty.old_prefix = dec.prefix;
- defp->def.ty.old_type = dec.type;
- defp->def.ty.rel = dec.rel;
- defp->def.ty.array_max = dec.array_max;
-}
-
-static void
-get_declaration (declaration * dec, defkind dkind)
-{
- token tok;
-
- get_type (&dec->prefix, &dec->type, dkind);
- dec->rel = REL_ALIAS;
- if (streq (dec->type, "void"))
- {
- return;
- }
-
- check_type_name (dec->type, 0);
-
- scan2 (TOK_STAR, TOK_IDENT, &tok);
- if (tok.kind == TOK_STAR)
- {
- dec->rel = REL_POINTER;
- scan (TOK_IDENT, &tok);
- }
- dec->name = tok.str;
- if (peekscan (TOK_LBRACKET, &tok))
- {
- if (dec->rel == REL_POINTER)
- {
- error ("no array-of-pointer declarations -- use typedef");
- }
- dec->rel = REL_VECTOR;
- scan_num (&tok);
- dec->array_max = tok.str;
- scan (TOK_RBRACKET, &tok);
- }
- else if (peekscan (TOK_LANGLE, &tok))
- {
- if (dec->rel == REL_POINTER)
- {
- error ("no array-of-pointer declarations -- use typedef");
- }
- dec->rel = REL_ARRAY;
- if (peekscan (TOK_RANGLE, &tok))
- {
- dec->array_max = "~0"; /* unspecified size, use max */
- }
- else
- {
- scan_num (&tok);
- dec->array_max = tok.str;
- scan (TOK_RANGLE, &tok);
- }
- }
- if (streq (dec->type, "opaque"))
- {
- if (dec->rel != REL_ARRAY && dec->rel != REL_VECTOR)
- {
- error ("array declaration expected");
- }
- }
- else if (streq (dec->type, "string"))
- {
- if (dec->rel != REL_ARRAY)
- {
- error ("variable-length array declaration expected");
- }
- }
-}
-
-static void
-get_prog_declaration (declaration * dec, defkind dkind, int num /* arg number */ )
-{
- token tok;
- char name[MAXLINESIZE]; /* argument name */
-
- if (dkind == DEF_PROGRAM)
- {
- peek (&tok);
- if (tok.kind == TOK_RPAREN)
- { /* no arguments */
- dec->rel = REL_ALIAS;
- dec->type = "void";
- dec->prefix = NULL;
- dec->name = NULL;
- return;
- }
- }
- get_type (&dec->prefix, &dec->type, dkind);
- dec->rel = REL_ALIAS;
- if (peekscan (TOK_IDENT, &tok)) /* optional name of argument */
- strcpy (name, tok.str);
- else
- sprintf (name, "%s%d", ARGNAME, num); /* default name of argument */
-
- dec->name = (char *) strdup (name);
-
- if (streq (dec->type, "void"))
- {
- return;
- }
-
- if (streq (dec->type, "opaque"))
- {
- error ("opaque -- illegal argument type");
- }
- if (peekscan (TOK_STAR, &tok))
- {
- if (streq (dec->type, "string"))
- {
- error ("pointer to string not allowed in program arguments\n");
- }
- dec->rel = REL_POINTER;
- if (peekscan (TOK_IDENT, &tok)) /* optional name of argument */
- dec->name = strdup (tok.str);
- }
- if (peekscan (TOK_LANGLE, &tok))
- {
- if (!streq (dec->type, "string"))
- {
- error ("arrays cannot be declared as arguments to procedures -- use typedef");
- }
- dec->rel = REL_ARRAY;
- if (peekscan (TOK_RANGLE, &tok))
- {
- dec->array_max = "~0"; /* unspecified size, use max */
- }
- else
- {
- scan_num (&tok);
- dec->array_max = tok.str;
- scan (TOK_RANGLE, &tok);
- }
- }
- if (streq (dec->type, "string"))
- {
- if (dec->rel != REL_ARRAY)
- { /* .x specifies just string as
- * type of argument
- * - make it string<>
- */
- dec->rel = REL_ARRAY;
- dec->array_max = "~0"; /* unspecified size, use max */
- }
- }
-}
-
-static void
-get_type (const char **prefixp, const char **typep, defkind dkind)
-{
- token tok;
-
- *prefixp = NULL;
- get_token (&tok);
- switch (tok.kind)
- {
- case TOK_IDENT:
- *typep = tok.str;
- break;
- case TOK_STRUCT:
- case TOK_ENUM:
- case TOK_UNION:
- *prefixp = tok.str;
- scan (TOK_IDENT, &tok);
- *typep = tok.str;
- break;
- case TOK_UNSIGNED:
- unsigned_dec (typep);
- break;
- case TOK_SHORT:
- *typep = "short";
- (void) peekscan (TOK_INT, &tok);
- break;
- case TOK_LONG:
- *typep = "long";
- (void) peekscan (TOK_INT, &tok);
- break;
- case TOK_HYPER:
- *typep = "quad_t";
- (void) peekscan(TOK_INT, &tok);
- break;
- case TOK_VOID:
- if (dkind != DEF_UNION && dkind != DEF_PROGRAM)
- {
- error ("voids allowed only inside union and program definitions with one argument");
- }
- *typep = tok.str;
- break;
- case TOK_STRING:
- case TOK_OPAQUE:
- case TOK_CHAR:
- case TOK_INT:
- case TOK_FLOAT:
- case TOK_DOUBLE:
- case TOK_BOOL:
- *typep = tok.str;
- break;
- default:
- error ("expected type specifier");
- }
-}
-
-static void
-unsigned_dec (const char **typep)
-{
- token tok;
-
- peek (&tok);
- switch (tok.kind)
- {
- case TOK_CHAR:
- get_token (&tok);
- *typep = "u_char";
- break;
- case TOK_SHORT:
- get_token (&tok);
- *typep = "u_short";
- (void) peekscan (TOK_INT, &tok);
- break;
- case TOK_LONG:
- get_token (&tok);
- *typep = "u_long";
- (void) peekscan (TOK_INT, &tok);
- break;
- case TOK_HYPER:
- get_token (&tok);
- *typep = "u_quad_t";
- (void) peekscan(TOK_INT, &tok);
- break;
- case TOK_INT:
- get_token (&tok);
- *typep = "u_int";
- break;
- default:
- *typep = "u_int";
- break;
- }
-}
deleted file mode 100644
@@ -1,165 +0,0 @@
-/* @(#)rpc_parse.h 1.3 90/08/29
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * rpc_parse.h, Definitions for the RPCL parser
- */
-
-enum defkind {
- DEF_CONST,
- DEF_STRUCT,
- DEF_UNION,
- DEF_ENUM,
- DEF_TYPEDEF,
- DEF_PROGRAM
-};
-typedef enum defkind defkind;
-
-typedef const char *const_def;
-
-enum relation {
- REL_VECTOR, /* fixed length array */
- REL_ARRAY, /* variable length array */
- REL_POINTER, /* pointer */
- REL_ALIAS /* simple */
-};
-typedef enum relation relation;
-
-struct typedef_def {
- const char *old_prefix;
- const char *old_type;
- relation rel;
- const char *array_max;
-};
-typedef struct typedef_def typedef_def;
-
-struct enumval_list {
- const char *name;
- const char *assignment;
- struct enumval_list *next;
-};
-typedef struct enumval_list enumval_list;
-
-struct enum_def {
- enumval_list *vals;
-};
-typedef struct enum_def enum_def;
-
-struct declaration {
- const char *prefix;
- const char *type;
- const char *name;
- relation rel;
- const char *array_max;
-};
-typedef struct declaration declaration;
-
-struct decl_list {
- declaration decl;
- struct decl_list *next;
-};
-typedef struct decl_list decl_list;
-
-struct struct_def {
- decl_list *decls;
-};
-typedef struct struct_def struct_def;
-
-struct case_list {
- const char *case_name;
- int contflag;
- declaration case_decl;
- struct case_list *next;
-};
-typedef struct case_list case_list;
-
-struct union_def {
- declaration enum_decl;
- case_list *cases;
- declaration *default_decl;
-};
-typedef struct union_def union_def;
-
-struct arg_list {
- const char *argname; /* name of struct for arg*/
- decl_list *decls;
-};
-
-typedef struct arg_list arg_list;
-
-struct proc_list {
- const char *proc_name;
- const char *proc_num;
- arg_list args;
- int arg_num;
- const char *res_type;
- const char *res_prefix;
- struct proc_list *next;
-};
-typedef struct proc_list proc_list;
-
-struct version_list {
- const char *vers_name;
- const char *vers_num;
- proc_list *procs;
- struct version_list *next;
-};
-typedef struct version_list version_list;
-
-struct program_def {
- const char *prog_num;
- version_list *versions;
-};
-typedef struct program_def program_def;
-
-struct definition {
- const char *def_name;
- defkind def_kind;
- union {
- const_def co;
- struct_def st;
- union_def un;
- enum_def en;
- typedef_def ty;
- program_def pr;
- } def;
-};
-typedef struct definition definition;
-
-definition *get_definition(void);
-
-
-struct bas_type
-{
- const char *name;
- int length;
- struct bas_type *next;
-};
-
-typedef struct bas_type bas_type;
@@ -57,7 +57,7 @@ xdr_opaque_auth (XDR *xdrs, struct opaque_auth *ap)
&ap->oa_length, MAX_AUTH_BYTES);
return FALSE;
}
-libc_hidden_nolink_sunrpc (xdr_opaque_auth, GLIBC_2_0)
+libc_hidden_nolink (xdr_opaque_auth, GLIBC_2_0)
/*
* XDR a DES block
@@ -67,7 +67,7 @@ xdr_des_block (XDR *xdrs, des_block *blkp)
{
return xdr_opaque (xdrs, (caddr_t) blkp, sizeof (des_block));
}
-libc_hidden_nolink_sunrpc (xdr_des_block, GLIBC_2_0)
+libc_hidden_nolink (xdr_des_block, GLIBC_2_0)
/* * * * * * * * * * * * * * XDR RPC MESSAGE * * * * * * * * * * * * * * * */
@@ -95,7 +95,7 @@ xdr_accepted_reply (XDR *xdrs, struct accepted_reply *ar)
}
return TRUE; /* TRUE => open ended set of problems */
}
-libc_hidden_nolink_sunrpc (xdr_accepted_reply, GLIBC_2_0)
+libc_hidden_nolink (xdr_accepted_reply, GLIBC_2_0)
/*
* XDR the MSG_DENIED part of a reply message union
@@ -118,7 +118,7 @@ xdr_rejected_reply (XDR *xdrs, struct rejected_reply *rr)
}
return FALSE;
}
-libc_hidden_nolink_sunrpc (xdr_rejected_reply, GLIBC_2_0)
+libc_hidden_nolink (xdr_rejected_reply, GLIBC_2_0)
static const struct xdr_discrim reply_dscrm[3] =
{
@@ -140,7 +140,7 @@ xdr_replymsg (XDR *xdrs, struct rpc_msg *rmsg)
NULL_xdrproc_t);
return FALSE;
}
-libc_hidden_nolink_sunrpc (xdr_replymsg, GLIBC_2_0)
+libc_hidden_nolink (xdr_replymsg, GLIBC_2_0)
/*
@@ -163,7 +163,7 @@ xdr_callhdr (XDR *xdrs, struct rpc_msg *cmsg)
return xdr_u_long (xdrs, &(cmsg->rm_call.cb_vers));
return FALSE;
}
-libc_hidden_nolink_sunrpc (xdr_callhdr, GLIBC_2_0)
+libc_hidden_nolink (xdr_callhdr, GLIBC_2_0)
/* ************************** Client utility routine ************* */
@@ -273,4 +273,4 @@ _seterr_reply (struct rpc_msg *msg,
break;
}
}
-libc_hidden_nolink_sunrpc (_seterr_reply, GLIBC_2_0)
+libc_hidden_nolink (_seterr_reply, GLIBC_2_0)
deleted file mode 100644
@@ -1,336 +0,0 @@
-/*
- * From: @(#)rpc_sample.c 1.1 90/08/30
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_sample.c, Sample client-server code outputter for the RPC protocol compiler
- */
-
-#include <stdio.h>
-#include <string.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-
-static const char RQSTP[] = "rqstp";
-
-static void write_sample_client (const char *program_name, version_list * vp);
-static void write_sample_server (definition * def);
-static void return_type (proc_list * plist);
-
-
-void
-write_sample_svc (definition * def)
-{
-
- if (def->def_kind != DEF_PROGRAM)
- return;
- write_sample_server (def);
-}
-
-
-int
-write_sample_clnt (definition * def)
-{
- version_list *vp;
- int count = 0;
-
- if (def->def_kind != DEF_PROGRAM)
- return 0;
- /* generate sample code for each version */
- for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
- {
- write_sample_client (def->def_name, vp);
- ++count;
- }
- return count;
-}
-
-
-static void
-write_sample_client (const char *program_name, version_list * vp)
-{
- proc_list *proc;
- int i;
- decl_list *l;
-
- f_print (fout, "\n\nvoid\n");
- pvname (program_name, vp->vers_num);
- if (Cflag)
- f_print (fout, "(char *host)\n{\n");
- else
- f_print (fout, "(host)\nchar *host;\n{\n");
- f_print (fout, "\tCLIENT *clnt;\n");
-
- i = 0;
- for (proc = vp->procs; proc != NULL; proc = proc->next)
- {
- f_print (fout, "\t");
- ++i;
- if (mtflag)
- {
- f_print (fout, "enum clnt_stat retval_%d;\n\t", i);
- ptype (proc->res_prefix, proc->res_type, 1);
- if (!streq (proc->res_type, "void"))
- f_print (fout, "result_%d;\n", i);
- else
- fprintf (fout, "*result_%d;\n", i);
- }
- else
- {
- ptype (proc->res_prefix, proc->res_type, 1);
- f_print (fout, " *result_%d;\n", i);
- }
- /* print out declarations for arguments */
- if (proc->arg_num < 2 && !newstyle)
- {
- f_print (fout, "\t");
- if (!streq (proc->args.decls->decl.type, "void"))
- {
- ptype (proc->args.decls->decl.prefix,
- proc->args.decls->decl.type, 1);
- f_print (fout, " ");
- }
- else
- f_print (fout, "char *"); /* cannot have "void" type */
- pvname (proc->proc_name, vp->vers_num);
- f_print (fout, "_arg;\n");
- }
- else if (!streq (proc->args.decls->decl.type, "void"))
- {
- for (l = proc->args.decls; l != NULL; l = l->next)
- {
- f_print (fout, "\t");
- ptype (l->decl.prefix, l->decl.type, 1);
- if (strcmp (l->decl.type, "string") == 1)
- f_print (fout, " ");
- pvname (proc->proc_name, vp->vers_num);
- f_print (fout, "_%s;\n", l->decl.name);
- }
- }
- }
-
- /* generate creation of client handle */
- f_print(fout, "\n#ifndef\tDEBUG\n");
- f_print (fout, "\tclnt = clnt_create (host, %s, %s, \"%s\");\n",
- program_name, vp->vers_name, tirpcflag ? "netpath" : "udp");
- f_print (fout, "\tif (clnt == NULL) {\n");
- f_print (fout, "\t\tclnt_pcreateerror (host);\n");
- f_print (fout, "\t\texit (1);\n\t}\n");
- f_print(fout, "#endif\t/* DEBUG */\n\n");
-
- /* generate calls to procedures */
- i = 0;
- for (proc = vp->procs; proc != NULL; proc = proc->next)
- {
- if (mtflag)
- f_print(fout, "\tretval_%d = ",++i);
- else
- f_print (fout, "\tresult_%d = ", ++i);
- pvname (proc->proc_name, vp->vers_num);
- if (proc->arg_num < 2 && !newstyle)
- {
- f_print (fout, "(");
- if (streq (proc->args.decls->decl.type, "void"))/* cast to void* */
- f_print (fout, "(void*)");
- f_print (fout, "&");
- pvname (proc->proc_name, vp->vers_num);
- if (mtflag)
- f_print(fout, "_arg, &result_%d, clnt);\n", i);
- else
- f_print (fout, "_arg, clnt);\n");
- }
- else if (streq (proc->args.decls->decl.type, "void"))
- {
- if (mtflag)
- f_print (fout, "(&result_%d, clnt);\n", i);
- else
- f_print (fout, "(clnt);\n");
- }
- else
- {
- f_print (fout, "(");
- for (l = proc->args.decls; l != NULL; l = l->next)
- {
- pvname (proc->proc_name, vp->vers_num);
- f_print (fout, "_%s, ", l->decl.name);
- }
- if (mtflag)
- f_print(fout, "&result_%d, ", i);
- f_print (fout, "clnt);\n");
- }
- if (mtflag)
- {
- f_print(fout, "\tif (retval_%d != RPC_SUCCESS) {\n", i);
- }
- else
- {
- f_print(fout, "\tif (result_%d == (", i);
- ptype(proc->res_prefix, proc->res_type, 1);
- f_print(fout, "*) NULL) {\n");
- }
- f_print(fout, "\t\tclnt_perror (clnt, \"call failed\");\n");
- f_print(fout, "\t}\n");
- }
-
- f_print (fout, "#ifndef\tDEBUG\n");
- f_print (fout, "\tclnt_destroy (clnt);\n");
- f_print (fout, "#endif\t /* DEBUG */\n");
- f_print (fout, "}\n");
-}
-
-static void
-write_sample_server (definition * def)
-{
- version_list *vp;
- proc_list *proc;
-
- for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
- {
- for (proc = vp->procs; proc != NULL; proc = proc->next)
- {
- f_print (fout, "\n");
- if (!mtflag)
- {
- return_type (proc);
- f_print (fout, "*\n");
- }
- else
- f_print (fout, "bool_t\n");
- if (Cflag || mtflag)
- pvname_svc (proc->proc_name, vp->vers_num);
- else
- pvname(proc->proc_name, vp->vers_num);
- printarglist(proc, "result", RQSTP, "struct svc_req *");
- f_print(fout, "{\n");
- if (!mtflag)
- {
- f_print(fout, "\tstatic ");
- if(!streq(proc->res_type, "void"))
- return_type(proc);
- else
- f_print(fout, "char *");
- /* cannot have void type */
- /* f_print(fout, " result;\n", proc->res_type); */
- f_print(fout, " result;\n");
- }
- else
- f_print(fout, "\tbool_t retval;\n");
- fprintf (fout, "\n\t/*\n\t * insert server code here\n\t */\n\n");
-
- if (!mtflag)
- {
- if (!streq(proc->res_type, "void"))
- f_print(fout, "\treturn &result;\n}\n");
- else /* cast back to void * */
- f_print(fout, "\treturn (void *) &result;\n}\n");
- }
- else
- f_print(fout, "\treturn retval;\n}\n");
- }
-
- /* put in sample freeing routine */
- if (mtflag)
- {
- f_print(fout, "\nint\n");
- pvname(def->def_name, vp->vers_num);
- if (Cflag)
- f_print(fout,"_freeresult (SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result)\n");
- else
- {
- f_print(fout,"_freeresult (transp, xdr_result, result)\n");
- f_print(fout,"\tSVCXPRT *transp;\n");
- f_print(fout,"\txdrproc_t xdr_result;\n");
- f_print(fout,"\tcaddr_t result;\n");
- }
- f_print(fout, "{\n");
- f_print(fout, "\txdr_free (xdr_result, result);\n");
- f_print(fout,
- "\n\t/*\n\t * Insert additional freeing code here, if needed\n\t */\n");
- f_print(fout, "\n\treturn 1;\n}\n");
- }
- }
-}
-
-
-
-static void
-return_type (proc_list * plist)
-{
- ptype (plist->res_prefix, plist->res_type, 1);
-}
-
-void
-add_sample_msg (void)
-{
- f_print (fout, "/*\n");
- f_print (fout, " * This is sample code generated by rpcgen.\n");
- f_print (fout, " * These are only templates and you can use them\n");
- f_print (fout, " * as a guideline for developing your own functions.\n");
- f_print (fout, " */\n\n");
-}
-
-void
-write_sample_clnt_main (void)
-{
- list *l;
- definition *def;
- version_list *vp;
-
- f_print (fout, "\n\n");
- if (Cflag)
- f_print (fout, "int\nmain (int argc, char *argv[])\n{\n");
- else
- f_print (fout, "int\nmain (argc, argv)\nint argc;\nchar *argv[];\n{\n");
-
- f_print (fout, "\tchar *host;");
- f_print (fout, "\n\n\tif (argc < 2) {");
- f_print (fout, "\n\t\tprintf (\"usage: %%s server_host\\n\", argv[0]);\n");
- f_print (fout, "\t\texit (1);\n\t}");
- f_print (fout, "\n\thost = argv[1];\n");
-
- for (l = defined; l != NULL; l = l->next)
- {
- def = l->val;
- if (def->def_kind != DEF_PROGRAM)
- {
- continue;
- }
- for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
- {
- f_print (fout, "\t");
- pvname (def->def_name, vp->vers_num);
- f_print (fout, " (host);\n");
- }
- }
- f_print (fout, "exit (0);\n}\n");
-}
deleted file mode 100644
@@ -1,544 +0,0 @@
-/*
- * From: @(#)rpc_scan.c 1.11 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_scan.c, Scanner for the RPC protocol compiler
- * Copyright (C) 1987, Sun Microsystems, Inc.
- */
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <libintl.h>
-#include "rpc_scan.h"
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-#define startcomment(where) (where[0] == '/' && where[1] == '*')
-#define endcomment(where) (where[-1] == '*' && where[0] == '/')
-
-static int pushed = 0; /* is a token pushed */
-static token lasttok; /* last token, if pushed */
-
-static void unget_token (token * tokp);
-static void findstrconst (const char **str, const char **val);
-static void findchrconst (const char **str, const char **val);
-static void findconst (const char **str, const char **val);
-static void findkind (const char **mark, token * tokp);
-static int cppline (const char *line);
-static int directive (const char *line);
-static void printdirective (const char *line);
-static void docppline (const char *line, int *lineno, const char **fname);
-
-/*
- * scan expecting 1 given token
- */
-void
-scan (tok_kind expect, token * tokp)
-{
- get_token (tokp);
- if (tokp->kind != expect)
- expected1 (expect);
-}
-
-/*
- * scan expecting any of the 2 given tokens
- */
-void
-scan2 (tok_kind expect1, tok_kind expect2, token * tokp)
-{
- get_token (tokp);
- if (tokp->kind != expect1 && tokp->kind != expect2)
- {
- expected2 (expect1, expect2);
- }
-}
-
-/*
- * scan expecting any of the 3 given token
- */
-void
-scan3 (tok_kind expect1, tok_kind expect2, tok_kind expect3, token * tokp)
-{
- get_token (tokp);
- if (tokp->kind != expect1 && tokp->kind != expect2
- && tokp->kind != expect3)
- {
- expected3 (expect1, expect2, expect3);
- }
-}
-
-/*
- * scan expecting a constant, possibly symbolic
- */
-void
-scan_num (token *tokp)
-{
- get_token (tokp);
- switch (tokp->kind)
- {
- case TOK_IDENT:
- break;
- default:
- error (_("constant or identifier expected"));
- }
-}
-
-/*
- * Peek at the next token
- */
-void
-peek (token *tokp)
-{
- get_token (tokp);
- unget_token (tokp);
-}
-
-/*
- * Peek at the next token and scan it if it matches what you expect
- */
-int
-peekscan (tok_kind expect, token *tokp)
-{
- peek (tokp);
- if (tokp->kind == expect)
- {
- get_token (tokp);
- return 1;
- }
- return 0;
-}
-
-/*
- * Get the next token, printing out any directive that are encountered.
- */
-void
-get_token (token *tokp)
-{
- int commenting;
-
- if (pushed)
- {
- pushed = 0;
- *tokp = lasttok;
- return;
- }
- commenting = 0;
- for (;;)
- {
- if (*where == 0)
- {
- for (;;)
- {
- if (!fgets (curline, MAXLINESIZE, fin))
- {
- tokp->kind = TOK_EOF;
- *curline = 0;
- where = curline;
- return;
- }
- linenum++;
- if (commenting)
- {
- break;
- }
- else if (cppline (curline))
- {
- docppline (curline, &linenum,
- &infilename);
- }
- else if (directive (curline))
- {
- printdirective (curline);
- }
- else
- {
- break;
- }
- }
- where = curline;
- }
- else if (isspace (*where))
- {
- while (isspace (*where))
- {
- where++; /* eat */
- }
- }
- else if (commenting)
- {
- for (where++; *where; where++)
- {
- if (endcomment (where))
- {
- where++;
- commenting--;
- break;
- }
- }
- }
- else if (startcomment (where))
- {
- where += 2;
- commenting++;
- }
- else
- {
- break;
- }
- }
-
- /*
- * 'where' is not whitespace, comment or directive Must be a token!
- */
- switch (*where)
- {
- case ':':
- tokp->kind = TOK_COLON;
- where++;
- break;
- case ';':
- tokp->kind = TOK_SEMICOLON;
- where++;
- break;
- case ',':
- tokp->kind = TOK_COMMA;
- where++;
- break;
- case '=':
- tokp->kind = TOK_EQUAL;
- where++;
- break;
- case '*':
- tokp->kind = TOK_STAR;
- where++;
- break;
- case '[':
- tokp->kind = TOK_LBRACKET;
- where++;
- break;
- case ']':
- tokp->kind = TOK_RBRACKET;
- where++;
- break;
- case '{':
- tokp->kind = TOK_LBRACE;
- where++;
- break;
- case '}':
- tokp->kind = TOK_RBRACE;
- where++;
- break;
- case '(':
- tokp->kind = TOK_LPAREN;
- where++;
- break;
- case ')':
- tokp->kind = TOK_RPAREN;
- where++;
- break;
- case '<':
- tokp->kind = TOK_LANGLE;
- where++;
- break;
- case '>':
- tokp->kind = TOK_RANGLE;
- where++;
- break;
-
- case '"':
- tokp->kind = TOK_STRCONST;
- findstrconst (&where, &tokp->str);
- break;
- case '\'':
- tokp->kind = TOK_CHARCONST;
- findchrconst (&where, &tokp->str);
- break;
-
- case '-':
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- tokp->kind = TOK_IDENT;
- findconst (&where, &tokp->str);
- break;
-
- default:
- if (!(isalpha (*where) || *where == '_'))
- {
- char buf[100];
- char *p;
-
- s_print (buf, _("illegal character in file: "));
- p = buf + strlen (buf);
- if (isprint (*where))
- {
- s_print (p, "%c", *where);
- }
- else
- {
- s_print (p, "%d", *where);
- }
- error (buf);
- }
- findkind (&where, tokp);
- break;
- }
-}
-
-static void
-unget_token (token * tokp)
-{
- lasttok = *tokp;
- pushed = 1;
-}
-
-static void
-findstrconst (const char **str, const char **val)
-{
- const char *p;
- char *tmp;
- int size;
-
- p = *str;
- do
- {
- p++;
- }
- while (*p && *p != '"');
- if (*p == 0)
- {
- error (_("unterminated string constant"));
- }
- p++;
- size = p - *str;
- tmp = alloc (size + 1);
- strncpy (tmp, *str, size);
- tmp[size] = 0;
- *val = tmp;
- *str = p;
-}
-
-static void
-findchrconst (const char **str, const char **val)
-{
- const char *p;
- char *tmp;
- int size;
-
- p = *str;
- do
- {
- p++;
- }
- while (*p && *p != '\'');
- if (*p == 0)
- {
- error (_("unterminated string constant"));
- }
- p++;
- size = p - *str;
- if (size != 3)
- {
- error (_("empty char string"));
- }
- tmp = alloc (size + 1);
- strncpy (tmp, *str, size);
- tmp[size] = 0;
- *val = tmp;
- *str = p;
-}
-
-static void
-findconst (const char **str, const char **val)
-{
- const char *p;
- char *tmp;
- int size;
-
- p = *str;
- if (*p == '0' && *(p + 1) == 'x')
- {
- p++;
- do
- {
- p++;
- }
- while (isxdigit (*p));
- }
- else
- {
- do
- {
- p++;
- }
- while (isdigit (*p));
- }
- size = p - *str;
- tmp = alloc (size + 1);
- strncpy (tmp, *str, size);
- tmp[size] = 0;
- *val = tmp;
- *str = p;
-}
-
-static const token symbols[] =
-{
- {TOK_CONST, "const"},
- {TOK_UNION, "union"},
- {TOK_SWITCH, "switch"},
- {TOK_CASE, "case"},
- {TOK_DEFAULT, "default"},
- {TOK_STRUCT, "struct"},
- {TOK_TYPEDEF, "typedef"},
- {TOK_ENUM, "enum"},
- {TOK_OPAQUE, "opaque"},
- {TOK_BOOL, "bool"},
- {TOK_VOID, "void"},
- {TOK_CHAR, "char"},
- {TOK_INT, "int"},
- {TOK_UNSIGNED, "unsigned"},
- {TOK_SHORT, "short"},
- {TOK_LONG, "long"},
- {TOK_HYPER, "hyper"},
- {TOK_FLOAT, "float"},
- {TOK_DOUBLE, "double"},
- {TOK_STRING, "string"},
- {TOK_PROGRAM, "program"},
- {TOK_VERSION, "version"},
- {TOK_EOF, "??????"},
-};
-
-static void
-findkind (const char **mark, token *tokp)
-{
- int len;
- const token *s;
- const char *str;
- char *tmp;
-
- str = *mark;
- for (s = symbols; s->kind != TOK_EOF; s++)
- {
- len = strlen (s->str);
- if (strncmp (str, s->str, len) == 0)
- {
- if (!isalnum (str[len]) && str[len] != '_')
- {
- tokp->kind = s->kind;
- tokp->str = s->str;
- *mark = str + len;
- return;
- }
- }
- }
- tokp->kind = TOK_IDENT;
- for (len = 0; isalnum (str[len]) || str[len] == '_'; len++);
- tmp = alloc (len + 1);
- strncpy (tmp, str, len);
- tmp[len] = 0;
- tokp->str = tmp;
- *mark = str + len;
-}
-
-static int
-cppline (const char *line)
-{
- return line == curline && *line == '#';
-}
-
-static int
-directive (const char *line)
-{
- return line == curline && *line == '%';
-}
-
-static void
-printdirective (const char *line)
-{
- f_print (fout, "%s", line + 1);
-}
-
-static void
-docppline (const char *line, int *lineno, const char **fname)
-{
- char *file;
- int num;
- char *p;
-
- line++;
- while (isspace (*line))
- {
- line++;
- }
- num = atoi (line);
- while (isdigit (*line))
- {
- line++;
- }
- while (isspace (*line))
- {
- line++;
- }
- if (*line != '"')
- {
- error (_("preprocessor error"));
- }
- line++;
- p = file = alloc (strlen (line) + 1);
- while (*line && *line != '"')
- {
- *p++ = *line++;
- }
- if (*line == 0)
- {
- error (_("preprocessor error"));
- }
- *p = 0;
- if (*file == 0)
- {
- free (file);
- *fname = NULL;
- }
- else
- {
- *fname = file;
- }
- *lineno = num - 1;
-}
deleted file mode 100644
@@ -1,104 +0,0 @@
-/* @(#)rpc_scan.h 1.3 90/08/29 */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * rpc_scan.h, Definitions for the RPCL scanner
- */
-
-/*
- * kinds of tokens
- */
-enum tok_kind {
- TOK_IDENT,
- TOK_CHARCONST,
- TOK_STRCONST,
- TOK_LPAREN,
- TOK_RPAREN,
- TOK_LBRACE,
- TOK_RBRACE,
- TOK_LBRACKET,
- TOK_RBRACKET,
- TOK_LANGLE,
- TOK_RANGLE,
- TOK_STAR,
- TOK_COMMA,
- TOK_EQUAL,
- TOK_COLON,
- TOK_SEMICOLON,
- TOK_CONST,
- TOK_STRUCT,
- TOK_UNION,
- TOK_SWITCH,
- TOK_CASE,
- TOK_DEFAULT,
- TOK_ENUM,
- TOK_TYPEDEF,
- TOK_INT,
- TOK_SHORT,
- TOK_LONG,
- TOK_HYPER,
- TOK_UNSIGNED,
- TOK_FLOAT,
- TOK_DOUBLE,
- TOK_OPAQUE,
- TOK_CHAR,
- TOK_STRING,
- TOK_BOOL,
- TOK_VOID,
- TOK_PROGRAM,
- TOK_VERSION,
- TOK_EOF
-};
-typedef enum tok_kind tok_kind;
-
-/*
- * a token
- */
-struct token {
- tok_kind kind;
- const char *str;
-};
-typedef struct token token;
-
-
-/*
- * routine interface
- */
-void scan(tok_kind expect, token *tokp);
-void scan2(tok_kind expect1, tok_kind expect2, token *tokp);
-void scan3(tok_kind expect1, tok_kind expect2, tok_kind expect3, token *tokp);
-void scan_num(token *tokp);
-void peek(token *tokp);
-int peekscan(tok_kind expect, token *tokp);
-void get_token(token *tokp);
-void expected1(tok_kind exp1) __attribute__ ((noreturn));
-void expected2(tok_kind exp1, tok_kind exp2) __attribute__ ((noreturn));
-void expected3(tok_kind exp1, tok_kind exp2, tok_kind exp3)
- __attribute__ ((noreturn));
deleted file mode 100644
@@ -1,1093 +0,0 @@
-/*
- * From: @(#)rpc_svcout.c 1.29 89/03/30
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_svcout.c, Server-skeleton outputter for the RPC protocol compiler
- */
-#include <stdio.h>
-#include <string.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-static const char RQSTP[] = "rqstp";
-static const char TRANSP[] = "transp";
-static const char ARG[] = "argument";
-static const char RESULT[] = "result";
-static const char ROUTINE[] = "local";
-static char RETVAL[] = "retval";
-
-char _errbuf[256]; /* For all messages */
-
-static void internal_proctype (const proc_list * plist);
-static void p_xdrfunc (const char *rname, const char *typename);
-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 *arg);
-static void write_inetmost (const char *infile);
-static void print_return (const char *space);
-static void print_pmapunset (const char *space);
-static void print_err_message (const char *space);
-static void write_timeout_func (void);
-static void write_pm_most (const char *infile, int netflag);
-static void write_rpc_svc_fg (const char *infile, const char *sp);
-static void open_log_file (const char *infile, const char *sp);
-
-static void
-p_xdrfunc (const char *rname, const char *typename)
-{
- if (Cflag)
- f_print (fout, "\t\t_xdr_%s = (xdrproc_t) xdr_%s;\n", rname,
- stringfix (typename));
- else
- f_print (fout, "\t\t_xdr_%s = xdr_%s;\n", rname, stringfix (typename));
-}
-
-void
-internal_proctype (const proc_list * plist)
-{
- f_print (fout, "static ");
- ptype (plist->res_prefix, plist->res_type, 1);
- f_print (fout, "*");
-}
-
-
-/*
- * write most of the service, that is, everything but the registrations.
- */
-void
-write_most (const char *infile /* our name */ , int netflag, int nomain)
-{
- if (inetdflag || pmflag)
- {
- const char *var_type;
- /* WHY? */
- var_type = (nomain ? "extern" : "");
- f_print (fout, "%s int _rpcpmstart;", var_type);
- f_print (fout, "\t\t/* Started by a port monitor ? */\n");
- if (!tirpcflag)
- {
- f_print (fout, "%s int _rpcfdtype;", var_type);
- f_print (fout, "\t\t/* Whether Stream or Datagram ? */\n");
- }
- if (timerflag)
- {
-#if 0
- f_print (fout, "%s int _rpcsvcdirty;", var_type);
- f_print (fout, "\t/* Still serving ? */\n");
-#else
- f_print(fout, " /* States a server can be in wrt request */\n\n");
- f_print(fout, "#define\t_IDLE 0\n");
- f_print(fout, "#define\t_SERVED 1\n");
- f_print(fout, "#define\t_SERVING 2\n\n");
- f_print(fout, "static int _rpcsvcstate = _IDLE;");
- f_print(fout, "\t /* Set when a request is serviced */\n");
-
- if (mtflag)
- {
- f_print (fout, "mutex_t _svcstate_lock;");
- f_print (fout,
- "\t\t\t/* Mutex lock for variable_rpcsvcstate */\n");
- }
-#endif
- }
- write_svc_aux (nomain);
- }
- /* write out dispatcher and stubs */
- write_programs (nomain ? NULL : "static");
-
- if (nomain)
- return;
-
- if (Cflag)
- f_print (fout, "\nint\nmain (int argc, char **argv)\n");
- else
- {
- f_print (fout, "\nint\nmain (argc, argv)\n");
- f_print (fout, "\tint argc;\n");
- f_print (fout, "\tchar **argv;\n");
- }
- f_print (fout, "{\n");
- if (inetdflag)
- {
- write_inetmost (infile); /* Includes call to write_rpc_svc_fg() */
- }
- else
- {
- if (tirpcflag)
- {
- if (netflag)
- {
- f_print (fout, "\tregister SVCXPRT *%s;\n", TRANSP);
- f_print (fout, "\tstruct netconfig *nconf = NULL;\n");
- }
- f_print (fout, "\tpid_t pid;\n");
- f_print (fout, "\tint i;\n");
- f_print (fout, "\tchar mname[FMNAMESZ + 1];\n\n");
-
- if (mtflag & timerflag)
- f_print (fout,
- "\tmutex_init (&_svcstate_lock, USYNC_THREAD, NULL);\n");
-
- write_pm_most (infile, netflag);
- f_print (fout, "\telse {\n");
- write_rpc_svc_fg (infile, "\t\t");
- f_print (fout, "\t}\n");
- }
- else
- {
- f_print (fout, "\tregister SVCXPRT *%s;\n", TRANSP);
- f_print (fout, "\n");
- print_pmapunset ("\t");
- }
- }
-
- if (logflag && !inetdflag)
- {
- open_log_file (infile, "\t");
- }
-}
-
-/*
- * write a registration for the given transport
- */
-void
-write_netid_register (const char *transp)
-{
- list *l;
- definition *def;
- version_list *vp;
- const char *sp;
- char tmpbuf[32];
-
- sp = "";
- f_print (fout, "\n");
- f_print (fout, "%s\tnconf = getnetconfigent (\"%s\");\n", sp, transp);
- f_print (fout, "%s\tif (nconf == NULL) {\n", sp);
- (void) sprintf (_errbuf, "cannot find %s netid.", transp);
- sprintf (tmpbuf, "%s\t\t", sp);
- print_err_message (tmpbuf);
- f_print (fout, "%s\t\texit (1);\n", sp);
- f_print (fout, "%s\t}\n", sp);
- f_print (fout, "%s\t%s = svc_tli_create (RPC_ANYFD, nconf, 0, 0, 0);\n",
- sp, TRANSP /*, transp *//* ?!?... */ );
- f_print (fout, "%s\tif (%s == NULL) {\n", sp, TRANSP);
- sprintf (_errbuf, "cannot create %s service.", transp);
- print_err_message (tmpbuf);
- f_print (fout, "%s\t\texit (1);\n", sp);
- f_print (fout, "%s\t}\n", sp);
-
- for (l = defined; l != NULL; l = l->next)
- {
- def = (definition *) l->val;
- if (def->def_kind != DEF_PROGRAM)
- {
- continue;
- }
- for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
- {
- f_print (fout, "%s\t(void) rpcb_unset (%s, %s, nconf);\n",
- sp, def->def_name, vp->vers_name);
- f_print (fout, "%s\tif (!svc_reg (%s, %s, %s, ",
- sp, TRANSP, def->def_name, vp->vers_name);
- pvname (def->def_name, vp->vers_num);
- f_print (fout, ", nconf)) {\n");
- (void) sprintf (_errbuf, "unable to register (%s, %s, %s).",
- def->def_name, vp->vers_name, transp);
- print_err_message (tmpbuf);
- f_print (fout, "%s\t\texit (1);\n", sp);
- f_print (fout, "%s\t}\n", sp);
- }
- }
- f_print (fout, "%s\tfreenetconfigent (nconf);\n", sp);
-}
-
-/*
- * write a registration for the given transport for TLI
- */
-void
-write_nettype_register (const char *transp)
-{
- list *l;
- definition *def;
- version_list *vp;
-
- for (l = defined; l != NULL; l = l->next)
- {
- def = (definition *) l->val;
- if (def->def_kind != DEF_PROGRAM)
- {
- continue;
- }
- for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
- {
- f_print (fout, "\tif (!svc_create (");
- pvname (def->def_name, vp->vers_num);
- f_print (fout, ", %s, %s, \"%s\")) {\n ",
- def->def_name, vp->vers_name, transp);
- (void) sprintf (_errbuf,
- "unable to create (%s, %s) for %s.",
- def->def_name, vp->vers_name, transp);
- print_err_message ("\t\t");
- f_print (fout, "\t\texit (1);\n");
- f_print (fout, "\t}\n");
- }
- }
-}
-
-/*
- * write the rest of the service
- */
-void
-write_rest (void)
-{
- f_print (fout, "\n");
- if (inetdflag)
- {
- f_print (fout, "\tif (%s == (SVCXPRT *)NULL) {\n", TRANSP);
- (void) sprintf (_errbuf, "could not create a handle");
- print_err_message ("\t\t");
- f_print (fout, "\t\texit (1);\n");
- f_print (fout, "\t}\n");
- if (timerflag)
- {
- f_print (fout, "\tif (_rpcpmstart) {\n");
- f_print (fout,
- "\t\t(void) signal (SIGALRM, %s closedown);\n",
- Cflag ? "(SIG_PF)" : "(void(*)())");
- f_print (fout, "\t\t(void) alarm (_RPCSVC_CLOSEDOWN);\n");
- f_print (fout, "\t}\n");
- }
- }
- f_print (fout, "\tsvc_run ();\n");
- (void) sprintf (_errbuf, "svc_run returned");
- print_err_message ("\t");
- f_print (fout, "\texit (1);\n");
- f_print (fout, "\t/* NOTREACHED */\n");
- f_print (fout, "}\n");
-}
-
-void
-write_programs (const char *storage)
-{
- list *l;
- definition *def;
-
- /* write out stubs for procedure definitions */
- for (l = defined; l != NULL; l = l->next)
- {
- def = (definition *) l->val;
- if (def->def_kind == DEF_PROGRAM)
- {
- write_real_program (def);
- }
- }
-
- /* write out dispatcher for each program */
- for (l = defined; l != NULL; l = l->next)
- {
- def = (definition *) l->val;
- if (def->def_kind == DEF_PROGRAM)
- {
- write_program (def, storage);
- }
- }
-}
-
-/* write out definition of internal function (e.g. _printmsg_1(...))
- which calls server's defintion of actual function (e.g. printmsg_1(...)).
- Unpacks single user argument of printmsg_1 to call-by-value format
- expected by printmsg_1. */
-static void
-write_real_program (const definition * def)
-{
- version_list *vp;
- proc_list *proc;
- decl_list *l;
-
- if (!newstyle)
- return; /* not needed for old style */
- for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
- {
- for (proc = vp->procs; proc != NULL; proc = proc->next)
- {
- fprintf (fout, "\n");
- if (!mtflag)
- internal_proctype (proc);
- else
- f_print (fout, "int");
- f_print (fout, "\n_");
- pvname (proc->proc_name, vp->vers_num);
- if (Cflag)
- {
- f_print (fout, " (");
- /* arg name */
- if (proc->arg_num > 1)
- f_print (fout, "%s", proc->args.argname);
- else
- ptype (proc->args.decls->decl.prefix,
- proc->args.decls->decl.type, 0);
- if (mtflag)
- {
- f_print(fout, " *argp, void *%s, struct svc_req *%s)\n",
- RESULT, RQSTP);
- }
- else
- f_print (fout, " *argp, struct svc_req *%s)\n",
- RQSTP);
- }
- else
- {
- if (mtflag)
- f_print(fout, " (argp, %s, %s)\n", RESULT, RQSTP);
- else
- f_print (fout, " (argp, %s)\n", RQSTP);
- /* arg name */
- if (proc->arg_num > 1)
- f_print (fout, "\t%s *argp;\n", proc->args.argname);
- else
- {
- f_print (fout, "\t");
- ptype (proc->args.decls->decl.prefix,
- proc->args.decls->decl.type, 0);
- f_print (fout, " *argp;\n");
- }
- f_print (fout, " struct svc_req *%s;\n", RQSTP);
- }
-
- f_print (fout, "{\n");
- f_print (fout, "\treturn (");
- if (Cflag || mtflag)
- pvname_svc (proc->proc_name, vp->vers_num);
- else
- pvname (proc->proc_name, vp->vers_num);
- f_print (fout, "(");
- if (proc->arg_num < 2)
- { /* single argument */
- if (!streq (proc->args.decls->decl.type, "void"))
- f_print (fout, "*argp, "); /* non-void */
- }
- else
- {
- for (l = proc->args.decls; l != NULL; l = l->next)
- f_print (fout, "argp->%s, ", l->decl.name);
- }
- if (mtflag)
- f_print (fout, "%s, ", RESULT);
- f_print (fout, "%s));\n}\n", RQSTP);
- }
- }
-}
-
-static void
-write_program (const definition * def, const char *storage)
-{
- version_list *vp;
- proc_list *proc;
- int filled;
-
- for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
- {
- f_print (fout, "\n");
- if (storage != NULL)
- {
- f_print (fout, "%s ", storage);
- }
- f_print (fout, "void\n");
- pvname (def->def_name, vp->vers_num);
-
- if (Cflag)
- {
- f_print (fout, "(struct svc_req *%s, ", RQSTP);
- f_print (fout, "register SVCXPRT *%s)\n", TRANSP);
- }
- else
- {
- f_print (fout, "(%s, %s)\n", RQSTP, TRANSP);
- f_print (fout, " struct svc_req *%s;\n", RQSTP);
- f_print (fout, " register SVCXPRT *%s;\n", TRANSP);
- }
-
- f_print (fout, "{\n");
-
- filled = 0;
- f_print (fout, "\tunion {\n");
- for (proc = vp->procs; proc != NULL; proc = proc->next)
- {
- if (proc->arg_num < 2)
- { /* single argument */
- if (streq (proc->args.decls->decl.type,
- "void"))
- {
- continue;
- }
- filled = 1;
- f_print (fout, "\t\t");
- ptype (proc->args.decls->decl.prefix,
- proc->args.decls->decl.type, 0);
- pvname (proc->proc_name, vp->vers_num);
- f_print (fout, "_arg;\n");
-
- }
- else
- {
- filled = 1;
- f_print (fout, "\t\t%s", proc->args.argname);
- f_print (fout, " ");
- pvname (proc->proc_name, vp->vers_num);
- f_print (fout, "_arg;\n");
- }
- }
- if (!filled)
- {
- f_print (fout, "\t\tint fill;\n");
- }
- f_print (fout, "\t} %s;\n", ARG);
- if (mtflag)
- {
- f_print(fout, "\tunion {\n");
- for (proc = vp->procs; proc != NULL; proc = proc->next)
- if (!streq (proc->res_type, "void"))
- {
- f_print(fout, "\t\t");
- ptype(proc->res_prefix, proc->res_type, 0);
- pvname(proc->proc_name, vp->vers_num);
- f_print(fout, "_res;\n");
- }
- f_print(fout, "\t} %s;\n", RESULT);
- f_print(fout, "\tbool_t %s;\n", RETVAL);
-
- } else
- f_print (fout, "\tchar *%s;\n", RESULT);
-
- if (Cflag)
- {
- f_print (fout, "\txdrproc_t _xdr_%s, _xdr_%s;\n", ARG, RESULT);
- if (mtflag)
- f_print(fout,
- "\tbool_t (*%s)(char *, void *, struct svc_req *);\n",
- ROUTINE);
- else
- f_print (fout, "\tchar *(*%s)(char *, struct svc_req *);\n",
- ROUTINE);
- }
- else
- {
- f_print (fout, "\tbool_t (*_xdr_%s)(), (*_xdr_%s)();\n", ARG, RESULT);
- if (mtflag)
- f_print(fout, "\tbool_t (*%s)();\n", ROUTINE);
- else
- f_print (fout, "\tchar *(*%s)();\n", ROUTINE);
- }
- f_print (fout, "\n");
-
- if (timerflag)
-#if 0
- f_print (fout, "\t_rpcsvcdirty = 1;\n");
-#else
- {
- if (mtflag)
- f_print(fout, "\tmutex_lock(&_svcstate_lock);\n");
- f_print(fout, "\t_rpcsvcstate = _SERVING;\n");
- if (mtflag)
- f_print(fout, "\tmutex_unlock(&_svcstate_lock);\n");
- }
-#endif
-
- f_print (fout, "\tswitch (%s->rq_proc) {\n", RQSTP);
- if (!nullproc (vp->procs))
- {
- f_print (fout, "\tcase NULLPROC:\n");
- f_print (fout,
- "\t\t(void) svc_sendreply (%s, (xdrproc_t) xdr_void, (char *)NULL);\n",
- TRANSP);
- print_return ("\t\t");
- f_print (fout, "\n");
- }
- for (proc = vp->procs; proc != NULL; proc = proc->next)
- {
- f_print (fout, "\tcase %s:\n", proc->proc_name);
- if (proc->arg_num < 2)
- { /* single argument */
- p_xdrfunc (ARG, proc->args.decls->decl.type);
- }
- else
- {
- p_xdrfunc (ARG, proc->args.argname);
- }
- p_xdrfunc (RESULT, proc->res_type);
- if (Cflag)
- {
- if (mtflag)
- f_print(fout,
- "\t\t%s = (bool_t (*) (char *, void *, struct svc_req *))",
- ROUTINE);
- else
- f_print (fout,
- "\t\t%s = (char *(*)(char *, struct svc_req *)) ",
- ROUTINE);
- }
- else
- if (mtflag)
- f_print(fout, "\t\t%s = (bool_t (*)()) ", ROUTINE);
- else
- f_print (fout, "\t\t%s = (char *(*)()) ", ROUTINE);
-
- if (newstyle)
- { /* new style: calls internal routine */
- f_print (fout, "_");
- }
- if ((Cflag || mtflag) && !newstyle)
- pvname_svc (proc->proc_name, vp->vers_num);
- else
- pvname (proc->proc_name, vp->vers_num);
- f_print (fout, ";\n");
- f_print (fout, "\t\tbreak;\n\n");
- }
- f_print (fout, "\tdefault:\n");
- printerr ("noproc", TRANSP);
- print_return ("\t\t");
- f_print (fout, "\t}\n");
-
- f_print (fout, "\tmemset ((char *)&%s, 0, sizeof (%s));\n", ARG, ARG);
- printif ("getargs", TRANSP, ARG);
- printerr ("decode", TRANSP);
- print_return ("\t\t");
- f_print (fout, "\t}\n");
-
- if (!mtflag)
- {
- if (Cflag)
- f_print (fout, "\t%s = (*%s)((char *)&%s, %s);\n",
- RESULT, ROUTINE, ARG, RQSTP);
- else
- f_print (fout, "\t%s = (*%s)(&%s, %s);\n",
- RESULT, ROUTINE, ARG, RQSTP);
- }
- else
- if (Cflag)
- f_print(fout, "\t%s = (bool_t) (*%s)((char *)&%s, (void *)&%s, %s);\n",
- RETVAL, ROUTINE, ARG, RESULT, RQSTP);
- else
- f_print(fout, "\t%s = (bool_t) (*%s)(&%s, &%s, %s);\n",
- RETVAL, ROUTINE, ARG, RESULT, RQSTP);
- if (mtflag)
- f_print(fout,
- "\tif (%s > 0 && !svc_sendreply(%s, (xdrproc_t) _xdr_%s, (char *)&%s)) {\n",
- RETVAL, TRANSP, RESULT, RESULT);
- else
- f_print(fout,
- "\tif (%s != NULL && !svc_sendreply(%s, (xdrproc_t) _xdr_%s, %s)) {\n",
- RESULT, TRANSP, RESULT, RESULT);
-
- printerr ("systemerr", TRANSP);
- f_print (fout, "\t}\n");
-
- printif ("freeargs", TRANSP, ARG);
-
- sprintf (_errbuf, "unable to free arguments");
- print_err_message ("\t\t");
- f_print (fout, "\t\texit (1);\n");
- f_print (fout, "\t}\n");
- /* print out free routine */
- if (mtflag)
- {
- f_print(fout,"\tif (!");
- pvname(def->def_name, vp->vers_num);
- f_print(fout,"_freeresult (%s, _xdr_%s, (caddr_t) &%s))\n",
- TRANSP, RESULT, RESULT);
- (void) sprintf(_errbuf, "unable to free results");
- print_err_message("\t\t");
- f_print(fout, "\n");
- }
- print_return ("\t");
- f_print (fout, "}\n");
- }
-}
-
-static void
-printerr (const char *err, const char *transp)
-{
- f_print (fout, "\t\tsvcerr_%s (%s);\n", err, transp);
-}
-
-static void
-printif (const char *proc, const char *transp, const char *arg)
-{
- f_print (fout, "\tif (!svc_%s (%s, (xdrproc_t) _xdr_%s, (caddr_t) &%s)) {\n",
- proc, transp, arg, arg);
-}
-
-int
-nullproc (const proc_list * proc)
-{
- for (; proc != NULL; proc = proc->next)
- {
- if (streq (proc->proc_num, "0"))
- {
- return 1;
- }
- }
- return 0;
-}
-
-static void
-write_inetmost (const char *infile)
-{
- f_print (fout, "\tregister SVCXPRT *%s;\n", TRANSP);
- f_print (fout, "\tint sock;\n");
- f_print (fout, "\tint proto;\n");
- f_print (fout, "\tstruct sockaddr_in saddr;\n");
- f_print (fout, "\tint asize = sizeof (saddr);\n");
- f_print (fout, "\n");
- f_print (fout,
- "\tif (getsockname (0, (struct sockaddr *)&saddr, &asize) == 0) {\n");
- f_print (fout, "\t\tint ssize = sizeof (int);\n\n");
- f_print (fout, "\t\tif (saddr.sin_family != AF_INET)\n");
- f_print (fout, "\t\t\texit (1);\n");
- f_print (fout, "\t\tif (getsockopt (0, SOL_SOCKET, SO_TYPE,\n");
- f_print (fout, "\t\t\t\t(char *)&_rpcfdtype, &ssize) == -1)\n");
- f_print (fout, "\t\t\texit (1);\n");
- f_print (fout, "\t\tsock = 0;\n");
- f_print (fout, "\t\t_rpcpmstart = 1;\n");
- f_print (fout, "\t\tproto = 0;\n");
- open_log_file (infile, "\t\t");
- f_print (fout, "\t} else {\n");
- write_rpc_svc_fg (infile, "\t\t");
- f_print (fout, "\t\tsock = RPC_ANYSOCK;\n");
- print_pmapunset ("\t\t");
- f_print (fout, "\t}\n");
-}
-
-static void
-print_return (const char *space)
-{
- if (exitnow)
- f_print (fout, "%sexit (0);\n", space);
- else
- {
- if (timerflag)
- {
-#if 0
- f_print (fout, "%s_rpcsvcdirty = 0;\n", space);
-#else
- if (mtflag)
- f_print(fout, "%smutex_lock(&_svcstate_lock);\n", space);
- f_print(fout, "%s_rpcsvcstate = _SERVED;\n", space);
- if (mtflag)
- f_print(fout, "%smutex_unlock(&_svcstate_lock);\n", space);
-#endif
- }
- f_print (fout, "%sreturn;\n", space);
- }
-}
-
-static void
-print_pmapunset (const char *space)
-{
- list *l;
- definition *def;
- version_list *vp;
-
- for (l = defined; l != NULL; l = l->next)
- {
- def = (definition *) l->val;
- if (def->def_kind == DEF_PROGRAM)
- {
- for (vp = def->def.pr.versions; vp != NULL;
- vp = vp->next)
- {
- f_print (fout, "%spmap_unset (%s, %s);\n",
- space, def->def_name, vp->vers_name);
- }
- }
- }
-}
-
-static void
-print_err_message (const char *space)
-{
- if (logflag)
- f_print (fout, "%ssyslog (LOG_ERR, \"%%s\", \"%s\");\n", space, _errbuf);
- else if (inetdflag || pmflag)
- f_print (fout, "%s_msgout (\"%s\");\n", space, _errbuf);
- else
- f_print (fout, "%sfprintf (stderr, \"%%s\", \"%s\");\n", space, _errbuf);
-}
-
-/*
- * Write the server auxiliary function ( _msgout, timeout)
- */
-void
-write_svc_aux (int nomain)
-{
- if (!logflag)
- write_msg_out ();
- if (!nomain)
- write_timeout_func ();
-}
-
-/*
- * Write the _msgout function
- */
-
-void
-write_msg_out (void)
-{
- f_print (fout, "\n");
- f_print (fout, "static\n");
- if (!Cflag)
- {
- f_print (fout, "void _msgout (msg)\n");
- f_print (fout, "\tchar *msg;\n");
- }
- else
- {
- f_print (fout, "void _msgout (char* msg)\n");
- }
- f_print (fout, "{\n");
- f_print (fout, "#ifdef RPC_SVC_FG\n");
- if (inetdflag || pmflag)
- f_print (fout, "\tif (_rpcpmstart)\n");
- f_print (fout, "\t\tsyslog (LOG_ERR, \"%%s\", msg);\n");
- f_print (fout, "\telse\n");
- f_print (fout, "\t\tfprintf (stderr, \"%%s\\n\", msg);\n");
- f_print (fout, "#else\n");
- f_print (fout, "\tsyslog (LOG_ERR, \"%%s\", msg);\n");
- f_print (fout, "#endif\n");
- f_print (fout, "}\n");
-}
-
-/*
- * Write the timeout function
- */
-static void
-write_timeout_func (void)
-{
- if (!timerflag)
- return;
- f_print (fout, "\n");
- f_print (fout, "static void\n");
- if (Cflag)
- f_print (fout, "closedown (int sig)\n");
- else
- f_print (fout, "closedown (sig)\n\tint sig;\n");
- f_print (fout, "{\n");
-
-#if 0
- f_print (fout, "\t(void) signal (sig, %s closedown);\n",
- Cflag ? "(SIG_PF)" : "(void(*)())");
-#endif
- if (mtflag)
- f_print(fout, "\tmutex_lock(&_svcstate_lock);\n");
-#if 0
- f_print (fout, "\tif (_rpcsvcdirty == 0) {\n");
-#else
- f_print(fout, "\tif (_rpcsvcstate == _IDLE) {\n");
-#endif
- f_print (fout, "\t\textern fd_set svc_fdset;\n");
- f_print (fout, "\t\tstatic int size;\n");
- f_print (fout, "\t\tint i, openfd;\n");
- if (tirpcflag && pmflag)
- {
- f_print (fout, "\t\tstruct t_info tinfo;\n\n");
- f_print (fout, "\t\tif (!t_getinfo(0, &tinfo) && (tinfo.servtype == T_CLTS))\n");
- }
- else
- {
- f_print (fout, "\n\t\tif (_rpcfdtype == SOCK_DGRAM)\n");
- }
- f_print (fout, "\t\t\texit (0);\n");
- f_print (fout, "\t\tif (size == 0) {\n");
- if (tirpcflag)
- {
- f_print (fout, "\t\t\tstruct rlimit rl;\n\n");
- f_print (fout, "\t\t\trl.rlim_max = 0;\n");
- f_print (fout, "\t\t\tgetrlimit(RLIMIT_NOFILE, &rl);\n");
- f_print (fout, "\t\t\tif ((size = rl.rlim_max) == 0) {\n");
- if (mtflag)
- f_print(fout, "\t\t\t\tmutex_unlock(&_svcstate_lock);\n");
- f_print (fout, "\t\t\t\treturn;\n\t\t\t}\n");
- }
- else
- {
- f_print (fout, "\t\t\tsize = getdtablesize();\n");
- }
- f_print (fout, "\t\t}\n");
- f_print (fout, "\t\tfor (i = 0, openfd = 0; i < size && openfd < 2; i++)\n");
- f_print (fout, "\t\t\tif (FD_ISSET(i, &svc_fdset))\n");
- f_print (fout, "\t\t\t\topenfd++;\n");
- f_print (fout, "\t\tif (openfd <= 1)\n");
- f_print (fout, "\t\t\texit (0);\n");
- f_print (fout, "\t}\n");
- f_print(fout, "\tif (_rpcsvcstate == _SERVED)\n");
- f_print(fout, "\t\t_rpcsvcstate = _IDLE;\n\n");
- if (mtflag)
- f_print(fout, "\tmutex_unlock(&_svcstate_lock);\n");
- f_print(fout, "\t(void) signal(SIGALRM, %s closedown);\n",
- Cflag? "(SIG_PF)" : "(void(*)())");
- f_print (fout, "\talarm (_RPCSVC_CLOSEDOWN);\n");
- f_print (fout, "}\n");
-}
-
-/*
- * Write the most of port monitor support
- */
-static void
-write_pm_most (const char *infile, int netflag)
-{
- list *l;
- definition *def;
- version_list *vp;
-
- f_print (fout, "\tif (!ioctl(0, I_LOOK, mname) &&\n");
- f_print (fout, "\t\t(!strcmp(mname, \"sockmod\") ||");
- f_print (fout, " !strcmp(mname, \"timod\"))) {\n");
- f_print (fout, "\t\tchar *netid;\n");
- if (!netflag)
- { /* Not included by -n option */
- f_print (fout, "\t\tstruct netconfig *nconf = NULL;\n");
- f_print (fout, "\t\tSVCXPRT *%s;\n", TRANSP);
- }
- if (timerflag)
- f_print (fout, "\t\tint pmclose;\n");
-/* not necessary, defined in /usr/include/stdlib */
-/* f_print(fout, "\t\textern char *getenv();\n"); */
- f_print (fout, "\n");
- f_print (fout, "\t\t_rpcpmstart = 1;\n");
- if (logflag)
- open_log_file (infile, "\t\t");
- f_print (fout, "\t\tif ((netid = getenv(\"NLSPROVIDER\")) == NULL) {\n");
- sprintf (_errbuf, "cannot get transport name");
- print_err_message ("\t\t\t");
- f_print (fout, "\t\t} else if ((nconf = getnetconfigent(netid)) == NULL) {\n");
- sprintf (_errbuf, "cannot get transport info");
- print_err_message ("\t\t\t");
- f_print (fout, "\t\t}\n");
- /*
- * A kludgy support for inetd services. Inetd only works with
- * sockmod, and RPC works only with timod, hence all this jugglery
- */
- f_print (fout, "\t\tif (strcmp(mname, \"sockmod\") == 0) {\n");
- f_print (fout, "\t\t\tif (ioctl(0, I_POP, 0) || ioctl(0, I_PUSH, \"timod\")) {\n");
- sprintf (_errbuf, "could not get the right module");
- print_err_message ("\t\t\t\t");
- f_print (fout, "\t\t\t\texit(1);\n");
- f_print (fout, "\t\t\t}\n");
- f_print (fout, "\t\t}\n");
- if (timerflag)
- f_print (fout, "\t\tpmclose = (t_getstate(0) != T_DATAXFER);\n");
- f_print (fout, "\t\tif ((%s = svc_tli_create(0, nconf, NULL, 0, 0)) == NULL) {\n",
- TRANSP);
- sprintf (_errbuf, "cannot create server handle");
- print_err_message ("\t\t\t");
- f_print (fout, "\t\t\texit(1);\n");
- f_print (fout, "\t\t}\n");
- f_print (fout, "\t\tif (nconf)\n");
- f_print (fout, "\t\t\tfreenetconfigent(nconf);\n");
- for (l = defined; l != NULL; l = l->next)
- {
- def = (definition *) l->val;
- if (def->def_kind != DEF_PROGRAM)
- {
- continue;
- }
- for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
- {
- f_print (fout,
- "\t\tif (!svc_reg(%s, %s, %s, ",
- TRANSP, def->def_name, vp->vers_name);
- pvname (def->def_name, vp->vers_num);
- f_print (fout, ", 0)) {\n");
- (void) sprintf (_errbuf, "unable to register (%s, %s).",
- def->def_name, vp->vers_name);
- print_err_message ("\t\t\t");
- f_print (fout, "\t\t\texit(1);\n");
- f_print (fout, "\t\t}\n");
- }
- }
- if (timerflag)
- {
- f_print (fout, "\t\tif (pmclose) {\n");
- f_print (fout, "\t\t\t(void) signal(SIGALRM, %s closedown);\n",
- Cflag ? "(SIG_PF)" : "(void(*)())");
- f_print (fout, "\t\t\t(void) alarm(_RPCSVC_CLOSEDOWN);\n");
- f_print (fout, "\t\t}\n");
- }
- f_print (fout, "\t\tsvc_run();\n");
- f_print (fout, "\t\texit(1);\n");
- f_print (fout, "\t\t/* NOTREACHED */\n");
- f_print (fout, "\t}\n");
-}
-
-/*
- * Support for backgrounding the server if self started.
- */
-static void
-write_rpc_svc_fg (const char *infile, const char *sp)
-{
- f_print (fout, "#ifndef RPC_SVC_FG\n");
- f_print (fout, "%sint size;\n", sp);
- if (tirpcflag)
- f_print (fout, "%sstruct rlimit rl;\n", sp);
- if (inetdflag)
- f_print (fout, "%sint pid, i;\n\n", sp);
- f_print (fout, "%spid = fork();\n", sp);
- f_print (fout, "%sif (pid < 0) {\n", sp);
- f_print (fout, "%s\tperror(\"cannot fork\");\n", sp);
- f_print (fout, "%s\texit(1);\n", sp);
- f_print (fout, "%s}\n", sp);
- f_print (fout, "%sif (pid)\n", sp);
- f_print (fout, "%s\texit(0);\n", sp);
- /* get number of file descriptors */
- if (tirpcflag)
- {
- f_print (fout, "%srl.rlim_max = 0;\n", sp);
- f_print (fout, "%sgetrlimit(RLIMIT_NOFILE, &rl);\n", sp);
- f_print (fout, "%sif ((size = rl.rlim_max) == 0)\n", sp);
- f_print (fout, "%s\texit(1);\n", sp);
- }
- else
- {
- f_print (fout, "%ssize = getdtablesize();\n", sp);
- }
-
- f_print (fout, "%sfor (i = 0; i < size; i++)\n", sp);
- f_print (fout, "%s\t(void) close(i);\n", sp);
- /* Redirect stderr and stdout to console */
- f_print (fout, "%si = open(\"/dev/console\", 2);\n", sp);
- f_print (fout, "%s(void) dup2(i, 1);\n", sp);
- f_print (fout, "%s(void) dup2(i, 2);\n", sp);
- /* This removes control of the controlling terminal */
- if (tirpcflag)
- f_print (fout, "%ssetsid();\n", sp);
- else
- {
- f_print (fout, "%si = open(\"/dev/tty\", 2);\n", sp);
- f_print (fout, "%sif (i >= 0) {\n", sp);
- f_print (fout, "%s\t(void) ioctl(i, TIOCNOTTY, (char *)NULL);\n", sp);;
- f_print (fout, "%s\t(void) close(i);\n", sp);
- f_print (fout, "%s}\n", sp);
- }
- if (!logflag)
- open_log_file (infile, sp);
- f_print (fout, "#endif\n");
- if (logflag)
- open_log_file (infile, sp);
-}
-
-static void
-open_log_file (const char *infile, const char *sp)
-{
- char *s;
-
- s = strrchr (infile, '.');
- if (s)
- *s = '\0';
- f_print (fout, "%sopenlog(\"%s\", LOG_PID, LOG_DAEMON);\n", sp, infile);
- if (s)
- *s = '.';
-}
-
-/*
- * write a registration for the given transport for Inetd
- */
-void
-write_inetd_register (const char *transp)
-{
- list *l;
- definition *def;
- version_list *vp;
- const char *sp;
- int isudp;
- char tmpbuf[32];
-
- if (inetdflag)
- sp = "\t";
- else
- sp = "";
- if (streq (transp, "udp") || streq (transp, "udp6"))
- isudp = 1;
- else
- isudp = 0;
- f_print (fout, "\n");
- if (inetdflag)
- {
- f_print (fout, "\tif ((_rpcfdtype == 0) || (_rpcfdtype == %s)) {\n",
- isudp ? "SOCK_DGRAM" : "SOCK_STREAM");
- }
- f_print (fout, "%s\t%s = svc%s_create(%s",
- sp, TRANSP, transp, inetdflag ? "sock" : "RPC_ANYSOCK");
- if (!isudp)
- f_print (fout, ", 0, 0");
- f_print (fout, ");\n");
- f_print (fout, "%s\tif (%s == NULL) {\n", sp, TRANSP);
- (void) sprintf (_errbuf, "cannot create %s service.", transp);
- (void) sprintf (tmpbuf, "%s\t\t", sp);
- print_err_message (tmpbuf);
- f_print (fout, "%s\t\texit(1);\n", sp);
- f_print (fout, "%s\t}\n", sp);
-
- if (inetdflag)
- {
- f_print (fout, "%s\tif (!_rpcpmstart)\n\t", sp);
- f_print (fout, "%s\tproto = IPPROTO_%s;\n",
- sp, isudp ? "UDP" : "TCP");
- }
- for (l = defined; l != NULL; l = l->next)
- {
- def = (definition *) l->val;
- if (def->def_kind != DEF_PROGRAM)
- {
- continue;
- }
- for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
- {
- f_print (fout, "%s\tif (!svc_register(%s, %s, %s, ",
- sp, TRANSP, def->def_name, vp->vers_name);
- pvname (def->def_name, vp->vers_num);
- if (inetdflag)
- f_print (fout, ", proto)) {\n");
- else
- f_print (fout, ", IPPROTO_%s)) {\n",
- isudp ? "UDP" : "TCP");
- (void) sprintf (_errbuf, "unable to register (%s, %s, %s).",
- def->def_name, vp->vers_name, transp);
- print_err_message (tmpbuf);
- f_print (fout, "%s\t\texit(1);\n", sp);
- f_print (fout, "%s\t}\n", sp);
- }
- }
- if (inetdflag)
- f_print (fout, "\t}\n");
-}
deleted file mode 100644
@@ -1,178 +0,0 @@
-/*
- * From: @(#)rpc_tblout.c 1.4 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_tblout.c, Dispatch table outputter for the RPC protocol compiler
- */
-#include <stdio.h>
-#include <string.h>
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-#define TABSIZE 8
-#define TABCOUNT 5
-#define TABSTOP (TABSIZE*TABCOUNT)
-
-static const char tabstr[TABCOUNT + 1] = "\t\t\t\t\t";
-
-static const char tbl_hdr[] = "struct rpcgen_table %s_table[] = {\n";
-static const char tbl_end[] = "};\n";
-
-static const char null_entry[] = "\n\t(char *(*)())0,\n\
- \t(xdrproc_t) xdr_void,\t\t\t0,\n\
- \t(xdrproc_t) xdr_void,\t\t\t0,\n";
-
-
-static const char tbl_nproc[] = "int %s_nproc =\n\tsizeof(%s_table)/sizeof(%s_table[0]);\n\n";
-
-static void write_table (const definition * def);
-static void printit (const char *prefix, const char *type);
-
-void
-write_tables (void)
-{
- list *l;
- definition *def;
-
- f_print (fout, "\n");
- for (l = defined; l != NULL; l = l->next)
- {
- def = (definition *) l->val;
- if (def->def_kind == DEF_PROGRAM)
- {
- write_table (def);
- }
- }
-}
-
-static void
-write_table (const definition * def)
-{
- version_list *vp;
- proc_list *proc;
- int current;
- int expected;
- char progvers[100];
- int warning;
-
- for (vp = def->def.pr.versions; vp != NULL; vp = vp->next)
- {
- warning = 0;
- s_print (progvers, "%s_%s",
- locase (def->def_name), vp->vers_num);
- /* print the table header */
- f_print (fout, tbl_hdr, progvers);
-
- if (nullproc (vp->procs))
- {
- expected = 0;
- }
- else
- {
- expected = 1;
- f_print (fout, null_entry);
- }
- for (proc = vp->procs; proc != NULL; proc = proc->next)
- {
- current = atoi (proc->proc_num);
- if (current != expected++)
- {
- f_print (fout,
- "\n/*\n * WARNING: table out of order\n */\n");
- if (warning == 0)
- {
- f_print (stderr,
- "WARNING %s table is out of order\n",
- progvers);
- warning = 1;
- nonfatalerrors = 1;
- }
- expected = current + 1;
- }
- f_print (fout, "\n\t(char *(*)())RPCGEN_ACTION(");
-
- /* routine to invoke */
- if (Cflag && !newstyle)
- pvname_svc (proc->proc_name, vp->vers_num);
- else
- {
- if (newstyle)
- f_print (fout, "_"); /* calls internal func */
- pvname (proc->proc_name, vp->vers_num);
- }
- f_print (fout, "),\n");
-
- /* argument info */
- if (proc->arg_num > 1)
- printit ((char *) NULL, proc->args.argname);
- else
- /* do we have to do something special for newstyle */
- printit (proc->args.decls->decl.prefix,
- proc->args.decls->decl.type);
- /* result info */
- printit (proc->res_prefix, proc->res_type);
- }
-
- /* print the table trailer */
- f_print (fout, tbl_end);
- f_print (fout, tbl_nproc, progvers, progvers, progvers);
- }
-}
-
-static void
-printit (const char *prefix, const char *type)
-{
- int len;
- int tabs;
-
-
- len = fprintf (fout, "\txdr_%s,", stringfix (type));
- /* account for leading tab expansion */
- len += TABSIZE - 1;
- /* round up to tabs required */
- tabs = (TABSTOP - len + TABSIZE - 1) / TABSIZE;
- f_print (fout, "%s", &tabstr[TABCOUNT - tabs]);
-
- if (streq (type, "void"))
- {
- f_print (fout, "0");
- }
- else
- {
- f_print (fout, "sizeof ( ");
- /* XXX: should "follow" be 1 ??? */
- ptype (prefix, type, 0);
- f_print (fout, ")");
- }
- f_print (fout, ",\n");
-}
@@ -87,7 +87,7 @@ __rpc_thread_svc_fdset (void)
return &svc_fdset;
return &tvp->svc_fdset_s;
}
-libc_hidden_nolink_sunrpc (__rpc_thread_svc_fdset, GLIBC_2_2_3)
+libc_hidden_nolink (__rpc_thread_svc_fdset, GLIBC_2_2_3)
struct rpc_createerr *
__rpc_thread_createerr (void)
@@ -99,7 +99,7 @@ __rpc_thread_createerr (void)
return &rpc_createerr;
return &tvp->rpc_createerr_s;
}
-libc_hidden_nolink_sunrpc (__rpc_thread_createerr, GLIBC_2_2_3)
+libc_hidden_nolink (__rpc_thread_createerr, GLIBC_2_2_3)
struct pollfd **
__rpc_thread_svc_pollfd (void)
@@ -114,7 +114,7 @@ __rpc_thread_svc_pollfd (void)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (__rpc_thread_svc_pollfd)
#else
-libc_hidden_nolink_sunrpc (__rpc_thread_svc_pollfd, GLIBC_2_2_3)
+libc_hidden_nolink (__rpc_thread_svc_pollfd, GLIBC_2_2_3)
#endif
int *
@@ -130,5 +130,5 @@ __rpc_thread_svc_max_pollfd (void)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (__rpc_thread_svc_max_pollfd)
#else
-libc_hidden_nolink_sunrpc (__rpc_thread_svc_max_pollfd, GLIBC_2_2_3)
+libc_hidden_nolink (__rpc_thread_svc_max_pollfd, GLIBC_2_2_3)
#endif
deleted file mode 100644
@@ -1,525 +0,0 @@
-/*
- * From: @(#)rpc_util.c 1.11 89/02/22
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * rpc_util.c, Utility routines for the RPC protocol compiler
- */
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <unistd.h>
-#include "rpc_scan.h"
-#include "rpc_parse.h"
-#include "rpc_util.h"
-#include "proto.h"
-
-#define ARGEXT "argument"
-
-char curline[MAXLINESIZE]; /* current read line */
-const char *where = curline; /* current point in line */
-int linenum = 0; /* current line number */
-
-const char *infilename; /* input filename */
-
-#define NFILES 7
-const char *outfiles[NFILES]; /* output file names */
-int nfiles;
-
-FILE *fout; /* file pointer of current output */
-FILE *fin; /* file pointer of current input */
-
-list *defined; /* list of defined things */
-
-static int findit (const definition * def, const char *type);
-static const char *fixit (const char *type, const char *orig);
-static int typedefed (const definition * def, const char *type);
-static const char *toktostr (tok_kind kind);
-static void printbuf (void);
-static void printwhere (void);
-
-/*
- * Reinitialize the world
- */
-void
-reinitialize (void)
-{
- memset (curline, 0, MAXLINESIZE);
- where = curline;
- linenum = 0;
- defined = NULL;
-}
-
-/*
- * string equality
- */
-int
-streq (const char *a, const char *b)
-{
- return strcmp (a, b) == 0;
-}
-
-/*
- * find a value in a list
- */
-definition *
-findval (list *lst, const char *val,
- int (*cmp) (const definition *, const char *))
-{
-
- for (; lst != NULL; lst = lst->next)
- {
- if (cmp (lst->val, val))
- {
- return lst->val;
- }
- }
- return NULL;
-}
-
-/*
- * store a value in a list
- */
-void
-storeval (list **lstp, definition *val)
-{
- list **l;
- list *lst;
-
-
- for (l = lstp; *l != NULL; l = (list **) & (*l)->next);
- lst = ALLOC (list);
- lst->val = val;
- lst->next = NULL;
- *l = lst;
-}
-
-static int
-findit (const definition * def, const char *type)
-{
- return streq (def->def_name, type);
-}
-
-static const char *
-fixit (const char *type, const char *orig)
-{
- definition *def;
-
- def = findval (defined, type, findit);
- if (def == NULL || def->def_kind != DEF_TYPEDEF)
- {
- return orig;
- }
- switch (def->def.ty.rel)
- {
- case REL_VECTOR:
- if (streq (def->def.ty.old_type, "opaque"))
- return ("char");
- else
- return (def->def.ty.old_type);
- case REL_ALIAS:
- return (fixit (def->def.ty.old_type, orig));
- default:
- return orig;
- }
-}
-
-const char *
-fixtype (const char *type)
-{
- return fixit (type, type);
-}
-
-const char *
-stringfix (const char *type)
-{
- if (streq (type, "string"))
- {
- return "wrapstring";
- }
- else
- {
- return type;
- }
-}
-
-void
-ptype (const char *prefix, const char *type, int follow)
-{
- if (prefix != NULL)
- {
- if (streq (prefix, "enum"))
- {
- f_print (fout, "enum ");
- }
- else
- {
- f_print (fout, "struct ");
- }
- }
- if (streq (type, "bool"))
- {
- f_print (fout, "bool_t ");
- }
- else if (streq (type, "string"))
- {
- f_print (fout, "char *");
- }
- else
- {
- f_print (fout, "%s ", follow ? fixtype (type) : type);
- }
-}
-
-static int
-typedefed (const definition * def, const char *type)
-{
- if (def->def_kind != DEF_TYPEDEF || def->def.ty.old_prefix != NULL)
- {
- return 0;
- }
- else
- {
- return streq (def->def_name, type);
- }
-}
-
-int
-isvectordef (const char *type, relation rel)
-{
- definition *def;
-
- for (;;)
- {
- switch (rel)
- {
- case REL_VECTOR:
- return !streq (type, "string");
- case REL_ARRAY:
- return 0;
- case REL_POINTER:
- return 0;
- case REL_ALIAS:
- def = findval (defined, type, typedefed);
- if (def == NULL)
- {
- return 0;
- }
- type = def->def.ty.old_type;
- rel = def->def.ty.rel;
- }
- }
-}
-
-char *
-locase (const char *str)
-{
- char c;
- static char buf[100];
- char *p = buf;
-
- while ((c = *str++) != 0)
- {
- *p++ = (c >= 'A' && c <= 'Z') ? (c - 'A' + 'a') : c;
- }
- *p = 0;
- return buf;
-}
-
-void
-pvname_svc (const char *pname, const char *vnum)
-{
- f_print (fout, "%s_%s_svc", locase (pname), vnum);
-}
-
-void
-pvname (const char *pname, const char *vnum)
-{
- f_print (fout, "%s_%s", locase (pname), vnum);
-}
-
-/*
- * print a useful (?) error message, and then die
- */
-void
-error (const char *msg)
-{
- printwhere ();
- f_print (stderr, "%s, line %d: ", infilename, linenum);
- f_print (stderr, "%s\n", msg);
- crash ();
-}
-
-/*
- * Something went wrong, unlink any files that we may have created and then
- * die.
- */
-void
-crash (void)
-{
- int i;
-
- for (i = 0; i < nfiles; i++)
- {
- unlink (outfiles[i]);
- }
- exit (1);
-}
-
-void
-record_open (const char *file)
-{
- if (nfiles < NFILES)
- {
- outfiles[nfiles++] = file;
- }
- else
- {
- f_print (stderr, "too many files!\n");
- crash ();
- }
-}
-
-static char expectbuf[100];
-
-/*
- * error, token encountered was not the expected one
- */
-void
-expected1 (tok_kind exp1)
-{
- s_print (expectbuf, "expected '%s'",
- toktostr (exp1));
- error (expectbuf);
-}
-
-/*
- * error, token encountered was not one of two expected ones
- */
-void
-expected2 (tok_kind exp1, tok_kind exp2)
-{
- s_print (expectbuf, "expected '%s' or '%s'",
- toktostr (exp1),
- toktostr (exp2));
- error (expectbuf);
-}
-
-/*
- * error, token encountered was not one of 3 expected ones
- */
-void
-expected3 (tok_kind exp1, tok_kind exp2, tok_kind exp3)
-{
- s_print (expectbuf, "expected '%s', '%s' or '%s'",
- toktostr (exp1),
- toktostr (exp2),
- toktostr (exp3));
- error (expectbuf);
-}
-
-void
-tabify (FILE * f, int tab)
-{
- while (tab--)
- {
- (void) fputc ('\t', f);
- }
-}
-
-
-static const token tokstrings[] =
-{
- {TOK_IDENT, "identifier"},
- {TOK_CONST, "const"},
- {TOK_RPAREN, ")"},
- {TOK_LPAREN, "("},
- {TOK_RBRACE, "}"},
- {TOK_LBRACE, "{"},
- {TOK_LBRACKET, "["},
- {TOK_RBRACKET, "]"},
- {TOK_STAR, "*"},
- {TOK_COMMA, ","},
- {TOK_EQUAL, "="},
- {TOK_COLON, ":"},
- {TOK_SEMICOLON, ";"},
- {TOK_UNION, "union"},
- {TOK_STRUCT, "struct"},
- {TOK_SWITCH, "switch"},
- {TOK_CASE, "case"},
- {TOK_DEFAULT, "default"},
- {TOK_ENUM, "enum"},
- {TOK_TYPEDEF, "typedef"},
- {TOK_INT, "int"},
- {TOK_SHORT, "short"},
- {TOK_LONG, "long"},
- {TOK_UNSIGNED, "unsigned"},
- {TOK_DOUBLE, "double"},
- {TOK_FLOAT, "float"},
- {TOK_CHAR, "char"},
- {TOK_STRING, "string"},
- {TOK_OPAQUE, "opaque"},
- {TOK_BOOL, "bool"},
- {TOK_VOID, "void"},
- {TOK_PROGRAM, "program"},
- {TOK_VERSION, "version"},
- {TOK_EOF, "??????"}
-};
-
-static const char *
-toktostr (tok_kind kind)
-{
- const token *sp;
-
- for (sp = tokstrings; sp->kind != TOK_EOF && sp->kind != kind; sp++);
- return sp->str;
-}
-
-static void
-printbuf (void)
-{
- char c;
- int i;
- int cnt;
-
-#define TABSIZE 4
-
- for (i = 0; (c = curline[i]) != 0; i++)
- {
- if (c == '\t')
- {
- cnt = 8 - (i % TABSIZE);
- c = ' ';
- }
- else
- {
- cnt = 1;
- }
- while (cnt--)
- {
- (void) fputc (c, stderr);
- }
- }
-}
-
-static void
-printwhere (void)
-{
- int i;
- char c;
- int cnt;
-
- printbuf ();
- for (i = 0; i < where - curline; i++)
- {
- c = curline[i];
- if (c == '\t')
- {
- cnt = 8 - (i % TABSIZE);
- }
- else
- {
- cnt = 1;
- }
- while (cnt--)
- {
- (void) fputc ('^', stderr);
- }
- }
- (void) fputc ('\n', stderr);
-}
-
-char *
-make_argname (const char *pname, const char *vname)
-{
- char *name;
-
- name = malloc (strlen (pname) + strlen (vname) + strlen (ARGEXT) + 3);
- if (!name)
- {
- fprintf (stderr, "failed in malloc");
- exit (1);
- }
- sprintf (name, "%s_%s_%s", locase (pname), vname, ARGEXT);
- return name;
-}
-
-bas_type *typ_list_h;
-bas_type *typ_list_t;
-
-void
-add_type (int len, const char *type)
-{
- bas_type *ptr;
-
-
- if ((ptr = malloc (sizeof (bas_type))) == NULL)
- {
- fprintf (stderr, "failed in malloc");
- exit (1);
- }
-
- ptr->name = type;
- ptr->length = len;
- ptr->next = NULL;
- if (typ_list_t == NULL)
- {
-
- typ_list_t = ptr;
- typ_list_h = ptr;
- }
- else
- {
-
- typ_list_t->next = ptr;
- typ_list_t = ptr;
- }
-
-}
-
-
-bas_type *
-find_type (const char *type)
-{
- bas_type *ptr;
-
- ptr = typ_list_h;
-
-
- while (ptr != NULL)
- {
- if (strcmp (ptr->name, type) == 0)
- return ptr;
- else
- ptr = ptr->next;
- };
- return NULL;
-}
deleted file mode 100644
@@ -1,154 +0,0 @@
-/* @(#)rpc_util.h 1.5 90/08/29 */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * rpc_util.h, Useful definitions for the RPC protocol compiler
- */
-
-#include <stdlib.h>
-
-#define alloc(size) malloc((unsigned)(size))
-#define ALLOC(object) (object *) malloc(sizeof(object))
-
-#define s_print (void) sprintf
-#define f_print (void) fprintf
-
-struct list {
- definition *val;
- struct list *next;
-};
-typedef struct list list;
-
-struct xdrfunc {
- char *name;
- int pointerp;
- struct xdrfunc *next;
-};
-typedef struct xdrfunc xdrfunc;
-
-#define PUT 1
-#define GET 2
-
-/*
- * Global variables
- */
-#define MAXLINESIZE 1024
-extern char curline[MAXLINESIZE];
-extern const char *where;
-extern int linenum;
-
-extern const char *infilename;
-extern FILE *fout;
-extern FILE *fin;
-
-extern list *defined;
-
-extern bas_type *typ_list_h;
-extern bas_type *typ_list_t;
-extern xdrfunc *xdrfunc_head, *xdrfunc_tail;
-
-/*
- * All the option flags
- */
-extern int inetdflag;
-extern int pmflag;
-extern int tblflag;
-extern int logflag;
-extern int newstyle;
-extern int Cflag; /* C++ flag */
-extern int CCflag; /* C++ flag */
-extern int tirpcflag; /* flag for generating tirpc code */
-extern int inlineflag; /* if this is 0, then do not generate inline code */
-extern int mtflag;
-
-/*
- * Other flags related with inetd jumpstart.
- */
-extern int indefinitewait;
-extern int exitnow;
-extern int timerflag;
-
-extern int nonfatalerrors;
-
-/*
- * rpc_util routines
- */
-void storeval(list **lstp, definition *val);
-#define STOREVAL(list,item) storeval(list,item)
-
-definition *findval(list *lst, const char *val,
- int (*cmp)(const definition *, const char *));
-#define FINDVAL(list,item,finder) findval(list, item, finder)
-
-const char *fixtype(const char *type);
-const char *stringfix(const char *type);
-char *locase(const char *str);
-void pvname_svc(const char *pname, const char *vnum);
-void pvname(const char *pname, const char *vnum);
-void ptype(const char *prefix, const char *type, int follow);
-int isvectordef(const char *type, relation rel);
-int streq(const char *a, const char *b);
-void error(const char *msg);
-void tabify(FILE *f, int tab);
-void record_open(const char *file);
-bas_type *find_type(const char *type);
-
-
-/*
- * rpc_cout routines
- */
-void emit(definition *def);
-
-/*
- * rpc_hout routines
- */
-void print_datadef(definition *def);
-void print_funcdef(definition *def);
-
-/*
- * rpc_svcout routines
- */
-void write_most(const char *infile, int netflag, int nomain);
-void write_register(void);
-void write_rest(void);
-void write_programs(const char *storage);
-void write_svc_aux(int nomain);
-void write_inetd_register(const char *transp);
-void write_netid_register(const char *);
-void write_nettype_register(const char *);
-/*
- * rpc_clntout routines
- */
-void write_stubs(void);
-
-/*
- * rpc_tblout routines
- */
-void write_tables(void);
deleted file mode 100644
@@ -1,23 +0,0 @@
-/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#ifndef _RPCSVC_BOOTPARAM_H
-#define _RPCSVC_BOOTPARAM_H
-
-#include <rpcsvc/bootparam_prot.h>
-
-#endif /* _RPCSVC_BOOTPARAM_H */
deleted file mode 100644
@@ -1,97 +0,0 @@
-/* @(#)bootparam_prot.x 2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * RPC for bootparms service.
- * There are two procedures:
- * WHOAMI takes a net address and returns a client name and also a
- * likely net address for routing
- * GETFILE takes a client name and file identifier and returns the
- * server name, server net address and pathname for the file.
- * file identifiers typically include root, swap, pub and dump
- */
-
-#ifdef RPC_HDR
-%#include <rpc/types.h>
-%#include <sys/time.h>
-%#include <sys/errno.h>
-%#include <nfs/nfs.h>
-#endif
-
-const MAX_MACHINE_NAME = 255;
-const MAX_PATH_LEN = 1024;
-const MAX_FILEID = 32;
-const IP_ADDR_TYPE = 1;
-
-typedef string bp_machine_name_t<MAX_MACHINE_NAME>;
-typedef string bp_path_t<MAX_PATH_LEN>;
-typedef string bp_fileid_t<MAX_FILEID>;
-
-struct ip_addr_t {
- char net;
- char host;
- char lh;
- char impno;
-};
-
-union bp_address switch (int address_type) {
- case IP_ADDR_TYPE:
- ip_addr_t ip_addr;
-};
-
-struct bp_whoami_arg {
- bp_address client_address;
-};
-
-struct bp_whoami_res {
- bp_machine_name_t client_name;
- bp_machine_name_t domain_name;
- bp_address router_address;
-};
-
-struct bp_getfile_arg {
- bp_machine_name_t client_name;
- bp_fileid_t file_id;
-};
-
-struct bp_getfile_res {
- bp_machine_name_t server_name;
- bp_address server_address;
- bp_path_t server_path;
-};
-
-program BOOTPARAMPROG {
- version BOOTPARAMVERS {
- bp_whoami_res BOOTPARAMPROC_WHOAMI(bp_whoami_arg) = 1;
- bp_getfile_res BOOTPARAMPROC_GETFILE(bp_getfile_arg) = 2;
- } = 1;
-} = 100026;
deleted file mode 100644
@@ -1,283 +0,0 @@
-/*
- * Key server protocol definition
- * Copyright (c) 2010, Oracle America, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The keyserver is a public key storage/encryption/decryption service
- * The encryption method used is based on the Diffie-Hellman exponential
- * key exchange technology.
- *
- * The key server is local to each machine, akin to the portmapper.
- * Under TI-RPC, communication with the keyserver is through the
- * loopback transport.
- *
- * NOTE: This .x file generates the USER level headers for the keyserver.
- * the KERNEL level headers are created by hand as they kernel has special
- * requirements.
- */
-
-%#if 0
-%#pragma ident "@(#)key_prot.x 1.7 94/04/29 SMI"
-%#endif
-%
-%/* Copyright (c) 1990, 1991 Sun Microsystems, Inc. */
-%
-%/*
-% * Compiled from key_prot.x using rpcgen.
-% * DO NOT EDIT THIS FILE!
-% * This is NOT source code!
-% */
-
-/*
- * PROOT and MODULUS define the way the Diffie-Hellman key is generated.
- *
- * MODULUS should be chosen as a prime of the form: MODULUS == 2*p + 1,
- * where p is also prime.
- *
- * PROOT satisfies the following two conditions:
- * (1) (PROOT ** 2) % MODULUS != 1
- * (2) (PROOT ** p) % MODULUS != 1
- *
- */
-
-const PROOT = 3;
-const HEXMODULUS = "d4a0ba0250b6fd2ec626e7efd637df76c716e22d0944b88b";
-
-const HEXKEYBYTES = 48; /* HEXKEYBYTES == strlen(HEXMODULUS) */
-const KEYSIZE = 192; /* KEYSIZE == bit length of key */
-const KEYBYTES = 24; /* byte length of key */
-
-/*
- * The first 16 hex digits of the encrypted secret key are used as
- * a checksum in the database.
- */
-const KEYCHECKSUMSIZE = 16;
-
-/*
- * status of operation
- */
-enum keystatus {
- KEY_SUCCESS, /* no problems */
- KEY_NOSECRET, /* no secret key stored */
- KEY_UNKNOWN, /* unknown netname */
- KEY_SYSTEMERR /* system error (out of memory, encryption failure) */
-};
-
-typedef opaque keybuf[HEXKEYBYTES]; /* store key in hex */
-
-typedef string netnamestr<MAXNETNAMELEN>;
-
-/*
- * Argument to ENCRYPT or DECRYPT
- */
-struct cryptkeyarg {
- netnamestr remotename;
- des_block deskey;
-};
-
-/*
- * Argument to ENCRYPT_PK or DECRYPT_PK
- */
-struct cryptkeyarg2 {
- netnamestr remotename;
- netobj remotekey; /* Contains a length up to 1024 bytes */
- des_block deskey;
-};
-
-
-/*
- * Result of ENCRYPT, DECRYPT, ENCRYPT_PK, and DECRYPT_PK
- */
-union cryptkeyres switch (keystatus status) {
-case KEY_SUCCESS:
- des_block deskey;
-default:
- void;
-};
-
-const MAXGIDS = 16; /* max number of gids in gid list */
-
-/*
- * Unix credential
- */
-struct unixcred {
- u_int uid;
- u_int gid;
- u_int gids<MAXGIDS>;
-};
-
-/*
- * Result returned from GETCRED
- */
-union getcredres switch (keystatus status) {
-case KEY_SUCCESS:
- unixcred cred;
-default:
- void;
-};
-/*
- * key_netstarg;
- */
-
-struct key_netstarg {
- keybuf st_priv_key;
- keybuf st_pub_key;
- netnamestr st_netname;
-};
-
-union key_netstres switch (keystatus status){
-case KEY_SUCCESS:
- key_netstarg knet;
-default:
- void;
-};
-
-#ifdef RPC_HDR
-%
-%#ifndef opaque
-%#define opaque char
-%#endif
-%
-#endif
-program KEY_PROG {
- version KEY_VERS {
-
- /*
- * This is my secret key.
- * Store it for me.
- */
- keystatus
- KEY_SET(keybuf) = 1;
-
- /*
- * I want to talk to X.
- * Encrypt a conversation key for me.
- */
- cryptkeyres
- KEY_ENCRYPT(cryptkeyarg) = 2;
-
- /*
- * X just sent me a message.
- * Decrypt the conversation key for me.
- */
- cryptkeyres
- KEY_DECRYPT(cryptkeyarg) = 3;
-
- /*
- * Generate a secure conversation key for me
- */
- des_block
- KEY_GEN(void) = 4;
-
- /*
- * Get me the uid, gid and group-access-list associated
- * with this netname (for kernel which cannot use NIS)
- */
- getcredres
- KEY_GETCRED(netnamestr) = 5;
- } = 1;
- version KEY_VERS2 {
-
- /*
- * #######
- * Procedures 1-5 are identical to version 1
- * #######
- */
-
- /*
- * This is my secret key.
- * Store it for me.
- */
- keystatus
- KEY_SET(keybuf) = 1;
-
- /*
- * I want to talk to X.
- * Encrypt a conversation key for me.
- */
- cryptkeyres
- KEY_ENCRYPT(cryptkeyarg) = 2;
-
- /*
- * X just sent me a message.
- * Decrypt the conversation key for me.
- */
- cryptkeyres
- KEY_DECRYPT(cryptkeyarg) = 3;
-
- /*
- * Generate a secure conversation key for me
- */
- des_block
- KEY_GEN(void) = 4;
-
- /*
- * Get me the uid, gid and group-access-list associated
- * with this netname (for kernel which cannot use NIS)
- */
- getcredres
- KEY_GETCRED(netnamestr) = 5;
-
- /*
- * I want to talk to X. and I know X's public key
- * Encrypt a conversation key for me.
- */
- cryptkeyres
- KEY_ENCRYPT_PK(cryptkeyarg2) = 6;
-
- /*
- * X just sent me a message. and I know X's public key
- * Decrypt the conversation key for me.
- */
- cryptkeyres
- KEY_DECRYPT_PK(cryptkeyarg2) = 7;
-
- /*
- * Store my public key, netname and private key.
- */
- keystatus
- KEY_NET_PUT(key_netstarg) = 8;
-
- /*
- * Retrieve my public key, netname and private key.
- */
- key_netstres
- KEY_NET_GET(void) = 9;
-
- /*
- * Return me the conversation key that is constructed
- * from my secret key and this publickey.
- */
-
- cryptkeyres
- KEY_GET_CONV(keybuf) = 10;
-
-
- } = 2;
-} = 100029;
deleted file mode 100644
@@ -1,130 +0,0 @@
-/* @(#)klm_prot.x 2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Kernel/lock manager protocol definition
- * Copyright (c) 2010, Oracle America, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * protocol used between the UNIX kernel (the "client") and the
- * local lock manager. The local lock manager is a deamon running
- * above the kernel.
- */
-
-const LM_MAXSTRLEN = 1024;
-
-/*
- * lock manager status returns
- */
-enum klm_stats {
- klm_granted = 0, /* lock is granted */
- klm_denied = 1, /* lock is denied */
- klm_denied_nolocks = 2, /* no lock entry available */
- klm_working = 3 /* lock is being processed */
-};
-
-/*
- * lock manager lock identifier
- */
-struct klm_lock {
- string server_name<LM_MAXSTRLEN>;
- netobj fh; /* a counted file handle */
- int pid; /* holder of the lock */
- unsigned l_offset; /* beginning offset of the lock */
- unsigned l_len; /* byte length of the lock;
- * zero means through end of file */
-};
-
-/*
- * lock holder identifier
- */
-struct klm_holder {
- bool exclusive; /* FALSE if shared lock */
- int svid; /* holder of the lock (pid) */
- unsigned l_offset; /* beginning offset of the lock */
- unsigned l_len; /* byte length of the lock;
- * zero means through end of file */
-};
-
-/*
- * reply to KLM_LOCK / KLM_UNLOCK / KLM_CANCEL
- */
-struct klm_stat {
- klm_stats stat;
-};
-
-/*
- * reply to a KLM_TEST call
- */
-union klm_testrply switch (klm_stats stat) {
- case klm_denied:
- struct klm_holder holder;
- default: /* All other cases return no arguments */
- void;
-};
-
-
-/*
- * arguments to KLM_LOCK
- */
-struct klm_lockargs {
- bool block;
- bool exclusive;
- struct klm_lock alock;
-};
-
-/*
- * arguments to KLM_TEST
- */
-struct klm_testargs {
- bool exclusive;
- struct klm_lock alock;
-};
-
-/*
- * arguments to KLM_UNLOCK
- */
-struct klm_unlockargs {
- struct klm_lock alock;
-};
-
-program KLM_PROG {
- version KLM_VERS {
-
- klm_testrply KLM_TEST (struct klm_testargs) = 1;
-
- klm_stat KLM_LOCK (struct klm_lockargs) = 2;
-
- klm_stat KLM_CANCEL (struct klm_lockargs) = 3;
- /* klm_granted=> the cancel request fails due to lock is already granted */
- /* klm_denied=> the cancel request successfully aborts
-lock request */
-
- klm_stat KLM_UNLOCK (struct klm_unlockargs) = 4;
- } = 1;
-} = 100020;
deleted file mode 100644
@@ -1,161 +0,0 @@
-/* @(#)mount.x 2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Protocol description for the mount program
- */
-
-
-const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */
-const MNTNAMLEN = 255; /* maximum bytes in a name argument */
-const FHSIZE = 32; /* size in bytes of a file handle */
-
-/*
- * The fhandle is the file handle that the server passes to the client.
- * All file operations are done using the file handles to refer to a file
- * or a directory. The file handle can contain whatever information the
- * server needs to distinguish an individual file.
- */
-typedef opaque fhandle[FHSIZE];
-
-/*
- * If a status of zero is returned, the call completed successfully, and
- * a file handle for the directory follows. A non-zero status indicates
- * some sort of error. The status corresponds with UNIX error numbers.
- */
-union fhstatus switch (unsigned fhs_status) {
-case 0:
- fhandle fhs_fhandle;
-default:
- void;
-};
-
-/*
- * The type dirpath is the pathname of a directory
- */
-typedef string dirpath<MNTPATHLEN>;
-
-/*
- * The type name is used for arbitrary names (hostnames, groupnames)
- */
-typedef string name<MNTNAMLEN>;
-
-/*
- * A list of who has what mounted
- */
-typedef struct mountbody *mountlist;
-struct mountbody {
- name ml_hostname;
- dirpath ml_directory;
- mountlist ml_next;
-};
-
-/*
- * A list of netgroups
- */
-typedef struct groupnode *groups;
-struct groupnode {
- name gr_name;
- groups gr_next;
-};
-
-/*
- * A list of what is exported and to whom
- */
-typedef struct exportnode *exports;
-struct exportnode {
- dirpath ex_dir;
- groups ex_groups;
- exports ex_next;
-};
-
-program MOUNTPROG {
- /*
- * Version one of the mount protocol communicates with version two
- * of the NFS protocol. The only connecting point is the fhandle
- * structure, which is the same for both protocols.
- */
- version MOUNTVERS {
- /*
- * Does no work. It is made available in all RPC services
- * to allow server response testing and timing
- */
- void
- MOUNTPROC_NULL(void) = 0;
-
- /*
- * If fhs_status is 0, then fhs_fhandle contains the
- * file handle for the directory. This file handle may
- * be used in the NFS protocol. This procedure also adds
- * a new entry to the mount list for this client mounting
- * the directory.
- * Unix authentication required.
- */
- fhstatus
- MOUNTPROC_MNT(dirpath) = 1;
-
- /*
- * Returns the list of remotely mounted filesystems. The
- * mountlist contains one entry for each hostname and
- * directory pair.
- */
- mountlist
- MOUNTPROC_DUMP(void) = 2;
-
- /*
- * Removes the mount list entry for the directory
- * Unix authentication required.
- */
- void
- MOUNTPROC_UMNT(dirpath) = 3;
-
- /*
- * Removes all of the mount list entries for this client
- * Unix authentication required.
- */
- void
- MOUNTPROC_UMNTALL(void) = 4;
-
- /*
- * Returns a list of all the exported filesystems, and which
- * machines are allowed to import it.
- */
- exports
- MOUNTPROC_EXPORT(void) = 5;
-
- /*
- * Identical to MOUNTPROC_EXPORT above
- */
- exports
- MOUNTPROC_EXPORTALL(void) = 6;
- } = 1;
-} = 100005;
deleted file mode 100644
@@ -1,352 +0,0 @@
-/* @(#)nfs_prot.x 2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * nfs_prot.x 1.2 87/10/12
- * Copyright (c) 2010, Oracle America, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-const NFS_PORT = 2049;
-const NFS_MAXDATA = 8192;
-const NFS_MAXPATHLEN = 1024;
-const NFS_MAXNAMLEN = 255;
-const NFS_FHSIZE = 32;
-const NFS_COOKIESIZE = 4;
-const NFS_FIFO_DEV = -1; /* size kludge for named pipes */
-
-/*
- * File types
- */
-const NFSMODE_FMT = 0170000; /* type of file */
-const NFSMODE_DIR = 0040000; /* directory */
-const NFSMODE_CHR = 0020000; /* character special */
-const NFSMODE_BLK = 0060000; /* block special */
-const NFSMODE_REG = 0100000; /* regular */
-const NFSMODE_LNK = 0120000; /* symbolic link */
-const NFSMODE_SOCK = 0140000; /* socket */
-const NFSMODE_FIFO = 0010000; /* fifo */
-
-/*
- * Error status
- */
-enum nfsstat {
- NFS_OK= 0, /* no error */
- NFSERR_PERM=1, /* Not owner */
- NFSERR_NOENT=2, /* No such file or directory */
- NFSERR_IO=5, /* I/O error */
- NFSERR_NXIO=6, /* No such device or address */
- NFSERR_ACCES=13, /* Permission denied */
- NFSERR_EXIST=17, /* File exists */
- NFSERR_NODEV=19, /* No such device */
- NFSERR_NOTDIR=20, /* Not a directory*/
- NFSERR_ISDIR=21, /* Is a directory */
- NFSERR_FBIG=27, /* File too large */
- NFSERR_NOSPC=28, /* No space left on device */
- NFSERR_ROFS=30, /* Read-only file system */
- NFSERR_NAMETOOLONG=63, /* File name too long */
- NFSERR_NOTEMPTY=66, /* Directory not empty */
- NFSERR_DQUOT=69, /* Disc quota exceeded */
- NFSERR_STALE=70, /* Stale NFS file handle */
- NFSERR_WFLUSH=99 /* write cache flushed */
-};
-
-/*
- * File types
- */
-enum ftype {
- NFNON = 0, /* non-file */
- NFREG = 1, /* regular file */
- NFDIR = 2, /* directory */
- NFBLK = 3, /* block special */
- NFCHR = 4, /* character special */
- NFLNK = 5, /* symbolic link */
- NFSOCK = 6, /* unix domain sockets */
- NFBAD = 7, /* unused */
- NFFIFO = 8 /* named pipe */
-};
-
-/*
- * File access handle
- */
-struct nfs_fh {
- opaque data[NFS_FHSIZE];
-};
-
-/*
- * Timeval
- */
-struct nfstime {
- unsigned seconds;
- unsigned useconds;
-};
-
-
-/*
- * File attributes
- */
-struct fattr {
- ftype type; /* file type */
- unsigned mode; /* protection mode bits */
- unsigned nlink; /* # hard links */
- unsigned uid; /* owner user id */
- unsigned gid; /* owner group id */
- unsigned size; /* file size in bytes */
- unsigned blocksize; /* preferred block size */
- unsigned rdev; /* special device # */
- unsigned blocks; /* Kb of disk used by file */
- unsigned fsid; /* device # */
- unsigned fileid; /* inode # */
- nfstime atime; /* time of last access */
- nfstime mtime; /* time of last modification */
- nfstime ctime; /* time of last change */
-};
-
-/*
- * File attributes which can be set
- */
-struct sattr {
- unsigned mode; /* protection mode bits */
- unsigned uid; /* owner user id */
- unsigned gid; /* owner group id */
- unsigned size; /* file size in bytes */
- nfstime atime; /* time of last access */
- nfstime mtime; /* time of last modification */
-};
-
-
-typedef string filename<NFS_MAXNAMLEN>;
-typedef string nfspath<NFS_MAXPATHLEN>;
-
-/*
- * Reply status with file attributes
- */
-union attrstat switch (nfsstat status) {
-case NFS_OK:
- fattr attributes;
-default:
- void;
-};
-
-struct sattrargs {
- nfs_fh file;
- sattr attributes;
-};
-
-/*
- * Arguments for directory operations
- */
-struct diropargs {
- nfs_fh dir; /* directory file handle */
- filename name; /* name (up to NFS_MAXNAMLEN bytes) */
-};
-
-struct diropokres {
- nfs_fh file;
- fattr attributes;
-};
-
-/*
- * Results from directory operation
- */
-union diropres switch (nfsstat status) {
-case NFS_OK:
- diropokres diropres;
-default:
- void;
-};
-
-union readlinkres switch (nfsstat status) {
-case NFS_OK:
- nfspath data;
-default:
- void;
-};
-
-/*
- * Arguments to remote read
- */
-struct readargs {
- nfs_fh file; /* handle for file */
- unsigned offset; /* byte offset in file */
- unsigned count; /* immediate read count */
- unsigned totalcount; /* total read count (from this offset)*/
-};
-
-/*
- * Status OK portion of remote read reply
- */
-struct readokres {
- fattr attributes; /* attributes, need for pagin*/
- opaque data<NFS_MAXDATA>;
-};
-
-union readres switch (nfsstat status) {
-case NFS_OK:
- readokres reply;
-default:
- void;
-};
-
-/*
- * Arguments to remote write
- */
-struct writeargs {
- nfs_fh file; /* handle for file */
- unsigned beginoffset; /* beginning byte offset in file */
- unsigned offset; /* current byte offset in file */
- unsigned totalcount; /* total write count (to this offset)*/
- opaque data<NFS_MAXDATA>;
-};
-
-struct createargs {
- diropargs where;
- sattr attributes;
-};
-
-struct renameargs {
- diropargs from;
- diropargs to;
-};
-
-struct linkargs {
- nfs_fh from;
- diropargs to;
-};
-
-struct symlinkargs {
- diropargs from;
- nfspath to;
- sattr attributes;
-};
-
-
-typedef opaque nfscookie[NFS_COOKIESIZE];
-
-/*
- * Arguments to readdir
- */
-struct readdirargs {
- nfs_fh dir; /* directory handle */
- nfscookie cookie;
- unsigned count; /* number of directory bytes to read */
-};
-
-struct entry {
- unsigned fileid;
- filename name;
- nfscookie cookie;
- entry *nextentry;
-};
-
-struct dirlist {
- entry *entries;
- bool eof;
-};
-
-union readdirres switch (nfsstat status) {
-case NFS_OK:
- dirlist reply;
-default:
- void;
-};
-
-struct statfsokres {
- unsigned tsize; /* preferred transfer size in bytes */
- unsigned bsize; /* fundamental file system block size */
- unsigned blocks; /* total blocks in file system */
- unsigned bfree; /* free blocks in fs */
- unsigned bavail; /* free blocks avail to non-superuser */
-};
-
-union statfsres switch (nfsstat status) {
-case NFS_OK:
- statfsokres reply;
-default:
- void;
-};
-
-/*
- * Remote file service routines
- */
-program NFS_PROGRAM {
- version NFS_VERSION {
- void
- NFSPROC_NULL(void) = 0;
-
- attrstat
- NFSPROC_GETATTR(nfs_fh) = 1;
-
- attrstat
- NFSPROC_SETATTR(sattrargs) = 2;
-
- void
- NFSPROC_ROOT(void) = 3;
-
- diropres
- NFSPROC_LOOKUP(diropargs) = 4;
-
- readlinkres
- NFSPROC_READLINK(nfs_fh) = 5;
-
- readres
- NFSPROC_READ(readargs) = 6;
-
- void
- NFSPROC_WRITECACHE(void) = 7;
-
- attrstat
- NFSPROC_WRITE(writeargs) = 8;
-
- diropres
- NFSPROC_CREATE(createargs) = 9;
-
- nfsstat
- NFSPROC_REMOVE(diropargs) = 10;
-
- nfsstat
- NFSPROC_RENAME(renameargs) = 11;
-
- nfsstat
- NFSPROC_LINK(linkargs) = 12;
-
- nfsstat
- NFSPROC_SYMLINK(symlinkargs) = 13;
-
- diropres
- NFSPROC_MKDIR(createargs) = 14;
-
- nfsstat
- NFSPROC_RMDIR(diropargs) = 15;
-
- readdirres
- NFSPROC_READDIR(readdirargs) = 16;
-
- statfsres
- NFSPROC_STATFS(nfs_fh) = 17;
- } = 2;
-} = 100003;
deleted file mode 100644
@@ -1,203 +0,0 @@
-/* @(#)nlm_prot.x 2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Network lock manager protocol definition
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * protocol used between local lock manager and remote lock manager
- */
-
-#ifdef RPC_HDR
-%#define LM_MAXSTRLEN 1024
-%#define MAXNAMELEN LM_MAXSTRLEN+1
-#endif
-
-/*
- * status of a call to the lock manager
- */
-enum nlm_stats {
- nlm_granted = 0,
- nlm_denied = 1,
- nlm_denied_nolocks = 2,
- nlm_blocked = 3,
- nlm_denied_grace_period = 4
-};
-
-struct nlm_holder {
- bool exclusive;
- int svid;
- netobj oh;
- unsigned l_offset;
- unsigned l_len;
-};
-
-union nlm_testrply switch (nlm_stats stat) {
- case nlm_denied:
- struct nlm_holder holder;
- default:
- void;
-};
-
-struct nlm_stat {
- nlm_stats stat;
-};
-
-struct nlm_res {
- netobj cookie;
- nlm_stat stat;
-};
-
-struct nlm_testres {
- netobj cookie;
- nlm_testrply stat;
-};
-
-struct nlm_lock {
- string caller_name<LM_MAXSTRLEN>;
- netobj fh; /* identify a file */
- netobj oh; /* identify owner of a lock */
- int svid; /* generated from pid for svid */
- unsigned l_offset;
- unsigned l_len;
-};
-
-struct nlm_lockargs {
- netobj cookie;
- bool block;
- bool exclusive;
- struct nlm_lock alock;
- bool reclaim; /* used for recovering locks */
- int state; /* specify local status monitor state */
-};
-
-struct nlm_cancargs {
- netobj cookie;
- bool block;
- bool exclusive;
- struct nlm_lock alock;
-};
-
-struct nlm_testargs {
- netobj cookie;
- bool exclusive;
- struct nlm_lock alock;
-};
-
-struct nlm_unlockargs {
- netobj cookie;
- struct nlm_lock alock;
-};
-
-
-#ifdef RPC_HDR
-%/*
-% * The following enums are actually bit encoded for efficient
-% * boolean algebra.... DON'T change them.....
-% */
-#endif
-enum fsh_mode {
- fsm_DN = 0, /* deny none */
- fsm_DR = 1, /* deny read */
- fsm_DW = 2, /* deny write */
- fsm_DRW = 3 /* deny read/write */
-};
-
-enum fsh_access {
- fsa_NONE = 0, /* for completeness */
- fsa_R = 1, /* read only */
- fsa_W = 2, /* write only */
- fsa_RW = 3 /* read/write */
-};
-
-struct nlm_share {
- string caller_name<LM_MAXSTRLEN>;
- netobj fh;
- netobj oh;
- fsh_mode mode;
- fsh_access access;
-};
-
-struct nlm_shareargs {
- netobj cookie;
- nlm_share share;
- bool reclaim;
-};
-
-struct nlm_shareres {
- netobj cookie;
- nlm_stats stat;
- int sequence;
-};
-
-struct nlm_notify {
- string name<MAXNAMELEN>;
- long state;
-};
-
-/*
- * Over-the-wire protocol used between the network lock managers
- */
-
-program NLM_PROG {
- version NLM_VERS {
-
- nlm_testres NLM_TEST(struct nlm_testargs) = 1;
-
- nlm_res NLM_LOCK(struct nlm_lockargs) = 2;
-
- nlm_res NLM_CANCEL(struct nlm_cancargs) = 3;
- nlm_res NLM_UNLOCK(struct nlm_unlockargs) = 4;
-
- /*
- * remote lock manager call-back to grant lock
- */
- nlm_res NLM_GRANTED(struct nlm_testargs)= 5;
- /*
- * message passing style of requesting lock
- */
- void NLM_TEST_MSG(struct nlm_testargs) = 6;
- void NLM_LOCK_MSG(struct nlm_lockargs) = 7;
- void NLM_CANCEL_MSG(struct nlm_cancargs) =8;
- void NLM_UNLOCK_MSG(struct nlm_unlockargs) = 9;
- void NLM_GRANTED_MSG(struct nlm_testargs) = 10;
- void NLM_TEST_RES(nlm_testres) = 11;
- void NLM_LOCK_RES(nlm_res) = 12;
- void NLM_CANCEL_RES(nlm_res) = 13;
- void NLM_UNLOCK_RES(nlm_res) = 14;
- void NLM_GRANTED_RES(nlm_res) = 15;
- } = 1;
-
- version NLM_VERSX {
- nlm_shareres NLM_SHARE(nlm_shareargs) = 20;
- nlm_shareres NLM_UNSHARE(nlm_shareargs) = 21;
- nlm_res NLM_NM_LOCK(nlm_lockargs) = 22;
- void NLM_FREE_ALL(nlm_notify) = 23;
- } = 3;
-
-} = 100021;
deleted file mode 100644
@@ -1,229 +0,0 @@
-/* @(#)rex.x 2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Remote execution (rex) protocol specification
- */
-
-const STRINGSIZE = 1024;
-typedef string rexstring<1024>;
-
-/*
- * values to pass to REXPROC_SIGNAL
- */
-const SIGINT = 2; /* interrupt */
-
-/*
- * Values for rst_flags, below
- */
-const REX_INTERACTIVE = 1; /* interactive mode */
-
-struct rex_start {
- rexstring rst_cmd<>; /* list of command and args */
- rexstring rst_host; /* working directory host name */
- rexstring rst_fsname; /* working directory file system name */
- rexstring rst_dirwithin;/* working directory within file system */
- rexstring rst_env<>; /* list of environment */
- unsigned int rst_port0; /* port for stdin */
- unsigned int rst_port1; /* port for stdout */
- unsigned int rst_port2; /* port for stderr */
- unsigned int rst_flags; /* options - see const above */
-};
-
-struct rex_result {
- int rlt_stat; /* integer status code */
- rexstring rlt_message; /* string message for human consumption */
-};
-
-
-struct sgttyb {
- unsigned four; /* always equals 4 */
- opaque chars[4];
- /* chars[0] == input speed */
- /* chars[1] == output speed */
- /* chars[2] == kill character */
- /* chars[3] == erase character */
- unsigned flags;
-};
-/* values for speeds above (baud rates) */
-const B0 = 0;
-const B50 = 1;
-const B75 = 2;
-const B110 = 3;
-const B134 = 4;
-const B150 = 5;
-const B200 = 6;
-const B300 = 7;
-const B600 = 8;
-const B1200 = 9;
-const B1800 = 10;
-const B2400 = 11;
-const B4800 = 12;
-const B9600 = 13;
-const B19200 = 14;
-const B38400 = 15;
-
-/* values for flags above */
-const TANDEM = 0x00000001; /* send stopc on out q full */
-const CBREAK = 0x00000002; /* half-cooked mode */
-const LCASE = 0x00000004; /* simulate lower case */
-const ECHO = 0x00000008; /* echo input */
-const CRMOD = 0x00000010; /* map \r to \r\n on output */
-const RAW = 0x00000020; /* no i/o processing */
-const ODDP = 0x00000040; /* get/send odd parity */
-const EVENP = 0x00000080; /* get/send even parity */
-const ANYP = 0x000000c0; /* get any parity/send none */
-const NLDELAY = 0x00000300; /* \n delay */
-const NL0 = 0x00000000;
-const NL1 = 0x00000100; /* tty 37 */
-const NL2 = 0x00000200; /* vt05 */
-const NL3 = 0x00000300;
-const TBDELAY = 0x00000c00; /* horizontal tab delay */
-const TAB0 = 0x00000000;
-const TAB1 = 0x00000400; /* tty 37 */
-const TAB2 = 0x00000800;
-const XTABS = 0x00000c00; /* expand tabs on output */
-const CRDELAY = 0x00003000; /* \r delay */
-const CR0 = 0x00000000;
-const CR1 = 0x00001000; /* tn 300 */
-const CR2 = 0x00002000; /* tty 37 */
-const CR3 = 0x00003000; /* concept 100 */
-const VTDELAY = 0x00004000; /* vertical tab delay */
-const FF0 = 0x00000000;
-const FF1 = 0x00004000; /* tty 37 */
-const BSDELAY = 0x00008000; /* \b delay */
-const BS0 = 0x00000000;
-const BS1 = 0x00008000;
-const CRTBS = 0x00010000; /* do backspacing for crt */
-const PRTERA = 0x00020000; /* \ ... / erase */
-const CRTERA = 0x00040000; /* " \b " to wipe out char */
-const TILDE = 0x00080000; /* hazeltine tilde kludge */
-const MDMBUF = 0x00100000; /* start/stop output on carrier intr */
-const LITOUT = 0x00200000; /* literal output */
-const TOSTOP = 0x00400000; /* SIGTTOU on background output */
-const FLUSHO = 0x00800000; /* flush output to terminal */
-const NOHANG = 0x01000000; /* no SIGHUP on carrier drop */
-const L001000 = 0x02000000;
-const CRTKIL = 0x04000000; /* kill line with " \b " */
-const PASS8 = 0x08000000;
-const CTLECH = 0x10000000; /* echo control chars as ^X */
-const PENDIN = 0x20000000; /* tp->t_rawq needs reread */
-const DECCTQ = 0x40000000; /* only ^Q starts after ^S */
-const NOFLSH = 0x80000000; /* no output flush on signal */
-
-struct tchars {
- unsigned six; /* always equals 6 */
- opaque chars[6];
- /* chars[0] == interrupt char */
- /* chars[1] == quit char */
- /* chars[2] == start output char */
- /* chars[3] == stop output char */
- /* chars[4] == end-of-file char */
- /* chars[5] == input delimiter (like nl) */
-};
-
-struct ltchars {
- unsigned six; /* always equals 6 */
- opaque chars[6];
- /* chars[0] == stop process signal */
- /* chars[1] == delayed stop process signal */
- /* chars[2] == reprint line */
- /* chars[3] == flush output */
- /* chars[4] == word erase */
- /* chars[5] == literal next character */
- unsigned mode;
-};
-
-struct rex_ttysize {
- int ts_lines;
- int ts_cols;
-};
-
-struct rex_ttymode {
- sgttyb basic; /* standard unix tty flags */
- tchars more; /* interrupt, kill characters, etc. */
- ltchars yetmore; /* special Berkeley characters */
- unsigned andmore; /* and Berkeley modes */
-};
-
-/* values for andmore above */
-const LCRTBS = 0x0001; /* do backspacing for crt */
-const LPRTERA = 0x0002; /* \ ... / erase */
-const LCRTERA = 0x0004; /* " \b " to wipe out char */
-const LTILDE = 0x0008; /* hazeltine tilde kludge */
-const LMDMBUF = 0x0010; /* start/stop output on carrier intr */
-const LLITOUT = 0x0020; /* literal output */
-const LTOSTOP = 0x0040; /* SIGTTOU on background output */
-const LFLUSHO = 0x0080; /* flush output to terminal */
-const LNOHANG = 0x0100; /* no SIGHUP on carrier drop */
-const LL001000 = 0x0200;
-const LCRTKIL = 0x0400; /* kill line with " \b " */
-const LPASS8 = 0x0800;
-const LCTLECH = 0x1000; /* echo control chars as ^X */
-const LPENDIN = 0x2000; /* needs reread */
-const LDECCTQ = 0x4000; /* only ^Q starts after ^S */
-const LNOFLSH = 0x8000; /* no output flush on signal */
-
-program REXPROG {
- version REXVERS {
-
- /*
- * Start remote execution
- */
- rex_result
- REXPROC_START(rex_start) = 1;
-
- /*
- * Wait for remote execution to terminate
- */
- rex_result
- REXPROC_WAIT(void) = 2;
-
- /*
- * Send tty modes
- */
- void
- REXPROC_MODES(rex_ttymode) = 3;
-
- /*
- * Send window size change
- */
- void
- REXPROC_WINCH(rex_ttysize) = 4;
-
- /*
- * Send other signal
- */
- void
- REXPROC_SIGNAL(int) = 5;
- } = 1;
-} = 100017;
deleted file mode 100644
@@ -1,61 +0,0 @@
-/* @(#)rquota.x 2.1 88/08/01 4.0 RPCSRC */
-/* @(#)rquota.x 1.2 87/09/20 Copyr 1987 Sun Micro */
-
-/*
- * Remote quota protocol
- * Requires unix authentication
- */
-
-const RQ_PATHLEN = 1024;
-
-struct getquota_args {
- string gqa_pathp<RQ_PATHLEN>; /* path to filesystem of interest */
- int gqa_uid; /* inquire about quota for uid */
-};
-
-/*
- * remote quota structure
- */
-struct rquota {
- int rq_bsize; /* block size for block counts */
- bool rq_active; /* indicates whether quota is active */
- unsigned int rq_bhardlimit; /* absolute limit on disk blks alloc */
- unsigned int rq_bsoftlimit; /* preferred limit on disk blks */
- unsigned int rq_curblocks; /* current block count */
- unsigned int rq_fhardlimit; /* absolute limit on allocated files */
- unsigned int rq_fsoftlimit; /* preferred file limit */
- unsigned int rq_curfiles; /* current # allocated files */
- unsigned int rq_btimeleft; /* time left for excessive disk use */
- unsigned int rq_ftimeleft; /* time left for excessive files */
-};
-
-enum gqr_status {
- Q_OK = 1, /* quota returned */
- Q_NOQUOTA = 2, /* noquota for uid */
- Q_EPERM = 3 /* no permission to access quota */
-};
-
-union getquota_rslt switch (gqr_status status) {
-case Q_OK:
- rquota gqr_rquota; /* valid if status == Q_OK */
-case Q_NOQUOTA:
- void;
-case Q_EPERM:
- void;
-};
-
-program RQUOTAPROG {
- version RQUOTAVERS {
- /*
- * Get all quotas
- */
- getquota_rslt
- RQUOTAPROC_GETQUOTA(getquota_args) = 1;
-
- /*
- * Get active quotas only
- */
- getquota_rslt
- RQUOTAPROC_GETACTIVEQUOTA(getquota_args) = 2;
- } = 1;
-} = 100011;
deleted file mode 100644
@@ -1,145 +0,0 @@
-/* @(#)rstat.x 2.2 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Gather statistics on remote machines
- */
-
-#ifdef RPC_HDR
-
-%#ifndef FSCALE
-%/*
-% * Scale factor for scaled integers used to count load averages.
-% */
-%#define FSHIFT 8 /* bits to right of fixed binary point */
-%#define FSCALE (1<<FSHIFT)
-%
-%#endif /* ndef FSCALE */
-
-#endif /* def RPC_HDR */
-
-const CPUSTATES = 4;
-const DK_NDRIVE = 4;
-
-/*
- * GMT since 0:00, January 1, 1970
- */
-struct rstat_timeval {
- unsigned int tv_sec; /* seconds */
- unsigned int tv_usec; /* and microseconds */
-};
-
-struct statstime { /* RSTATVERS_TIME */
- int cp_time[CPUSTATES];
- int dk_xfer[DK_NDRIVE];
- unsigned int v_pgpgin; /* these are cumulative sum */
- unsigned int v_pgpgout;
- unsigned int v_pswpin;
- unsigned int v_pswpout;
- unsigned int v_intr;
- int if_ipackets;
- int if_ierrors;
- int if_oerrors;
- int if_collisions;
- unsigned int v_swtch;
- int avenrun[3]; /* scaled by FSCALE */
- rstat_timeval boottime;
- rstat_timeval curtime;
- int if_opackets;
-};
-
-struct statsswtch { /* RSTATVERS_SWTCH */
- int cp_time[CPUSTATES];
- int dk_xfer[DK_NDRIVE];
- unsigned int v_pgpgin; /* these are cumulative sum */
- unsigned int v_pgpgout;
- unsigned int v_pswpin;
- unsigned int v_pswpout;
- unsigned int v_intr;
- int if_ipackets;
- int if_ierrors;
- int if_oerrors;
- int if_collisions;
- unsigned int v_swtch;
- unsigned int avenrun[3];/* scaled by FSCALE */
- rstat_timeval boottime;
- int if_opackets;
-};
-
-struct stats { /* RSTATVERS_ORIG */
- int cp_time[CPUSTATES];
- int dk_xfer[DK_NDRIVE];
- unsigned int v_pgpgin; /* these are cumulative sum */
- unsigned int v_pgpgout;
- unsigned int v_pswpin;
- unsigned int v_pswpout;
- unsigned int v_intr;
- int if_ipackets;
- int if_ierrors;
- int if_oerrors;
- int if_collisions;
- int if_opackets;
-};
-
-
-program RSTATPROG {
- /*
- * Newest version includes current time and context switching info
- */
- version RSTATVERS_TIME {
- statstime
- RSTATPROC_STATS(void) = 1;
-
- unsigned int
- RSTATPROC_HAVEDISK(void) = 2;
- } = 3;
- /*
- * Does not have current time
- */
- version RSTATVERS_SWTCH {
- statsswtch
- RSTATPROC_STATS(void) = 1;
-
- unsigned int
- RSTATPROC_HAVEDISK(void) = 2;
- } = 2;
- /*
- * Old version has no info about current time or context switching
- */
- version RSTATVERS_ORIG {
- stats
- RSTATPROC_STATS(void) = 1;
-
- unsigned int
- RSTATPROC_HAVEDISK(void) = 2;
- } = 1;
-} = 100001;
deleted file mode 100644
@@ -1,228 +0,0 @@
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-%/*
-% * 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
-%
-%#include <rpc/xdr.h>
-%
-%/*
-% * 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 systems.
-% */
-%struct ru_utmp {
-% char ut_line[8]; /* tty name */
-% char ut_name[8]; /* user id */
-% char ut_host[16]; /* host name, if remote */
-% long int ut_time; /* time on */
-%};
-%
-%struct utmparr {
-% struct ru_utmp **uta_arr;
-% int uta_cnt;
-%};
-%typedef struct utmparr utmparr;
-%
-%extern bool_t xdr_utmparr (XDR *xdrs, struct utmparr *objp) __THROW;
-%
-%struct utmpidle {
-% struct ru_utmp ui_utmp;
-% unsigned int ui_idle;
-%};
-%
-%struct utmpidlearr {
-% struct utmpidle **uia_arr;
-% int uia_cnt;
-%};
-%
-%extern bool_t xdr_utmpidlearr (XDR *xdrs, struct utmpidlearr *objp) __THROW;
-%
-%#ifdef __cplusplus
-%}
-%#endif
-#endif
-
-
-#ifdef RPC_XDR
-%bool_t xdr_utmp (XDR *xdrs, struct ru_utmp *objp);
-%
-%bool_t
-%xdr_utmp (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;
-% unsigned int size;
-% ptr = objp->ut_line;
-% size = sizeof (objp->ut_line);
-% if (!xdr_bytes (xdrs, &ptr, &size, size)) {
-% return (FALSE);
-% }
-% ptr = objp->ut_name;
-% size = sizeof (objp->ut_name);
-% if (!xdr_bytes (xdrs, &ptr, &size, size)) {
-% return (FALSE);
-% }
-% ptr = objp->ut_host;
-% size = sizeof (objp->ut_host);
-% if (!xdr_bytes (xdrs, &ptr, &size, size)) {
-% return (FALSE);
-% }
-% }
-% if (!xdr_long(xdrs, &objp->ut_time)) {
-% return (FALSE);
-% }
-% return (TRUE);
-%}
-%
-%bool_t xdr_utmpptr(XDR *xdrs, struct ru_utmp **objpp);
-%
-%bool_t
-%xdr_utmpptr (XDR *xdrs, struct ru_utmp **objpp)
-%{
-% if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct ru_utmp),
-% (xdrproc_t) xdr_utmp)) {
-% return (FALSE);
-% }
-% return (TRUE);
-%}
-%
-%bool_t
-%xdr_utmparr (XDR *xdrs, struct utmparr *objp)
-%{
-% if (!xdr_array(xdrs, (char **)&objp->uta_arr, (u_int *)&objp->uta_cnt,
-% MAXUSERS, sizeof(struct ru_utmp *),
-% (xdrproc_t) xdr_utmpptr)) {
-% return (FALSE);
-% }
-% return (TRUE);
-%}
-%
-%bool_t xdr_utmpidle(XDR *xdrs, struct utmpidle *objp);
-%
-%bool_t
-%xdr_utmpidle (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(XDR *xdrs, struct utmpidle **objp);
-%
-%bool_t
-%xdr_utmpidleptr (XDR *xdrs, struct utmpidle **objpp)
-%{
-% if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct utmpidle),
-% (xdrproc_t) xdr_utmpidle)) {
-% return (FALSE);
-% }
-% return (TRUE);
-%}
-%
-%bool_t
-%xdr_utmpidlearr (XDR *xdrs, struct utmpidlearr *objp)
-%{
-% if (!xdr_array(xdrs, (char **)&objp->uia_arr, (u_int *)&objp->uia_cnt,
-% MAXUSERS, sizeof(struct utmpidle *),
-% (xdrproc_t) xdr_utmpidleptr)) {
-% return (FALSE);
-% }
-% return (TRUE);
-%}
-#endif
deleted file mode 100644
@@ -1,110 +0,0 @@
-/*
- * Status monitor protocol specification
- * Copyright (c) 2010, Oracle America, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-program SM_PROG {
- version SM_VERS {
- /* res_stat = stat_succ if status monitor agrees to monitor */
- /* res_stat = stat_fail if status monitor cannot monitor */
- /* if res_stat == stat_succ, state = state number of site sm_name */
- struct sm_stat_res SM_STAT(struct sm_name) = 1;
-
- /* res_stat = stat_succ if status monitor agrees to monitor */
- /* res_stat = stat_fail if status monitor cannot monitor */
- /* stat consists of state number of local site */
- struct sm_stat_res SM_MON(struct mon) = 2;
-
- /* stat consists of state number of local site */
- struct sm_stat SM_UNMON(struct mon_id) = 3;
-
- /* stat consists of state number of local site */
- struct sm_stat SM_UNMON_ALL(struct my_id) = 4;
-
- void SM_SIMU_CRASH(void) = 5;
-
- } = 1;
-} = 100024;
-
-const SM_MAXSTRLEN = 1024;
-
-struct sm_name {
- string mon_name<SM_MAXSTRLEN>;
-};
-
-struct my_id {
- string my_name<SM_MAXSTRLEN>; /* name of the site initiating the monitoring request*/
- int my_prog; /* rpc program # of the requesting process */
- int my_vers; /* rpc version # of the requesting process */
- int my_proc; /* rpc procedure # of the requesting process */
-};
-
-struct mon_id {
- string mon_name<SM_MAXSTRLEN>; /* name of the site to be monitored */
- struct my_id my_id;
-};
-
-
-struct mon{
- struct mon_id mon_id;
- opaque priv[16]; /* private information to store at monitor for requesting process */
-};
-
-
-/*
- * state # of status monitor monotonically increases each time
- * status of the site changes:
- * an even number (>= 0) indicates the site is down and
- * an odd number (> 0) indicates the site is up;
- */
-struct sm_stat {
- int state; /* state # of status monitor */
-};
-
-enum res {
- stat_succ = 0, /* status monitor agrees to monitor */
- stat_fail = 1 /* status monitor cannot monitor */
-};
-
-struct sm_stat_res {
- res res_stat;
- int state;
-};
-
-/*
- * structure of the status message sent back by the status monitor
- * when monitor site status changes
- */
-struct status {
- string mon_name<SM_MAXSTRLEN>;
- int state;
- opaque priv[16]; /* stored private information */
-};
deleted file mode 100644
@@ -1,84 +0,0 @@
-/* @(#)spray.x 2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Spray a server with packets
- * Useful for testing flakiness of network interfaces
- */
-
-const SPRAYMAX = 8845; /* max amount can spray */
-
-/*
- * GMT since 0:00, 1 January 1970
- */
-struct spraytimeval {
- unsigned int sec;
- unsigned int usec;
-};
-
-/*
- * spray statistics
- */
-struct spraycumul {
- unsigned int counter;
- spraytimeval clock;
-};
-
-/*
- * spray data
- */
-typedef opaque sprayarr<SPRAYMAX>;
-
-program SPRAYPROG {
- version SPRAYVERS {
- /*
- * Just throw away the data and increment the counter
- * This call never returns, so the client should always
- * time it out.
- */
- void
- SPRAYPROC_SPRAY(sprayarr) = 1;
-
- /*
- * Get the value of the counter and elapsed time since
- * last CLEAR.
- */
- spraycumul
- SPRAYPROC_GET(void) = 2;
-
- /*
- * Clear the counter and reset the elapsed time
- */
- void
- SPRAYPROC_CLEAR(void) = 3;
- } = 1;
-} = 100012;
deleted file mode 100644
@@ -1,61 +0,0 @@
-/* @(#)yppasswd.x 2.1 88/08/01 4.0 RPCSRC */
-
-/*
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * YP password update protocol
- * Requires unix authentication
- */
-program YPPASSWDPROG {
- version YPPASSWDVERS {
- /*
- * Update my passwd entry
- */
- int
- YPPASSWDPROC_UPDATE(yppasswd) = 1;
- } = 1;
-} = 100009;
-
-
-struct passwd {
- string pw_name<>; /* username */
- string pw_passwd<>; /* encrypted password */
- int pw_uid; /* user id */
- int pw_gid; /* group id */
- string pw_gecos<>; /* in real life name */
- string pw_dir<>; /* home directory */
- string pw_shell<>; /* default shell */
-};
-
-struct yppasswd {
- string oldpass<>; /* unencrypted old password */
- passwd newpw; /* new passwd entry */
-};
@@ -142,4 +142,4 @@ rtime (struct sockaddr_in *addrp, struct rpc_timeval *timep,
timep->tv_usec = 0;
return 0;
}
-libc_hidden_nolink_sunrpc (rtime, GLIBC_2_1)
+libc_hidden_nolink (rtime, GLIBC_2_1)
@@ -126,7 +126,7 @@ xprt_register (SVCXPRT *xprt)
POLLRDNORM | POLLRDBAND);
}
}
-libc_hidden_nolink_sunrpc (xprt_register, GLIBC_2_0)
+libc_hidden_nolink (xprt_register, GLIBC_2_0)
/* De-activate a transport handle. */
void
@@ -150,7 +150,7 @@ xprt_unregister (SVCXPRT *xprt)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xprt_unregister)
#else
-libc_hidden_nolink_sunrpc (xprt_unregister, GLIBC_2_0)
+libc_hidden_nolink (xprt_unregister, GLIBC_2_0)
#endif
@@ -218,7 +218,7 @@ pmap_it:
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (svc_register)
#else
-libc_hidden_nolink_sunrpc (svc_register, GLIBC_2_0)
+libc_hidden_nolink (svc_register, GLIBC_2_0)
#endif
/* Remove a service program from the callout list. */
@@ -243,7 +243,7 @@ svc_unregister (rpcprog_t prog, rpcvers_t vers)
if (is_mapped)
pmap_unset (prog, vers);
}
-libc_hidden_nolink_sunrpc (svc_unregister, GLIBC_2_0)
+libc_hidden_nolink (svc_unregister, GLIBC_2_0)
/* ******************* REPLY GENERATION ROUTINES ************ */
@@ -265,7 +265,7 @@ svc_sendreply (register SVCXPRT *xprt, xdrproc_t xdr_results,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (svc_sendreply)
#else
-libc_hidden_nolink_sunrpc (svc_sendreply, GLIBC_2_0)
+libc_hidden_nolink (svc_sendreply, GLIBC_2_0)
#endif
/* No procedure error reply */
@@ -283,7 +283,7 @@ svcerr_noproc (register SVCXPRT *xprt)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (svcerr_noproc)
#else
-libc_hidden_nolink_sunrpc (svcerr_noproc, GLIBC_2_0)
+libc_hidden_nolink (svcerr_noproc, GLIBC_2_0)
#endif
/* Can't decode args error reply */
@@ -301,7 +301,7 @@ svcerr_decode (register SVCXPRT *xprt)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (svcerr_decode)
#else
-libc_hidden_nolink_sunrpc (svcerr_decode, GLIBC_2_0)
+libc_hidden_nolink (svcerr_decode, GLIBC_2_0)
#endif
/* Some system error */
@@ -319,7 +319,7 @@ svcerr_systemerr (register SVCXPRT *xprt)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (svcerr_systemerr)
#else
-libc_hidden_nolink_sunrpc (svcerr_systemerr, GLIBC_2_0)
+libc_hidden_nolink (svcerr_systemerr, GLIBC_2_0)
#endif
/* Authentication error reply */
@@ -334,7 +334,7 @@ svcerr_auth (SVCXPRT *xprt, enum auth_stat why)
rply.rjcted_rply.rj_why = why;
SVC_REPLY (xprt, &rply);
}
-libc_hidden_nolink_sunrpc (svcerr_auth, GLIBC_2_0)
+libc_hidden_nolink (svcerr_auth, GLIBC_2_0)
/* Auth too weak error reply */
void
@@ -342,7 +342,7 @@ svcerr_weakauth (SVCXPRT *xprt)
{
svcerr_auth (xprt, AUTH_TOOWEAK);
}
-libc_hidden_nolink_sunrpc (svcerr_weakauth, GLIBC_2_0)
+libc_hidden_nolink (svcerr_weakauth, GLIBC_2_0)
/* Program unavailable error reply */
void
@@ -356,7 +356,7 @@ svcerr_noprog (register SVCXPRT *xprt)
rply.acpted_rply.ar_stat = PROG_UNAVAIL;
SVC_REPLY (xprt, &rply);
}
-libc_hidden_nolink_sunrpc (svcerr_noprog, GLIBC_2_0)
+libc_hidden_nolink (svcerr_noprog, GLIBC_2_0)
/* Program version mismatch error reply */
void
@@ -373,7 +373,7 @@ svcerr_progvers (register SVCXPRT *xprt, rpcvers_t low_vers,
rply.acpted_rply.ar_vers.high = high_vers;
SVC_REPLY (xprt, &rply);
}
-libc_hidden_nolink_sunrpc (svcerr_progvers, GLIBC_2_0)
+libc_hidden_nolink (svcerr_progvers, GLIBC_2_0)
/* ******************* SERVER INPUT STUFF ******************* */
@@ -402,7 +402,7 @@ svc_getreq (int rdfds)
readfds.fds_bits[0] = rdfds;
svc_getreqset (&readfds);
}
-libc_hidden_nolink_sunrpc (svc_getreq, GLIBC_2_0)
+libc_hidden_nolink (svc_getreq, GLIBC_2_0)
void
svc_getreqset (fd_set *readfds)
@@ -421,7 +421,7 @@ svc_getreqset (fd_set *readfds)
for (mask = *maskp++; (bit = ffsl (mask)); mask ^= (1L << (bit - 1)))
svc_getreq_common (sock + bit - 1);
}
-libc_hidden_nolink_sunrpc (svc_getreqset, GLIBC_2_0)
+libc_hidden_nolink (svc_getreqset, GLIBC_2_0)
void
svc_getreq_poll (struct pollfd *pfdp, int pollretval)
@@ -450,7 +450,7 @@ svc_getreq_poll (struct pollfd *pfdp, int pollretval)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (svc_getreq_poll)
#else
-libc_hidden_nolink_sunrpc (svc_getreq_poll, GLIBC_2_2)
+libc_hidden_nolink (svc_getreq_poll, GLIBC_2_2)
#endif
@@ -543,7 +543,7 @@ svc_getreq_common (const int fd)
}
while (stat == XPRT_MOREREQS);
}
-libc_hidden_nolink_sunrpc (svc_getreq_common, GLIBC_2_2)
+libc_hidden_nolink (svc_getreq_common, GLIBC_2_2)
/* If there are no file descriptors available, then accept will fail.
We want to delay here so the connection request can be dequeued;
@@ -106,7 +106,7 @@ _authenticate (register struct svc_req *rqst, struct rpc_msg *msg)
return AUTH_REJECTEDCRED;
}
-libc_hidden_nolink_sunrpc (_authenticate, GLIBC_2_1)
+libc_hidden_nolink (_authenticate, GLIBC_2_1)
static enum auth_stat
_svcauth_null (struct svc_req *rqst, struct rpc_msg *msg)
@@ -85,7 +85,7 @@ svcraw_create (void)
xdrmem_create (&srp->xdr_stream, srp->_raw_buf, UDPMSGSIZE, XDR_FREE);
return &srp->server;
}
-libc_hidden_nolink_sunrpc (svcraw_create, GLIBC_2_0)
+libc_hidden_nolink (svcraw_create, GLIBC_2_0)
static enum xprt_stat
svcraw_stat (SVCXPRT *xprt)
@@ -47,7 +47,7 @@ svc_exit (void)
svc_pollfd = NULL;
svc_max_pollfd = 0;
}
-libc_hidden_nolink_sunrpc (svc_exit, GLIBC_2_0)
+libc_hidden_nolink (svc_exit, GLIBC_2_0)
void
svc_run (void)
@@ -105,5 +105,5 @@ svc_run (void)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (svc_run)
#else
-libc_hidden_nolink_sunrpc (svc_run, GLIBC_2_0)
+libc_hidden_nolink (svc_run, GLIBC_2_0)
#endif
@@ -205,7 +205,7 @@ svctcp_create (int sock, u_int sendsize, u_int recvsize)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (svctcp_create)
#else
-libc_hidden_nolink_sunrpc (svctcp_create, GLIBC_2_0)
+libc_hidden_nolink (svctcp_create, GLIBC_2_0)
#endif
/*
@@ -217,7 +217,7 @@ svcfd_create (int fd, u_int sendsize, u_int recvsize)
{
return makefd_xprt (fd, sendsize, recvsize);
}
-libc_hidden_nolink_sunrpc (svcfd_create, GLIBC_2_0)
+libc_hidden_nolink (svcfd_create, GLIBC_2_0)
static SVCXPRT *
makefd_xprt (int fd, u_int sendsize, u_int recvsize)
@@ -200,7 +200,7 @@ svcudp_create: xp_pad is too small for IP_PKTINFO\n"));
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (svcudp_bufcreate)
#else
-libc_hidden_nolink_sunrpc (svcudp_bufcreate, GLIBC_2_0)
+libc_hidden_nolink (svcudp_bufcreate, GLIBC_2_0)
#endif
SVCXPRT *
@@ -211,7 +211,7 @@ svcudp_create (int sock)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (svcudp_create)
#else
-libc_hidden_nolink_sunrpc (svcudp_create, GLIBC_2_0)
+libc_hidden_nolink (svcudp_create, GLIBC_2_0)
#endif
static enum xprt_stat
@@ -507,7 +507,7 @@ svcudp_enablecache (SVCXPRT *transp, u_long size)
su->su_cache = (char *) uc;
return 1;
}
-libc_hidden_nolink_sunrpc (svcudp_enablecache, GLIBC_2_0)
+libc_hidden_nolink (svcudp_enablecache, GLIBC_2_0)
/*
@@ -202,7 +202,7 @@ svcunix_create (int sock, u_int sendsize, u_int recvsize, char *path)
xprt_register (xprt);
return xprt;
}
-libc_hidden_nolink_sunrpc (svcunix_create, GLIBC_2_1)
+libc_hidden_nolink (svcunix_create, GLIBC_2_1)
/*
* Like svunix_create(), except the routine takes any *open* UNIX file
@@ -213,7 +213,7 @@ svcunixfd_create (int fd, u_int sendsize, u_int recvsize)
{
return makefd_xprt (fd, sendsize, recvsize);
}
-libc_hidden_nolink_sunrpc (svcunixfd_create, GLIBC_2_1)
+libc_hidden_nolink (svcunixfd_create, GLIBC_2_1)
static SVCXPRT *
makefd_xprt (int fd, u_int sendsize, u_int recvsize)
@@ -585,7 +585,7 @@ authdes_getucred (const struct authdes_cred *adc, uid_t * uid, gid_t * gid,
groups[i] = cred->groups[i];
return 1;
}
-libc_hidden_nolink_sunrpc (authdes_getucred, GLIBC_2_1)
+libc_hidden_nolink (authdes_getucred, GLIBC_2_1)
static void
invalidate (char *cred)
@@ -128,7 +128,7 @@ xencrypt (char *secret, char *passwd)
free (buf);
return 1;
}
-libc_hidden_nolink_sunrpc (xencrypt, GLIBC_2_0)
+libc_hidden_nolink (xencrypt, GLIBC_2_0)
/*
* Decrypt secret key using passwd
@@ -164,7 +164,7 @@ xdecrypt (char *secret, char *passwd)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdecrypt)
#else
-libc_hidden_nolink_sunrpc (xdecrypt, GLIBC_2_1)
+libc_hidden_nolink (xdecrypt, GLIBC_2_1)
#endif
/*
@@ -74,7 +74,7 @@ xdr_free (xdrproc_t proc, char *objp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_free)
#else
-libc_hidden_nolink_sunrpc (xdr_free, GLIBC_2_0)
+libc_hidden_nolink (xdr_free, GLIBC_2_0)
#endif
/*
@@ -88,7 +88,7 @@ xdr_void (void)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_void)
#else
-libc_hidden_nolink_sunrpc (xdr_void, GLIBC_2_0)
+libc_hidden_nolink (xdr_void, GLIBC_2_0)
#endif
/*
@@ -129,7 +129,7 @@ xdr_int (XDR *xdrs, int *ip)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_int)
#else
-libc_hidden_nolink_sunrpc (xdr_int, GLIBC_2_0)
+libc_hidden_nolink (xdr_int, GLIBC_2_0)
#endif
/*
@@ -169,7 +169,7 @@ xdr_u_int (XDR *xdrs, u_int *up)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_u_int)
#else
-libc_hidden_nolink_sunrpc (xdr_u_int, GLIBC_2_0)
+libc_hidden_nolink (xdr_u_int, GLIBC_2_0)
#endif
/*
@@ -197,7 +197,7 @@ xdr_long (XDR *xdrs, long *lp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_long)
#else
-libc_hidden_nolink_sunrpc (xdr_long, GLIBC_2_0)
+libc_hidden_nolink (xdr_long, GLIBC_2_0)
#endif
/*
@@ -236,7 +236,7 @@ xdr_u_long (XDR *xdrs, u_long *ulp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_u_long)
#else
-libc_hidden_nolink_sunrpc (xdr_u_long, GLIBC_2_0)
+libc_hidden_nolink (xdr_u_long, GLIBC_2_0)
#endif
/*
@@ -272,7 +272,7 @@ xdr_hyper (XDR *xdrs, quad_t *llp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_hyper)
#else
-libc_hidden_nolink_sunrpc (xdr_hyper, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_hyper, GLIBC_2_1_1)
#endif
/*
@@ -308,7 +308,7 @@ xdr_u_hyper (XDR *xdrs, u_quad_t *ullp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_u_hyper)
#else
-libc_hidden_nolink_sunrpc (xdr_u_hyper, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_u_hyper, GLIBC_2_1_1)
#endif
bool_t
@@ -319,7 +319,7 @@ xdr_longlong_t (XDR *xdrs, quad_t *llp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_longlong_t)
#else
-libc_hidden_nolink_sunrpc (xdr_longlong_t, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_longlong_t, GLIBC_2_1_1)
#endif
bool_t
@@ -330,7 +330,7 @@ xdr_u_longlong_t (XDR *xdrs, u_quad_t *ullp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_u_longlong_t)
#else
-libc_hidden_nolink_sunrpc (xdr_u_longlong_t, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_u_longlong_t, GLIBC_2_1_1)
#endif
/*
@@ -363,7 +363,7 @@ xdr_short (XDR *xdrs, short *sp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_short)
#else
-libc_hidden_nolink_sunrpc (xdr_short, GLIBC_2_0)
+libc_hidden_nolink (xdr_short, GLIBC_2_0)
#endif
/*
@@ -396,7 +396,7 @@ xdr_u_short (XDR *xdrs, u_short *usp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_u_short)
#else
-libc_hidden_nolink_sunrpc (xdr_u_short, GLIBC_2_0)
+libc_hidden_nolink (xdr_u_short, GLIBC_2_0)
#endif
@@ -419,7 +419,7 @@ xdr_char (XDR *xdrs, char *cp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_char)
#else
-libc_hidden_nolink_sunrpc (xdr_char, GLIBC_2_0)
+libc_hidden_nolink (xdr_char, GLIBC_2_0)
#endif
/*
@@ -441,7 +441,7 @@ xdr_u_char (XDR *xdrs, u_char *cp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_u_char)
#else
-libc_hidden_nolink_sunrpc (xdr_u_char, GLIBC_2_0)
+libc_hidden_nolink (xdr_u_char, GLIBC_2_0)
#endif
/*
@@ -474,7 +474,7 @@ xdr_bool (XDR *xdrs, bool_t *bp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_bool)
#else
-libc_hidden_nolink_sunrpc (xdr_bool, GLIBC_2_0)
+libc_hidden_nolink (xdr_bool, GLIBC_2_0)
#endif
/*
@@ -530,7 +530,7 @@ xdr_enum (XDR *xdrs, enum_t *ep)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_enum)
#else
-libc_hidden_nolink_sunrpc (xdr_enum, GLIBC_2_0)
+libc_hidden_nolink (xdr_enum, GLIBC_2_0)
#endif
/*
@@ -585,7 +585,7 @@ xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_opaque)
#else
-libc_hidden_nolink_sunrpc (xdr_opaque, GLIBC_2_0)
+libc_hidden_nolink (xdr_opaque, GLIBC_2_0)
#endif
/*
@@ -649,7 +649,7 @@ xdr_bytes (XDR *xdrs, char **cpp, u_int *sizep, u_int maxsize)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_bytes)
#else
-libc_hidden_nolink_sunrpc (xdr_bytes, GLIBC_2_0)
+libc_hidden_nolink (xdr_bytes, GLIBC_2_0)
#endif
/*
@@ -664,7 +664,7 @@ xdr_netobj (XDR *xdrs, struct netobj *np)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_netobj)
#else
-libc_hidden_nolink_sunrpc (xdr_netobj, GLIBC_2_0)
+libc_hidden_nolink (xdr_netobj, GLIBC_2_0)
#endif
/*
@@ -716,7 +716,7 @@ xdr_union (XDR *xdrs,
return ((dfault == NULL_xdrproc_t) ? FALSE :
(*dfault) (xdrs, unp, LASTUNSIGNED));
}
-libc_hidden_nolink_sunrpc (xdr_union, GLIBC_2_0)
+libc_hidden_nolink (xdr_union, GLIBC_2_0)
/*
@@ -807,7 +807,7 @@ xdr_string (XDR *xdrs, char **cpp, u_int maxsize)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_string)
#else
-libc_hidden_nolink_sunrpc (xdr_string, GLIBC_2_0)
+libc_hidden_nolink (xdr_string, GLIBC_2_0)
#endif
/*
@@ -826,5 +826,5 @@ xdr_wrapstring (XDR *xdrs, char **cpp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_wrapstring)
#else
-libc_hidden_nolink_sunrpc (xdr_wrapstring, GLIBC_2_0)
+libc_hidden_nolink (xdr_wrapstring, GLIBC_2_0)
#endif
@@ -132,7 +132,7 @@ xdr_array (XDR *xdrs,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_array)
#else
-libc_hidden_nolink_sunrpc (xdr_array, GLIBC_2_0)
+libc_hidden_nolink (xdr_array, GLIBC_2_0)
#endif
/*
@@ -163,4 +163,4 @@ xdr_vector (XDR *xdrs, char *basep, u_int nelem, u_int elemsize,
}
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdr_vector, GLIBC_2_0)
+libc_hidden_nolink (xdr_vector, GLIBC_2_0)
@@ -157,7 +157,7 @@ xdr_float (XDR *xdrs, float *fp)
}
return (FALSE);
}
-libc_hidden_nolink_sunrpc (xdr_float, GLIBC_2_0)
+libc_hidden_nolink (xdr_float, GLIBC_2_0)
/*
* This routine works on Suns (Sky / 68000's) and Vaxen.
@@ -297,4 +297,4 @@ xdr_double (XDR *xdrs, double *dp)
}
return (FALSE);
}
-libc_hidden_nolink_sunrpc (xdr_double, GLIBC_2_0)
+libc_hidden_nolink (xdr_double, GLIBC_2_0)
@@ -48,14 +48,14 @@ xdr_int64_t (XDR *xdrs, int64_t *ip)
return FALSE;
}
}
-libc_hidden_nolink_sunrpc (xdr_int64_t, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_int64_t, GLIBC_2_1_1)
bool_t
xdr_quad_t (XDR *xdrs, quad_t *ip)
{
return xdr_int64_t (xdrs, (int64_t *) ip);
}
-libc_hidden_nolink_sunrpc (xdr_quad_t, GLIBC_2_3_4)
+libc_hidden_nolink (xdr_quad_t, GLIBC_2_3_4)
/* XDR 64bit unsigned integers */
bool_t
@@ -84,14 +84,14 @@ xdr_uint64_t (XDR *xdrs, uint64_t *uip)
return FALSE;
}
}
-libc_hidden_nolink_sunrpc (xdr_uint64_t, GLIBC_2_1_1)
+libc_hidden_nolink (xdr_uint64_t, GLIBC_2_1_1)
bool_t
xdr_u_quad_t (XDR *xdrs, u_quad_t *ip)
{
return xdr_uint64_t (xdrs, (uint64_t *) ip);
}
-libc_hidden_nolink_sunrpc (xdr_u_quad_t, GLIBC_2_3_4)
+libc_hidden_nolink (xdr_u_quad_t, GLIBC_2_3_4)
/* XDR 32bit integers */
bool_t
@@ -109,7 +109,7 @@ xdr_int32_t (XDR *xdrs, int32_t *lp)
return FALSE;
}
}
-libc_hidden_nolink_sunrpc (xdr_int32_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_int32_t, GLIBC_2_1)
/* XDR 32bit unsigned integers */
bool_t
@@ -130,7 +130,7 @@ xdr_uint32_t (XDR *xdrs, uint32_t *ulp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_uint32_t)
#else
-libc_hidden_nolink_sunrpc (xdr_uint32_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_uint32_t, GLIBC_2_1)
#endif
/* XDR 16bit integers */
@@ -155,7 +155,7 @@ xdr_int16_t (XDR *xdrs, int16_t *ip)
return FALSE;
}
}
-libc_hidden_nolink_sunrpc (xdr_int16_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_int16_t, GLIBC_2_1)
/* XDR 16bit unsigned integers */
bool_t
@@ -179,7 +179,7 @@ xdr_uint16_t (XDR *xdrs, uint16_t *uip)
return FALSE;
}
}
-libc_hidden_nolink_sunrpc (xdr_uint16_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_uint16_t, GLIBC_2_1)
/* XDR 8bit integers */
bool_t
@@ -203,7 +203,7 @@ xdr_int8_t (XDR *xdrs, int8_t *ip)
return FALSE;
}
}
-libc_hidden_nolink_sunrpc (xdr_int8_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_int8_t, GLIBC_2_1)
/* XDR 8bit unsigned integers */
bool_t
@@ -227,4 +227,4 @@ xdr_uint8_t (XDR *xdrs, uint8_t *uip)
return FALSE;
}
}
-libc_hidden_nolink_sunrpc (xdr_uint8_t, GLIBC_2_1)
+libc_hidden_nolink (xdr_uint8_t, GLIBC_2_1)
@@ -82,7 +82,7 @@ xdrmem_create (XDR *xdrs, const caddr_t addr, u_int size, enum xdr_op op)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdrmem_create)
#else
-libc_hidden_nolink_sunrpc (xdrmem_create, GLIBC_2_0)
+libc_hidden_nolink (xdrmem_create, GLIBC_2_0)
#endif
/*
@@ -191,7 +191,7 @@ xdrrec_create (XDR *xdrs, u_int sendsize,
rstrm->fbtbc = 0;
rstrm->last_frag = TRUE;
}
-libc_hidden_nolink_sunrpc (xdrrec_create, GLIBC_2_0)
+libc_hidden_nolink (xdrrec_create, GLIBC_2_0)
/*
@@ -479,7 +479,7 @@ xdrrec_skiprecord (XDR *xdrs)
rstrm->last_frag = FALSE;
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdrrec_skiprecord, GLIBC_2_0)
+libc_hidden_nolink (xdrrec_skiprecord, GLIBC_2_0)
/*
* Lookahead function.
@@ -503,7 +503,7 @@ xdrrec_eof (XDR *xdrs)
return TRUE;
return FALSE;
}
-libc_hidden_nolink_sunrpc (xdrrec_eof, GLIBC_2_0)
+libc_hidden_nolink (xdrrec_eof, GLIBC_2_0)
/*
* The client must tell the package when an end-of-record has occurred.
@@ -530,7 +530,7 @@ xdrrec_endofrecord (XDR *xdrs, bool_t sendnow)
rstrm->out_finger += BYTES_PER_XDR_UNIT;
return TRUE;
}
-libc_hidden_nolink_sunrpc (xdrrec_endofrecord, GLIBC_2_0)
+libc_hidden_nolink (xdrrec_endofrecord, GLIBC_2_0)
/*
@@ -93,7 +93,7 @@ xdr_reference (XDR *xdrs,
}
return stat;
}
-libc_hidden_nolink_sunrpc (xdr_reference, GLIBC_2_0)
+libc_hidden_nolink (xdr_reference, GLIBC_2_0)
/*
@@ -136,5 +136,5 @@ xdr_pointer (XDR *xdrs, char **objpp, u_int obj_size, xdrproc_t xdr_obj)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_pointer)
#else
-libc_hidden_nolink_sunrpc (xdr_pointer, GLIBC_2_0)
+libc_hidden_nolink (xdr_pointer, GLIBC_2_0)
#endif
@@ -162,5 +162,5 @@ xdr_sizeof (xdrproc_t func, void *data)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdr_sizeof)
#else
-libc_hidden_nolink_sunrpc (xdr_sizeof, GLIBC_2_1)
+libc_hidden_nolink (xdr_sizeof, GLIBC_2_1)
#endif
@@ -193,5 +193,5 @@ xdrstdio_putint32 (XDR *xdrs, const int32_t *ip)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (xdrstdio_create)
#else
-libc_hidden_nolink_sunrpc (xdrstdio_create, GLIBC_2_0)
+libc_hidden_nolink (xdrstdio_create, GLIBC_2_0)
#endif
The Sun RPC headers are not built, rpcgen program, librpcsvc and test for bug #20790 are completely removed. libtirpc is mature enough, librpcsvc and rpcgen are provided in rpcsvc-proto project. Signed-off-by: Petr Vorel <pvorel@suse.cz> --- Hi, this is a naive approach to stop providing the Sun RPC headers and related tools. It'd be great to move on and encourage using libtirpc and rpcsvc-proto for the rest of the users which are still using glibc implementation on never distros. Is it too early for it? If not, dropping --enable-obsolete-nsl could also be considered. make check failed on elf/tst-ldconfig-ld_so_conf-update and I was not able to figure out what broke it: FAIL: elf/tst-ldconfig-ld_so_conf-update Any hint what's wrong? make check-abi is ok, make xcheck has one more failure, but the result is the same on master (shouldn't be affected by this change). Kind regards, Petr .../strcoll-inputs/filelist#en_US.UTF-8 | 28 - config.h.in | 4 - config.make.in | 1 - configure | 20 +- configure.ac | 11 - include/libc-symbols.h | 7 +- include/shlib-compat.h | 8 +- manual/nss.texi | 4 +- scripts/build-many-glibcs.py | 6 +- sunrpc/Makefile | 131 +- sunrpc/auth_des.c | 4 +- sunrpc/auth_none.c | 2 +- sunrpc/auth_unix.c | 4 +- sunrpc/authdes_prot.c | 4 +- sunrpc/authuxprot.c | 2 +- sunrpc/bug20790.x | 1 - sunrpc/clnt_gen.c | 2 +- sunrpc/clnt_perr.c | 10 +- sunrpc/clnt_raw.c | 2 +- sunrpc/clnt_simp.c | 2 +- sunrpc/clnt_tcp.c | 2 +- sunrpc/clnt_udp.c | 6 +- sunrpc/clnt_unix.c | 2 +- sunrpc/get_myaddr.c | 2 +- sunrpc/key_call.c | 18 +- sunrpc/key_prot.c | 20 +- sunrpc/netname.c | 10 +- sunrpc/pm_getmaps.c | 2 +- sunrpc/pm_getport.c | 4 +- sunrpc/pmap_clnt.c | 4 +- sunrpc/pmap_prot.c | 2 +- sunrpc/pmap_prot2.c | 2 +- sunrpc/pmap_rmt.c | 8 +- sunrpc/proto.h | 65 - sunrpc/publickey.c | 4 +- sunrpc/rpc_clntout.c | 333 ---- sunrpc/rpc_cmsg.c | 2 +- sunrpc/rpc_common.c | 10 +- sunrpc/rpc_cout.c | 811 --------- sunrpc/rpc_dtable.c | 2 +- sunrpc/rpc_hout.c | 607 ------- sunrpc/rpc_main.c | 1451 ----------------- sunrpc/rpc_parse.c | 687 -------- sunrpc/rpc_parse.h | 165 -- sunrpc/rpc_prot.c | 14 +- sunrpc/rpc_sample.c | 336 ---- sunrpc/rpc_scan.c | 544 ------ sunrpc/rpc_scan.h | 104 -- sunrpc/rpc_svcout.c | 1093 ------------- sunrpc/rpc_tblout.c | 178 -- sunrpc/rpc_thread.c | 8 +- sunrpc/rpc_util.c | 525 ------ sunrpc/rpc_util.h | 154 -- sunrpc/rpcsvc/bootparam.h | 23 - sunrpc/rpcsvc/bootparam_prot.x | 97 -- sunrpc/rpcsvc/key_prot.x | 283 ---- sunrpc/rpcsvc/klm_prot.x | 130 -- sunrpc/rpcsvc/mount.x | 161 -- sunrpc/rpcsvc/nfs_prot.x | 352 ---- sunrpc/rpcsvc/nlm_prot.x | 203 --- sunrpc/rpcsvc/rex.x | 229 --- sunrpc/rpcsvc/rquota.x | 61 - sunrpc/rpcsvc/rstat.x | 145 -- sunrpc/rpcsvc/rusers.x | 228 --- sunrpc/rpcsvc/sm_inter.x | 110 -- sunrpc/rpcsvc/spray.x | 84 - sunrpc/rpcsvc/yppasswd.x | 61 - sunrpc/rtime.c | 2 +- sunrpc/svc.c | 32 +- sunrpc/svc_auth.c | 2 +- sunrpc/svc_raw.c | 2 +- sunrpc/svc_run.c | 4 +- sunrpc/svc_tcp.c | 4 +- sunrpc/svc_udp.c | 6 +- sunrpc/svc_unix.c | 4 +- sunrpc/svcauth_des.c | 2 +- sunrpc/xcrypt.c | 4 +- sunrpc/xdr.c | 44 +- sunrpc/xdr_array.c | 4 +- sunrpc/xdr_float.c | 4 +- sunrpc/xdr_intXX_t.c | 20 +- sunrpc/xdr_mem.c | 2 +- sunrpc/xdr_rec.c | 8 +- sunrpc/xdr_ref.c | 4 +- sunrpc/xdr_sizeof.c | 2 +- sunrpc/xdr_stdio.c | 2 +- 86 files changed, 160 insertions(+), 9587 deletions(-) delete mode 100644 sunrpc/bug20790.x delete mode 100644 sunrpc/proto.h delete mode 100644 sunrpc/rpc_clntout.c delete mode 100644 sunrpc/rpc_cout.c delete mode 100644 sunrpc/rpc_hout.c delete mode 100644 sunrpc/rpc_main.c delete mode 100644 sunrpc/rpc_parse.c delete mode 100644 sunrpc/rpc_parse.h delete mode 100644 sunrpc/rpc_sample.c delete mode 100644 sunrpc/rpc_scan.c delete mode 100644 sunrpc/rpc_scan.h delete mode 100644 sunrpc/rpc_svcout.c delete mode 100644 sunrpc/rpc_tblout.c delete mode 100644 sunrpc/rpc_util.c delete mode 100644 sunrpc/rpc_util.h delete mode 100644 sunrpc/rpcsvc/bootparam.h delete mode 100644 sunrpc/rpcsvc/bootparam_prot.x delete mode 100644 sunrpc/rpcsvc/key_prot.x delete mode 100644 sunrpc/rpcsvc/klm_prot.x delete mode 100644 sunrpc/rpcsvc/mount.x delete mode 100644 sunrpc/rpcsvc/nfs_prot.x delete mode 100644 sunrpc/rpcsvc/nlm_prot.x delete mode 100644 sunrpc/rpcsvc/rex.x delete mode 100644 sunrpc/rpcsvc/rquota.x delete mode 100644 sunrpc/rpcsvc/rstat.x delete mode 100644 sunrpc/rpcsvc/rusers.x delete mode 100644 sunrpc/rpcsvc/sm_inter.x delete mode 100644 sunrpc/rpcsvc/spray.x delete mode 100644 sunrpc/rpcsvc/yppasswd.x