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 1.7 by greg, Wed Oct 4 16:28:14 1989 UTC vs.
Revision 1.9 by greg, Fri Oct 13 19:34:17 1989 UTC

# Line 113 | Line 113 | char  *argv[];
113          FILE  *fopen();
114          FILE  *fp;
115          int  a;
116 +                                        /* check for array */
117 +        for (a = 1; a < argc; a++)
118 +                if (!strcmp(argv[a], "-a"))
119 +                        return(doarray(argc, argv, a));
120  
117        xav = argv;
118
121          for (a = 1; a < argc; a++) {
122                  if (argv[a][0] == '-')
123                          switch (argv[a][1]) {
124                          case 'n':
125 +                                if (argv[a][2] || a+1 >= argc)
126 +                                        break;
127                                  idprefix = argv[++a];
128                                  continue;
129                          case 'e':
130 +                                if (argv[a][2])
131 +                                        break;
132                                  expand = 1;
133                                  continue;
134                          }
135                  break;
136          }
137  
138 +        xav = argv;
139          xfa = a;
140  
141          totscale = 1.0;
# Line 139 | Line 146 | char  *argv[];
146          if (reverse = totscale < 0.0)
147                  totscale = -totscale;
148  
149 +        if (a < argc && argv[a][0] == '-') {
150 +                fprintf(stderr, "%s: command line error at '%s'\n",
151 +                                argv[0], argv[a]);
152 +                exit(1);
153 +        }
154          xac = a;
155  
156          putchar('#');                           /* simple header */
# Line 159 | Line 171 | char  *argv[];
171                          fclose(fp);
172                  }
173  
174 <        exit(0);
174 >        return(0);
175 > }
176 >
177 >
178 > doarray(ac, av, ai)                     /* make array */
179 > char  **av;
180 > int  ac, ai;
181 > {
182 >        char  *newav[256], **avp;
183 >        char  newid[128], repts[32];
184 >        char  *oldid = NULL;
185 >        int  i, err;
186 >        
187 >        avp = newav+2;
188 >        avp[0] = av[0];
189 >        for (i = 1; i < ac; i++)
190 >                if (!strcmp(av[i-1], "-n")) {
191 >                        oldid = av[i];
192 >                        avp[i] = newid;
193 >                } else
194 >                        avp[i] = av[i];
195 >        avp[ai] = "-i";
196 >        avp[ai+1] = repts;
197 >        avp[i] = NULL;
198 >        if (oldid == NULL) {
199 >                newav[0] = av[0];
200 >                newav[1] = "-n";
201 >                newav[2] = newid;
202 >                avp = newav;
203 >                ac += 2;
204 >        }
205 >        err = 0;
206 >        for (i = 0; i < atoi(av[ai+1]); i++) {
207 >                if (oldid == NULL)
208 >                        sprintf(newid, "a%d", i);
209 >                else
210 >                        sprintf(newid, "%s.%d", oldid, i);
211 >                sprintf(repts, "%d", i);
212 >                err |= main(ac, avp);
213 >        }
214 >        return(err);
215   }
216  
217  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines