ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/caldefn.c
(Generate patch)

Comparing ray/src/common/caldefn.c (file contents):
Revision 1.13 by greg, Thu Aug 8 11:22:06 1991 UTC vs.
Revision 1.15 by greg, Thu Aug 8 12:28:30 1991 UTC

# Line 219 | Line 219 | int  lvl;
219   {
220      static char  nambuf[MAXWORD];
221      register char  *cp = nambuf, *cpp = context;
222 +                                /* check for explicit global */
223 +    if (*nam == CNTXMARK)
224 +        return(lvl > 0 ? NULL : nam+1);
225                                  /* check for repeat call */
226      if (nam == nambuf)
227          return(lvl > 0 ? NULL : nambuf);
# Line 252 | Line 255 | int  lvl;
255      return(nambuf);             /* return qualified name */
256   toolong:
257      *cp = '\0';
258 <    wputs(nambuf);
259 <    wputs(": name too long\n");
260 <    return(NULL);
258 >    eputs(nambuf);
259 >    eputs(": name too long\n");
260 >    quit(1);
261   }
262  
263  
264 + incontext(qn)                   /* is qualified name in current context? */
265 + register char  *qn;
266 + {
267 +    while (*qn && *qn != CNTXMARK)      /* find context mark */
268 +        ;
269 +    return(!strcmp(qn, context));
270 + }
271 +
272 +
273   #ifdef  OUTCHAN
274   chanout(cs)                     /* set output channels */
275   int  (*cs)();
# Line 277 | Line 289 | int  lvl;
289      register int  i;
290      register VARDEF  *vp;
291      register EPNODE  *ep;
292 <
292 >                                /* if context is global, clear all */
293      for (i = 0; i < NHASH; i++)
294          for (vp = hashtbl[i]; vp != NULL; vp = vp->next)
295 <            if (lvl >= 2)
296 <                dremove(vp->name);
297 <            else
298 <                dclear(vp->name);
295 >            if (!context[0] || incontext(vp->name))
296 >                if (lvl >= 2)
297 >                    dremove(vp->name);
298 >                else
299 >                    dclear(vp->name);
300   #ifdef  OUTCHAN
301      if (lvl >= 1) {
302          for (ep = outchan; ep != NULL; ep = ep->sibling)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines