/* $Id$ */
/*	ocrt.c - Occam runtime support */
#include "ocm_chan.h"

int chandes[]= { 0, 0, sizeof(int)+sizeof(long) };
int worddes[]= { 0, 0, sizeof(long) };
int bytedes[]= { 0, 0, 1 };
long any;

void catch(sig, file, line) int sig; char *file; int line;
/* Catches traps in the occam program */
{
	register char *mes;

	switch (sig) {
	case 0:
		mes="array bound error";
		break;
	case 6:
		mes="division by zero";
		break;
	case 8:
		mes="undefined variable";
		break;
	default:
		return;
	}
	fprintf(stderr, "%s (%d) F: %s\n", file, line, mes);
	abort();
}

chan file[20];
FILE *unix_file[20];

void initfile()
{
	register i;
	register chan *c=file;

	for (i=0; i<20; i++) {
		c->type=C_T_FILE;
		c->f.flgs=0;
		(c++)->f.index=i;
	}
	file[0].f.flgs|=C_F_INUSE;
	unix_file[0]=stdin;

	file[1].f.flgs|=C_F_INUSE;
	unix_file[1]=stdout;

	file[2].f.flgs|=C_F_INUSE;
	unix_file[2]=stderr;
}