devenv: simplify envremove(), cleanup

This commit is contained in:
cinap_lenrek 2015-08-03 22:08:10 +02:00
parent 37e4ce0ea7
commit d5d6724805

View file

@ -192,27 +192,23 @@ static void
envremove(Chan *c) envremove(Chan *c)
{ {
Egrp *eg; Egrp *eg;
Evalue *e, *ee; Evalue *e;
if(c->qid.type & QTDIR || !envwriteable(c)) if(c->qid.type & QTDIR || !envwriteable(c))
error(Eperm); error(Eperm);
eg = envgrp(c); eg = envgrp(c);
wlock(eg); wlock(eg);
e = eg->ent; e = envlookup(eg, nil, c->qid.path);
for(ee = e + eg->nent; e < ee; e++){ if(e == nil){
if(e->qid.path == c->qid.path){ wunlock(eg);
free(e->name); error(Enonexist);
free(e->value);
*e = ee[-1];
eg->nent--;
eg->vers++;
wunlock(eg);
return;
}
} }
free(e->name);
free(e->value);
*e = eg->ent[--eg->nent];
eg->vers++;
wunlock(eg); wunlock(eg);
error(Enonexist);
} }
static void static void
@ -416,7 +412,7 @@ getconfenv(void)
/* determine size */ /* determine size */
n = 0; n = 0;
e = eg->ent; e = eg->ent;
for(ee = e+eg->nent; e<ee; e++) for(ee = e + eg->nent; e < ee; e++)
n += strlen(e->name) + e->len + 2; n += strlen(e->name) + e->len + 2;
p = malloc(n + 1); p = malloc(n + 1);