/* @(#)rpc←util.h 1.1 90/10/29 (C) 1987 SMI */
/*
* rpc←util.h, Useful definitions for the RPC protocol compiler
* Copyright (C) 1987, Sun Microsystems, Inc.
*/
#include "StringHashTable.h"
extern char *malloc();
#define FALSE 0
#define TRUE 1
#define alloc(size) malloc((unsigned)(size))
#define ALLOC(object) (object *) malloc(sizeof(object))
extern char *sprintf();
#define s←print (void) sprintf
#define f←print (void) fprintf
struct list {
char *val;
struct list *next;
};
typedef struct list list;
struct ImportModuleRec {
char *moduleName; /* Module name for the associated name. */
char *defnName; /* String of the form foo.bar, where
foo is the module name. */
};
typedef struct ImportModuleRec ImportModuleRec;
/*
* Global variables
*/
#define MAXLINESIZE 1024
typedef struct Context {
char curline[MAXLINESIZE]; /* current read line */
char *where; /* current point in line */
int linenum; /* current line number */
char *infilename; /* current input filename */
FILE *fin; /* file pointer of current input */
list *defined; /* list of defined things */
int printDirectives; /* TRUE => emit directives when encountered */
} Context;
extern Context *CurrentContext;
extern FILE *fout;
extern char *svcName;
extern int BadProgNameFlag[];
extern int CurrentProgNameFlag;
extern int PCedar;
extern int PCedarUDP;
extern int PCedarTCP;
extern char *SunRPC;
extern int SeqTypeId;
extern list *Imports;
extern StringHashTableHandle ImportNames;
extern StringHashTableHandle SymbolNames;
extern StringHashTableHandle SeqTypes;
extern StringHashTableHandle EnumTypes;
extern int ExpandProcArgs;
extern int RecoveryFlag;
extern int PFlag;
/*
* All the option flags
*/
extern int inetdflag;
extern int tblflag;
extern int logflag;
/*
* Other flags related with inetd jumpstart.
*/
extern int indefinitewait;
extern int exitnow;
extern int timerflag;
/*
* rpc←util routines
*/
void storeval();
#define STOREVAL(list,item) \
storeval(list,(char *)item)
char *findval();
#define FINDVAL(list,item,finder) \
findval(list, (char *) item, finder)
char *fixtype();
char *stringfix();
char *locase();
void pvname();
void ptype();
int isvectordef();
int streq();
void error();
void expected1();
void expected2();
void expected3();
void record←open();
char *ModuleName();
char *GetPutModuleName();
char *MapToCedarName();
char *MapToCedarType();
char *rpcgenBaseType();
char *ArrayMax();
char *FindUniqueName();
char *StripPrefix();
char *DefaultEnumTypes();
/*
* rpc←cout routines
*/
void emit();
/*
* rpc←hout routines
*/
void print←datadef();
/*
* rpc←svcout routines
*/
void write←server←prog();
/*
* rpc←clntout routines
*/
void write←stubs();
/*
* rpc←tblout routines
*/
void write←tables();