Module Name:    src
Committed By:   christos
Date:           Sun Dec 15 00:40:17 UTC 2013

Modified Files:
        src/usr.bin/rpcgen: rpc_clntout.c rpc_cout.c rpc_hout.c rpc_main.c
            rpc_parse.c rpc_sample.c rpc_scan.c rpc_svcout.c rpc_tblout.c
            rpc_util.c rpc_util.h rpcgen.1

Log Message:
- remove support for pre-ansi output
- add -B (BSD) support for c++ output macros
- group functions to make output better looking


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/usr.bin/rpcgen/rpc_clntout.c
cvs rdiff -u -r1.32 -r1.33 src/usr.bin/rpcgen/rpc_cout.c
cvs rdiff -u -r1.21 -r1.22 src/usr.bin/rpcgen/rpc_hout.c
cvs rdiff -u -r1.37 -r1.38 src/usr.bin/rpcgen/rpc_main.c
cvs rdiff -u -r1.17 -r1.18 src/usr.bin/rpcgen/rpc_parse.c
cvs rdiff -u -r1.12 -r1.13 src/usr.bin/rpcgen/rpc_sample.c \
    src/usr.bin/rpcgen/rpc_scan.c src/usr.bin/rpcgen/rpc_util.c
cvs rdiff -u -r1.24 -r1.25 src/usr.bin/rpcgen/rpc_svcout.c
cvs rdiff -u -r1.13 -r1.14 src/usr.bin/rpcgen/rpc_tblout.c
cvs rdiff -u -r1.7 -r1.8 src/usr.bin/rpcgen/rpc_util.h
cvs rdiff -u -r1.22 -r1.23 src/usr.bin/rpcgen/rpcgen.1

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/rpcgen/rpc_clntout.c
diff -u src/usr.bin/rpcgen/rpc_clntout.c:1.14 src/usr.bin/rpcgen/rpc_clntout.c:1.15
--- src/usr.bin/rpcgen/rpc_clntout.c:1.14	Sun Aug 11 04:03:10 2013
+++ src/usr.bin/rpcgen/rpc_clntout.c	Sat Dec 14 19:40:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_clntout.c,v 1.14 2013/08/11 08:03:10 dholland Exp $	*/
+/*	$NetBSD: rpc_clntout.c,v 1.15 2013/12/15 00:40:17 christos Exp $	*/
 /*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  * unrestricted use provided that this legend is included on all tape
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)rpc_clntout.c 1.11 89/02/22 (C) 1987 SMI";
 #else
-__RCSID("$NetBSD: rpc_clntout.c,v 1.14 2013/08/11 08:03:10 dholland Exp $");
+__RCSID("$NetBSD: rpc_clntout.c,v 1.15 2013/12/15 00:40:17 christos Exp $");
 #endif
 #endif
 
@@ -53,10 +53,10 @@ __RCSID("$NetBSD: rpc_clntout.c,v 1.14 2
 #include "rpc_parse.h"
 #include "rpc_util.h"
 
-static void write_program __P((definition *));
-static const char *ampr __P((const char *));
-static const char *aster __P((const char *));
-static void printbody __P((proc_list *));
+static void write_program(definition *);
+static const char *ampr(const char *);
+static const char *aster(const char *);
+static void printbody(proc_list *);
 
 #define DEFAULT_TIMEOUT 25	/* in seconds */
 static char RESULT[] = "clnt_res";
@@ -119,84 +119,36 @@ printarglist(proc_list *proc, const char
 
 	if (!newstyle) {	/* old style: always pass argument by
 				 * reference */
-		if (Cflag) {	/* C++ style heading */
-			f_print(fout, "(");
-			ptype(proc->args.decls->decl.prefix, proc->args.decls->decl.type, 1);
-			f_print(fout, "*argp, ");
-			if (Mflag) {
-				if (streq(proc->res_type, "void"))
-					f_print(fout, "char ");
-				else
-					ptype(proc->res_prefix, proc->res_type, 0);
-				f_print(fout, "%s%s, ", aster(proc->res_type),
-				    result);
-			}
-			f_print(fout, "%s%s)\n", addargtype, addargname);
-		} else {
-			f_print(fout, "(argp, ");
-			if (Mflag)
-				f_print(fout, "%s, ", result);
-			f_print(fout, "%s)\n", addargname);
-			f_print(fout, "\t");
-			ptype(proc->args.decls->decl.prefix, proc->args.decls->decl.type, 1);
-			f_print(fout, "*argp;\n");
-			if (Mflag) {
-				f_print(fout, "\t");
-				if (streq(proc->res_type, "void"))
-					f_print(fout, "char ");
-				else
-					ptype(proc->res_prefix, proc->res_type, 0);
-				f_print(fout, "%s%s;\n", aster(proc->res_type),
-				    result);
-			}
+		f_print(fout, "(");
+		ptype(proc->args.decls->decl.prefix, proc->args.decls->decl.type, 1);
+		f_print(fout, "*argp, ");
+		if (Mflag) {
+			if (streq(proc->res_type, "void"))
+				f_print(fout, "char ");
+			else
+				ptype(proc->res_prefix, proc->res_type, 0);
+			f_print(fout, "%s%s, ", aster(proc->res_type),
+			    result);
 		}
+		f_print(fout, "%s%s)\n", addargtype, addargname);
 	} else {
 		f_print(fout, "(");
 		if (!streq(proc->args.decls->decl.type, "void")) {
 			/* new style, 1 or multiple arguments */
-			if (!Cflag) {
-				for (l = proc->args.decls; l != NULL;
-				    l = l->next)
-					f_print(fout, "%s, ", l->decl.name);
-			} else {/* C++ style header */
-				for (l = proc->args.decls; l != NULL;
-				    l = l->next)
-					pdeclaration(proc->args.argname,
-					    &l->decl, 0, ", ");
-			}
+			for (l = proc->args.decls; l != NULL; l = l->next)
+				pdeclaration(proc->args.argname,
+				    &l->decl, 0, ", ");
 		}
-		if (!Cflag) {
-			if (Mflag) {
-				f_print(fout, "\t");
-				if (streq(proc->res_type, "void"))
-					f_print(fout, "char ");
-				else
-					ptype(proc->res_prefix, proc->res_type, 0);
-				f_print(fout, "%s%s;\n", aster(proc->res_type),
-				    result);
-			}
-			f_print(fout, "%s)\n", addargname);
-			if (!streq(proc->args.decls->decl.type, "void")) {
-				for (l = proc->args.decls; l != NULL;
-				    l = l->next)
-					pdeclaration(proc->args.argname,
-					    &l->decl, 1, ";\n");
-			}
-		} else {
-			if (Mflag) {
-				if (streq(proc->res_type, "void"))
-					f_print(fout, "char ");
-				else
-					ptype(proc->res_prefix, proc->res_type, 0);
-				f_print(fout, "%s%s, ", aster(proc->res_type),
-				    result);
-			}
-			f_print(fout, "%s%s)\n", addargtype, addargname);
+		if (Mflag) {
+			if (streq(proc->res_type, "void"))
+				f_print(fout, "char ");
+			else
+				ptype(proc->res_prefix, proc->res_type, 0);
+			f_print(fout, "%s%s, ", aster(proc->res_type),
+			    result);
 		}
+		f_print(fout, "%s%s)\n", addargtype, addargname);
 	}
-
-	if (!Cflag)
-		f_print(fout, "\t%s%s;\n", addargtype, addargname);
 }
 
 

Index: src/usr.bin/rpcgen/rpc_cout.c
diff -u src/usr.bin/rpcgen/rpc_cout.c:1.32 src/usr.bin/rpcgen/rpc_cout.c:1.33
--- src/usr.bin/rpcgen/rpc_cout.c:1.32	Mon Aug 12 16:36:30 2013
+++ src/usr.bin/rpcgen/rpc_cout.c	Sat Dec 14 19:40:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_cout.c,v 1.32 2013/08/12 20:36:30 christos Exp $	*/
+/*	$NetBSD: rpc_cout.c,v 1.33 2013/12/15 00:40:17 christos Exp $	*/
 /*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  * unrestricted use provided that this legend is included on all tape
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)rpc_cout.c 1.13 89/02/22 (C) 1987 SMI";
 #else
-__RCSID("$NetBSD: rpc_cout.c,v 1.32 2013/08/12 20:36:30 christos Exp $");
+__RCSID("$NetBSD: rpc_cout.c,v 1.33 2013/12/15 00:40:17 christos Exp $");
 #endif
 #endif
 
@@ -54,24 +54,24 @@ __RCSID("$NetBSD: rpc_cout.c,v 1.32 2013
 #include "rpc_parse.h"
 #include "rpc_util.h"
 
-static int findtype __P((definition *, const char *));
-static int undefined __P((const char *));
-static void print_generic_header __P((const char *, int));
-static void print_header __P((definition *));
-static void print_prog_header __P((proc_list *));
-static void print_trailer __P((void));
-static void print_ifopen __P((int, const char *));
-static void print_ifarg __P((const char *));
-static void print_ifsizeof __P((const char *, const char *));
-static void print_ifclose __P((int));
-static void print_ifstat __P((int, const char *, const char *, relation,
-			      const char *, const char *, const char *));
-static void emit_enum __P((definition *));
-static void emit_program __P((definition *));
-static void emit_union __P((definition *));
-static void emit_struct __P((definition *));
-static void emit_typedef __P((definition *));
-static void print_stat __P((int, declaration *));
+static int findtype(definition *, const char *);
+static int undefined(const char *);
+static void print_generic_header(const char *, int);
+static void print_header(definition *);
+static void print_prog_header(proc_list *);
+static void print_trailer(void);
+static void print_ifopen(int, const char *);
+static void print_ifarg(const char *);
+static void print_ifsizeof(const char *, const char *);
+static void print_ifclose(int);
+static void print_ifstat(int, const char *, const char *, relation,
+    const char *, const char *, const char *);
+static void emit_enum(definition *);
+static void emit_program(definition *);
+static void emit_union(definition *);
+static void emit_struct(definition *);
+static void emit_typedef(definition *);
+static void print_stat(int, declaration *);
 
 /*
  * Emit the C-routine for the given definition
@@ -146,21 +146,12 @@ print_generic_header(const char *procnam
 {
 	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");
-	}
+	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");
 }
 
 static void

Index: src/usr.bin/rpcgen/rpc_hout.c
diff -u src/usr.bin/rpcgen/rpc_hout.c:1.21 src/usr.bin/rpcgen/rpc_hout.c:1.22
--- src/usr.bin/rpcgen/rpc_hout.c:1.21	Sun Aug 11 04:03:10 2013
+++ src/usr.bin/rpcgen/rpc_hout.c	Sat Dec 14 19:40:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_hout.c,v 1.21 2013/08/11 08:03:10 dholland Exp $	*/
+/*	$NetBSD: rpc_hout.c,v 1.22 2013/12/15 00:40:17 christos Exp $	*/
 /*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  * unrestricted use provided that this legend is included on all tape
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)rpc_hout.c 1.12 89/02/22 (C) 1987 SMI";
 #else
-__RCSID("$NetBSD: rpc_hout.c,v 1.21 2013/08/11 08:03:10 dholland Exp $");
+__RCSID("$NetBSD: rpc_hout.c,v 1.22 2013/12/15 00:40:17 christos Exp $");
 #endif
 #endif
 
@@ -52,17 +52,19 @@ __RCSID("$NetBSD: rpc_hout.c,v 1.21 2013
 #include "rpc_parse.h"
 #include "rpc_util.h"
 
-static void pconstdef __P((definition *));
-static void pargdef __P((definition *));
-static void pstructdef __P((definition *));
-static void puniondef __P((definition *));
-static void pdefine __P((const char *, const char *));
-static void puldefine __P((const char *, const char *));
-static int define_printed __P((proc_list *, version_list *));
-static void pprogramdef __P((definition *));
-static void penumdef __P((definition *));
-static void ptypedef __P((definition *));
-static int undefined2 __P((const char *, const char *));
+static void pconstdef(definition *);
+static void pargdef(definition *);
+static void pstructdef(definition *);
+static void puniondef(definition *);
+static void pdefine(const char *, const char *);
+static void puldefine(const char *, const char *);
+static int define_printed(proc_list *, version_list *);
+static void pprogramdef(definition *);
+static void penumdef(definition *);
+static void ptypedef(definition *);
+static int undefined2(const char *, const char *);
+static void cplusplusstart(void);
+static void cplusplusend(void);
 
 /*
  * Print the C-version of an xdr definition
@@ -97,17 +99,10 @@ print_datadef(definition *def)
 		pconstdef(def);
 		break;
 	}
-	if (def->def_kind != DEF_PROGRAM && def->def_kind != DEF_CONST) {
-		pxdrfuncdecl(def->def_name,
-		    def->def_kind != DEF_TYPEDEF ||
-		    !isvectordef(def->def.ty.old_type, def->def.ty.rel));
-
-	}
 }
 
-
 void
-print_funcdef(definition *def)
+print_progdef(definition *def)
 {
 	switch (def->def_kind) {
 	case DEF_PROGRAM:
@@ -124,20 +119,41 @@ print_funcdef(definition *def)
 }
 
 void
+print_funcdef(definition *def, int *did)
+{
+	switch (def->def_kind) {
+	case DEF_PROGRAM:
+	case DEF_CONST:
+		break;
+	case DEF_TYPEDEF:
+	case DEF_ENUM:
+	case DEF_UNION:
+	case DEF_STRUCT:
+		if (!*did) {
+		    f_print(fout, "\n");
+		    cplusplusstart();
+		    *did = 1;
+		}
+		pxdrfuncdecl(def->def_name,
+		    def->def_kind != DEF_TYPEDEF ||
+		    !isvectordef(def->def.ty.old_type, def->def.ty.rel));
+		break;
+	}
+}
+
+void
+print_funcend(int did) {
+	if (did) {
+		cplusplusend();
+	}
+}
+
+void
 pxdrfuncdecl(const char *name, int pointerp)
 {
 
-	f_print(fout, "#ifdef __cplusplus\n");
-	f_print(fout, "extern \"C\" bool_t xdr_%s(XDR *, %s%s);\n",
-	    name,
-	    name, pointerp ? (" *") : "");
-	f_print(fout, "#elif __STDC__\n");
-	f_print(fout, "extern  bool_t xdr_%s(XDR *, %s%s);\n",
-	    name,
+	f_print(fout, "bool_t xdr_%s(XDR *, %s%s);\n", name,
 	    name, pointerp ? (" *") : "");
-	f_print(fout, "#else /* Old Style C */\n");
-	f_print(fout, "bool_t xdr_%s();\n", name);
-	f_print(fout, "#endif /* Old Style C */\n\n");
 }
 
 
@@ -157,12 +173,11 @@ pargdef(definition *def)
 	version_list *vers;
 	char   *name;
 	proc_list *plist;
+	int did;
 
 
 	for (vers = def->def.pr.versions; vers != NULL; vers = vers->next) {
-		for (plist = vers->procs; plist != NULL;
-		    plist = plist->next) {
-
+		for (plist = vers->procs; plist != NULL; plist = plist->next) {
 			if (!newstyle || plist->arg_num < 2) {
 				continue;	/* old style or single args */
 			}
@@ -174,10 +189,24 @@ pargdef(definition *def)
 			}
 			f_print(fout, "};\n");
 			f_print(fout, "typedef struct %s %s;\n", name, name);
-			pxdrfuncdecl(name, 1);
-			f_print(fout, "\n");
 		}
 	}
+	did = 0;
+	for (vers = def->def.pr.versions; vers != NULL; vers = vers->next) {
+		if (!newstyle || plist->arg_num < 2) {
+			continue;	/* old style or single args */
+		}
+		for (plist = vers->procs; plist != NULL; plist = plist->next) {
+			if (!did) {
+				cplusplusstart();
+				did = 1;
+			}
+			pxdrfuncdecl(plist->args.argname, 1);
+		}
+	}
+	if (did) {
+		cplusplusend();
+	}
 
 }
 
@@ -258,12 +287,28 @@ define_printed(proc_list *stop, version_
 }
 
 static void
+cplusplusstart(void)
+{
+	if (BSDflag)
+		f_print(fout, "__BEGIN_DECLS\n");
+	else
+		f_print(fout, "#ifdef __cplusplus\nextern \"C\" {\n#endif\n");
+}
+
+static void
+cplusplusend(void)
+{
+	if (BSDflag)
+		f_print(fout, "__END_DECLS\n");
+	else
+		f_print(fout, "#ifdef __cplusplus\n};\n#endif\n");
+}
+
+static void
 pprogramdef(definition *def)
 {
 	version_list *vers;
 	proc_list *proc;
-	int     i;
-	const char *ext;
 
 	pargdef(def);
 
@@ -276,43 +321,31 @@ pprogramdef(definition *def)
 			    locase(def->def_name), vers->vers_num);
 		}
 		puldefine(vers->vers_name, vers->vers_num);
-
-		/* Print out 3 definitions, one for ANSI-C, another for C++, a
-		 * third for old style C */
-
-		for (i = 0; i < 3; i++) {
-			if (i == 0) {
-				f_print(fout, "\n#ifdef __cplusplus\n");
-				ext = "extern \"C\" ";
-			} else
-				if (i == 1) {
-					f_print(fout, "\n#elif __STDC__\n");
-					ext = "extern  ";
-				} else {
-					f_print(fout, "\n#else /* Old Style C */\n");
-					ext = "extern  ";
-				}
-
-
-			for (proc = vers->procs; proc != NULL; proc = proc->next) {
-				if (!define_printed(proc, def->def.pr.versions)) {
-					puldefine(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);
-
+		for (proc = vers->procs; proc != NULL; proc = proc->next) {
+			if (!define_printed(proc, def->def.pr.versions)) {
+				puldefine(proc->proc_name, proc->proc_num);
 			}
+		}
+	}
 
+	/*
+	 * Print out 3 definitions, one for ANSI-C, another for C++, a
+	 * third for old style C
+	 */
+	f_print(fout, "\n");
+	cplusplusstart();
+	for (vers = def->def.pr.versions; vers != NULL; vers = vers->next) {
+		for (proc = vers->procs; proc != NULL; proc = proc->next) {
+			pprocdef(proc, vers, "CLIENT *", 0);
+			pprocdef(proc, vers, "struct svc_req *", 1);
 		}
-		f_print(fout, "#endif /* Old Style C */\n");
 	}
+	cplusplusend();
 }
 
 void
 pprocdef(proc_list *proc, version_list *vp, const char *addargtype,
-	 int server_p, int mode)
+     int server_p)
 {
 	decl_list *dl;
 
@@ -330,35 +363,28 @@ pprocdef(proc_list *proc, version_list *
 	else
 		pvname(proc->proc_name, vp->vers_num);
 
-	/*
-	 * mode  0 == cplusplus, mode  1 = ANSI-C, mode 2 = old style C
-	 */
-	if (mode == 0 || mode == 1) {
-		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, "*");
-				f_print(fout, ", ");
-			}
-		}
-		if (Mflag) {
-			if (streq(proc->res_type, "void"))
-				f_print(fout, "char");
-			else
-				ptype(proc->res_prefix, proc->res_type, 0);
-			if (!isvectordef(proc->res_type, REL_ALIAS))
+	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, "*");
 			f_print(fout, ", ");
 		}
-		f_print(fout, "%s);\n", addargtype);
 	}
-	else
-		f_print(fout, "();\n");
+	if (Mflag) {
+		if (streq(proc->res_type, "void"))
+			f_print(fout, "char");
+		else
+			ptype(proc->res_prefix, proc->res_type, 0);
+		if (!isvectordef(proc->res_type, REL_ALIAS))
+			f_print(fout, "*");
+		f_print(fout, ", ");
+	}
+	f_print(fout, "%s);\n", addargtype);
 }
 
 

Index: src/usr.bin/rpcgen/rpc_main.c
diff -u src/usr.bin/rpcgen/rpc_main.c:1.37 src/usr.bin/rpcgen/rpc_main.c:1.38
--- src/usr.bin/rpcgen/rpc_main.c:1.37	Mon Aug 12 10:03:18 2013
+++ src/usr.bin/rpcgen/rpc_main.c	Sat Dec 14 19:40:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_main.c,v 1.37 2013/08/12 14:03:18 joerg Exp $	*/
+/*	$NetBSD: rpc_main.c,v 1.38 2013/12/15 00:40:17 christos Exp $	*/
 
 /*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
@@ -39,7 +39,7 @@
 #if 0
 static char sccsid[] = "@(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI";
 #else
-__RCSID("$NetBSD: rpc_main.c,v 1.37 2013/08/12 14:03:18 joerg Exp $");
+__RCSID("$NetBSD: rpc_main.c,v 1.38 2013/12/15 00:40:17 christos Exp $");
 #endif
 #endif
 
@@ -126,6 +126,7 @@ int     inetdflag /* = 1 */ ;	/* Support
 int     pmflag;			/* Support for port monitors */
 int     logflag;		/* Use syslog instead of fprintf for errors */
 int     tblflag;		/* Support for dispatch table file */
+int	BSDflag;		/* use BSD cplusplus macros */
 int     callerflag;		/* Generate svc_caller() function */
 
 #define INLINE 3
@@ -140,7 +141,6 @@ int     exitnow;		/* If started by port 
 				 * call */
 int     timerflag;		/* TRUE if !indefinite && !exitnow */
 int     newstyle;		/* newstyle of passing arguments (by value) */
-int     Cflag = 0;		/* ANSI C syntax */
 int	Mflag = 0;		/* multithread safe */
 static int allfiles;		/* generate all files */
 int     tirpcflag = 1;		/* generating code for tirpc, by default */
@@ -149,28 +149,27 @@ int     tirpcflag = 1;		/* generating co
 static char *dos_cppfile = NULL;
 #endif
 
-int main __P((int, char *[]));
-
-static char *extendfile __P((const char *, const char *));
-static void open_output __P((const char *, const char *));
-static void add_warning __P((void));
-static void clear_args __P((void));
-static void open_input __P((const char *, const char *));
-static int check_nettype __P((const char *, const char *[]));
-static void c_output __P((const char *, const char *, int, const char *));
-static void c_initialize __P((void));
-static char *generate_guard __P((const char *));
-static void h_output __P((const char *, const char *, int, const char *));
-static void s_output __P((int, char *[], char *, const char *, int, const char *, int, int));
-static void l_output __P((const char *, const char *, int, const char *));
-static void t_output __P((const char *, const char *, int, const char *));
-static void svc_output __P((const char *, const char *, int, const char *));
-static void clnt_output __P((const char *, const char *, int, const char *));
-static int do_registers __P((int, char *[]));
-static void addarg __P((const char *));
-static void putarg __P((int, const char *));
-static void checkfiles __P((const char *, const char *));
-static int parseargs __P((int, char *[], struct commandline *));
+static char *extendfile(const char *, const char *);
+static void open_output(const char *, const char *);
+static void add_warning(void);
+static void clear_args(void);
+static void open_input(const char *, const char *);
+static int check_nettype(const char *, const char *[]);
+static void c_output(const char *, const char *, int, const char *);
+static void c_initialize(void);
+static char *generate_guard(const char *);
+static void h_output(const char *, const char *, int, const char *);
+static void s_output(int, char *[], char *, const char *, int, const char *,
+    int, int);
+static void l_output(const char *, const char *, int, const char *);
+static void t_output(const char *, const char *, int, const char *);
+static void svc_output(const char *, const char *, int, const char *);
+static void clnt_output(const char *, const char *, int, const char *);
+static int do_registers(int, char *[]);
+static void addarg(const char *);
+static void putarg(int, const char *);
+static void checkfiles(const char *, const char *);
+static int parseargs(int, char *[], struct commandline *);
 static void usage(void) __dead;
 static void options_usage(void) __dead;
 
@@ -533,6 +532,7 @@ h_output(const char *infile, const char 
 	long    tell;
 	char   *guard;
 	list   *l;
+	int did;
 
 	open_input(infile, define);
 	outfilename = extend ? extendfile(infile, outfile) : outfile;
@@ -561,9 +561,16 @@ h_output(const char *infile, const char 
 
 	/* print function declarations.  Do this after data definitions
 	 * because they might be used as arguments for functions */
+	did = 0;
 	for (l = defined; l != NULL; l = l->next) {
-		print_funcdef(l->val);
+		print_funcdef(l->val, &did);
 	}
+	print_funcend(did);
+
+	for (l = defined; l != NULL; l = l->next) {
+		print_progdef(l->val);
+	}
+
 	if (extend && tell == ftell(fout)) {
 		(void) unlink(outfilename);
 	} else
@@ -602,12 +609,9 @@ s_output(int argc, char *argv[], char *i
 	f_print(fout, "#include <fcntl.h>\n");
 	f_print(fout, "#include <stdio.h>\n");
 	f_print(fout, "#include <stdlib.h>\n");
-	if (Cflag) {
-		f_print(fout, "#include <unistd.h>\n");
-		f_print(fout,
-		    "#include <rpc/pmap_clnt.h>\n");
-		f_print(fout, "#include <string.h>\n");
-	}
+	f_print(fout, "#include <unistd.h>\n");
+	f_print(fout, "#include <rpc/pmap_clnt.h>\n");
+	f_print(fout, "#include <string.h>\n");
 	f_print(fout, "#include <netdb.h>\n");
 	if (strcmp(svcclosetime, "-1") == 0)
 		indefinitewait = 1;
@@ -621,7 +625,7 @@ s_output(int argc, char *argv[], char *i
 			}
 	if (!tirpcflag && inetdflag)
 		f_print(fout, "#include <sys/ttycom.h>\n");
-	if (Cflag && (inetdflag || pmflag)) {
+	if (inetdflag || pmflag) {
 		f_print(fout, "#ifdef __cplusplus\n");
 		f_print(fout, "#include <sysent.h>\n");
 		f_print(fout, "#endif /* __cplusplus */\n");
@@ -643,8 +647,7 @@ s_output(int argc, char *argv[], char *i
 	if (logflag || inetdflag || pmflag)
 		f_print(fout, "#include <syslog.h>\n");
 
-	/* for ANSI-C */
-	f_print(fout, "\n#ifdef __STDC__\n#define SIG_PF void(*)(int)\n#endif\n");
+	f_print(fout, "\n#define SIG_PF void(*)(int)\n");
 
 	f_print(fout, "\n#ifdef DEBUG\n#define RPC_SVC_FG\n#endif\n");
 	if (timerflag)
@@ -684,8 +687,7 @@ l_output(const char *infile, const char 
 	outfilename = extend ? extendfile(infile, outfile) : outfile;
 	open_output(infile, outfilename);
 	add_warning();
-	if (Cflag)
-		f_print(fout, "#include <memory.h>\n");
+	f_print(fout, "#include <memory.h>\n");
 	if (infile && (include = extendfile(infile, ".h"))) {
 		f_print(fout, "#include \"%s\"\n", include);
 		free(include);
@@ -777,8 +779,7 @@ clnt_output(const char *infile, const ch
 
 	open_output(infile, outfilename);
 	add_sample_msg();
-	if (Cflag)
-		f_print(fout, "#include <stdio.h>\n");
+	f_print(fout, "#include <stdio.h>\n");
 	if (infile && (include = extendfile(infile, ".h"))) {
 		f_print(fout, "#include \"%s\"\n", include);
 		free(include);
@@ -930,6 +931,9 @@ parseargs(int argc, char *argv[], struct
 				case 'a':
 					allfiles = 1;
 					break;
+				case 'B':
+					BSDflag = 1;
+					break;
 				case 'c':
 				case 'h':
 				case 'l':
@@ -957,8 +961,7 @@ parseargs(int argc, char *argv[], struct
 					}
 					flag[c] = 1;
 					break;
-				case 'C':	/* ANSI C syntax */
-					Cflag = 1;
+				case 'C':	/* deprecated ANSI C syntax */
 					break;
 
 				case 'b':	/* turn TIRPC flag off for
@@ -1117,7 +1120,6 @@ options_usage(void)
 	f_print(stderr, "-a\t\tgenerate all files, including samples\n");
 	f_print(stderr, "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\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");

Index: src/usr.bin/rpcgen/rpc_parse.c
diff -u src/usr.bin/rpcgen/rpc_parse.c:1.17 src/usr.bin/rpcgen/rpc_parse.c:1.18
--- src/usr.bin/rpcgen/rpc_parse.c:1.17	Sun Aug 11 04:03:10 2013
+++ src/usr.bin/rpcgen/rpc_parse.c	Sat Dec 14 19:40:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_parse.c,v 1.17 2013/08/11 08:03:10 dholland Exp $	*/
+/*	$NetBSD: rpc_parse.c,v 1.18 2013/12/15 00:40:17 christos Exp $	*/
 /*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  * unrestricted use provided that this legend is included on all tape
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)rpc_parse.c 1.8 89/02/22 (C) 1987 SMI";
 #else
-__RCSID("$NetBSD: rpc_parse.c,v 1.17 2013/08/11 08:03:10 dholland Exp $");
+__RCSID("$NetBSD: rpc_parse.c,v 1.18 2013/12/15 00:40:17 christos Exp $");
 #endif
 #endif
 
@@ -56,18 +56,18 @@ __RCSID("$NetBSD: rpc_parse.c,v 1.17 201
 
 #define ARGNAME "arg"
 
-static void isdefined __P((definition *));
-static void def_struct __P((definition *));
-static void def_program __P((definition *));
-static void def_enum __P((definition *));
-static void def_const __P((definition *));
-static void def_union __P((definition *));
-static void check_type_name __P((const char *, int));
-static void def_typedef __P((definition *));
-static void get_declaration __P((declaration *, defkind));
-static void get_prog_declaration __P((declaration *, defkind, int));
-static void get_type __P((const char **, const char **, defkind));
-static void unsigned_dec __P((const char **));
+static void isdefined(definition *);
+static void def_struct(definition *);
+static void def_program(definition *);
+static void def_enum(definition *);
+static void def_const(definition *);
+static void def_union(definition *);
+static void check_type_name(const char *, int);
+static void def_typedef(definition *);
+static void get_declaration(declaration *, defkind);
+static void get_prog_declaration(declaration *, defkind, int);
+static void get_type(const char **, const char **, defkind);
+static void unsigned_dec(const char **);
 
 /*
  * return the next definition you see

Index: src/usr.bin/rpcgen/rpc_sample.c
diff -u src/usr.bin/rpcgen/rpc_sample.c:1.12 src/usr.bin/rpcgen/rpc_sample.c:1.13
--- src/usr.bin/rpcgen/rpc_sample.c:1.12	Sun Aug 11 04:03:10 2013
+++ src/usr.bin/rpcgen/rpc_sample.c	Sat Dec 14 19:40:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_sample.c,v 1.12 2013/08/11 08:03:10 dholland Exp $	*/
+/*	$NetBSD: rpc_sample.c,v 1.13 2013/12/15 00:40:17 christos Exp $	*/
 /*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  * unrestricted use provided that this legend is included on all tape
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)rpc_sample.c  1.1  90/08/30  (C) 1987 SMI";
 #else
-__RCSID("$NetBSD: rpc_sample.c,v 1.12 2013/08/11 08:03:10 dholland Exp $");
+__RCSID("$NetBSD: rpc_sample.c,v 1.13 2013/12/15 00:40:17 christos Exp $");
 #endif
 #endif
 
@@ -54,9 +54,9 @@ __RCSID("$NetBSD: rpc_sample.c,v 1.12 20
 
 static char RQSTP[] = "rqstp";
 
-static void write_sample_client __P((const char *, version_list *));
-static void write_sample_server __P((definition *));
-static void return_type __P((proc_list *));
+static void write_sample_client(const char *, version_list *);
+static void write_sample_server(definition *);
+static void return_type(proc_list *);
 
 void
 write_sample_svc(definition *def)
@@ -93,10 +93,7 @@ write_sample_client(const char *program_
 
 	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)\n\tchar *host;\n{\n");
+	f_print(fout, "(char *host)\n{\n");
 	f_print(fout, "\tCLIENT *clnt;\n");
 
 	for (proc = vp->procs; proc != NULL; proc = proc->next) {
@@ -255,11 +252,7 @@ write_sample_clnt_main(void)
 	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)\n\tint argc;\n\tchar *argv[];\n{\n");
-
+	f_print(fout, "int\nmain(int argc, char *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");
Index: src/usr.bin/rpcgen/rpc_scan.c
diff -u src/usr.bin/rpcgen/rpc_scan.c:1.12 src/usr.bin/rpcgen/rpc_scan.c:1.13
--- src/usr.bin/rpcgen/rpc_scan.c:1.12	Sun Aug 11 04:03:10 2013
+++ src/usr.bin/rpcgen/rpc_scan.c	Sat Dec 14 19:40:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_scan.c,v 1.12 2013/08/11 08:03:10 dholland Exp $	*/
+/*	$NetBSD: rpc_scan.c,v 1.13 2013/12/15 00:40:17 christos Exp $	*/
 /*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  * unrestricted use provided that this legend is included on all tape
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)rpc_scan.c 1.11 89/02/22 (C) 1987 SMI";
 #else
-__RCSID("$NetBSD: rpc_scan.c,v 1.12 2013/08/11 08:03:10 dholland Exp $");
+__RCSID("$NetBSD: rpc_scan.c,v 1.13 2013/12/15 00:40:17 christos Exp $");
 #endif
 #endif
 
@@ -57,15 +57,15 @@ __RCSID("$NetBSD: rpc_scan.c,v 1.12 2013
 #define startcomment(where) (where[0] == '/' && where[1] == '*')
 #define endcomment(where) (where[-1] == '*' && where[0] == '/')
 
-static void unget_token __P((token *));
-static void findstrconst __P((char **, const char **));
-static void findchrconst __P((char **, const char **));
-static void findconst __P((char **, const char **));
-static void findkind __P((char **, token *));
-static int cppline __P((const char *));
-static int directive __P((const char *));
-static void printdirective __P((const char *));
-static void docppline __P((char *, int *, const char **));
+static void unget_token(token *);
+static void findstrconst(char **, const char **);
+static void findchrconst(char **, const char **);
+static void findconst(char **, const char **);
+static void findkind(char **, token *);
+static int cppline(const char *);
+static int directive(const char *);
+static void printdirective(const char *);
+static void docppline(char *, int *, const char **);
 
 static int pushed = 0;		/* is a token pushed */
 static token lasttok;		/* last token, if pushed */
Index: src/usr.bin/rpcgen/rpc_util.c
diff -u src/usr.bin/rpcgen/rpc_util.c:1.12 src/usr.bin/rpcgen/rpc_util.c:1.13
--- src/usr.bin/rpcgen/rpc_util.c:1.12	Sun Aug 11 04:03:10 2013
+++ src/usr.bin/rpcgen/rpc_util.c	Sat Dec 14 19:40:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_util.c,v 1.12 2013/08/11 08:03:10 dholland Exp $	*/
+/*	$NetBSD: rpc_util.c,v 1.13 2013/12/15 00:40:17 christos Exp $	*/
 /*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  * unrestricted use provided that this legend is included on all tape
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)rpc_util.c 1.11 89/02/22 (C) 1987 SMI";
 #else
-__RCSID("$NetBSD: rpc_util.c,v 1.12 2013/08/11 08:03:10 dholland Exp $");
+__RCSID("$NetBSD: rpc_util.c,v 1.13 2013/12/15 00:40:17 christos Exp $");
 #endif
 #endif
 
@@ -56,7 +56,7 @@ __RCSID("$NetBSD: rpc_util.c,v 1.12 2013
 
 #define ARGEXT "argument"
 
-static void printwhere __P((void));
+static void printwhere(void);
 
 char    curline[MAXLINESIZE];	/* current read line */
 char   *where = curline;	/* current point in line */
@@ -73,12 +73,12 @@ FILE   *fin;			/* file pointer of curren
 
 list   *defined;		/* list of defined things */
 
-static const char *toktostr __P((tok_kind));
-static void printbuf __P((void));
-static void printwhere __P((void));
-static int findit __P((definition *, const char *));
-static const char *fixit __P((const char *, const char *));
-static int typedefed __P((definition *, const char *));
+static const char *toktostr(tok_kind);
+static void printbuf(void);
+static void printwhere(void);
+static int findit(definition *, const char *);
+static const char *fixit(const char *, const char *);
+static int typedefed(definition *, const char *);
 
 /*
  * Reinitialize the world

Index: src/usr.bin/rpcgen/rpc_svcout.c
diff -u src/usr.bin/rpcgen/rpc_svcout.c:1.24 src/usr.bin/rpcgen/rpc_svcout.c:1.25
--- src/usr.bin/rpcgen/rpc_svcout.c:1.24	Sun Aug 11 04:03:10 2013
+++ src/usr.bin/rpcgen/rpc_svcout.c	Sat Dec 14 19:40:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_svcout.c,v 1.24 2013/08/11 08:03:10 dholland Exp $	*/
+/*	$NetBSD: rpc_svcout.c,v 1.25 2013/12/15 00:40:17 christos Exp $	*/
 /*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  * unrestricted use provided that this legend is included on all tape
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)rpc_svcout.c 1.29 89/03/30 (C) 1987 SMI";
 #else
-__RCSID("$NetBSD: rpc_svcout.c,v 1.24 2013/08/11 08:03:10 dholland Exp $");
+__RCSID("$NetBSD: rpc_svcout.c,v 1.25 2013/12/15 00:40:17 christos Exp $");
 #endif
 #endif
 
@@ -57,33 +57,30 @@ static char ARG[] = "argument";
 static char RESULT[] = "result";
 static char ROUTINE[] = "local";
 
-static void p_xdrfunc __P((const char *, const char *));
-static void internal_proctype __P((proc_list *));
-static void write_real_program __P((definition *));
-static void write_program __P((definition *, const char *));
-static void printerr __P((const char *, const char *));
-static void printif __P((const char *, const char *, const char *, const char *));
-static void write_inetmost __P((char *));
-static void print_return __P((const char *));
-static void print_pmapunset __P((const char *));
-static void print_err_message __P((const char *));
-static void write_timeout_func __P((void));
-static void write_caller_func __P((void));
-static void write_pm_most __P((char *, int));
-static void write_rpc_svc_fg __P((char *, const char *));
-static void open_log_file __P((char *, const char *));
-static const char *aster __P((const char *));
+static void p_xdrfunc(const char *, const char *);
+static void internal_proctype(proc_list *);
+static void write_real_program(definition *);
+static void write_program(definition *, const char *);
+static void printerr(const char *, const char *);
+static void printif(const char *, const char *, const char *, const char *);
+static void write_inetmost(char *);
+static void print_return(const char *);
+static void print_pmapunset(const char *);
+static void print_err_message(const char *);
+static void write_timeout_func(void);
+static void write_caller_func(void);
+static void write_pm_most(char *, int);
+static void write_rpc_svc_fg(char *, const char *);
+static void open_log_file(char *, const char *);
+static const char *aster(const char *);
 
 char    _errbuf[256];		/* For all messages */
 
 static void
 p_xdrfunc(const char *rname, const char *typename)
 {
-	if (Cflag)
-		f_print(fout, "\t\txdr_%s = (xdrproc_t)xdr_%s;\n", rname,
-		    stringfix(typename));
-	else
-		f_print(fout, "\t\txdr_%s = xdr_%s;\n", rname, stringfix(typename));
+	f_print(fout, "\t\txdr_%s = (xdrproc_t)xdr_%s;\n", rname,
+	    stringfix(typename));
 }
 
 static void
@@ -121,14 +118,8 @@ write_most(char *infile /* our name */, 
 	if (nomain)
 		return;
 
-	f_print(fout, "\n\n");
-	if (Cflag)
-		f_print(fout, "int main(int argc, char *argv[]);\n");
 	f_print(fout, "\nint\n");
-	if (Cflag)
-		f_print(fout, "main(int argc, char *argv[])\n");
-	else
-		f_print(fout, "main(argc, argv)\nint argc;\nchar *argv[];\n");
+	f_print(fout, "main(int argc, char *argv[])\n");
 	f_print(fout, "{\n");
 	if (inetdflag) {
 		write_inetmost(infile);	/* Includes call to write_rpc_svc_fg() */
@@ -253,8 +244,7 @@ write_rest(void)
 		if (timerflag) {
 			f_print(fout, "\tif (_rpcpmstart) {\n");
 			f_print(fout,
-			    "\t\t(void) signal(SIGALRM, %s closedown);\n",
-			    Cflag ? "(SIG_PF)" : "(void(*)())");
+			    "\t\t(void) signal(SIGALRM, (SIG_PF)closedown);\n");
 			f_print(fout, "\t\t(void) alarm(_RPCSVC_CLOSEDOWN);\n");
 			f_print(fout, "\t}\n");
 		}
@@ -310,52 +300,25 @@ write_real_program(definition *def)
 			internal_proctype(proc);
 			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);
-				f_print(fout, "*argp, ");
-				if (Mflag) {
-					if (streq(proc->res_type, "void"))
-						f_print(fout, "char ");
-					else
-						ptype(proc->res_prefix,
-						    proc->res_type, 0);
-					f_print(fout, "%sresult, ",
-					    aster(proc->res_type));
-				}
-				f_print(fout, "struct svc_req *%s)\n", RQSTP);
-			} else {
-				f_print(fout, "(argp, ");
-				if (Mflag)
-					f_print(fout, "result, ");
-				f_print(fout, "%s)\n", RQSTP);
-				f_print(fout, "\t");
-				if (proc->arg_num > 1)
-					f_print(fout, "%s ",
-					    proc->args.argname);
+			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);
+			f_print(fout, "*argp, ");
+			if (Mflag) {
+				if (streq(proc->res_type, "void"))
+					f_print(fout, "char ");
 				else
-					ptype(proc->args.decls->decl.prefix,
-					    proc->args.decls->decl.type, 0);
-				f_print(fout, "*argp;\n");
-				if (Mflag) {
-					f_print(fout, "\t");
-					if (streq(proc->res_type, "void"))
-						f_print(fout, "char ");
-					else
-						ptype(proc->res_prefix,
-						    proc->res_type, 0);
-					f_print(fout, "%sresult;\n",
-					    aster(proc->res_type));
-				}
-				f_print(fout, "\tstruct svc_req *%s;\n", RQSTP);
+					ptype(proc->res_prefix,
+					    proc->res_type, 0);
+				f_print(fout, "%sresult, ",
+				    aster(proc->res_type));
 			}
-
+			f_print(fout, "struct svc_req *%s)\n", RQSTP);
 			f_print(fout, "{\n");
 			f_print(fout, "\treturn (");
 			pvname_svc(proc->proc_name, vp->vers_num);
@@ -380,16 +343,14 @@ write_program(definition *def, const cha
 	int     filled;
 
 	for (vp = def->def.pr.versions; vp != NULL; vp = vp->next) {
-		if (Cflag) {
-			f_print(fout, "\n");
-			if (storage != NULL) {
-				f_print(fout, "%s ", storage);
-			}
-			f_print(fout, "void ");
-			pvname(def->def_name, vp->vers_num);
-			f_print(fout, "(struct svc_req *%s, ", RQSTP);
-			f_print(fout, "SVCXPRT *%s);\n", TRANSP);
+		f_print(fout, "\n");
+		if (storage != NULL) {
+			f_print(fout, "%s ", storage);
 		}
+		f_print(fout, "void ");
+		pvname(def->def_name, vp->vers_num);
+		f_print(fout, "(struct svc_req *%s, ", RQSTP);
+		f_print(fout, "SVCXPRT *%s);\n", TRANSP);
 		f_print(fout, "\n");
 		if (storage != NULL) {
 			f_print(fout, "%s ", storage);
@@ -397,15 +358,8 @@ write_program(definition *def, const cha
 		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, "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, "	SVCXPRT *%s;\n", TRANSP);
-		}
-
+		f_print(fout, "(struct svc_req *%s, ", RQSTP);
+		f_print(fout, "SVCXPRT *%s)\n", TRANSP);
 		f_print(fout, "{\n");
 
 		filled = 0;
@@ -452,23 +406,15 @@ write_program(definition *def, const cha
 		} else
 			f_print(fout, "\tchar *%s;\n", RESULT);
 
-		if (Cflag) {
-			f_print(fout, "\txdrproc_t xdr_%s, xdr_%s;\n", ARG, RESULT);
-			if (Mflag)
-				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 (Mflag)
-				f_print(fout, "\tbool_t (*%s)();\n", ROUTINE);
-			else
-				f_print(fout, "\tchar *(*%s)();\n", ROUTINE);
-		}
+		f_print(fout, "\txdrproc_t xdr_%s, xdr_%s;\n", ARG, RESULT);
+		if (Mflag)
+			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);
 
 		f_print(fout, "\n");
 
@@ -479,14 +425,8 @@ write_program(definition *def, const cha
 		f_print(fout, "\tswitch (%s->rq_proc) {\n", RQSTP);
 		if (!nullproc(vp->procs)) {
 			f_print(fout, "\tcase NULLPROC:\n");
-			if (Cflag) {
-			  	f_print(fout,
-					"\t\t(void) svc_sendreply(%s, (xdrproc_t)xdr_void, NULL);\n", TRANSP);
-			} else {
-			  	f_print(fout,
-					"\t\t(void) svc_sendreply(%s, xdr_void, NULL);\n",
-					TRANSP);
-			}
+			f_print(fout,
+			    "\t\t(void) svc_sendreply(%s, (xdrproc_t)xdr_void, NULL);\n", TRANSP);
 			print_return("\t\t");
 			f_print(fout, "\n");
 		}
@@ -498,28 +438,18 @@ write_program(definition *def, const cha
 				p_xdrfunc(ARG, proc->args.argname);
 			}
 			p_xdrfunc(RESULT, proc->res_type);
-			if (Cflag) {
-				if (Mflag)
-					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 (Mflag)
-					f_print(fout, "\t\t%s = (bool_t (*)())", ROUTINE);
-				else
-					f_print(fout, "\t\t%s = (char *(*)())", ROUTINE);
-			}
+			if (Mflag)
+				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);
 
 			if (newstyle)	/* new style: calls internal routine */
 				f_print(fout, "_");
-			if (Cflag)
-				pvname_svc(proc->proc_name, vp->vers_num);
-			else
-				pvname(proc->proc_name, vp->vers_num);
+			pvname_svc(proc->proc_name, vp->vers_num);
 			f_print(fout, ";\n");
 			f_print(fout, "\t\tbreak;\n\n");
 		}
@@ -534,21 +464,12 @@ write_program(definition *def, const cha
 		print_return("\t\t");
 		f_print(fout, "\t}\n");
 
-		if (Cflag) {
-			if (Mflag)
-				f_print(fout, "\tretval = (*%s)((char *)&%s, (void *)&%s, %s);\n",
-				    ROUTINE, ARG, RESULT, RQSTP);
-			else
-				f_print(fout, "\t%s = (*%s)((char *)&%s, %s);\n",
-				    RESULT, ROUTINE, ARG, RQSTP);
-		} else {
-			if (Mflag)
-				f_print(fout, "\tretval = (*%s)(&%s, &%s, %s);\n",
-				    ROUTINE, ARG, RESULT, RQSTP);
-			else
-				f_print(fout, "\t%s = (*%s)(&%s, %s);\n",
-				    RESULT, ROUTINE, ARG, RQSTP);
-		}
+		if (Mflag)
+			f_print(fout, "\tretval = (*%s)((char *)&%s, (void *)&%s, %s);\n",
+			    ROUTINE, ARG, RESULT, RQSTP);
+		else
+			f_print(fout, "\t%s = (*%s)((char *)&%s, %s);\n",
+			    RESULT, ROUTINE, ARG, RQSTP);
 		if (Mflag)
 			f_print(fout,
 			    "\tif (retval > 0 && !svc_sendreply(%s, xdr_%s, (char *)&%s)) {\n",
@@ -698,12 +619,7 @@ 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(const char *msg)\n");
-	}
+	f_print(fout, "void _msgout(const char *msg)\n");
 	f_print(fout, "{\n");
 	f_print(fout, "#ifdef RPC_SVC_FG\n");
 	if (inetdflag || pmflag)
@@ -724,10 +640,8 @@ write_timeout_func(void)
 {
 	if (!timerflag)
 		return;
-	if (Cflag) {
-		f_print(fout, "\n");
-		f_print(fout, "static void closedown(void);\n");
-	}
+	f_print(fout, "\n");
+	f_print(fout, "static void closedown(void);\n");
 	f_print(fout, "\n");
 	f_print(fout, "static void\n");
 	f_print(fout, "closedown()\n");
@@ -872,8 +786,7 @@ write_pm_most(char *infile, int netflag)
 	}
 	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) signal(SIGALRM, (SIGPF)closedown);\n");
 		f_print(fout, "\t\t\t(void) alarm(_RPCSVC_CLOSEDOWN);\n");
 		f_print(fout, "\t\t}\n");
 	}

Index: src/usr.bin/rpcgen/rpc_tblout.c
diff -u src/usr.bin/rpcgen/rpc_tblout.c:1.13 src/usr.bin/rpcgen/rpc_tblout.c:1.14
--- src/usr.bin/rpcgen/rpc_tblout.c:1.13	Sun Aug 11 04:03:10 2013
+++ src/usr.bin/rpcgen/rpc_tblout.c	Sat Dec 14 19:40:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_tblout.c,v 1.13 2013/08/11 08:03:10 dholland Exp $	*/
+/*	$NetBSD: rpc_tblout.c,v 1.14 2013/12/15 00:40:17 christos Exp $	*/
 /*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  * unrestricted use provided that this legend is included on all tape
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)rpc_tblout.c 1.4 89/02/22 (C) 1988 SMI";
 #else
-__RCSID("$NetBSD: rpc_tblout.c,v 1.13 2013/08/11 08:03:10 dholland Exp $");
+__RCSID("$NetBSD: rpc_tblout.c,v 1.14 2013/12/15 00:40:17 christos Exp $");
 #endif
 #endif
 
@@ -68,8 +68,8 @@ static const char null_entry[] = "\t(cha
 static const char tbl_nproc[] =
     "u_int %s_nproc =\n\t(u_int)(sizeof(%s_table)/sizeof(%s_table[0]));\n\n";
 
-static void write_table __P((definition *));
-static void printit __P((const char *, const char *));
+static void write_table(definition *);
+static void printit(const char *, const char *);
 
 void
 write_tables(void)

Index: src/usr.bin/rpcgen/rpc_util.h
diff -u src/usr.bin/rpcgen/rpc_util.h:1.7 src/usr.bin/rpcgen/rpc_util.h:1.8
--- src/usr.bin/rpcgen/rpc_util.h:1.7	Mon Aug 12 10:03:18 2013
+++ src/usr.bin/rpcgen/rpc_util.h	Sat Dec 14 19:40:17 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpc_util.h,v 1.7 2013/08/12 14:03:18 joerg Exp $	*/
+/*	$NetBSD: rpc_util.h,v 1.8 2013/12/15 00:40:17 christos Exp $	*/
 /*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  * unrestricted use provided that this legend is included on all tape
@@ -74,9 +74,9 @@ extern bas_type *typ_list_t;
 extern int inetdflag;
 extern int pmflag;   
 extern int tblflag;
+extern int BSDflag;
 extern int logflag;
 extern int newstyle;
-extern int Cflag;     /* C++ flag */
 extern int Mflag;     /* multithread flag */
 extern int tirpcflag; /* flag for generating tirpc code */
 extern int doinline; /* if this is 0, then do not generate inline code */
@@ -101,75 +101,77 @@ extern int nonfatalerrors;
 #define FINDVAL(list,item,finder) \
 	findval(list, item, finder)
 
-void reinitialize __P((void));
-int streq __P((const char *, const char *));
-definition *findval __P((list *, const char *,
-			 int (*)(definition *, const char *)));
-void storeval __P((list **, definition *));
-const char *fixtype __P((const char *));
-const char *stringfix __P((const char *));
-void ptype __P((const char *, const char *, int));
-int isvectordef __P((const char *, relation));
-char *locase __P((const char *));
-void pvname_svc __P((const char *, const char *));
-void pvname __P((const char *, const char *));
+void reinitialize(void);
+int streq(const char *, const char *);
+definition *findval(list *, const char *,
+			 int (*)(definition *, const char *));
+void storeval(list **, definition *);
+const char *fixtype(const char *);
+const char *stringfix(const char *);
+void ptype(const char *, const char *, int);
+int isvectordef(const char *, relation);
+char *locase(const char *);
+void pvname_svc(const char *, const char *);
+void pvname(const char *, const char *);
 void error(const char *) __dead;
 void crash(void) __dead;
-void record_open __P((const char *));
+void record_open(const char *);
 void expected1(tok_kind) __dead;
 void expected2(tok_kind, tok_kind) __dead;
 void expected3(tok_kind, tok_kind, tok_kind) __dead;
-void tabify __P((FILE *, int));
-char *make_argname __P((const char *, const char *));
-void add_type __P((int, const char *));
-bas_type *find_type __P((const char *));
+void tabify(FILE *, int);
+char *make_argname(const char *, const char *);
+void add_type(int, const char *);
+bas_type *find_type(const char *);
 /*
  * rpc_cout routines 
  */
-void emit __P((definition *));
-void emit_inline __P((declaration *, int));
-void emit_single_in_line __P((declaration *, int, relation));
-char *upcase __P((const char *));
+void emit(definition *);
+void emit_inline(declaration *, int);
+void emit_single_in_line(declaration *, int, relation);
+char *upcase(const char *);
 
 /*
  * rpc_hout routines 
  */
 
-void print_datadef __P((definition *));
-void print_funcdef __P((definition *));
-void pxdrfuncdecl __P((const char *, int));
-void pprocdef __P((proc_list *, version_list *, const char *, int, int));
-void pdeclaration __P((const char *, declaration *, int, const char *));
+void print_datadef(definition *);
+void print_progdef(definition *);
+void print_funcdef(definition *, int *);
+void print_funcend(int);
+void pxdrfuncdecl(const char *, int);
+void pprocdef(proc_list *, version_list *, const char *, int);
+void pdeclaration(const char *, declaration *, int, const char *);
 
 /*
  * rpc_svcout routines 
  */
-void write_most __P((char *, int, int));
-void write_netid_register __P((const char *));
-void write_nettype_register __P((const char *));
-void write_rest __P((void));
-void write_programs __P((const char *));
-int nullproc __P((proc_list *));
-void write_svc_aux __P((int));
-void write_msg_out __P((void));
-void write_inetd_register __P((const char *));
+void write_most(char *, int, int);
+void write_netid_register(const char *);
+void write_nettype_register(const char *);
+void write_rest(void);
+void write_programs(const char *);
+int nullproc(proc_list *);
+void write_svc_aux(int);
+void write_msg_out(void);
+void write_inetd_register(const char *);
 
 /*
  * rpc_clntout routines
  */
-void write_stubs __P((void));
-void printarglist __P((proc_list *, const char *, const char *, const char *));
+void write_stubs(void);
+void printarglist(proc_list *, const char *, const char *, const char *);
 
 
 /*
  * rpc_tblout routines
  */
-void write_tables __P((void));
+void write_tables(void);
 
 /*
  * rpc_sample routines
  */
-void write_sample_svc __P((definition *));
-int write_sample_clnt __P((definition *));
-void add_sample_msg __P((void));
-void write_sample_clnt_main __P((void));
+void write_sample_svc(definition *);
+int write_sample_clnt(definition *);
+void add_sample_msg(void);
+void write_sample_clnt_main(void);

Index: src/usr.bin/rpcgen/rpcgen.1
diff -u src/usr.bin/rpcgen/rpcgen.1:1.22 src/usr.bin/rpcgen/rpcgen.1:1.23
--- src/usr.bin/rpcgen/rpcgen.1:1.22	Wed Mar 11 09:57:53 2009
+++ src/usr.bin/rpcgen/rpcgen.1	Sat Dec 14 19:40:17 2013
@@ -1,7 +1,7 @@
-.\"	$NetBSD: rpcgen.1,v 1.22 2009/03/11 13:57:53 joerg Exp $
+.\"	$NetBSD: rpcgen.1,v 1.23 2013/12/15 00:40:17 christos Exp $
 .\" from: @(#)rpcgen.new.1	1.1 90/11/09 TIRPC 1.0; from 40.10 of 10/10/89
 .\" Copyright (c) 1988,1990 Sun Microsystems, Inc. - All Rights Reserved.
-.Dd January 19, 2008
+.Dd December 14, 2013
 .Dt RPCGEN 1
 .Os
 .Sh NAME
@@ -13,8 +13,8 @@
 .Nm
 .Op Fl A
 .Op Fl a
+.Op Fl B
 .Op Fl b
-.Op Fl C
 .Op Fl D Ar name Op =value
 .Op Fl I
 .Op Fl i Ar size
@@ -234,6 +234,8 @@ Generate all the files including sample 
 Generate an
 .Fn svc_caller
 function.
+.It Fl B
+Generate BSD cplusplus macros (__BEGIN_DECLS, __END_DECLS).
 .It Fl b
 Compile stubs in "backwards compatible" mode, disabling support for
 transport-independent RPC.
@@ -247,12 +249,6 @@ since there is no transport-independent 
 Compile into
 .Tn XDR
 routines.
-.It Fl C
-Generate code in
-.Tn ANSI
-C.
-This option also generates code that could be compiled with the
-C++ compiler.
 .It Fl D Ar name Ns Op Ar =value
 Define a symbol
 .Dv name .

Reply via email to