Lines Matching refs:vp
90 register Evar_t *vp;
103 for(vp=(Evar_t*)dtfirst(ep->dt);vp; vp=(Evar_t*)dtnext(ep->dt,vp))
105 vp->index = (n<<ENV_BITS) | (vp->index&((1<<ENV_BITS)-1));
106 ep->env[n++] = vp->un.ptr;
122 Evar_t *vp = (Evar_t*)dtmatch(ep->dt,(void*)str);
123 if(vp && strcmp(str,vp->un.ptr)==0)
127 if(vp)
129 if(vp->index&ENV_PMALLOC)
130 free((void*)vp->un.ptr);
131 vp->un.ptr = (char*)str;
133 ep->env[vp->index>>ENV_BITS] = vp->un.ptr;
138 if(vp = ep->freelist)
139 ep->freelist = vp->un.next;
140 else if(vp = newof((Evar_t*)0,Evar_t,2,0))
142 vp->index = ENV_VMALLOC;
143 ep->freelist = (vp+1);
148 vp->un.ptr = (void*)str;
149 if(!(vp=dtinsert(ep->dt,vp)))
154 vp->index |= ENV_PMALLOC;
156 vp->index &= ~ENV_PMALLOC;
168 Evar_t *vp = (Evar_t*)dtmatch(ep->dt,(void*)str);
169 if(!vp)
172 if(vp->index&ENV_PMALLOC)
173 free((void*)vp->un.ptr);
174 dtdelete(ep->dt,vp);
175 vp->un.next = ep->freelist;
176 ep->freelist = vp;
193 Evar_t *vp;
211 ep->freelist = vp = newof((Evar_t*)0,Evar_t,n,0);
212 vp->index = ENV_VMALLOC;
215 vp->un.next = (vp+1);
216 vp++;
218 vp->un.next = 0;
232 Evar_t *vp, *vpnext,*top;
235 for(vp=(Evar_t*)dtfirst(ep->dt);vp; vp=vpnext)
237 vpnext = (Evar_t*)dtnext(ep->dt,vp);
238 env_delete(ep,vp->un.ptr);
240 for(top=0,vp = ep->freelist; vp; vp = vpnext)
242 vpnext = vp->un.next;
243 if(vp->index&ENV_VMALLOC)
245 vp->un.next = top;
246 top = vp;
249 for(vp=top; vp; vp = vpnext)
251 vpnext = vp->un.next;
252 free((void*)vp);