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

Comparing ray/src/gen/xform.c (file contents):
Revision 2.35 by schorsch, Sun Nov 16 09:23:46 2003 UTC vs.
Revision 2.45 by greg, Wed Jun 22 17:05:00 2011 UTC

# Line 54 | Line 54 | static void xfcomm(char *fname, FILE *fin);
54   static void xfobject(char *fname, FILE *fin);
55   static int addxform(FILE *fin);
56   static int alias(FILE *fin);
57 < static void initotypes(void);
57 > void initotypes(void); /* XXX conflict with otypes.h */
58   static void openmain(char *iname);
59  
60  
# Line 181 | Line 181 | doargf(                        /* take argument list from file */
181   {
182          int  inquote;
183          char  *newav[256], **avp;
184 <        char  argbuf[1024];
185 <        char  newid[128];
184 >        char  argbuf[2048];
185 >        char  *newid, newidbuf[128];
186          char  *oldid;
187          register char   *cp;
188          FILE    *argfp;
# Line 258 | Line 258 | doargf(                        /* take argument list from file */
258                  for (i = fi+2; i < ac; i++)
259                          avp[newac++] = av[i];
260                  avp[newac] = NULL;
261 +                newid = newidbuf;
262                  oldid = NULL;
263                  for (i = 2; i < newac; i++)
264                          if (!strcmp(avp[i-1], "-n")) {
265                                  oldid = avp[i];
266 +                                if (strlen(oldid)+32 > sizeof(newidbuf)) {
267 +                                        newid = (char *)malloc(strlen(oldid)+32);
268 +                                        if (newid == NULL)
269 +                                                exit(2);
270 +                                }
271                                  avp[i] = newid;
272                                  break;
273                          }
# Line 277 | Line 283 | doargf(                        /* take argument list from file */
283                  else
284                          sprintf(newid, "%s.%d", oldid, k);
285                  err |= main(newac, avp);
286 +                if (newid != newidbuf)
287 +                        free((void *)newid);
288                  k++;
289          }
290          fclose(argfp);
# Line 374 | Line 382 | xfcomm(                        /* transform a command */
382   )
383   {
384          FILE  *pin;
385 <        char  buf[512];
385 >        char  buf[2048];
386          int  i;
387  
388          fgetline(buf, sizeof(buf), fin);
# Line 416 | Line 424 | xfobject(                              /* transform an object */
424                                  progname, fname, typ);
425                  exit(1);
426          }
427 <        if (ismodifier(fn))
428 <                printf("\n%s %s ", nam, typ);
429 <        else
430 <                printf("\n%s %s ", newmod != NULL ? newmod : nam,
431 <                                invert ? ofun[tinvers[fn]].funame : typ);
427 >        putchar('\n');
428 >        if (ismodifier(fn)) {
429 >                fputword(nam, stdout);
430 >                printf(" %s ", typ);
431 >        } else {
432 >                fputword(newmod != NULL ? newmod : nam, stdout);
433 >                printf(" %s ", invert ? ofun[tinvers[fn]].funame : typ);
434 >        }
435                                                  /* object name */
436          fgetword(nam, sizeof(nam), fin);
437          if (idprefix == NULL || ismodifier(fn))
438 <                printf("%s\n", nam);
439 <        else
440 <                printf("%s.%s\n", idprefix, nam);
438 >                fputword(nam, stdout);
439 >        else {
440 >                char    nnam[MAXSTR];
441 >                sprintf(nnam, "%s.%s", idprefix, nam);
442 >                fputword(nnam, stdout);
443 >        }
444 >        putchar('\n');
445                                                  /* transform arguments */
446          if ((*ofun[fn].funp)(fin) < 0) {
447                  fprintf(stderr, "%s: (%s): bad %s \"%s\"\n",
# Line 914 | Line 929 | initotypes(void)                       /* initialize ofun[] array */
929          tinvers[OBJ_CYLINDER] = OBJ_TUBE;
930          tinvers[OBJ_TUBE] = OBJ_CYLINDER;
931          tinvers[OBJ_INSTANCE] = OBJ_INSTANCE;   /* oh, well */
932 +        tinvers[OBJ_MESH] = OBJ_MESH;           /* ditto */
933   }
934  
935  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines