1BSD/ex-1.1/ex_init.c

#
/*
 * Ex - a text editor
 * Bill Joy UCB September, 1977
 */
int	mask	0377;		/* Standard V6 - only 256 users */

#include "ex.h"
#include "ex_tty.h"
#include "ex_io.h"


#define	UCASE	04
#define	TABS	02
#define	CRFLG	020

char	TTYNAM[]	"/dev/ttyx";

initoptions(f)
	char f;
{
	int uid, ttyno, rcio;
	char Home[40];
	register char *H;

	intty = gTTY(0) == 0;
	if (!intty && f == 0) {
unknown:
		setterm("u");
		return;
	}
	if (gTTY(1)) {
		if (f == 0 || gTTY(2))
			goto unknown;
		f = 2;
	} else
		f = 1;
	UPPERCASE = (tty[2] & UCASE) != 0;
	PT = (tty[2] & TABS) == 0;
	NOCR = (tty[2] & CRFLG) == 0;
	ttyno = ttyn(f);
	if (ttyno != 'x') {
		if (hget(ttyno) == 0)
			isetterm(hsgettype());
	}
	uid = getuid() & mask;
	H = hgethome();
	if (uid == 0)
		strcpy(H, "/");
	else if (uid != hgetuid())
		return;
	TTYNAM[8] = ttyno;
	gettmode();
	strcpy(home, H);
	strcpy(Home, H);
	strcat(Home, "/.exrc");
	source(Home, 1);
}

isetterm(type)
	char *type;
{
	char reenter;
	int osetexit[3];

	getexit(osetexit);
	reenter = 0;
	setexit();
	if (reenter == 0) {
		reenter++;
		Setterm(type, 0);
	}
	resexit(osetexit);
}

gettmode()
{
	struct stb stbuf;

	stat(TTYNAM, &stbuf);
	TMODE = stbuf.flags & 0777;
}