Home | History | Annotate | Line # | Download | only in rpcgen
rpc_util.h revision 1.1.1.1
      1 /*
      2  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
      3  * unrestricted use provided that this legend is included on all tape
      4  * media and as a part of the software program in whole or part.  Users
      5  * may copy or modify Sun RPC without charge, but are not authorized
      6  * to license or distribute it to anyone else except as part of a product or
      7  * program developed by the user or with the express written consent of
      8  * Sun Microsystems, Inc.
      9  *
     10  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
     11  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
     12  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
     13  *
     14  * Sun RPC is provided with no support and without any obligation on the
     15  * part of Sun Microsystems, Inc. to assist in its use, correction,
     16  * modification or enhancement.
     17  *
     18  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
     19  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
     20  * OR ANY PART THEREOF.
     21  *
     22  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
     23  * or profits or other special, indirect and consequential damages, even if
     24  * Sun has been advised of the possibility of such damages.
     25  *
     26  * Sun Microsystems, Inc.
     27  * 2550 Garcia Avenue
     28  * Mountain View, California  94043
     29  */
     30 
     31 /*      @(#)rpc_util.h  1.5  90/08/29  (C) 1987 SMI   */
     32 
     33 /*
     34  * rpc_util.h, Useful definitions for the RPC protocol compiler
     35  */
     36 
     37 #include <stdlib.h>
     38 
     39 #define alloc(size)		malloc((unsigned)(size))
     40 #define ALLOC(object)   (object *) malloc(sizeof(object))
     41 
     42 #define s_print	(void) sprintf
     43 #define f_print (void) fprintf
     44 
     45 struct list {
     46 	definition *val;
     47 	struct list *next;
     48 };
     49 typedef struct list list;
     50 
     51 #define PUT 1
     52 #define GET 2
     53 
     54 /*
     55  * Global variables
     56  */
     57 #define MAXLINESIZE 1024
     58 extern char curline[MAXLINESIZE];
     59 extern char *where;
     60 extern int linenum;
     61 
     62 extern char *infilename;
     63 extern FILE *fout;
     64 extern FILE *fin;
     65 
     66 extern list *defined;
     67 
     68 
     69 extern bas_type *typ_list_h;
     70 extern bas_type *typ_list_t;
     71 
     72 /*
     73  * All the option flags
     74  */
     75 extern int inetdflag;
     76 extern int pmflag;
     77 extern int tblflag;
     78 extern int logflag;
     79 extern int newstyle;
     80 extern int Cflag;     /* C++ flag */
     81 extern int tirpcflag; /* flag for generating tirpc code */
     82 extern int inline; /* if this is 0, then do not generate inline code */
     83 
     84 /*
     85  * Other flags related with inetd jumpstart.
     86  */
     87 extern int indefinitewait;
     88 extern int exitnow;
     89 extern int timerflag;
     90 
     91 extern int nonfatalerrors;
     92 
     93 /*
     94  * rpc_util routines
     95  */
     96 void storeval();
     97 
     98 #define STOREVAL(list,item)	\
     99 	storeval(list,item)
    100 
    101 definition *findval();
    102 
    103 #define FINDVAL(list,item,finder) \
    104 	findval(list, item, finder)
    105 
    106 char *fixtype();
    107 char *stringfix();
    108 char *locase();
    109 void pvname_svc();
    110 void pvname();
    111 void ptype();
    112 int isvectordef();
    113 int streq();
    114 void error();
    115 void expected1();
    116 void expected2();
    117 void expected3();
    118 void tabify();
    119 void record_open();
    120 bas_type *find_type();
    121 /*
    122  * rpc_cout routines
    123  */
    124 void cprint();
    125 void emit();
    126 
    127 /*
    128  * rpc_hout routines
    129  */
    130 void print_datadef();
    131 void print_funcdef();
    132 
    133 /*
    134  * rpc_svcout routines
    135  */
    136 void write_most();
    137 void write_register();
    138 void write_rest();
    139 void write_programs();
    140 void write_svc_aux();
    141 void write_inetd_register();
    142 void write_netid_register();
    143 void write_nettype_register();
    144 /*
    145  * rpc_clntout routines
    146  */
    147 void write_stubs();
    148 
    149 /*
    150  * rpc_tblout routines
    151  */
    152 void write_tables();
    153