1 /* $NetBSD: rpc_util.h,v 1.4 1997/10/11 21:01:58 christos Exp $ */
3 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
4 * unrestricted use provided that this legend is included on all tape
5 * media and as a part of the software program in whole or part. Users
6 * may copy or modify Sun RPC without charge, but are not authorized
7 * to license or distribute it to anyone else except as part of a product or
8 * program developed by the user or with the express written consent of
9 * Sun Microsystems, Inc.
11 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
12 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
13 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
15 * Sun RPC is provided with no support and without any obligation on the
16 * part of Sun Microsystems, Inc. to assist in its use, correction,
17 * modification or enhancement.
19 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
20 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
21 * OR ANY PART THEREOF.
23 * In no event will Sun Microsystems, Inc. be liable for any lost revenue
24 * or profits or other special, indirect and consequential damages, even if
25 * Sun has been advised of the possibility of such damages.
27 * Sun Microsystems, Inc.
29 * Mountain View, California 94043
32 /* @(#)rpc_util.h 1.5 90/08/29 (C) 1987 SMI */
35 * rpc_util.h, Useful definitions for the RPC protocol compiler
38 #define alloc(size) (void *)malloc((unsigned)(size))
39 #define ALLOC(object) (object *) malloc(sizeof(object))
41 #define s_print (void) sprintf
42 #define f_print (void) fprintf
48 typedef struct list list
;
56 #define MAXLINESIZE 1024
57 extern char curline
[MAXLINESIZE
];
61 extern char *infilename
;
68 extern bas_type
*typ_list_h
;
69 extern bas_type
*typ_list_t
;
72 * All the option flags
79 extern int Cflag
; /* C++ flag */
80 extern int Mflag
; /* multithread flag */
81 extern int tirpcflag
; /* flag for generating tirpc code */
82 extern int doinline
; /* if this is 0, then do not generate inline code */
83 extern int callerflag
;
86 * Other flags related with inetd jumpstart.
88 extern int indefinitewait
;
92 extern int nonfatalerrors
;
98 #define STOREVAL(list,item) \
101 #define FINDVAL(list,item,finder) \
102 findval(list, item, finder)
104 void reinitialize
__P((void));
105 int streq
__P((char *, char *));
106 definition
*findval
__P((list
*, char *, int (*)(definition
*, char *)));
107 void storeval
__P((list
**, definition
*));
108 char *fixtype
__P((char *));
109 char *stringfix
__P((char *));
110 void ptype
__P((char *, char *, int));
111 int isvectordef
__P((char *, relation
));
112 char *locase
__P((char *));
113 void pvname_svc
__P((char *, char *));
114 void pvname
__P((char *, char *));
115 void error
__P((char *));
116 void crash
__P((void));
117 void record_open
__P((char *));
118 void expected1
__P((tok_kind
));
119 void expected2
__P((tok_kind
, tok_kind
));
120 void expected3
__P((tok_kind
, tok_kind
, tok_kind
));
121 void tabify
__P((FILE *, int));
122 void record_open
__P((char *));
123 char *make_argname
__P((char *, char *));
124 void add_type
__P((int, char *));
125 bas_type
*find_type
__P((char *));
129 void emit
__P((definition
*));
130 void emit_inline
__P((declaration
*, int));
131 void emit_single_in_line
__P((declaration
*, int, relation
));
132 char *upcase
__P((char *));
138 void print_datadef
__P((definition
*));
139 void print_funcdef
__P((definition
*));
140 void pxdrfuncdecl
__P((char *, int));
141 void pprocdef
__P((proc_list
*, version_list
*, char *, int, int));
142 void pdeclaration
__P((char *, declaration
*, int, char *));
145 * rpc_svcout routines
147 void write_most
__P((char *, int, int));
148 void write_netid_register
__P((char *));
149 void write_nettype_register
__P((char *));
150 void write_rest
__P((void));
151 void write_programs
__P((char *));
152 int nullproc
__P((proc_list
*));
153 void write_svc_aux
__P((int));
154 void write_msg_out
__P((void));
155 void write_inetd_register
__P((char *));
158 * rpc_clntout routines
160 void write_stubs
__P((void));
161 void printarglist
__P((proc_list
*, char *, char *, char *));
165 * rpc_tblout routines
167 void write_tables
__P((void));
170 * rpc_sample routines
172 void write_sample_svc
__P((definition
*));
173 int write_sample_clnt
__P((definition
*));
174 void add_sample_msg
__P((void));
175 void write_sample_clnt_main
__P((void));