aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS8
-rw-r--r--benchtests/strcoll-inputs/filelist#en_US.UTF-829
-rw-r--r--config.h.in4
-rw-r--r--config.make.in1
-rwxr-xr-xconfigure18
-rw-r--r--configure.ac11
-rw-r--r--include/libc-symbols.h7
-rw-r--r--include/shlib-compat.h8
-rw-r--r--malloc/thread-freeres.c5
-rw-r--r--manual/nss.texi4
-rwxr-xr-xscripts/build-many-glibcs.py6
-rw-r--r--sunrpc/Makefile152
-rw-r--r--sunrpc/bug20790.x1
-rw-r--r--sunrpc/proto.h65
-rw-r--r--sunrpc/rpc_clntout.c333
-rw-r--r--sunrpc/rpc_cout.c811
-rw-r--r--sunrpc/rpc_hout.c607
-rw-r--r--sunrpc/rpc_main.c1451
-rw-r--r--sunrpc/rpc_parse.c687
-rw-r--r--sunrpc/rpc_parse.h165
-rw-r--r--sunrpc/rpc_sample.c336
-rw-r--r--sunrpc/rpc_scan.c544
-rw-r--r--sunrpc/rpc_scan.h104
-rw-r--r--sunrpc/rpc_svcout.c1093
-rw-r--r--sunrpc/rpc_tblout.c178
-rw-r--r--sunrpc/rpc_util.c525
-rw-r--r--sunrpc/rpc_util.h154
-rw-r--r--sunrpc/rpcgen.c2
-rw-r--r--sunrpc/rpcsvc/bootparam.h23
-rw-r--r--sunrpc/rpcsvc/bootparam_prot.x97
-rw-r--r--sunrpc/rpcsvc/key_prot.x283
-rw-r--r--sunrpc/rpcsvc/klm_prot.x130
-rw-r--r--sunrpc/rpcsvc/mount.x161
-rw-r--r--sunrpc/rpcsvc/nfs_prot.x352
-rw-r--r--sunrpc/rpcsvc/nlm_prot.x203
-rw-r--r--sunrpc/rpcsvc/rex.x229
-rw-r--r--sunrpc/rpcsvc/rquota.x61
-rw-r--r--sunrpc/rpcsvc/rstat.x145
-rw-r--r--sunrpc/rpcsvc/rusers.x228
-rw-r--r--sunrpc/rpcsvc/sm_inter.x110
-rw-r--r--sunrpc/rpcsvc/spray.x84
-rw-r--r--sunrpc/rpcsvc/yppasswd.x61
-rw-r--r--sysdeps/unix/sysv/linux/arc/libc.abilist162
43 files changed, 35 insertions, 9603 deletions
diff --git a/NEWS b/NEWS
index f69d48a38f..81b014a7ee 100644
--- a/NEWS
+++ b/NEWS
@@ -91,6 +91,14 @@ Major new features:
Deprecated and removed features, and other changes affecting compatibility:
+* Remove configure option --enable-obsolete-rpc. Sun RPC is removed
+ from glibc. This includes the rpcgen program, librpcsvc, and the Sun
+ RPC header files. Backward compatibility for old programs is kept
+ only for architectures and ABIs that have been added in or before
+ glibc 2.31. New programs need to use TI-RPC
+ <http://git.linux-nfs.org/?p=steved/libtirpc.git;a=summary> and
+ rpcsvc-proto <https://github.com/thkukuk/rpcsvc-proto>.
+
* Remove configure option --enable-obsolete-nsl. libnsl is only built
as shared library for backward compatibility and the NSS modules "nis"
and "nisplus" are not built at all and libnsl's headers aren't
diff --git a/benchtests/strcoll-inputs/filelist#en_US.UTF-8 b/benchtests/strcoll-inputs/filelist#en_US.UTF-8
index aa44107ad6..2f4ef195bb 100644
--- a/benchtests/strcoll-inputs/filelist#en_US.UTF-8
+++ b/benchtests/strcoll-inputs/filelist#en_US.UTF-8
@@ -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
@@ -14212,20 +14187,16 @@ getrpcent_r.c
rpc_common.c
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
diff --git a/config.h.in b/config.h.in
index 4693234552..b823c8e080 100644
--- a/config.h.in
+++ b/config.h.in
@@ -169,10 +169,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 Systemtap <sys/sdt.h> probes should be defined. */
#undef USE_STAP_PROBE
diff --git a/config.make.in b/config.make.in
index cefb6d4a90..1ac9417245 100644
--- a/config.make.in
+++ b/config.make.in
@@ -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-crypt = @build_crypt@
build-nscd = @build_nscd@
use-nscd = @use_nscd@
diff --git a/configure b/configure
index 793c0068cc..4795e721e5 100755
--- a/configure
+++ b/configure
@@ -673,7 +673,6 @@ base_machine
have_tunables
build_pt_chown
build_nscd
-link_obsolete_rpc
libc_cv_static_nss_crypt
libc_cv_nss_crypt
build_crypt
@@ -784,7 +783,6 @@ enable_multi_arch
enable_experimental_malloc
enable_crypt
enable_nss_crypt
-enable_obsolete_rpc
enable_systemtap
enable_build_nscd
enable_nscd
@@ -1455,8 +1453,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-systemtap enable systemtap static probe points [default=no]
--disable-build-nscd disable building and installing the nscd daemon
--disable-nscd library functions will not contact the nscd daemon
@@ -3636,20 +3632,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-systemtap was given.
if test "${enable_systemtap+set}" = set; then :
enableval=$enable_systemtap; systemtap=$enableval
diff --git a/configure.ac b/configure.ac
index 33a1189804..93e68fb696 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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([systemtap],
[AS_HELP_STRING([--enable-systemtap],
[enable systemtap static probe points @<:@default=no@:>@])],
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 29483779fe..60153bb50d 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -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_sunrpc(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)
diff --git a/include/shlib-compat.h b/include/shlib-compat.h
index c8fc6925a0..b58281857a 100644
--- a/include/shlib-compat.h
+++ b/include/shlib-compat.h
@@ -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
diff --git a/malloc/thread-freeres.c b/malloc/thread-freeres.c
index eb29d53310..268f1c3688 100644
--- a/malloc/thread-freeres.c
+++ b/malloc/thread-freeres.c
@@ -22,6 +22,7 @@
#include <rpc/rpc.h>
#include <string.h>
#include <tls-internal.h>
+#include <shlib-compat.h>
/* Thread shutdown function. Note that this function must be called
for threads during shutdown for correctness reasons. Unlike
@@ -30,7 +31,9 @@
void
__libc_thread_freeres (void)
{
- call_function_static_weak (__rpc_thread_destroy);
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_32)
+ __rpc_thread_destroy ();
+#endif
call_function_static_weak (__res_thread_freeres);
__glibc_tls_internal_free ();
diff --git a/manual/nss.texi b/manual/nss.texi
index 80e730768e..3aaa7786f8 100644
--- a/manual/nss.texi
+++ b/manual/nss.texi
@@ -335,9 +335,7 @@ with a @code{+} character was found NIS was used. This kind of lookup
was removed and now the default value for the services is @code{files}.
libnss_compat no longer depends on libnsl and can be used without NIS.
-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
diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
index 00ba6f6b11..8010716d36 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -404,8 +404,6 @@ class Context(object):
{'arch': 'i686', 'ccopts': '-m32 -march=i686'}],
extra_glibcs=[{'variant': 'disable-multi-arch',
'cfg': ['--disable-multi-arch']},
- {'variant': 'enable-obsolete',
- 'cfg': ['--enable-obsolete-rpc']},
{'variant': 'static-pie',
'cfg': ['--enable-static-pie']},
{'variant': 'x32-static-pie',
@@ -419,10 +417,6 @@ class Context(object):
'arch': 'i686',
'ccopts': '-m32 -march=i686',
'cfg': ['--disable-multi-arch']},
- {'variant': 'enable-obsolete',
- 'arch': 'i686',
- 'ccopts': '-m32 -march=i686',
- 'cfg': ['--enable-obsolete-rpc']},
{'arch': 'i486',
'ccopts': '-m32 -march=i486'},
{'arch': 'i586',
diff --git a/sunrpc/Makefile b/sunrpc/Makefile
index 2d1861f3dc..82710b379a 100644
--- a/sunrpc/Makefile
+++ b/sunrpc/Makefile
@@ -22,11 +22,13 @@ subdir := sunrpc
include ../Makeconfig
+ifdef have-GLIBC_2.31
+
# The code in this subdirectory is taken from Sun's RPCSRC-4.0
# 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:
@@ -44,23 +46,6 @@ 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
-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 \
clnt_udp get_myaddr key_call netname pm_getport \
@@ -75,20 +60,9 @@ routines := auth_none authuxprot clnt_raw clnt_simp \
des_crypt des_impl des_soft key_prot openchild rtime svcauth_des \
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
@@ -100,22 +74,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), \
@@ -133,19 +91,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
@@ -159,83 +104,26 @@ $(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
-
-
-# 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: \
$(common-objpfx)linkobj/libc.so $(shared-thread-library)
+
+else # !have-GLIBC_2.31
+
+routines = $(routines-for-nss)
+
+include ../Rules
+
+ifeq (yes,$(build-shared))
+# Create an empty archive, so that Makerules can reference it.
+subdir_lib: $(objpfx)librpc_compat_pic.a
+$(objpfx)librpc_compat_pic.a: Makefile
+ $(make-target-directory)
+ $(AR) cr $@
+endif
+
+
+endif # !have-GLIBC_2.31
diff --git a/sunrpc/bug20790.x b/sunrpc/bug20790.x
deleted file mode 100644
index a00c9b3830..0000000000
--- a/sunrpc/bug20790.x
+++ /dev/null
@@ -1 +0,0 @@
-program TPROG { version TVERS { int FUNC(int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) = 1; } = 1; } = 1;
diff --git a/sunrpc/proto.h b/sunrpc/proto.h
deleted file mode 100644
index ea28565b1e..0000000000
--- a/sunrpc/proto.h
+++ /dev/null
@@ -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
diff --git a/sunrpc/rpc_clntout.c b/sunrpc/rpc_clntout.c
deleted file mode 100644
index ce4d2a4c95..0000000000
--- a/sunrpc/rpc_clntout.c
+++ /dev/null
@@ -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);
- }
- }
-}
diff --git a/sunrpc/rpc_cout.c b/sunrpc/rpc_cout.c
deleted file mode 100644
index db7b571b33..0000000000
--- a/sunrpc/rpc_cout.c
+++ /dev/null
@@ -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;
-}
diff --git a/sunrpc/rpc_hout.c b/sunrpc/rpc_hout.c
deleted file mode 100644
index 10f793d233..0000000000
--- a/sunrpc/rpc_hout.c
+++ /dev/null
@@ -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;
-}
diff --git a/sunrpc/rpc_main.c b/sunrpc/rpc_main.c
deleted file mode 100644
index c6607848cc..0000000000
--- a/sunrpc/rpc_main.c
+++ /dev/null
@@ -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);
-}
diff --git a/sunrpc/rpc_parse.c b/sunrpc/rpc_parse.c
deleted file mode 100644
index 505a6554cf..0000000000
--- a/sunrpc/rpc_parse.c
+++ /dev/null
@@ -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;
- }
-}
diff --git a/sunrpc/rpc_parse.h b/sunrpc/rpc_parse.h
deleted file mode 100644
index e2e2f1e106..0000000000
--- a/sunrpc/rpc_parse.h
+++ /dev/null
@@ -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;
diff --git a/sunrpc/rpc_sample.c b/sunrpc/rpc_sample.c
deleted file mode 100644
index e90b58c080..0000000000
--- a/sunrpc/rpc_sample.c
+++ /dev/null
@@ -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");
-}
diff --git a/sunrpc/rpc_scan.c b/sunrpc/rpc_scan.c
deleted file mode 100644
index 0a88bafe76..0000000000
--- a/sunrpc/rpc_scan.c
+++ /dev/null
@@ -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;
-}
diff --git a/sunrpc/rpc_scan.h b/sunrpc/rpc_scan.h
deleted file mode 100644
index 9786a513b9..0000000000
--- a/sunrpc/rpc_scan.h
+++ /dev/null
@@ -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));
diff --git a/sunrpc/rpc_svcout.c b/sunrpc/rpc_svcout.c
deleted file mode 100644
index 4f12a8146c..0000000000
--- a/sunrpc/rpc_svcout.c
+++ /dev/null
@@ -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");
-}
diff --git a/sunrpc/rpc_tblout.c b/sunrpc/rpc_tblout.c
deleted file mode 100644
index a7d2f43528..0000000000
--- a/sunrpc/rpc_tblout.c
+++ /dev/null
@@ -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");
-}
diff --git a/sunrpc/rpc_util.c b/sunrpc/rpc_util.c
deleted file mode 100644
index 52aa69757b..0000000000
--- a/sunrpc/rpc_util.c
+++ /dev/null
@@ -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;
-}
diff --git a/sunrpc/rpc_util.h b/sunrpc/rpc_util.h
deleted file mode 100644
index 53316d9516..0000000000
--- a/sunrpc/rpc_util.h
+++ /dev/null
@@ -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);
diff --git a/sunrpc/rpcgen.c b/sunrpc/rpcgen.c
deleted file mode 100644
index 1b455ba243..0000000000
--- a/sunrpc/rpcgen.c
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Empty file expected by glibc's standard build rules for
- executables. */
diff --git a/sunrpc/rpcsvc/bootparam.h b/sunrpc/rpcsvc/bootparam.h
deleted file mode 100644
index 0cd3ebbe5a..0000000000
--- a/sunrpc/rpcsvc/bootparam.h
+++ /dev/null
@@ -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 */
diff --git a/sunrpc/rpcsvc/bootparam_prot.x b/sunrpc/rpcsvc/bootparam_prot.x
deleted file mode 100644
index 117e428560..0000000000
--- a/sunrpc/rpcsvc/bootparam_prot.x
+++ /dev/null
@@ -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;
diff --git a/sunrpc/rpcsvc/key_prot.x b/sunrpc/rpcsvc/key_prot.x
deleted file mode 100644
index 9baf943916..0000000000
--- a/sunrpc/rpcsvc/key_prot.x
+++ /dev/null
@@ -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;
diff --git a/sunrpc/rpcsvc/klm_prot.x b/sunrpc/rpcsvc/klm_prot.x
deleted file mode 100644
index aee5b1a962..0000000000
--- a/sunrpc/rpcsvc/klm_prot.x
+++ /dev/null
@@ -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;
diff --git a/sunrpc/rpcsvc/mount.x b/sunrpc/rpcsvc/mount.x
deleted file mode 100644
index ed3b339c49..0000000000
--- a/sunrpc/rpcsvc/mount.x
+++ /dev/null
@@ -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;
diff --git a/sunrpc/rpcsvc/nfs_prot.x b/sunrpc/rpcsvc/nfs_prot.x
deleted file mode 100644
index ad992e238f..0000000000
--- a/sunrpc/rpcsvc/nfs_prot.x
+++ /dev/null
@@ -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;
diff --git a/sunrpc/rpcsvc/nlm_prot.x b/sunrpc/rpcsvc/nlm_prot.x
deleted file mode 100644
index 81ff13735e..0000000000
--- a/sunrpc/rpcsvc/nlm_prot.x
+++ /dev/null
@@ -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;
diff --git a/sunrpc/rpcsvc/rex.x b/sunrpc/rpcsvc/rex.x
deleted file mode 100644
index b5baf15a85..0000000000
--- a/sunrpc/rpcsvc/rex.x
+++ /dev/null
@@ -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;
diff --git a/sunrpc/rpcsvc/rquota.x b/sunrpc/rpcsvc/rquota.x
deleted file mode 100644
index c4575240d3..0000000000
--- a/sunrpc/rpcsvc/rquota.x
+++ /dev/null
@@ -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;
diff --git a/sunrpc/rpcsvc/rstat.x b/sunrpc/rpcsvc/rstat.x
deleted file mode 100644
index 9b7b102218..0000000000
--- a/sunrpc/rpcsvc/rstat.x
+++ /dev/null
@@ -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;
diff --git a/sunrpc/rpcsvc/rusers.x b/sunrpc/rpcsvc/rusers.x
deleted file mode 100644
index 5bbfe97e79..0000000000
--- a/sunrpc/rpcsvc/rusers.x
+++ /dev/null
@@ -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
diff --git a/sunrpc/rpcsvc/sm_inter.x b/sunrpc/rpcsvc/sm_inter.x
deleted file mode 100644
index 767f0e0856..0000000000
--- a/sunrpc/rpcsvc/sm_inter.x
+++ /dev/null
@@ -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 */
-};
diff --git a/sunrpc/rpcsvc/spray.x b/sunrpc/rpcsvc/spray.x
deleted file mode 100644
index 68b7c48442..0000000000
--- a/sunrpc/rpcsvc/spray.x
+++ /dev/null
@@ -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;
diff --git a/sunrpc/rpcsvc/yppasswd.x b/sunrpc/rpcsvc/yppasswd.x
deleted file mode 100644
index 34e3efe3f9..0000000000
--- a/sunrpc/rpcsvc/yppasswd.x
+++ /dev/null
@@ -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 */
-};
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index 6e847cff8a..0d1ce97229 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -265,9 +265,6 @@ GLIBC_2.32 __iswupper_l F
GLIBC_2.32 __iswxdigit_l F
GLIBC_2.32 __isxdigit_l F
GLIBC_2.32 __ivaliduser F
-GLIBC_2.32 __key_decryptsession_pk_LOCAL D 0x4
-GLIBC_2.32 __key_encryptsession_pk_LOCAL D 0x4
-GLIBC_2.32 __key_gendes_LOCAL D 0x4
GLIBC_2.32 __libc_allocate_rtsig F
GLIBC_2.32 __libc_calloc F
GLIBC_2.32 __libc_current_sigrtmax F
@@ -348,10 +345,6 @@ GLIBC_2.32 __res_nclose F
GLIBC_2.32 __res_ninit F
GLIBC_2.32 __res_randomid F
GLIBC_2.32 __res_state F
-GLIBC_2.32 __rpc_thread_createerr F
-GLIBC_2.32 __rpc_thread_svc_fdset F
-GLIBC_2.32 __rpc_thread_svc_max_pollfd F
-GLIBC_2.32 __rpc_thread_svc_pollfd F
GLIBC_2.32 __rseq_abi T 0x20
GLIBC_2.32 __sbrk F
GLIBC_2.32 __sched_cpualloc F
@@ -494,7 +487,6 @@ GLIBC_2.32 __xpg_sigpause F
GLIBC_2.32 __xpg_strerror_r F
GLIBC_2.32 __xstat F
GLIBC_2.32 __xstat64 F
-GLIBC_2.32 _authenticate F
GLIBC_2.32 _dl_mcount_wrapper F
GLIBC_2.32 _dl_mcount_wrapper_check F
GLIBC_2.32 _environ D 0x4
@@ -508,7 +500,6 @@ GLIBC_2.32 _mcount F
GLIBC_2.32 _nl_default_dirname D 0x12
GLIBC_2.32 _nl_domain_bindings D 0x4
GLIBC_2.32 _nl_msg_cat_cntr D 0x4
-GLIBC_2.32 _null_auth D 0xc
GLIBC_2.32 _obstack_allocated_p F
GLIBC_2.32 _obstack_begin F
GLIBC_2.32 _obstack_begin_1 F
@@ -517,8 +508,6 @@ GLIBC_2.32 _obstack_memory_used F
GLIBC_2.32 _obstack_newchunk F
GLIBC_2.32 _res D 0x200
GLIBC_2.32 _res_hconf D 0x30
-GLIBC_2.32 _rpc_dtablesize F
-GLIBC_2.32 _seterr_reply F
GLIBC_2.32 _setjmp F
GLIBC_2.32 _tolower F
GLIBC_2.32 _toupper F
@@ -566,12 +555,6 @@ GLIBC_2.32 atof F
GLIBC_2.32 atoi F
GLIBC_2.32 atol F
GLIBC_2.32 atoll F
-GLIBC_2.32 authdes_create F
-GLIBC_2.32 authdes_getucred F
-GLIBC_2.32 authdes_pk_create F
-GLIBC_2.32 authnone_create F
-GLIBC_2.32 authunix_create F
-GLIBC_2.32 authunix_create_default F
GLIBC_2.32 backtrace F
GLIBC_2.32 backtrace_symbols F
GLIBC_2.32 backtrace_symbols_fd F
@@ -591,14 +574,12 @@ GLIBC_2.32 c16rtomb F
GLIBC_2.32 c32rtomb F
GLIBC_2.32 cacheflush F
GLIBC_2.32 calloc F
-GLIBC_2.32 callrpc F
GLIBC_2.32 canonicalize_file_name F
GLIBC_2.32 capget F
GLIBC_2.32 capset F
GLIBC_2.32 catclose F
GLIBC_2.32 catgets F
GLIBC_2.32 catopen F
-GLIBC_2.32 cbc_crypt F
GLIBC_2.32 cfgetispeed F
GLIBC_2.32 cfgetospeed F
GLIBC_2.32 cfmakeraw F
@@ -613,19 +594,6 @@ GLIBC_2.32 chroot F
GLIBC_2.32 clearenv F
GLIBC_2.32 clearerr F
GLIBC_2.32 clearerr_unlocked F
-GLIBC_2.32 clnt_broadcast F
-GLIBC_2.32 clnt_create F
-GLIBC_2.32 clnt_pcreateerror F
-GLIBC_2.32 clnt_perrno F
-GLIBC_2.32 clnt_perror F
-GLIBC_2.32 clnt_spcreateerror F
-GLIBC_2.32 clnt_sperrno F
-GLIBC_2.32 clnt_sperror F
-GLIBC_2.32 clntraw_create F
-GLIBC_2.32 clnttcp_create F
-GLIBC_2.32 clntudp_bufcreate F
-GLIBC_2.32 clntudp_create F
-GLIBC_2.32 clntunix_create F
GLIBC_2.32 clock F
GLIBC_2.32 clock_adjtime F
GLIBC_2.32 clock_getcpuclockid F
@@ -654,7 +622,6 @@ GLIBC_2.32 daylight D 0x4
GLIBC_2.32 dcgettext F
GLIBC_2.32 dcngettext F
GLIBC_2.32 delete_module F
-GLIBC_2.32 des_setparity F
GLIBC_2.32 dgettext F
GLIBC_2.32 difftime F
GLIBC_2.32 dirfd F
@@ -671,7 +638,6 @@ GLIBC_2.32 dup3 F
GLIBC_2.32 duplocale F
GLIBC_2.32 dysize F
GLIBC_2.32 eaccess F
-GLIBC_2.32 ecb_crypt F
GLIBC_2.32 ecvt F
GLIBC_2.32 ecvt_r F
GLIBC_2.32 endaliasent F
@@ -863,7 +829,6 @@ GLIBC_2.32 gai_strerror F
GLIBC_2.32 gcvt F
GLIBC_2.32 get_avphys_pages F
GLIBC_2.32 get_current_dir_name F
-GLIBC_2.32 get_myaddress F
GLIBC_2.32 get_nprocs F
GLIBC_2.32 get_nprocs_conf F
GLIBC_2.32 get_phys_pages F
@@ -933,7 +898,6 @@ GLIBC_2.32 getnetent F
GLIBC_2.32 getnetent_r F
GLIBC_2.32 getnetgrent F
GLIBC_2.32 getnetgrent_r F
-GLIBC_2.32 getnetname F
GLIBC_2.32 getopt F
GLIBC_2.32 getopt_long F
GLIBC_2.32 getopt_long_only F
@@ -952,7 +916,6 @@ GLIBC_2.32 getprotobynumber_r F
GLIBC_2.32 getprotoent F
GLIBC_2.32 getprotoent_r F
GLIBC_2.32 getpt F
-GLIBC_2.32 getpublickey F
GLIBC_2.32 getpw F
GLIBC_2.32 getpwent F
GLIBC_2.32 getpwent_r F
@@ -971,10 +934,8 @@ GLIBC_2.32 getrpcbynumber F
GLIBC_2.32 getrpcbynumber_r F
GLIBC_2.32 getrpcent F
GLIBC_2.32 getrpcent_r F
-GLIBC_2.32 getrpcport F
GLIBC_2.32 getrusage F
GLIBC_2.32 gets F
-GLIBC_2.32 getsecretkey F
GLIBC_2.32 getservbyname F
GLIBC_2.32 getservbyname_r F
GLIBC_2.32 getservbyport F
@@ -1043,7 +1004,6 @@ GLIBC_2.32 hcreate_r F
GLIBC_2.32 hdestroy F
GLIBC_2.32 hdestroy_r F
GLIBC_2.32 herror F
-GLIBC_2.32 host2netname F
GLIBC_2.32 hsearch F
GLIBC_2.32 hsearch_r F
GLIBC_2.32 hstrerror F
@@ -1166,15 +1126,6 @@ GLIBC_2.32 isxdigit F
GLIBC_2.32 isxdigit_l F
GLIBC_2.32 jrand48 F
GLIBC_2.32 jrand48_r F
-GLIBC_2.32 key_decryptsession F
-GLIBC_2.32 key_decryptsession_pk F
-GLIBC_2.32 key_encryptsession F
-GLIBC_2.32 key_encryptsession_pk F
-GLIBC_2.32 key_gendes F
-GLIBC_2.32 key_get_conv F
-GLIBC_2.32 key_secretkey_is_set F
-GLIBC_2.32 key_setnet F
-GLIBC_2.32 key_setsecret F
GLIBC_2.32 kill F
GLIBC_2.32 killpg F
GLIBC_2.32 klogctl F
@@ -1291,8 +1242,6 @@ GLIBC_2.32 munmap F
GLIBC_2.32 muntrace F
GLIBC_2.32 name_to_handle_at F
GLIBC_2.32 nanosleep F
-GLIBC_2.32 netname2host F
-GLIBC_2.32 netname2user F
GLIBC_2.32 newlocale F
GLIBC_2.32 nftw F
GLIBC_2.32 nftw64 F
@@ -1327,7 +1276,6 @@ GLIBC_2.32 opterr D 0x4
GLIBC_2.32 optind D 0x4
GLIBC_2.32 optopt D 0x4
GLIBC_2.32 parse_printf_format F
-GLIBC_2.32 passwd2des F
GLIBC_2.32 pathconf F
GLIBC_2.32 pause F
GLIBC_2.32 pclose F
@@ -1341,11 +1289,6 @@ GLIBC_2.32 pkey_free F
GLIBC_2.32 pkey_get F
GLIBC_2.32 pkey_mprotect F
GLIBC_2.32 pkey_set F
-GLIBC_2.32 pmap_getmaps F
-GLIBC_2.32 pmap_getport F
-GLIBC_2.32 pmap_rmtcall F
-GLIBC_2.32 pmap_set F
-GLIBC_2.32 pmap_unset F
GLIBC_2.32 poll F
GLIBC_2.32 popen F
GLIBC_2.32 posix_fadvise F
@@ -1516,7 +1459,6 @@ GLIBC_2.32 register_printf_function F
GLIBC_2.32 register_printf_modifier F
GLIBC_2.32 register_printf_specifier F
GLIBC_2.32 register_printf_type F
-GLIBC_2.32 registerrpc F
GLIBC_2.32 remap_file_pages F
GLIBC_2.32 remove F
GLIBC_2.32 removexattr F
@@ -1532,11 +1474,9 @@ GLIBC_2.32 rexec_af F
GLIBC_2.32 rexecoptions D 0x4
GLIBC_2.32 rindex F
GLIBC_2.32 rmdir F
-GLIBC_2.32 rpc_createerr D 0x10
GLIBC_2.32 rpmatch F
GLIBC_2.32 rresvport F
GLIBC_2.32 rresvport_af F
-GLIBC_2.32 rtime F
GLIBC_2.32 ruserok F
GLIBC_2.32 ruserok_af F
GLIBC_2.32 ruserpass F
@@ -1772,34 +1712,6 @@ GLIBC_2.32 strverscmp F
GLIBC_2.32 strxfrm F
GLIBC_2.32 strxfrm_l F
GLIBC_2.32 stty F
-GLIBC_2.32 svc_exit F
-GLIBC_2.32 svc_fdset D 0x80
-GLIBC_2.32 svc_getreq F
-GLIBC_2.32 svc_getreq_common F
-GLIBC_2.32 svc_getreq_poll F
-GLIBC_2.32 svc_getreqset F
-GLIBC_2.32 svc_max_pollfd D 0x4
-GLIBC_2.32 svc_pollfd D 0x4
-GLIBC_2.32 svc_register F
-GLIBC_2.32 svc_run F
-GLIBC_2.32 svc_sendreply F
-GLIBC_2.32 svc_unregister F
-GLIBC_2.32 svcauthdes_stats D 0xc
-GLIBC_2.32 svcerr_auth F
-GLIBC_2.32 svcerr_decode F
-GLIBC_2.32 svcerr_noproc F
-GLIBC_2.32 svcerr_noprog F
-GLIBC_2.32 svcerr_progvers F
-GLIBC_2.32 svcerr_systemerr F
-GLIBC_2.32 svcerr_weakauth F
-GLIBC_2.32 svcfd_create F
-GLIBC_2.32 svcraw_create F
-GLIBC_2.32 svctcp_create F
-GLIBC_2.32 svcudp_bufcreate F
-GLIBC_2.32 svcudp_create F
-GLIBC_2.32 svcudp_enablecache F
-GLIBC_2.32 svcunix_create F
-GLIBC_2.32 svcunixfd_create F
GLIBC_2.32 swab F
GLIBC_2.32 swapcontext F
GLIBC_2.32 swapoff F
@@ -1890,7 +1802,6 @@ GLIBC_2.32 unshare F
GLIBC_2.32 updwtmp F
GLIBC_2.32 updwtmpx F
GLIBC_2.32 uselocale F
-GLIBC_2.32 user2netname F
GLIBC_2.32 usleep F
GLIBC_2.32 utime F
GLIBC_2.32 utimensat F
@@ -2010,76 +1921,3 @@ GLIBC_2.32 wprintf F
GLIBC_2.32 write F
GLIBC_2.32 writev F
GLIBC_2.32 wscanf F
-GLIBC_2.32 xdecrypt F
-GLIBC_2.32 xdr_accepted_reply F
-GLIBC_2.32 xdr_array F
-GLIBC_2.32 xdr_authdes_cred F
-GLIBC_2.32 xdr_authdes_verf F
-GLIBC_2.32 xdr_authunix_parms F
-GLIBC_2.32 xdr_bool F
-GLIBC_2.32 xdr_bytes F
-GLIBC_2.32 xdr_callhdr F
-GLIBC_2.32 xdr_callmsg F
-GLIBC_2.32 xdr_char F
-GLIBC_2.32 xdr_cryptkeyarg F
-GLIBC_2.32 xdr_cryptkeyarg2 F
-GLIBC_2.32 xdr_cryptkeyres F
-GLIBC_2.32 xdr_des_block F
-GLIBC_2.32 xdr_double F
-GLIBC_2.32 xdr_enum F
-GLIBC_2.32 xdr_float F
-GLIBC_2.32 xdr_free F
-GLIBC_2.32 xdr_getcredres F
-GLIBC_2.32 xdr_hyper F
-GLIBC_2.32 xdr_int F
-GLIBC_2.32 xdr_int16_t F
-GLIBC_2.32 xdr_int32_t F
-GLIBC_2.32 xdr_int64_t F
-GLIBC_2.32 xdr_int8_t F
-GLIBC_2.32 xdr_key_netstarg F
-GLIBC_2.32 xdr_key_netstres F
-GLIBC_2.32 xdr_keybuf F
-GLIBC_2.32 xdr_keystatus F
-GLIBC_2.32 xdr_long F
-GLIBC_2.32 xdr_longlong_t F
-GLIBC_2.32 xdr_netnamestr F
-GLIBC_2.32 xdr_netobj F
-GLIBC_2.32 xdr_opaque F
-GLIBC_2.32 xdr_opaque_auth F
-GLIBC_2.32 xdr_pmap F
-GLIBC_2.32 xdr_pmaplist F
-GLIBC_2.32 xdr_pointer F
-GLIBC_2.32 xdr_quad_t F
-GLIBC_2.32 xdr_reference F
-GLIBC_2.32 xdr_rejected_reply F
-GLIBC_2.32 xdr_replymsg F
-GLIBC_2.32 xdr_rmtcall_args F
-GLIBC_2.32 xdr_rmtcallres F
-GLIBC_2.32 xdr_short F
-GLIBC_2.32 xdr_sizeof F
-GLIBC_2.32 xdr_string F
-GLIBC_2.32 xdr_u_char F
-GLIBC_2.32 xdr_u_hyper F
-GLIBC_2.32 xdr_u_int F
-GLIBC_2.32 xdr_u_long F
-GLIBC_2.32 xdr_u_longlong_t F
-GLIBC_2.32 xdr_u_quad_t F
-GLIBC_2.32 xdr_u_short F
-GLIBC_2.32 xdr_uint16_t F
-GLIBC_2.32 xdr_uint32_t F
-GLIBC_2.32 xdr_uint64_t F
-GLIBC_2.32 xdr_uint8_t F
-GLIBC_2.32 xdr_union F
-GLIBC_2.32 xdr_unixcred F
-GLIBC_2.32 xdr_vector F
-GLIBC_2.32 xdr_void F
-GLIBC_2.32 xdr_wrapstring F
-GLIBC_2.32 xdrmem_create F
-GLIBC_2.32 xdrrec_create F
-GLIBC_2.32 xdrrec_endofrecord F
-GLIBC_2.32 xdrrec_eof F
-GLIBC_2.32 xdrrec_skiprecord F
-GLIBC_2.32 xdrstdio_create F
-GLIBC_2.32 xencrypt F
-GLIBC_2.32 xprt_register F
-GLIBC_2.32 xprt_unregister F