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.14 by greg, Fri Oct 19 23:56:15 2018 UTC

# Line 75 | Line 75 | LUTAB  hdr2 = LU_SINIT(free,free);
75                                          lin2cnt += (htp == &hdr2))
76  
77   typedef struct {                /* dynamic line buffer */
78 <        char    *ptr;
78 >        char    *str;
79          int     len;
80          int     siz;
81   } LINEBUF;
82  
83 < #define init_line(bp)   ((bp)->ptr = NULL, (bp)->siz = 0)
83 > #define init_line(bp)   ((bp)->str = NULL, (bp)->siz = 0)
84                                  /* 100 MByte limit on line buffer */
85   #define MAXBUF          (100L<<20)
86  
# Line 110 | Line 110 | static int
110   read_line(LINEBUF *bp, FILE *fp)
111   {
112          bp->len = 0;
113 <        if (!bp->ptr) {
114 <                bp->ptr = (char *)malloc(bp->siz = 512);
115 <                if (!bp->ptr)
113 >        if (!bp->str) {
114 >                bp->str = (char *)malloc(bp->siz = 512);
115 >                if (!bp->str)
116                          goto memerr;
117          }
118 <        while (fgets(bp->ptr + bp->len, bp->siz - bp->len, fp)) {
119 <                bp->len += strlen(bp->ptr + bp->len);
120 <                if (bp->ptr[bp->len-1] == '\n')
118 >        while (fgets(bp->str + bp->len, bp->siz - bp->len, fp)) {
119 >                bp->len += strlen(bp->str + bp->len);
120 >                if (bp->str[bp->len-1] == '\n')
121                          break;          /* found EOL */
122                  if (bp->len < bp->siz - 4)
123                          continue;       /* at EOF? */
# Line 125 | Line 125 | read_line(LINEBUF *bp, FILE *fp)
125                          break;          /* don't go to extremes */
126                  if ((bp->siz += bp->siz/2) > MAXBUF)
127                          bp->siz = MAXBUF;
128 <                bp->ptr = (char *)realloc(bp->ptr, bp->siz);
129 <                if (!bp->ptr)
128 >                bp->str = (char *)realloc(bp->str, bp->siz);
129 >                if (!bp->str)
130                          goto memerr;
131          }
132          return(bp->len);
# Line 141 | Line 141 | memerr:
141   static void
142   free_line(LINEBUF *bp)
143   {
144 <        if (bp->ptr) free(bp->ptr);
144 >        if (bp->str) free(bp->str);
145          init_line(bp);
146   }
147  
# Line 504 | Line 504 | compare_text()
504          init_line(&l1buf); init_line(&l2buf);   /* compare a line at a time */
505          while (read_line(&l1buf, f1in)) {
506                  lin1cnt++;
507 <                if (!*sskip2(l1buf.ptr,0))
507 >                if (!*sskip2(l1buf.str,0))
508                          continue;               /* ignore empty lines */
509  
510                  while (read_line(&l2buf, f2in)) {
511                          lin2cnt++;
512 <                        if (*sskip2(l2buf.ptr,0))
512 >                        if (*sskip2(l2buf.str,0))
513                                  break;          /* found other non-empty line */
514                  }
515                  if (!l2buf.len) {               /* input 2 EOF? */
# Line 521 | Line 521 | compare_text()
521                          return(0);
522                  }
523                                                  /* compare non-empty lines */
524 <                if (!equiv_string(l1buf.ptr, l2buf.ptr)) {
524 >                if (!equiv_string(l1buf.str, l2buf.str)) {
525                          if (report != REP_QUIET) {
526                                  printf("%s: inputs '%s' and '%s' differ at line %d|%d\n",
527                                                  progname, f1name, f2name,
# Line 531 | Line 531 | compare_text()
531                                                  (l2buf.len < 256) ) {
532                                          fputs("------------- Mismatch -------------\n", stdout);
533                                          printf("%s@%d:\t%s", f1name,
534 <                                                        lin1cnt, l1buf.ptr);
534 >                                                        lin1cnt, l1buf.str);
535                                          printf("%s@%d:\t%s", f2name,
536 <                                                        lin2cnt, l2buf.ptr);
536 >                                                        lin2cnt, l2buf.str);
537                                  }
538                          }
539                          free_line(&l1buf); free_line(&l2buf);
# Line 542 | Line 542 | compare_text()
542          }
543          free_line(&l1buf);                      /* check for EOF on input 2 */
544          while (read_line(&l2buf, f2in)) {
545 <                if (!*sskip2(l2buf.ptr,0))
545 >                if (!*sskip2(l2buf.str,0))
546                          continue;
547                  if (report != REP_QUIET) {
548                          fputs(f1name, stdout);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines