[BACK]Return to diff3.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / rcs

Diff for /src/usr.bin/rcs/diff3.c between version 1.16 and 1.17

version 1.16, 2006/10/24 06:22:53 version 1.17, 2007/01/02 16:43:45
Line 162 
Line 162 
         int argc;          int argc;
         char *argv[5], *dp13, *dp23, *path1, *path2, *path3;          char *argv[5], *dp13, *dp23, *path1, *path2, *path3;
         BUF *b1, *b2, *b3, *d1, *d2, *diffb;          BUF *b1, *b2, *b3, *d1, *d2, *diffb;
           u_char *data, *patch;
           size_t dlen, plen;
   
         b1 = b2 = b3 = d1 = d2 = diffb = NULL;          b1 = b2 = b3 = d1 = d2 = diffb = NULL;
         dp13 = dp23 = path1 = path2 = path3 = NULL;          dp13 = dp23 = path1 = path2 = path3 = NULL;
           data = patch = NULL;
   
         if ((flags & MERGE_EFLAG) && !(flags & MERGE_OFLAG))          if ((flags & MERGE_EFLAG) && !(flags & MERGE_OFLAG))
                 oflag = 0;                  oflag = 0;
Line 228 
Line 231 
         rcs_buf_putc(diffb, '\0');          rcs_buf_putc(diffb, '\0');
         rcs_buf_putc(b1, '\0');          rcs_buf_putc(b1, '\0');
   
         if ((diffb = rcs_patchfile(b1, diffb, ed_patch_lines)) == NULL)  
           plen = rcs_buf_len(diffb);
           patch = rcs_buf_release(diffb);
           dlen = rcs_buf_len(b1);
           data = rcs_buf_release(b1);
   
           if ((diffb = rcs_patchfile(data, dlen, patch, plen, ed_patch_lines)) == NULL)
                 goto out;                  goto out;
   
         if (!(flags & QUIET) && diff3_conflicts != 0)          if (!(flags & QUIET) && diff3_conflicts != 0)
Line 260 
Line 269 
                 xfree(dp13);                  xfree(dp13);
         if (dp23 != NULL)          if (dp23 != NULL)
                 xfree(dp23);                  xfree(dp23);
           if (data != NULL)
                   xfree(data);
           if (patch != NULL)
                   xfree(patch);
   
         return (diffb);          return (diffb);
 }  }
Line 271 
Line 284 
         char *argv[5], r1[16], r2[16];          char *argv[5], r1[16], r2[16];
         char *dp13, *dp23, *path1, *path2, *path3;          char *dp13, *dp23, *path1, *path2, *path3;
         BUF *b1, *b2, *b3, *d1, *d2, *diffb;          BUF *b1, *b2, *b3, *d1, *d2, *diffb;
           size_t dlen, plen;
           u_char *data, *patch;
   
         b1 = b2 = b3 = d1 = d2 = diffb = NULL;          b1 = b2 = b3 = d1 = d2 = diffb = NULL;
         dp13 = dp23 = path1 = path2 = path3 = NULL;          dp13 = dp23 = path1 = path2 = path3 = NULL;
           data = patch = NULL;
   
         if ((flags & MERGE_EFLAG) && !(flags & MERGE_OFLAG))          if ((flags & MERGE_EFLAG) && !(flags & MERGE_OFLAG))
                 oflag = 0;                  oflag = 0;
Line 346 
Line 362 
         rcs_buf_putc(diffb, '\0');          rcs_buf_putc(diffb, '\0');
         rcs_buf_putc(b1, '\0');          rcs_buf_putc(b1, '\0');
   
         if ((diffb = rcs_patchfile(b1, diffb, ed_patch_lines)) == NULL)          plen = rcs_buf_len(diffb);
           patch = rcs_buf_release(diffb);
           dlen = rcs_buf_len(b1);
           data = rcs_buf_release(b1);
   
           if ((diffb = rcs_patchfile(data, dlen, patch, plen, ed_patch_lines)) == NULL)
                 goto out;                  goto out;
   
         if (!(flags & QUIET) && diff3_conflicts != 0)          if (!(flags & QUIET) && diff3_conflicts != 0)
Line 378 
Line 399 
                 xfree(dp13);                  xfree(dp13);
         if (dp23 != NULL)          if (dp23 != NULL)
                 xfree(dp23);                  xfree(dp23);
           if (data != NULL)
                   xfree(data);
           if (patch != NULL)
                   xfree(patch);
   
         return (diffb);          return (diffb);
 }  }
Line 420 
Line 445 
         char op, *ep;          char op, *ep;
         struct rcs_line *sort, *lp, *dlp, *ndlp, *insert_after;          struct rcs_line *sort, *lp, *dlp, *ndlp, *insert_after;
         int start, end, i, lineno;          int start, end, i, lineno;
           u_char tmp;
   
         dlp = TAILQ_FIRST(&(dlines->l_lines));          dlp = TAILQ_FIRST(&(dlines->l_lines));
         lp = TAILQ_FIRST(&(plines->l_lines));          lp = TAILQ_FIRST(&(plines->l_lines));
Line 427 
Line 453 
         end = 0;          end = 0;
         for (lp = TAILQ_NEXT(lp, l_list); lp != NULL;          for (lp = TAILQ_NEXT(lp, l_list); lp != NULL;
             lp = TAILQ_NEXT(lp, l_list)) {              lp = TAILQ_NEXT(lp, l_list)) {
                 if (lp->l_line[0] == '\0')                  /* Skip blank lines */
                         errx(1, "ed_patch_lines");                  if (lp->l_len < 2)
                 op = lp->l_line[strlen(lp->l_line) - 1];                          continue;
                   /* NUL-terminate line buffer for strtol() safety. */
                   tmp = lp->l_line[lp->l_len - 1];
                   lp->l_line[lp->l_len - 1] = '\0';
                   /* len - 1 is NUL terminator so we use len - 2 for 'op' */
                   op = lp->l_line[lp->l_len - 2];
                 start = (int)strtol(lp->l_line, &ep, 10);                  start = (int)strtol(lp->l_line, &ep, 10);
                   /* Restore the last byte of the buffer */
                   lp->l_line[lp->l_len - 1] = tmp;
                 if (op == 'a') {                  if (op == 'a') {
                         if (start > dlines->l_nblines ||                          if (start > dlines->l_nblines ||
                             start < 0 || *ep != 'a')                              start < 0 || *ep != 'a')
Line 487 
Line 520 
                                 if (lp == NULL)                                  if (lp == NULL)
                                         errx(1, "ed_patch_lines");                                          errx(1, "ed_patch_lines");
   
                                 if (!strcmp(lp->l_line, "."))                                  if (!memcmp(lp->l_line, ".", 1))
                                         break;                                          break;
   
                                 TAILQ_REMOVE(&(plines->l_lines), lp, l_list);                                  TAILQ_REMOVE(&(plines->l_lines), lp, l_list);

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17