Home | History | Annotate | Line # | Download | only in rpcgen
rpc_util.h revision 1.7
      1 /*	$NetBSD: rpc_util.h,v 1.7 2013/08/12 14:03:18 joerg Exp $	*/
      2 /*
      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.
     10  *
     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.
     14  *
     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.
     18  *
     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.
     22  *
     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.
     26  *
     27  * Sun Microsystems, Inc.
     28  * 2550 Garcia Avenue
     29  * Mountain View, California  94043
     30  */
     31 
     32 /*      @(#)rpc_util.h  1.5  90/08/29  (C) 1987 SMI   */
     33 
     34 /*
     35  * rpc_util.h, Useful definitions for the RPC protocol compiler
     36  */
     37 
     38 #define alloc(size)		(void *)malloc((unsigned)(size))
     39 #define ALLOC(object)   (object *) malloc(sizeof(object))
     40 
     41 #define s_print	(void) sprintf
     42 #define f_print (void) fprintf
     43 
     44 struct list {
     45 	definition *val;
     46 	struct list *next;
     47 };
     48 typedef struct list list;
     49 
     50 #define PUT 1
     51 #define GET 2
     52 
     53 /*
     54  * Global variables
     55  */
     56 #define MAXLINESIZE 1024
     57 extern char curline[MAXLINESIZE];
     58 extern char *where;
     59 extern int linenum;
     60 
     61 extern const char *infilename;
     62 extern FILE *fout;
     63 extern FILE *fin;
     64 
     65 extern list *defined;
     66 
     67 
     68 extern bas_type *typ_list_h;
     69 extern bas_type *typ_list_t;
     70 
     71 /*
     72  * All the option flags
     73  */
     74 extern int inetdflag;
     75 extern int pmflag;
     76 extern int tblflag;
     77 extern int logflag;
     78 extern int newstyle;
     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;
     84 
     85 /*
     86  * Other flags related with inetd jumpstart.
     87  */
     88 extern int indefinitewait;
     89 extern int exitnow;
     90 extern int timerflag;
     91 
     92 extern int nonfatalerrors;
     93 
     94 /*
     95  * rpc_util routines
     96  */
     97 
     98 #define STOREVAL(list,item)	\
     99 	storeval(list,item)
    100 
    101 #define FINDVAL(list,item,finder) \
    102 	findval(list, item, finder)
    103 
    104 void reinitialize __P((void));
    105 int streq __P((const char *, const char *));
    106 definition *findval __P((list *, const char *,
    107 			 int (*)(definition *, const char *)));
    108 void storeval __P((list **, definition *));
    109 const char *fixtype __P((const char *));
    110 const char *stringfix __P((const char *));
    111 void ptype __P((const char *, const char *, int));
    112 int isvectordef __P((const char *, relation));
    113 char *locase __P((const char *));
    114 void pvname_svc __P((const char *, const char *));
    115 void pvname __P((const char *, const char *));
    116 void error(const char *) __dead;
    117 void crash(void) __dead;
    118 void record_open __P((const char *));
    119 void expected1(tok_kind) __dead;
    120 void expected2(tok_kind, tok_kind) __dead;
    121 void expected3(tok_kind, tok_kind, tok_kind) __dead;
    122 void tabify __P((FILE *, int));
    123 char *make_argname __P((const char *, const char *));
    124 void add_type __P((int, const char *));
    125 bas_type *find_type __P((const char *));
    126 /*
    127  * rpc_cout routines
    128  */
    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((const char *));
    133 
    134 /*
    135  * rpc_hout routines
    136  */
    137 
    138 void print_datadef __P((definition *));
    139 void print_funcdef __P((definition *));
    140 void pxdrfuncdecl __P((const char *, int));
    141 void pprocdef __P((proc_list *, version_list *, const char *, int, int));
    142 void pdeclaration __P((const char *, declaration *, int, const char *));
    143 
    144 /*
    145  * rpc_svcout routines
    146  */
    147 void write_most __P((char *, int, int));
    148 void write_netid_register __P((const char *));
    149 void write_nettype_register __P((const char *));
    150 void write_rest __P((void));
    151 void write_programs __P((const 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((const char *));
    156 
    157 /*
    158  * rpc_clntout routines
    159  */
    160 void write_stubs __P((void));
    161 void printarglist __P((proc_list *, const char *, const char *, const char *));
    162 
    163 
    164 /*
    165  * rpc_tblout routines
    166  */
    167 void write_tables __P((void));
    168 
    169 /*
    170  * rpc_sample routines
    171  */
    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));
    176