From d5d6724805fa7df9cb74d9b05a4eb3bf10d1997c Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Mon, 3 Aug 2015 22:08:10 +0200 Subject: devenv: simplify envremove(), cleanup --- sys/src/9/port/devenv.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'sys/src/9/port/devenv.c') diff --git a/sys/src/9/port/devenv.c b/sys/src/9/port/devenv.c index 8c3e3bd63..728df1f47 100644 --- a/sys/src/9/port/devenv.c +++ b/sys/src/9/port/devenv.c @@ -192,27 +192,23 @@ static void envremove(Chan *c) { Egrp *eg; - Evalue *e, *ee; + Evalue *e; if(c->qid.type & QTDIR || !envwriteable(c)) error(Eperm); eg = envgrp(c); wlock(eg); - e = eg->ent; - for(ee = e + eg->nent; e < ee; e++){ - if(e->qid.path == c->qid.path){ - free(e->name); - free(e->value); - *e = ee[-1]; - eg->nent--; - eg->vers++; - wunlock(eg); - return; - } + e = envlookup(eg, nil, c->qid.path); + if(e == nil){ + wunlock(eg); + error(Enonexist); } + free(e->name); + free(e->value); + *e = eg->ent[--eg->nent]; + eg->vers++; wunlock(eg); - error(Enonexist); } static void @@ -416,7 +412,7 @@ getconfenv(void) /* determine size */ n = 0; e = eg->ent; - for(ee = e+eg->nent; enent; e < ee; e++) n += strlen(e->name) + e->len + 2; p = malloc(n + 1); -- cgit v1.2.3