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

Comparing ray/src/util/radcompare.c (file contents):
Revision 2.13 by greg, Fri Oct 19 23:50:32 2018 UTC vs.
Revision 2.18 by greg, Sat Dec 1 21:09:53 2018 UTC

# Line 64 | Line 64 | const char     *hdr_ignkey[] = {
64                          "SOFTWARE",
65                          "CAPDATE",
66                          "GMT",
67 +                        "FRAME",
68                          NULL    /* terminator */
69                  };
70                                  /* header variable settings */
# Line 75 | Line 76 | LUTAB  hdr2 = LU_SINIT(free,free);
76                                          lin2cnt += (htp == &hdr2))
77  
78   typedef struct {                /* dynamic line buffer */
79 <        char    *ptr;
79 >        char    *str;
80          int     len;
81          int     siz;
82   } LINEBUF;
83  
84 < #define init_line(bp)   ((bp)->ptr = NULL, (bp)->siz = 0)
84 > #define init_line(bp)   ((bp)->str = NULL, (bp)->siz = 0)
85                                  /* 100 MByte limit on line buffer */
86   #define MAXBUF          (100L<<20)
87  
# Line 109 | Line 110 | usage()
110   static int
111   read_line(LINEBUF *bp, FILE *fp)
112   {
113 +        static int      doneWarn = 0;
114 +
115          bp->len = 0;
116 <        if (!bp->ptr) {
117 <                bp->ptr = (char *)malloc(bp->siz = 512);
118 <                if (!bp->ptr)
116 >        if (!bp->str) {
117 >                bp->str = (char *)malloc(bp->siz = 512);
118 >                if (!bp->str)
119                          goto memerr;
120          }
121 <        while (fgets(bp->ptr + bp->len, bp->siz - bp->len, fp)) {
122 <                bp->len += strlen(bp->ptr + bp->len);
123 <                if (bp->ptr[bp->len-1] == '\n')
121 >        while (fgets(bp->str + bp->len, bp->siz - bp->len, fp)) {
122 >                bp->len += strlen(bp->str + bp->len);
123 >                if (bp->str[bp->len-1] == '\n')
124                          break;          /* found EOL */
125                  if (bp->len < bp->siz - 4)
126                          continue;       /* at EOF? */
127 <                if (bp->siz >= MAXBUF)
128 <                        break;          /* don't go to extremes */
127 >                if (bp->siz >= MAXBUF) {
128 >                        if ((report >= REP_WARN) & !doneWarn) {
129 >                                fprintf(stderr,
130 >                        "%s: warning - input line(s) past %ld MByte limit\n",
131 >                                        progname, MAXBUF>>20);
132 >                                doneWarn++;
133 >                        }
134 >                        break;          /* return MAXBUF partial line */
135 >                }
136                  if ((bp->siz += bp->siz/2) > MAXBUF)
137                          bp->siz = MAXBUF;
138 <                bp->ptr = (char *)realloc(bp->ptr, bp->siz);
139 <                if (!bp->ptr)
138 >                bp->str = (char *)realloc(bp->str, bp->siz);
139 >                if (!bp->str)
140                          goto memerr;
141          }
142          return(bp->len);
# Line 141 | Line 151 | memerr:
151   static void
152   free_line(LINEBUF *bp)
153   {
154 <        if (bp->ptr) free(bp->ptr);
154 >        if (bp->str) free(bp->str);
155          init_line(bp);
156   }
157  
# Line 190 | Line 200 | color_check(COLOR c1, COLOR c2)
200   {
201          int     p;
202  
203 <        if (!real_check(colval(c1,RED)+colval(c1,GRN)+colval(c1,BLU)*(1./3.),
204 <                        colval(c2,RED)+colval(c2,GRN)+colval(c2,BLU))*(1./3.))
203 >        if (!real_check((colval(c1,RED)+colval(c1,GRN)+colval(c1,BLU))*(1./3.),
204 >                        (colval(c2,RED)+colval(c2,GRN)+colval(c2,BLU))*(1./3.)))
205                  return(0);
206  
207          p = (colval(c1,GRN) > colval(c1,RED)) ? GRN : RED;
# Line 504 | Line 514 | compare_text()
514          init_line(&l1buf); init_line(&l2buf);   /* compare a line at a time */
515          while (read_line(&l1buf, f1in)) {
516                  lin1cnt++;
517 <                if (!*sskip2(l1buf.ptr,0))
517 >                if (!*sskip2(l1buf.str,0))
518                          continue;               /* ignore empty lines */
519  
520                  while (read_line(&l2buf, f2in)) {
521                          lin2cnt++;
522 <                        if (*sskip2(l2buf.ptr,0))
522 >                        if (*sskip2(l2buf.str,0))
523                                  break;          /* found other non-empty line */
524                  }
525                  if (!l2buf.len) {               /* input 2 EOF? */
# Line 521 | Line 531 | compare_text()
531                          return(0);
532                  }
533                                                  /* compare non-empty lines */
534 <                if (!equiv_string(l1buf.ptr, l2buf.ptr)) {
534 >                if (!equiv_string(l1buf.str, l2buf.str)) {
535                          if (report != REP_QUIET) {
536                                  printf("%s: inputs '%s' and '%s' differ at line %d|%d\n",
537                                                  progname, f1name, f2name,
# Line 531 | Line 541 | compare_text()
541                                                  (l2buf.len < 256) ) {
542                                          fputs("------------- Mismatch -------------\n", stdout);
543                                          printf("%s@%d:\t%s", f1name,
544 <                                                        lin1cnt, l1buf.ptr);
544 >                                                        lin1cnt, l1buf.str);
545                                          printf("%s@%d:\t%s", f2name,
546 <                                                        lin2cnt, l2buf.ptr);
546 >                                                        lin2cnt, l2buf.str);
547                                  }
548                          }
549                          free_line(&l1buf); free_line(&l2buf);
# Line 542 | Line 552 | compare_text()
552          }
553          free_line(&l1buf);                      /* check for EOF on input 2 */
554          while (read_line(&l2buf, f2in)) {
555 <                if (!*sskip2(l2buf.ptr,0))
555 >                if (!*sskip2(l2buf.str,0))
556                          continue;
557                  if (report != REP_QUIET) {
558                          fputs(f1name, stdout);
# Line 768 | Line 778 | main(int argc, char *argv[])
778          ign_header |= !has_header(typ1);        /* check headers if indicated */
779          if (!ign_header && !headers_match())
780                  return(1);
781 <        lu_done(&hdr1); lu_done(&hdr2);
781 >        lu_done(&hdr1); lu_done(&hdr2);         /* done with header info. */
782          if (!ign_header & (report >= REP_WARN)) {
773                if (typ1 == TYP_UNKNOWN)
774                        printf("%s: warning - unrecognized format, comparing as binary\n",
775                                        progname);
783                  if (lin1cnt != lin2cnt)
784                          printf("%s: warning - headers are different lengths\n",
785 +                                        progname);
786 +                if (typ1 == TYP_UNKNOWN)
787 +                        printf("%s: warning - unrecognized format\n",
788                                          progname);
789          }
790          if (report >= REP_VERBOSE)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines