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.16 by gwlarson, Thu Jun 3 14:15:01 1999 UTC vs.
Revision 2.17 by gwlarson, Fri Jun 4 09:26:04 1999 UTC

# Line 47 | Line 47 | short  tinvers[NUMOTYPE];              /* inverse types for surfac
47  
48   int  nrept = 1;                         /* number of array repetitions */
49  
50 + int stdinused = 0;                      /* stdin has been used by -f option? */
51 +
52   extern char  *malloc(), *fgets(), *fgetword();
53  
54   char  mainfn[MAXPATH];                  /* main file name */
# Line 128 | Line 130 | char  *argv[];
130          putchar('\n');
131                                          /* transform input */
132          if (xac == argc) {
133 +                if (stdinused) {
134 +                        fprintf(stderr, "%s: cannot use stdin more than once\n",
135 +                                        argv[0]);
136 +                        exit(1);
137 +                }
138                  openmain(NULL);
139                  xform(mainfn, mainfp);
140          } else
# Line 152 | Line 159 | int  ac, fi;
159          FILE    *argfp;
160          int  n, i, k, newac, err;
161          
162 <        if (fi >= ac-1 || av[fi+1][0] == '-') {
162 >        if (fi >= ac-1 || (av[fi+1][0] == '-' && av[fi+1][1] != '\0')) {
163                  fprintf(stderr, "%s: missing file for -f option\n", av[0]);
164                  exit(1);
165          }
166 <        if ((argfp = fopen(av[fi+1], "r")) == NULL) {
167 <                fprintf(stderr, "%s: cannot open argument file \"%s\"\n",
168 <                                av[0], av[fi+1]);
169 <                exit(1);
166 >        if (av[fi+1][0] == '-' && av[fi+1][1] == '\0') {
167 >                if (stdinused++) {
168 >                        fprintf(stderr, "%s: cannot use stdin more than once\n",
169 >                                        av[0]);
170 >                        exit(1);
171 >                }
172 >                argfp = stdin;
173 >                n = 100;                /* we just don't know! */
174 >        } else {
175 >                if ((argfp = fopen(av[fi+1], "r")) == NULL) {
176 >                        fprintf(stderr, "%s: cannot open argument file \"%s\"\n",
177 >                                        av[0], av[fi+1]);
178 >                        exit(1);
179 >                }
180 >                n = 0;                  /* count number of lines in file */
181 >                while (fgets(argbuf,sizeof(argbuf),argfp) != NULL)
182 >                        n++;
183 >                if (!n) {
184 >                        fprintf(stderr, "%s: empty argument file \"%s\"\n",
185 >                                        av[0], av[fi+1]);
186 >                        exit(1);
187 >                }
188 >                nrept *= n;
189 >                rewind(argfp);
190          }
164        n = 0;                  /* count number of lines in file */
165        while (fgets(argbuf, sizeof(argbuf), argfp) != NULL)
166                n++;
167        if (!n) {
168                fprintf(stderr, "%s: empty argument file \"%s\"\n",
169                                av[0], av[fi+1]);
170                exit(1);
171        }
172        rewind(argfp);
173        nrept *= n;
191          err = 0;                        /* read each arg list and call main */
192 <        for (k = 0; k < n; k++) {
176 <                fgets(argbuf, sizeof(argbuf), argfp);
192 >        for (k = 0; fgets(argbuf,sizeof(argbuf),argfp) != NULL; k++) {
193                  avp = newav+2;
194                  avp[0] = av[0];
195                  for (i = 1; i < fi; i++)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines