Lines Matching refs:ep

88 char **env_get(Env_t* ep)  in env_get()  argument
91 register int n=ep->extra; in env_get()
92 if(ep->flags&ENV_VALID) in env_get()
93 return(ep->env+n); in env_get()
94 if(ep->count > ep->max) in env_get()
96 if(ep->flags&ENV_MALLOCED) in env_get()
97 free((void*)ep->env); in env_get()
98 if(!(ep->env = (char**)malloc(sizeof(char*)*(ep->count+1)))) in env_get()
100 ep->flags |= ENV_MALLOCED; in env_get()
101 ep->max = ep->count; in env_get()
103 for(vp=(Evar_t*)dtfirst(ep->dt);vp; vp=(Evar_t*)dtnext(ep->dt,vp)) in env_get()
106 ep->env[n++] = vp->un.ptr; in env_get()
108 ep->env[n] = 0; in env_get()
109 ep->flags |= ENV_VALID; in env_get()
110 environ = ep->env+ep->extra; in env_get()
111 return(ep->env+ep->extra); in env_get()
120 int env_add(Env_t *ep, const char *str, int flags) in env_add() argument
122 Evar_t *vp = (Evar_t*)dtmatch(ep->dt,(void*)str); in env_add()
132 if(ep->env && (ep->flags&ENV_VALID)) in env_add()
133 ep->env[vp->index>>ENV_BITS] = vp->un.ptr; in env_add()
137 ep->flags &= ~ENV_VALID; in env_add()
138 if(vp = ep->freelist) in env_add()
139 ep->freelist = vp->un.next; in env_add()
143 ep->freelist = (vp+1); in env_add()
144 ep->freelist->un.next = 0; in env_add()
149 if(!(vp=dtinsert(ep->dt,vp))) in env_add()
151 ep->count++; in env_add()
166 int env_delete(Env_t *ep, const char *str) in env_delete() argument
168 Evar_t *vp = (Evar_t*)dtmatch(ep->dt,(void*)str); in env_delete()
171 ep->flags &= ~ENV_VALID; in env_delete()
174 dtdelete(ep->dt,vp); in env_delete()
175 vp->un.next = ep->freelist; in env_delete()
176 ep->freelist = vp; in env_delete()
192 Env_t *ep; in env_open() local
195 if(!(ep = newof((Env_t*)0,Env_t,1,0))) in env_open()
197 if(!(ep->dt = dtopen(&env_disc,Dtoset))) in env_open()
206 ep->env = envp; in env_open()
207 ep->max = n-1; in env_open()
210 ep->count = ep->extra = extra; in env_open()
211 ep->freelist = vp = newof((Evar_t*)0,Evar_t,n,0); in env_open()
222 env_add(ep,*env,0); in env_open()
224 return(ep); in env_open()
230 void env_close(Env_t *ep) in env_close() argument
233 if(ep->env && (ep->flags&ENV_MALLOCED)) in env_close()
234 free((void*)ep->env); in env_close()
235 for(vp=(Evar_t*)dtfirst(ep->dt);vp; vp=vpnext) in env_close()
237 vpnext = (Evar_t*)dtnext(ep->dt,vp); in env_close()
238 env_delete(ep,vp->un.ptr); in env_close()
240 for(top=0,vp = ep->freelist; vp; vp = vpnext) in env_close()
254 dtclose(ep->dt); in env_close()