public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Carlos O'Donell <carlos@redhat.com>
To: Florian Weimer <fweimer@redhat.com>, libc-alpha@sourceware.org
Subject: Re: [PATCH] Remove --enable-obsolete-rpc configure flag
Date: Mon, 13 Jul 2020 13:31:47 -0400	[thread overview]
Message-ID: <2e508c7a-3e53-43e9-9e2b-f5a736f07ccc@redhat.com> (raw)
In-Reply-To: <87a706wc1b.fsf@oldenburg2.str.redhat.com>

On 7/11/20 7:01 AM, Florian Weimer via Libc-alpha wrote:
> From: Petr Vorel <pvorel@suse.cz>
> 
> Sun RPC was removed from glibc. This includes rpcgen program, librpcsvc,
> and Sun RPC headers. Also test for bug #20790 was removed
> (test for rpcgen).
> 
> Backward compatibility for old programs is kept only for architectures
> and ABIs that have been added in or before version 2.28.
> 
> libtirpc is mature enough, librpcsvc and rpcgen are provided in
> rpcsvc-proto project.
> 
> NOTE: libnsl code depends on Sun RPC (installed libnsl headers use
> installed Sun RPC headers), thus --enable-obsolete-rpc was a dependency
> for --enable-obsolete-nsl (removed in a previous commit).
> 
> The arc ABI list file has to be updated because the port was added
> with the sunrpc symbols.

No regressions on x86_64 or i686.

I audited 162 symbols on x86_64, i686 and ARC builds before and after
the patches.

Verified x86 targets keep their existing compat symbols.

I cross checked these symbols:

__key_decryptsession_pk_LOCAL 
__key_encryptsession_pk_LOCAL 
__key_gendes_LOCAL
getrpcport

Which are now fixed on x86_64 and i686. So that matches my expectations.

Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
 
> ---
> Built with build-many-glibcs.py, with no new failures (i686-gnu is
> currently broken and in the process of being fixed).
> 
>  NEWS                                           |    8 +
>  benchtests/strcoll-inputs/filelist#en_US.UTF-8 |   29 -
>  config.h.in                                    |    4 -
>  config.make.in                                 |    1 -
>  configure                                      |   18 -
>  configure.ac                                   |   11 -
>  include/libc-symbols.h                         |    7 +-
>  include/shlib-compat.h                         |    8 +-
>  malloc/thread-freeres.c                        |    5 +-
>  manual/nss.texi                                |    4 +-
>  scripts/build-many-glibcs.py                   |    6 -
>  sunrpc/Makefile                                |  152 +--
>  sunrpc/bug20790.x                              |    1 -
>  sunrpc/proto.h                                 |   65 --
>  sunrpc/rpc_clntout.c                           |  333 ------
>  sunrpc/rpc_cout.c                              |  811 -------------
>  sunrpc/rpc_hout.c                              |  607 ----------
>  sunrpc/rpc_main.c                              | 1451 ------------------------
>  sunrpc/rpc_parse.c                             |  687 -----------
>  sunrpc/rpc_parse.h                             |  165 ---
>  sunrpc/rpc_sample.c                            |  336 ------
>  sunrpc/rpc_scan.c                              |  544 ---------
>  sunrpc/rpc_scan.h                              |  104 --
>  sunrpc/rpc_svcout.c                            | 1093 ------------------
>  sunrpc/rpc_tblout.c                            |  178 ---
>  sunrpc/rpc_util.c                              |  525 ---------
>  sunrpc/rpc_util.h                              |  154 ---
>  sunrpc/rpcgen.c                                |    2 -
>  sunrpc/rpcsvc/bootparam.h                      |   23 -
>  sunrpc/rpcsvc/bootparam_prot.x                 |   97 --
>  sunrpc/rpcsvc/key_prot.x                       |  283 -----
>  sunrpc/rpcsvc/klm_prot.x                       |  130 ---
>  sunrpc/rpcsvc/mount.x                          |  161 ---
>  sunrpc/rpcsvc/nfs_prot.x                       |  352 ------
>  sunrpc/rpcsvc/nlm_prot.x                       |  203 ----
>  sunrpc/rpcsvc/rex.x                            |  229 ----
>  sunrpc/rpcsvc/rquota.x                         |   61 -
>  sunrpc/rpcsvc/rstat.x                          |  145 ---
>  sunrpc/rpcsvc/rusers.x                         |  228 ----
>  sunrpc/rpcsvc/sm_inter.x                       |  110 --
>  sunrpc/rpcsvc/spray.x                          |   84 --
>  sunrpc/rpcsvc/yppasswd.x                       |   61 -
>  sysdeps/unix/sysv/linux/arc/libc.abilist       |  162 ---
>  43 files changed, 35 insertions(+), 9603 deletions(-)
> 
> diff --git a/NEWS b/NEWS
> index 92dcb77fef..1d9280418b 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>.

OK.

> +
>  * 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

OK.

>  tst-xdrmem2.c
> -rpc_util.h

OK.

>  getrpcbynumber_r.c
>  xdr_intXX_t.c
> -rpc_tblout.c

OK.

>  svc.c
> -rpc_svcout.c

OK.

>  get_myaddr.c
>  getrpcport.c
>  auth_unix.c
>  rpc_prot.c
>  svcauth_des.c
> -rpc_clntout.c

OK.

>  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

OK.

>  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

OK.

> 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
> -

OK.

>  /* 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@

OK.

>  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

OK.

> 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

OK.

> -
>  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)

OK.

>  # 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);

OK.

> -# 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>

OK.

>  
>  /* 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

OK. If we have an older architecture we need to call this only if they
port has compat support for the older releases.

>    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}.

OK. Good and simple.

>  
>  @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']},

OK. Remove test variant.

>                                        {'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

OK. Versions.mk provides this.

> +
>  # 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

OK.

>  
>  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

OK.

> -
>  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)

OK.

>  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
> -
> -\f
> -# 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

OK.

> 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

OK.

> 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 */
> -};

OK. Files removed.

> 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
> 

OK. ARC port ABI cleanup before release. It looks like everything was removed.

-- 
Cheers,
Carlos.


  parent reply	other threads:[~2020-07-13 17:32 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-11 11:01 Florian Weimer
2020-07-11 12:00 ` H.J. Lu
2020-07-11 18:15 ` Petr Vorel
2020-07-12 13:41   ` Szabolcs Nagy
2020-07-12 14:32     ` Florian Weimer
2020-07-13 13:44       ` Petr Vorel
2020-07-13 17:31 ` Carlos O'Donell [this message]
2020-07-14  6:04 ` Andreas Schwab
2020-07-14 10:30   ` Florian Weimer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2e508c7a-3e53-43e9-9e2b-f5a736f07ccc@redhat.com \
    --to=carlos@redhat.com \
    --cc=fweimer@redhat.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).