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.5 by greg, Wed Jun 7 10:09:07 1989 UTC vs.
Revision 1.8 by greg, Thu Oct 5 09:49:04 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]) {
# Line 129 | Line 131 | char  *argv[];
131                  break;
132          }
133  
134 +        xav = argv;
135          xfa = a;
136  
137          totscale = 1.0;
# Line 159 | Line 162 | char  *argv[];
162                          fclose(fp);
163                  }
164  
165 <        exit(0);
165 >        return(0);
166   }
167  
168  
169 + doarray(ac, av, ai)                     /* make array */
170 + char  **av;
171 + int  ac, ai;
172 + {
173 +        char  *newav[256], **avp;
174 +        char  newid[128], repts[32];
175 +        char  *oldid = NULL;
176 +        int  i, err;
177 +        
178 +        avp = newav+2;
179 +        avp[0] = av[0];
180 +        for (i = 1; i < ac; i++)
181 +                if (!strcmp(av[i-1], "-n")) {
182 +                        oldid = av[i];
183 +                        avp[i] = newid;
184 +                } else
185 +                        avp[i] = av[i];
186 +        avp[ai] = "-i";
187 +        avp[ai+1] = repts;
188 +        avp[i] = NULL;
189 +        if (oldid == NULL) {
190 +                newav[0] = av[0];
191 +                newav[1] = "-n";
192 +                newav[2] = newid;
193 +                avp = newav;
194 +                ac += 2;
195 +        }
196 +        err = 0;
197 +        for (i = 0; i < atoi(av[ai+1]); i++) {
198 +                if (oldid == NULL)
199 +                        sprintf(newid, "a%d", i);
200 +                else
201 +                        sprintf(newid, "%s.%d", oldid, i);
202 +                sprintf(repts, "%d", i);
203 +                err |= main(ac, avp);
204 +        }
205 +        return(err);
206 + }
207 +
208 +
209   xform(name, fin)                        /* transform stream by totxform */
210   char  *name;
211   register FILE  *fin;
# Line 181 | Line 224 | register FILE  *fin;
224                          } while (c != '\n');
225                  } else if (c == '!') {                  /* command */
226                          ungetc(c, fin);
227 <                        if (expand)
185 <                                xfcomm(name, fin);
186 <                        else {
187 <                                putchar('\n');
188 <                                while ((c = getc(fin)) != EOF && c != '\n')
189 <                                        putchar(c);
190 <                                printf(" |");
191 <                                for (c = 0; c < xac; c++)
192 <                                        printf(" %s", xav[c]);
193 <                                putchar('\n');
194 <                        }
227 >                        xfcomm(name, fin);
228                  } else {                                /* object */
229                          ungetc(c, fin);
230                          xfobject(name, fin);
# Line 200 | Line 233 | register FILE  *fin;
233   }
234  
235  
236 < xfcomm(fname, fin)                              /* expand a command */
236 > xfcomm(fname, fin)                      /* transform a command */
237   FILE  *fin;
238   {
239          FILE  *popen();
240 <        char  *fgets();
240 >        char  *fgetline();
241          FILE  *pin;
242          char  buf[512];
243 +        int  i;
244  
245 <        fgets(buf, sizeof(buf), fin);
246 <        if (buf[strlen(buf)-1] == '\n')
247 <                buf[strlen(buf)-1] = '\0';
248 <        if ((pin = popen(buf+1, "r")) == NULL) {
249 <                fprintf(stderr, "%s: (%s): cannot execute \"%s\"\n",
250 <                                progname, fname, buf);
251 <                exit(1);
245 >        fgetline(buf, sizeof(buf), fin);
246 >        if (expand) {
247 >                if ((pin = popen(buf+1, "r")) == NULL) {
248 >                        fprintf(stderr, "%s: (%s): cannot execute \"%s\"\n",
249 >                                        progname, fname, buf);
250 >                        exit(1);
251 >                }
252 >                xform(buf, pin);
253 >                pclose(pin);
254 >        } else {
255 >                printf("\n%s | %s -e", buf, xav[0]);
256 >                for (i = 1; i < xac; i++)
257 >                        printf(" %s", xav[i]);
258 >                putchar('\n');
259          }
219        xform(buf, pin);
220        pclose(pin);
260   }
261  
262  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines