Home | History | Annotate | Line # | Download | only in rpcgen
rpc_util.h revision 1.3
      1 /*	$NetBSD: rpc_util.h,v 1.3 1995/06/11 21:50:10 pk 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 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 tirpcflag; /* flag for generating tirpc code */
     81 extern int inline; /* if this is 0, then do not generate inline code */
     82 extern int callerflag;
     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 __P((char *));
    107 char *stringfix __P((char *));
    108 char *locase __P((char *));
    109 void pvname_svc __P((char *, char *));
    110 void pvname __P((char *, char *));
    111 void ptype __P((char *, char *, int));
    112 int isvectordef __P((char *, relation));
    113 int streq __P((char *, char *));
    114 void error __P((char *));
    115 void tabify __P((FILE *, int));
    116 void record_open __P((char *));
    117 bas_type *find_type __P((char *));
    118 char *make_argname __P((char *, char *));
    119 /*
    120  * rpc_cout routines
    121  */
    122 void emit __P((definition *));
    123 
    124 /*
    125  * rpc_hout routines
    126  */
    127 void print_datadef __P((definition *));
    128 void print_funcdef __P((definition *));
    129 
    130 /*
    131  * rpc_svcout routines
    132  */
    133 void write_most __P((char *, int, int));
    134 void write_rest __P((void));
    135 void write_programs __P((char *));
    136 void write_svc_aux __P((int));
    137 void write_inetd_register __P((char *));
    138 void write_netid_register __P((char *));
    139 void write_nettype_register __P((char *));
    140 /*
    141  * rpc_clntout routines
    142  */
    143 void write_stubs __P((void));
    144 void printarglist __P((proc_list *, char *, char *));
    145 
    146 
    147 /*
    148  * rpc_tblout routines
    149  */
    150 void write_tables __P((void));
    151 
    152 /*
    153  * rpc_sample routines
    154  */
    155 void write_sample_svc __P((definition *));
    156 int write_sample_clnt __P((definition *));
    157 void write_sample_clnt_main __P((void));
    158