~kris/9p

9hist

1dc81cee5c19142c0efe7d2c10b9b4694a218954 — David du Colombier 24 years ago 6b143ed
Plan 9 from Bell Labs 2002-04-07
2 files changed, 16 insertions(+), 4 deletions(-)

M pc/fns.h
M port/devenv.c
M pc/fns.h => pc/fns.h +1 -0
@@ 50,6 50,7 @@ void	i8253init(void);
void	i8253enable(void);
uvlong	i8253read(uvlong*);
void	i8259init(void);
int	i8259isr(int);
int	i8259enable(Vctl*);
int	i8259vecno(int);
int	i8259disable(int);

M port/devenv.c => port/devenv.c +15 -4
@@ 90,6 90,7 @@ envopen(Chan *c, int omode)
{
	Egrp *eg;
	Evalue *e;
	int trunc;

	eg = envgrp(c);
	if(c->qid.type & QTDIR) {


@@ 97,21 98,31 @@ envopen(Chan *c, int omode)
			error(Eperm);
	}
	else {
		trunc = omode & OTRUNC;
		if(omode != OREAD && !envwriteable(c))
			error(Eperm);
		rlock(eg);
		if(trunc)
			wlock(eg);
		else
			rlock(eg);
		e = envlookup(eg, nil, c->qid.path);
		if(e == 0) {
			runlock(eg);
			if(trunc)
				wunlock(eg);
			else
				runlock(eg);
			error(Enonexist);
		}
		if((omode & OTRUNC) && e->value) {
		if(trunc && e->value) {
			e->qid.vers++;
			free(e->value);
			e->value = 0;
			e->len = 0;
		}
		runlock(eg);
		if(trunc)
			wunlock(eg);
		else
			runlock(eg);
	}
	c->mode = openmode(omode);
	c->flag |= COPEN;