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.20 by gwlarson, Fri Jun 4 16:22:06 1999 UTC vs.
Revision 2.21 by gwlarson, Fri Jun 4 17:06:31 1999 UTC

# Line 29 | Line 29 | int  xfa;                              /* start of xf arguments */
29   XF  tot;                                /* total transformation */
30   int  reverse;                           /* boolean true if scene mirrored */
31  
32 < int  invert = 0;                        /* boolean true to invert surfaces */
32 > int  invert;                            /* boolean true to invert surfaces */
33  
34 < int  expand = 1;                        /* boolean true to expand commands */
34 > int  expand;                            /* boolean true to expand commands */
35  
36 < char  *newmod = NULL;                   /* new modifier for surfaces */
36 > char  *newmod;                          /* new modifier for surfaces */
37  
38 < char  *idprefix = NULL;                 /* prefix for object identifiers */
38 > char  *idprefix;                        /* prefix for object identifiers */
39  
40   #define  ALIAS          NUMOTYPE        /* put alias at end of array */
41  
# Line 61 | Line 61 | main(argc, argv)               /* get transform options and transfo
61   int  argc;
62   char  *argv[];
63   {
64 +        int  mal_prefix = 0;
65          char  *fname;
66          int  a;
67                                          /* check for argument list file */
# Line 72 | Line 73 | char  *argv[];
73                  if (!strcmp(argv[a], "-a"))
74                          return(doarray(argc, argv, a));
75  
76 <        initotypes();
76 >        initotypes();                   /* initialize */
77 >        invert = 0;
78 >        expand = 1;
79 >        newmod = NULL;
80 >        idprefix = NULL;
81  
82          for (a = 1; a < argc; a++) {
83                  if (argv[a][0] == '-')
84                          switch (argv[a][1]) {
85                          case 'm':
86 <                                if (argv[a][2] || a+1 >= argc)
86 >                                if (argv[a][2] | a+1 >= argc)
87                                          break;
88 <                                newmod = argv[++a];
88 >                                a++;
89 >                                if (newmod == NULL)
90 >                                        newmod = argv[a];
91                                  continue;
92                          case 'n':
93 <                                if (argv[a][2] || a+1 >= argc)
93 >                                if (argv[a][2] | a+1 >= argc)
94                                          break;
95 <                                idprefix = argv[++a];
95 >                                a++;
96 >                                if (idprefix == NULL)
97 >                                        idprefix = argv[a];
98 >                                else {
99 >                                        register char   *newp;
100 >                                        newp = (char *)malloc(strlen(idprefix)+
101 >                                                        strlen(argv[a])+2);
102 >                                        if (newp == NULL)
103 >                                                exit(2);
104 >                                        sprintf(newp, "%s.%s",
105 >                                                        idprefix, argv[a]);
106 >                                        if (mal_prefix++)
107 >                                                free((char *)idprefix);
108 >                                        idprefix = newp;
109 >                                }
110                                  continue;
111                          case 'c':
112                                  if (argv[a][2])
# Line 100 | Line 121 | char  *argv[];
121                          case 'I':
122                                  if (argv[a][2])
123                                          break;
124 <                                invert = 1;
124 >                                invert = !invert;
125                                  continue;
126                          }
127                  break;
# Line 143 | Line 164 | char  *argv[];
164                          xform(mainfn, mainfp);
165                  }
166  
167 +        if (mal_prefix)
168 +                free((char *)idprefix);
169          return(0);
170   }
171  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines