- TI-RPC is now the default again for code generation.
- As before, inetd support support is turned of per default. Code for inetd can be made with -I. - Support for ``transport monitors'' and the NLSPROVIDER env variable is still there , even if their use is not clear in non TLI stream based systems like Free-/NetBSD. It can be activated with -P. - There are a few corrections in rpcgen.1 and usage function to conform to the code. Added and documented -P - I removed the #ifdefs checks for Free-/NetBSD since we are the only ones who use this code. MaxOS X may have the same limitations as we have, so this code will correctly build for them. - Generate correct cflags. Submitted by: mbr, Jean-Luc Richier <Jean-Luc.Richier@imag.fr> PR: bin/29175, misc/27816
This commit is contained in:
parent
ffaa6f7c38
commit
40ad88851b
@ -32,8 +32,10 @@
|
||||
#ident "@(#)rpc_clntout.c 1.15 94/04/25 SMI"
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)rpc_clntout.c 1.11 89/02/22 (C) 1987 SMI";
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* rpc_clntout.c, Client-stub outputter for the RPC protocol compiler
|
||||
|
@ -99,6 +99,7 @@ emit(def)
|
||||
break;
|
||||
/* DEF_CONST and DEF_PROGRAM have already been handled */
|
||||
default:
|
||||
break;
|
||||
}
|
||||
print_trailer();
|
||||
}
|
||||
@ -415,6 +416,7 @@ int flag;
|
||||
char ptemp[256];
|
||||
int indent = 1;
|
||||
|
||||
cur = NULL;
|
||||
if (flag == PUT)
|
||||
f_print(fout, "\n\tif (xdrs->x_op == XDR_ENCODE) {\n");
|
||||
else
|
||||
@ -523,7 +525,7 @@ int flag;
|
||||
}
|
||||
}
|
||||
|
||||
if (i > 0)
|
||||
if (i > 0) {
|
||||
if (sizestr == NULL && size < inline){
|
||||
/* don't expand into inline code if size < inline */
|
||||
while (cur != dl){
|
||||
@ -560,6 +562,7 @@ int flag;
|
||||
}
|
||||
f_print(fout, "\t\t}\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@ -691,7 +694,9 @@ int flag;
|
||||
f_print(fout, "}\n");
|
||||
tabify(fout, indent);
|
||||
f_print(fout, "}\n");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,8 +31,10 @@
|
||||
#ident "@(#)rpc_hout.c 1.16 94/04/25 SMI"
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)rpc_hout.c 1.12 89/02/22 (C) 1987 SMI";
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* rpc_hout.c, Header file outputter for the RPC protocol compiler
|
||||
@ -113,6 +115,7 @@ print_funcdef(def)
|
||||
pprogramdef(def);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -84,11 +84,7 @@ static void s_output(int, char **, char *, char *, int, char *, int, int);
|
||||
#define DONT_EXTEND 0 /* alias for FALSE */
|
||||
|
||||
#define SVR4_CPP "/usr/ccs/lib/cpp"
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
#define SUNOS_CPP "/usr/bin/cpp"
|
||||
#else
|
||||
#define SUNOS_CPP "/usr/lib/cpp"
|
||||
#endif
|
||||
|
||||
static int cppDefined = 0; /* explicit path for C preprocessor */
|
||||
|
||||
@ -123,20 +119,14 @@ static int argcount = FIXEDARGS;
|
||||
|
||||
|
||||
int nonfatalerrors; /* errors */
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
int inetdflag = 0; /* Support for inetd is now the default */
|
||||
#else
|
||||
int inetdflag; /* Support for inetd is now the default */
|
||||
#endif
|
||||
int pmflag; /* Support for port monitors */
|
||||
int inetdflag = 0; /* Support for inetd is disabled by default, use -I */
|
||||
int pmflag = 0; /* Support for port monitors is disabled by default */
|
||||
int tirpc_socket = 1; /* TI-RPC on socket, no TLI library */
|
||||
int logflag; /* Use syslog instead of fprintf for errors */
|
||||
int tblflag; /* Support for dispatch table file */
|
||||
int mtflag = 0; /* Support for MT */
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
|
||||
#define INLINE 0
|
||||
#else
|
||||
#define INLINE 5
|
||||
#endif
|
||||
/* length at which to start doing an inline */
|
||||
|
||||
int inline = INLINE;
|
||||
@ -152,11 +142,7 @@ int newstyle; /* newstyle of passing arguments (by value) */
|
||||
int Cflag = 0; /* ANSI C syntax */
|
||||
int CCflag = 0; /* C++ files */
|
||||
static int allfiles; /* generate all files */
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
int tirpcflag = 0; /* generating code for tirpc, by default */
|
||||
#else
|
||||
int tirpcflag = 1; /* generating code for tirpc, by default */
|
||||
#endif
|
||||
xdrfunc *xdrfunc_head = NULL; /* xdr function list */
|
||||
xdrfunc *xdrfunc_tail = NULL; /* xdr function list */
|
||||
pid_t childpid;
|
||||
@ -246,25 +232,18 @@ main(argc, argv)
|
||||
* add extension to filename
|
||||
*/
|
||||
static char *
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
extendfile(path, ext)
|
||||
char *path;
|
||||
#else
|
||||
extendfile(file, ext)
|
||||
char *file;
|
||||
#endif
|
||||
char *ext;
|
||||
{
|
||||
char *res;
|
||||
char *p;
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
char *file;
|
||||
|
||||
if ((file = rindex(path, '/')) == NULL)
|
||||
file = path;
|
||||
else
|
||||
file++;
|
||||
#endif
|
||||
res = alloc(strlen(file) + strlen(ext) + 1);
|
||||
if (res == NULL) {
|
||||
abort();
|
||||
@ -545,14 +524,8 @@ h_output(infile, define, extend, outfile)
|
||||
|
||||
f_print(fout, "#include <rpc/rpc.h>\n");
|
||||
|
||||
if (mtflag) {
|
||||
#if !defined(__FreeBSD__) && !defined(__NetBSD__)
|
||||
f_print(fout, "#include <synch.h>\n");
|
||||
f_print(fout, "#include <thread.h>\n");
|
||||
#else
|
||||
if (mtflag)
|
||||
f_print(fout, "#include <pthread.h>\n");
|
||||
#endif
|
||||
};
|
||||
|
||||
/* put the C++ support */
|
||||
if (Cflag && !CCflag){
|
||||
@ -684,18 +657,14 @@ s_output(argc, argv, infile, define, extend, outfile, nomain, netflag)
|
||||
f_print(fout,
|
||||
"#include <sysent.h> /* getdtablesize, open */\n");
|
||||
f_print(fout, "#endif /* __cplusplus */\n");
|
||||
if (tirpcflag)
|
||||
f_print(fout, "#include <unistd.h> /* setsid */\n");
|
||||
}
|
||||
if (tirpcflag)
|
||||
if (tirpcflag) {
|
||||
f_print(fout, "#include <fcntl.h> /* open */\n");
|
||||
f_print(fout, "#include <unistd.h> /* fork / setsid */\n");
|
||||
f_print(fout, "#include <sys/types.h>\n");
|
||||
}
|
||||
|
||||
f_print(fout, "#include <memory.h>\n");
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
#else
|
||||
if (tirpcflag)
|
||||
f_print(fout, "#include <stropts.h>\n");
|
||||
#endif
|
||||
if (inetdflag || !tirpcflag) {
|
||||
f_print(fout, "#include <sys/socket.h>\n");
|
||||
f_print(fout, "#include <netinet/in.h>\n");
|
||||
@ -706,7 +675,7 @@ s_output(argc, argv, infile, define, extend, outfile, nomain, netflag)
|
||||
}
|
||||
if (tirpcflag)
|
||||
f_print(fout, "#include <sys/resource.h> /* rlimit */\n");
|
||||
if (logflag || inetdflag || pmflag)
|
||||
if (logflag || inetdflag || pmflag || tirpcflag)
|
||||
f_print(fout, "#include <syslog.h>\n");
|
||||
|
||||
/* for ANSI-C */
|
||||
@ -945,13 +914,8 @@ struct commandline *cmd;
|
||||
|
||||
f_print(fout, "\n# Compiler flags \n");
|
||||
if (mtflag)
|
||||
f_print(fout, "\nCPPFLAGS += -D_REENTRANT\nCFLAGS += -g \nLDLIBS += -lnsl -lthread\n");
|
||||
else
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
f_print(fout, "\nCFLAGS += -g \nLDLIBS +=\n");
|
||||
#else
|
||||
f_print(fout, "\nCFLAGS += -g \nLDLIBS += -lnsl\n");
|
||||
#endif
|
||||
f_print(fout, "\nCFLAGS += -D_REENTRANT -D_THEAD_SAFE \nLDLIBS += -pthread\n");
|
||||
|
||||
f_print(fout, "RPCGENFLAGS = \n");
|
||||
|
||||
f_print(fout, "\n# Targets \n\n");
|
||||
@ -965,23 +929,12 @@ struct commandline *cmd;
|
||||
f_print(fout, "$(OBJECTS_SVC) : $(SOURCES_SVC.c) $(SOURCES_SVC.h) \
|
||||
$(TARGETS_SVC.c) \n\n");
|
||||
f_print(fout, "$(CLIENT) : $(OBJECTS_CLNT) \n");
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
f_print(fout, "\t$(CC) -o $(CLIENT) $(OBJECTS_CLNT) \
|
||||
$(LDLIBS) \n\n");
|
||||
#else
|
||||
f_print(fout, "\t$(LINK.c) -o $(CLIENT) $(OBJECTS_CLNT) \
|
||||
$(LDLIBS) \n\n");
|
||||
#endif
|
||||
f_print(fout, "$(SERVER) : $(OBJECTS_SVC) \n");
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
f_print(fout, "\t$(CC) -o $(SERVER) $(OBJECTS_SVC) $(LDLIBS)\n\n ");
|
||||
f_print(fout, "clean:\n\t $(RM) -f core $(TARGETS) $(OBJECTS_CLNT) \
|
||||
$(OBJECTS_SVC) $(CLIENT) $(SERVER)\n\n");
|
||||
#else
|
||||
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");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -1174,11 +1127,7 @@ parseargs(argc, argv, cmd)
|
||||
* generating backward compatible
|
||||
* code
|
||||
*/
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
tirpcflag = 1;
|
||||
#else
|
||||
tirpcflag = 0;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 'I':
|
||||
@ -1190,6 +1139,9 @@ parseargs(argc, argv, cmd)
|
||||
case 'L':
|
||||
logflag = 1;
|
||||
break;
|
||||
case 'P':
|
||||
pmflag = 1;
|
||||
break;
|
||||
case 'K':
|
||||
if (++i == argc) {
|
||||
return (0);
|
||||
@ -1269,8 +1221,8 @@ parseargs(argc, argv, cmd)
|
||||
cmd->makefileflag = flag['M'];
|
||||
|
||||
if (tirpcflag) {
|
||||
pmflag = inetdflag ? 0 : 1;
|
||||
/* pmflag or inetdflag is always TRUE */
|
||||
if (inetdflag)
|
||||
pmflag = 0;
|
||||
if ((inetdflag && cmd->nflag)) {
|
||||
/* netid not allowed with inetdflag */
|
||||
warnx("cannot use netid flag with inetd flag");
|
||||
@ -1278,9 +1230,6 @@ parseargs(argc, argv, cmd)
|
||||
}
|
||||
} else { /* 4.1 mode */
|
||||
pmflag = 0; /* set pmflag only in tirpcmode */
|
||||
#if !defined(__FreeBSD__) && !defined(__NetBSD__)
|
||||
inetdflag = 1; /* inetdflag is TRUE by default */
|
||||
#endif
|
||||
if (cmd->nflag) { /* netid needs TIRPC */
|
||||
warnx("cannot use netid flag without TIRPC");
|
||||
return (0);
|
||||
@ -1318,7 +1267,7 @@ usage()
|
||||
f_print(stderr, "%s\n%s\n%s\n%s\n%s\n",
|
||||
"usage: rpcgen infile",
|
||||
" rpcgen [-abCLNTM] [-Dname[=value]] [-i size]\
|
||||
[-I [-K seconds]] [-Y path] infile",
|
||||
[-I -P [-K seconds]] [-Y path] infile",
|
||||
" rpcgen [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm]\
|
||||
[-o outfile] [infile]",
|
||||
" rpcgen [-s nettype]* [-o outfile] [infile]",
|
||||
@ -1332,16 +1281,15 @@ options_usage()
|
||||
{
|
||||
f_print(stderr, "options:\n");
|
||||
f_print(stderr, "-a\t\tgenerate all files, including samples\n");
|
||||
f_print(stderr, "-b\t\tbackward compatibility mode (generates code\
|
||||
for SunOS 4.X)\n");
|
||||
f_print(stderr, "-b\t\tbackward compatibility mode (generates code \
|
||||
for FreeBSD 4.X)\n");
|
||||
f_print(stderr, "-c\t\tgenerate XDR routines\n");
|
||||
f_print(stderr, "-C\t\tANSI C mode\n");
|
||||
f_print(stderr, "-Dname[=value]\tdefine a symbol (same as #define)\n");
|
||||
f_print(stderr, "-h\t\tgenerate header file\n");
|
||||
f_print(stderr, "-i size\t\tsize at which to start generating\
|
||||
inline code\n");
|
||||
f_print(stderr, "-I\t\tgenerate code for inetd support in server\
|
||||
(for SunOS 4.X)\n");
|
||||
f_print(stderr, "-I\t\tgenerate code for inetd support in server\n");
|
||||
f_print(stderr, "-K seconds\tserver exits after K seconds of\
|
||||
inactivity\n");
|
||||
f_print(stderr, "-l\t\tgenerate client side stubs\n");
|
||||
@ -1353,6 +1301,7 @@ named netid\n");
|
||||
f_print(stderr, "-N\t\tsupports multiple arguments and\
|
||||
call-by-value\n");
|
||||
f_print(stderr, "-o outfile\tname of the output file\n");
|
||||
f_print(stderr, "-P\t\tgenerate code for port monitoring support in server\n");
|
||||
f_print(stderr, "-s nettype\tgenerate server code that supports named\
|
||||
nettype\n");
|
||||
f_print(stderr, "-Sc\t\tgenerate sample client code that uses remote\
|
||||
@ -1366,19 +1315,3 @@ remote procedures\n");
|
||||
f_print(stderr, "-Y path\t\tpath where cpp is found\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
#if !defined(__FreeBSD__) && !defined(__NetBSD__)
|
||||
char *
|
||||
rindex(sp, c)
|
||||
register char *sp, c;
|
||||
{
|
||||
register char *r;
|
||||
|
||||
r = NULL;
|
||||
do {
|
||||
if (*sp == c)
|
||||
r = sp;
|
||||
} while (*sp++);
|
||||
return (r);
|
||||
}
|
||||
#endif
|
||||
|
@ -31,8 +31,10 @@
|
||||
#ident "@(#)rpc_parse.c 1.12 93/07/05 SMI"
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)rpc_parse.c 1.8 89/02/22 (C) 1987 SMI";
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* rpc_parse.c, Parser for the RPC protocol compiler
|
||||
@ -60,10 +62,6 @@ static void get_prog_declaration( declaration *, defkind, int );
|
||||
static void get_type( char **, char **, defkind );
|
||||
static void unsigned_dec( char ** );
|
||||
|
||||
#ifndef __FreeBSD__
|
||||
extern char *strdup();
|
||||
#endif
|
||||
|
||||
/*
|
||||
* return the next definition you see
|
||||
*/
|
||||
@ -594,11 +592,7 @@ get_type(prefixp, typep, dkind)
|
||||
(void) peekscan(TOK_INT, &tok);
|
||||
break;
|
||||
case TOK_HYPER:
|
||||
#ifdef __FreeBSD__
|
||||
*typep = "int64_t";
|
||||
#else
|
||||
*typep = "longlong_t";
|
||||
#endif
|
||||
(void) peekscan(TOK_INT, &tok);
|
||||
break;
|
||||
|
||||
@ -647,11 +641,7 @@ unsigned_dec(typep)
|
||||
break;
|
||||
case TOK_HYPER:
|
||||
get_token(&tok);
|
||||
#ifdef __FreeBSD__
|
||||
*typep = "u_int64_t";
|
||||
#else
|
||||
*typep = "longlong_t";
|
||||
#endif
|
||||
|
||||
(void) peekscan(TOK_INT, &tok);
|
||||
break;
|
||||
|
@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
@ -26,7 +29,7 @@
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
#pragma ident "@(#)rpc_parse.h 1.10 94/05/15 SMI"
|
||||
/* #pragma ident "@(#)rpc_parse.h 1.10 94/05/15 SMI" */
|
||||
|
||||
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
|
||||
/* All Rights Reserved */
|
||||
|
@ -29,7 +29,7 @@
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#pragma ident "@(#)rpc_sample.c 1.9 94/04/25 SMI"
|
||||
/* #pragma ident "@(#)rpc_sample.c 1.9 94/04/25 SMI" */
|
||||
|
||||
/*
|
||||
* rpc_sample.c, Sample client-server code outputter for the RPC protocol compiler
|
||||
|
@ -32,8 +32,10 @@
|
||||
#ident "@(#)rpc_scan.c 1.13 93/07/05 SMI"
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)rpc_scan.c 1.11 89/02/22 (C) 1987 SMI";
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* rpc_scan.c, Scanner for the RPC protocol compiler
|
||||
|
@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
@ -26,7 +29,7 @@
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
#pragma ident "@(#)rpc_scan.h 1.11 94/05/15 SMI"
|
||||
/* #pragma ident "@(#)rpc_scan.h 1.11 94/05/15 SMI" */
|
||||
|
||||
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
|
||||
/* All Rights Reserved */
|
||||
|
@ -46,6 +46,8 @@ static const char rcsid[] =
|
||||
#include "rpc_parse.h"
|
||||
#include "rpc_util.h"
|
||||
|
||||
extern int tirpc_socket;
|
||||
|
||||
static char RQSTP[] = "rqstp";
|
||||
static char TRANSP[] = "transp";
|
||||
static char ARG[] = "argument";
|
||||
@ -109,7 +111,7 @@ write_most(infile, netflag, nomain)
|
||||
var_type = (nomain? "extern" : "static");
|
||||
f_print(fout, "%s int _rpcpmstart;", var_type);
|
||||
f_print(fout, "\t\t/* Started by a port monitor ? */\n");
|
||||
if (!tirpcflag) {
|
||||
if (!tirpcflag || tirpc_socket) {
|
||||
f_print(fout, "%s int _rpcfdtype;", var_type);
|
||||
f_print(fout, "\n\t\t /* Whether Stream or \
|
||||
Datagram ? */\n");
|
||||
@ -141,7 +143,8 @@ serviced */\n");
|
||||
if (nomain)
|
||||
return;
|
||||
|
||||
f_print(fout, "\nmain()\n");
|
||||
f_print(fout, "\nint\n");
|
||||
f_print(fout, "main()\n");
|
||||
f_print(fout, "{\n");
|
||||
if (inetdflag) {
|
||||
write_inetmost(infile);
|
||||
@ -156,15 +159,24 @@ serviced */\n");
|
||||
}
|
||||
f_print(fout, "\tpid_t pid;\n");
|
||||
f_print(fout, "\tint i;\n");
|
||||
f_print(fout, "\tchar mname[FMNAMESZ + 1];\n\n");
|
||||
if (pmflag) {
|
||||
if (tirpc_socket) {
|
||||
f_print(fout, "\tstruct sockaddr_storage saddr;\n");
|
||||
f_print(fout, "\tint asize = sizeof (saddr);\n\n");
|
||||
} else
|
||||
f_print(fout, "\tchar mname[FMNAMESZ + 1];\n\n");
|
||||
}
|
||||
|
||||
if (mtflag & timerflag)
|
||||
f_print(fout, "\tmutex_init(&_svcstate_lock, USYNC_THREAD, NULL);\n");
|
||||
if (pmflag) {
|
||||
write_pm_most(infile, netflag);
|
||||
f_print(fout, "\telse {\n");
|
||||
write_rpc_svc_fg(infile, "\t\t");
|
||||
f_print(fout, "\t}\n");
|
||||
} else
|
||||
write_rpc_svc_fg(infile, "\t\t");
|
||||
|
||||
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");
|
||||
@ -858,8 +870,15 @@ write_pm_most(infile, netflag)
|
||||
definition *def;
|
||||
version_list *vp;
|
||||
|
||||
f_print(fout, "\tif (!ioctl(0, I_LOOK, mname) &&\n");
|
||||
f_print(fout, "\t\t(!strcmp(mname, \"sockmod\") ||");
|
||||
if (tirpc_socket) {
|
||||
f_print(fout,
|
||||
"\tif (getsockname(0, (struct sockaddr *)&saddr, &asize) == 0) {\n");
|
||||
f_print(fout, "\t\tint ssize = sizeof (int);\n");
|
||||
} else {
|
||||
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, " !strcmp(mname, \"timod\"))) {\n");
|
||||
f_print(fout, "\t\tchar *netid;\n");
|
||||
if (!netflag) { /* Not included by -n option */
|
||||
@ -873,6 +892,14 @@ write_pm_most(infile, netflag)
|
||||
* f_print(fout, "\t\textern char *getenv();\n");
|
||||
*/
|
||||
f_print(fout, "\n");
|
||||
if (tirpc_socket) {
|
||||
f_print(fout, "\t\tif (saddr.ss_family != AF_INET &&\n");
|
||||
f_print(fout, "\t\t saddr.ss_family != AF_INET6)\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\t_rpcpmstart = 1;\n");
|
||||
open_log_file(infile, "\t\t");
|
||||
f_print(fout, "\n\t\tif ((netid = \
|
||||
@ -887,23 +914,28 @@ getenv(\"NLSPROVIDER\")) == NULL) {\n");
|
||||
f_print(fout, "\t\t\tif ((nconf = getnetconfigent(netid)) == NULL)\n");
|
||||
sprintf(_errbuf, "cannot get transport info");
|
||||
print_err_message("\t\t\t\t");
|
||||
if (timerflag)
|
||||
f_print(fout, "\n\t\t\tpmclose = \
|
||||
(t_getstate(0) != T_DATAXFER);\n");
|
||||
if (timerflag) {
|
||||
if (tirpc_socket)
|
||||
f_print(fout, "\n\t\t\tpmclose = 1;\t/* XXX */\n");
|
||||
else
|
||||
f_print(fout,
|
||||
"\n\t\t\tpmclose = (t_getstate(0) != T_DATAXFER);\n");
|
||||
}
|
||||
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 (!tirpc_socket) {
|
||||
f_print(fout, "\t\tif (strcmp(mname, \"sockmod\") == 0) {\n");
|
||||
f_print(fout, "\t\t\tif (ioctl(0, I_POP, 0) || ");
|
||||
f_print(fout, "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");
|
||||
}
|
||||
f_print(fout,
|
||||
"\t\tif ((%s = svc_tli_create(0, nconf, NULL, 0, 0)) \
|
||||
== NULL) {\n",
|
||||
|
@ -1,3 +1,6 @@
|
||||
/*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
@ -26,7 +29,7 @@
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
#pragma ident "@(#)rpc_util.h 1.16 94/05/15 SMI"
|
||||
/* #pragma ident "@(#)rpc_util.h 1.16 94/05/15 SMI" */
|
||||
|
||||
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
|
||||
/* All Rights Reserved */
|
||||
|
@ -19,7 +19,7 @@
|
||||
.Fl D Ns Ar name Ns Op Ar =value
|
||||
.Oc
|
||||
.Op Fl i Ar size
|
||||
.Op Fl I Op Fl K Ar seconds
|
||||
.Op Fl I Fl P Op Fl K Ar seconds
|
||||
.Op Fl L
|
||||
.Op Fl M
|
||||
.Op Fl N
|
||||
@ -112,6 +112,9 @@ the server side sample file to
|
||||
and the sample makefile to
|
||||
.Pa makefile.proto .
|
||||
.Pp
|
||||
If option
|
||||
.Fl I
|
||||
is set,
|
||||
The server created can be started both by the port monitors
|
||||
(for example,
|
||||
.Xr inetd 8 )
|
||||
@ -121,9 +124,9 @@ it creates servers only for the transport for which
|
||||
the file descriptor
|
||||
.Em 0
|
||||
was passed.
|
||||
The name of the transport must be specified
|
||||
The name of the transport may be specified
|
||||
by setting up the environment variable
|
||||
.Ev PM_TRANSPORT .
|
||||
.Ev NLSPROVIDER .
|
||||
When the server generated by
|
||||
.Nm
|
||||
is executed,
|
||||
@ -250,15 +253,6 @@ Generate transport specific
|
||||
.Tn RPC
|
||||
code for older versions
|
||||
of the operating system.
|
||||
.Pp
|
||||
Note: in
|
||||
.Fx ,
|
||||
this compatibility flag is turned on by
|
||||
default since
|
||||
.Fx
|
||||
supports only the older
|
||||
.Tn ONC RPC
|
||||
library.
|
||||
.It Fl c
|
||||
Compile into
|
||||
.Tn XDR
|
||||
@ -328,12 +322,12 @@ All the error messages for
|
||||
servers
|
||||
are always logged with
|
||||
.Xr syslog 3 .
|
||||
.\" .IP
|
||||
.\" Note:
|
||||
.\" this option is supported for backward compatibility only.
|
||||
.\" By default,
|
||||
.\" .B rpcgen
|
||||
.\" generates servers that can be invoked through portmonitors.
|
||||
.Pp
|
||||
Note:
|
||||
Contrary to some systems, in
|
||||
.Fx
|
||||
this option is needed to generate
|
||||
servers that can be invoked through portmonitors and inetd.
|
||||
.Pp
|
||||
.It Fl K Ar seconds
|
||||
By default, services created using
|
||||
@ -422,6 +416,23 @@ standard output is used
|
||||
and
|
||||
.Fl t
|
||||
modes only).
|
||||
.It Fl P
|
||||
Compile support for
|
||||
port monitors
|
||||
in the server side stubs.
|
||||
.Pp
|
||||
Note:
|
||||
Contrary to some systems, in
|
||||
.Fx
|
||||
this option is needed to generate
|
||||
servers that can be monitored.
|
||||
.Pp
|
||||
If the
|
||||
.Fl I
|
||||
option has been specified,
|
||||
.Fl P
|
||||
is turned off automatically.
|
||||
.Pp
|
||||
.It Fl s Ar nettype
|
||||
Compile into server-side stubs for all the
|
||||
transports belonging to the class
|
||||
|
Loading…
Reference in New Issue
Block a user