252 |
|
return(nambuf); /* return qualified name */ |
253 |
|
toolong: |
254 |
|
*cp = '\0'; |
255 |
< |
wputs(nambuf); |
256 |
< |
wputs(": name too long\n"); |
257 |
< |
return(NULL); |
255 |
> |
eputs(nambuf); |
256 |
> |
eputs(": name too long\n"); |
257 |
> |
quit(1); |
258 |
|
} |
259 |
|
|
260 |
|
|
261 |
+ |
incontext(qn) /* is qualified name in current context? */ |
262 |
+ |
register char *qn; |
263 |
+ |
{ |
264 |
+ |
while (*qn && *qn != CNTXMARK) /* find context mark */ |
265 |
+ |
; |
266 |
+ |
return(!strcmp(qn, context)); |
267 |
+ |
} |
268 |
+ |
|
269 |
+ |
|
270 |
|
#ifdef OUTCHAN |
271 |
|
chanout(cs) /* set output channels */ |
272 |
|
int (*cs)(); |
286 |
|
register int i; |
287 |
|
register VARDEF *vp; |
288 |
|
register EPNODE *ep; |
289 |
< |
|
289 |
> |
/* if context is global, clear all */ |
290 |
|
for (i = 0; i < NHASH; i++) |
291 |
|
for (vp = hashtbl[i]; vp != NULL; vp = vp->next) |
292 |
< |
if (lvl >= 2) |
293 |
< |
dremove(vp->name); |
294 |
< |
else |
295 |
< |
dclear(vp->name); |
292 |
> |
if (!context[0] || incontext(vp->name)) |
293 |
> |
if (lvl >= 2) |
294 |
> |
dremove(vp->name); |
295 |
> |
else |
296 |
> |
dclear(vp->name); |
297 |
|
#ifdef OUTCHAN |
298 |
|
if (lvl >= 1) { |
299 |
|
for (ep = outchan; ep != NULL; ep = ep->sibling) |