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;
}