/* compServerDefs.h */
#define MAXNAMLEN 255  /* from dir.h */

enum maxStatusStrinSize {MAXSTATUSSTRINGSIZE = 30};
enum maxErrorMessageSize {MAXERRMSGSIZE = 100};
enum maxStatusMessageSize {MAXSTATUSMSGSIZE = 1000};
enum maxCommandStringSize {MAXCOMMANDSTRINGSIZE = 1000};
enum maxAvSize {MAXAVSIZE = 30};

typedef enum { UNKNOWN=0, SUN4, RS6000, DEC } arch;
#define MAXARCH (int)DEC

/* If you add any switches here be sure to update SwitchesArray in
 * compServer.h and switch translation tables in mimosa.c and cinder.c
 */
typedef enum {a = 'a', b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, pw, Q, zcirio, si} Switches;
#define LASTSWITCH si

typedef unsigned long  JobID;

typedef struct object {
	JobDesc	job;
	char	*serverName;
	char	*inlineFile;
	JobID	jobID;
	char **argv;
	int argc;
	unsigned nJobs;
	char **jobList;
	int  optLevel;
	long startTime, finishTime;
/*	CLIENT *client;  */
	arch archtype;
}   Object, *Handle;

 /* Handle stuff */
extern Handle NewHandle();
extern void FreeHandle(/* Handle h */);

 /* command line switches/args routines */
extern void setSwitch(/* Handle h, Switches sw */);
extern void resetSwitch(/* Handle h, Switches sw */);
extern int isSwitchSet(/* Handle h, Switches sw */);

 /* IO and Error Msg Routines */
extern void PutLong();
extern void PutC();
extern void PutS();
extern void Fatal();
extern void Fatal2();
extern void Warning();
extern void echoCmd(/* Handle h, char *cmd, *filename */);
extern void echoArgs(/* Handle h */);
extern void ExitSuccessfully();
extern void Verbose();

 /* Compiling and Status */
extern JobStatus JobStatusFromStatus(/* int sstatus */);
extern void DoCCompile();
extern void ExitSuccessfully();

extern int validArch();
extern arch getArch();
extern char *getMach();
extern char *getwd←wo←automount();
extern char *stringFromArch();
extern arch archFromString();
extern int isSun4Target();
extern int isDecTarget();
extern int isRS6000Target();

 /* System routines */
extern void DeleteFile();
extern int  CallSys(/* Handle h, char *fileArg, **argVector */);
extern int systeme(/* Handle h, char *shell, *commander, *fileToWorkOn, 
					  int defSuccess*/);
	/* the defSuccess flag is an ugly hack for the debugging flag.
	   Its value should be what default value should be returned if the
	   debugging flag is turned on */
extern void AppendFileName();


 /* mimosa server stuff */
extern JobStatus CheckJobStatus();
extern JobStatus JobStatusFromStatus();
extern void TranslateCRs();
extern void ReportStatus();
extern void StartService();
extern void StopService();
extern int Mycallrpc();