.\" from: @(#)rpcgen.1 2.2 88/08/02 4.0 RPCSRC
.\" $Id: rpcgen.1,v 1.4 1993/08/01 07:29:24 mycroft Exp $
.Nd RPC protocol compiler
is a tool that generates C code to implement an
is a language similar to C known as
Language (Remote Procedure Call Language). Information about the
Language is available in the
.%T "rpcgen Programming Guide"
is normally used as in the first synopsis where it takes an input file
and generates four output files. If the
will generate a header file in
The other synopses shown above are used when one does not want to
generate all the output files, but only a particular one.
.\" Their usage is described in the
is run on all input files before they are actually
directives are legal within an
input file. For each type of output file,
.Bl -tag -width RPC_CLNT -compact
defined when compiling into header files
defined when compiling into
defined when compiling into server-side stubs
defined when compiling into client-side stubs
does a little preprocessing of its own. Any line beginning with
is passed directly into the output file, uninterpreted by
You can customize some of your
routines by leaving those data types undefined. For every data type
will assume that there exists a routine with the name
prepended to the name of the undefined type.
Compile into C data-definitions (a header file).
Compile into client-side stubs.
Compile into server-side stubs, but do not generate a
routine. This option is useful for doing callback-routines and for
people who need to write their own
routine to do initialization.
Specify the name of the output file. If none is specified, standard
Compile into server-side stubs, using the the given transport. The
This option may be invoked more than once so as to compile a server
that serves multiple transports.
.%T "rpcgen Programming Guide"
Nesting is not supported. As a work-around, structures can be
declared at top-level, and their name used inside other structures in
order to achieve the same effect.
Name clashes can occur when using program definitions, since the
apparent scoping does not really apply. Most of these can be avoided
by giving unique names for programs, versions, procedures and types.