1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ 27 /* All Rights Reserved */ 28 /* 29 * University Copyright- Copyright (c) 1982, 1986, 1988 30 * The Regents of the University of California 31 * All Rights Reserved 32 * 33 * University Acknowledgment- Portions of this document are derived from 34 * software developed by the University of California, Berkeley, and its 35 * contributors. 36 */ 37 38 #ifndef _RPC_UTIL_H 39 #define _RPC_UTIL_H 40 41 #include <sys/types.h> 42 #include <stdlib.h> 43 #include "rpc_scan.h" 44 45 #ifdef __cplusplus 46 extern "C" { 47 #endif 48 49 /* 50 * rpc_util.h, Useful definitions for the RPC protocol compiler 51 */ 52 53 54 /* Current version number of rpcgen. */ 55 #define RPCGEN_MAJOR 1 56 #define RPCGEN_MINOR 1 57 58 #define f_print (void) fprintf 59 60 struct list { 61 definition *val; 62 struct list *next; 63 }; 64 typedef struct list list; 65 66 struct xdrfunc { 67 char *name; 68 int pointerp; 69 struct xdrfunc *next; 70 }; 71 typedef struct xdrfunc xdrfunc; 72 73 struct commandline { 74 int cflag; /* xdr C routines */ 75 int hflag; /* header file */ 76 int lflag; /* client side stubs */ 77 int mflag; /* server side stubs */ 78 int nflag; /* netid flag */ 79 int sflag; /* server stubs for the given transport */ 80 int tflag; /* dispatch Table file */ 81 int Ssflag; /* produce server sample code */ 82 int Scflag; /* produce client sample code */ 83 int makefileflag; /* Generate a template Makefile */ 84 char *infile; /* input module name */ 85 char *outfile; /* output module name */ 86 }; 87 88 #define PUT 1 89 #define GET 2 90 91 /* 92 * Global variables 93 */ 94 #define MAXLINESIZE 1024 95 extern char curline[MAXLINESIZE]; 96 extern char *where; 97 extern int linenum; 98 99 extern char *infilename; 100 extern FILE *fout; 101 extern FILE *fin; 102 103 extern list *defined; 104 105 extern bas_type *typ_list_h; 106 extern bas_type *typ_list_t; 107 extern xdrfunc *xdrfunc_head, *xdrfunc_tail; 108 109 /* 110 * All the option flags 111 */ 112 extern int inetdflag; 113 extern int pmflag; 114 extern int tblflag; 115 extern int logflag; 116 extern int newstyle; 117 extern int Cflag; /* ANSI-C/C++ flag */ 118 extern int CCflag; /* C++ flag */ 119 extern int tirpcflag; /* flag for generating tirpc code */ 120 extern int inlinelen; /* if this is 0, then do not generate inline code */ 121 extern int mtflag; 122 extern int mtauto; 123 extern int rflag; 124 125 /* 126 * Other flags related with inetd jumpstart. 127 */ 128 extern int indefinitewait; 129 extern int exitnow; 130 extern int timerflag; 131 132 extern int nonfatalerrors; 133 134 extern pid_t childpid; 135 136 /* 137 * rpc_util routines 138 */ 139 extern void storeval(list **, definition *); 140 141 #define STOREVAL(list, item) \ 142 storeval(list, item) 143 144 extern definition *findval(list *, char *, int (*)()); 145 146 #define FINDVAL(list, item, finder) \ 147 findval(list, item, finder) 148 149 extern char *fixtype(char *); 150 extern char *stringfix(char *); 151 extern char *locase(char *); 152 extern void pvname_svc(char *, char *); 153 extern void pvname(char *, char *); 154 extern void ptype(char *, char *, int); 155 extern int isvectordef(char *, relation); 156 extern int streq(char *, char *); 157 extern void error(char *); 158 extern void expected1(tok_kind); 159 extern void expected2(tok_kind, tok_kind); 160 extern void expected3(tok_kind, tok_kind, tok_kind); 161 extern void tabify(FILE *, int); 162 extern void record_open(char *); 163 extern bas_type *find_type(char *); 164 165 /* 166 * rpc_cout routines 167 */ 168 extern void emit(definition *); 169 170 /* 171 * rpc_hout routines 172 */ 173 extern void print_datadef(definition *); 174 extern void print_funcdef(definition *); 175 extern void print_xdr_func_def(char *, int, int); 176 177 /* 178 * rpc_svcout routines 179 */ 180 extern void write_most(char *, int, int); 181 extern void write_rest(void); 182 extern void write_inetd_register(char *); 183 extern void write_netid_register(char *); 184 extern void write_nettype_register(char *); 185 186 /* 187 * rpc_clntout routines 188 */ 189 extern void write_stubs(void); 190 191 /* 192 * rpc_tblout routines 193 */ 194 extern void write_tables(void); 195 196 #ifdef __cplusplus 197 } 198 #endif 199 200 #endif /* !_RPC_UTIL_H */ 201