static void pprogramdef(definition *def, int headeronly) { version_list *vers; proc_list *proc; const char *ext; pargdef(def); puldefine(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); } puldefine(vers->vers_name, vers->vers_num); f_print(fout, "\n"); ext = "extern "; if (headeronly) { f_print(fout, "%s", ext); pdispatch(def->def_name, vers->vers_num); } 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); f_print(fout, "%s", ext); pprocdef(proc, vers, "struct svc_req *", 1); } pfreeprocdef(def->def_name, vers->vers_num); } }
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"); } } }