V9/jtools/src/pi/v9main.c

#include "master.pri"
#include "format.pri"
#include <CC/stdio.h>
SRCFILE("main.c")

void ErrExit(char *e)
{
	fprintf(stderr, "%s\n", e);
	exit(1);
}

char *getenv(char*), *Getwd();
char *CD;
char *DEVKMEM = "/dev/kmemr";
char *PADSTERM;
char *TAPTO;
char *UNIX = "";

void PadsRemInit();
char *PadsTermInit(char*);

void LoadTerm(char **av)
{
	if (av[0] && !strcmp(av[0],"-R")) {
		PadsRemInit();
		return;
	}
	if (av[0] && !strcmp(av[0],"-r") && av[1])
		ErrExit(PadsTermInit(av[1]));
	if( PadsInit(PADSTERM) )
		ErrExit("cannot load terminal");
}

void mainbatch(char **av)
{
	char *core = "core", *aout = "a.out";
	if( *av ) core = *av++;
	if( *av ) aout = *av++;
	new BatchMaster(core, aout);
	exit(0);
}

void mainpi(char **av)
{
	if(av[0] && !strcmp(av[0],"-t") ) {
		mainbatch(av+1);
		av += 2;
	}
	LoadTerm(av);
	extern char *TapTo;
	TapTo = TAPTO;
	NewHelp();
	NewWd();
	new HostMaster();
	PadsServe();
}

void main(int, char **av)
{
	char *e;
	if( e = getenv("PADSTERM") ) PADSTERM = e;
	if( e = getenv("UNIX") ) UNIX = e;
	if( e = getenv("DEVKMEM") ) DEVKMEM = e;
	CD = sf( "builtin cd %s;", Getwd() );

	av++;
	mainpi(av);
}