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

Comparing ray/src/cal/rsplit.c (file contents):
Revision 1.1 by greg, Fri Jul 5 00:20:57 2019 UTC vs.
Revision 1.5 by greg, Tue Jul 16 15:59:49 2019 UTC

# Line 98 | Line 98 | main(int argc, char *argv[])
98                          switch (argv[i][1]) {
99                          case 't':
100                                  curterm = argv[i][2];
101 +                                if (!curterm) curterm = '\n';
102                                  break;
103                          case 'i':
104                                  switch (argv[i][2]) {
# Line 296 | Line 297 | main(int argc, char *argv[])
297                          if (bytsiz[i] > 0) {            /* binary output */
298                                  if (getbinary(buf, bytsiz[i], 1, stdin) < 1)
299                                          break;
300 <                                putbinary(buf, bytsiz[i], 1, output[i]);
300 >                                if (putbinary(buf, bytsiz[i], 1, output[i]) != 1)
301 >                                        break;
302                          } else if (bytsiz[i] < 0) {     /* N-field output */
303                                  int     n = -bytsiz[i];
304                                  while (n--) {
305                                          if (!scanOK(termc[i]))
306                                                  break;
307 <                                        fputs(buf, output[i]);
307 >                                        if (fputs(buf, output[i]) == EOF)
308 >                                                break;
309                                  }
310                                  if (n >= 0)             /* fell short? */
311                                          break;
312 +                                if (termc[i] != '\n')   /* add EOL if none */
313 +                                        fputc('\n', output[i]);
314                          } else {                        /* 1-field output */
315                                  if (!scanOK(termc[i]))
316                                          break;
317 <                                fputs(buf, output[i]);
317 >                                if (fputs(buf, output[i]) == EOF)
318 >                                        break;
319 >                                if (termc[i] != '\n')   /* add EOL if none */
320 >                                        fputc('\n', output[i]);
321                          }
322                  }
323                  if (i < nfiles)
324                          break;
325          } while (--outcnt);
326 +                                                        /* check ending */
327 +        if (fflush(NULL) == EOF) {
328 +                fputs(argv[0], stderr);
329 +                fputs(": write error on one or more outputs\n", stderr);
330 +                return(1);
331 +        }
332 +        if (outcnt > 0) {
333 +                fputs(argv[0], stderr);
334 +                fputs(": warning: premature EOD\n", stderr);
335 +        }
336          return(0);
337   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines