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

Diff for /src/usr.bin/cvs/diff3.c between version 1.52 and 1.53

version 1.52, 2010/07/23 08:31:19 version 1.53, 2010/07/23 21:46:05
Line 104 
Line 104 
   
 static size_t szchanges;  static size_t szchanges;
   
 static struct diff *d13 = NULL;  static struct diff *d13;
 static struct diff *d23 = NULL;  static struct diff *d23;
   
 /*  /*
  * "de" is used to gather editing scripts.  These are later spewed out in   * "de" is used to gather editing scripts.  These are later spewed out in
Line 114 
Line 114 
  * look (!?).  Array overlap indicates which sections in "de" correspond to   * look (!?).  Array overlap indicates which sections in "de" correspond to
  * lines that are different in all three files.   * lines that are different in all three files.
  */   */
 static struct diff *de = NULL;  static struct diff *de;
 static char *overlap = NULL;  static char *overlap;
 static int overlapcnt = 0;  static int overlapcnt = 0;
 static FILE *fp[3];  static FILE *fp[3];
 static int cline[3];            /* # of the last-read line in each file (0-2) */  static int cline[3];            /* # of the last-read line in each file (0-2) */
Line 162 
Line 162 
         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;          size_t dlen, plen;
         struct cvs_line *lp;          struct rcs_line *lp;
         struct cvs_lines *dlines, *plines;          struct rcs_lines *dlines, *plines;
   
         overlapcnt = 0;          overlapcnt = 0;
         b1 = b2 = b3 = d1 = d2 = diffb = NULL;          b1 = b2 = b3 = d1 = d2 = diffb = NULL;
Line 171 
Line 171 
         rcsnum_tostr(d3rev1, r1, sizeof(r1));          rcsnum_tostr(d3rev1, r1, sizeof(r1));
         rcsnum_tostr(d3rev2, r2, sizeof(r2));          rcsnum_tostr(d3rev2, r2, sizeof(r2));
   
         b1 = cvs_buf_load_fd(cf->fd);          b1 = buf_load_fd(cf->fd);
         d1 = cvs_buf_alloc(128);          d1 = buf_alloc(128);
         d2 = cvs_buf_alloc(128);          d2 = buf_alloc(128);
         diffb = cvs_buf_alloc(128);          diffb = buf_alloc(128);
   
         (void)xasprintf(&path1, "%s/diff1.XXXXXXXXXX", cvs_tmpdir);          (void)xasprintf(&path1, "%s/diff1.XXXXXXXXXX", cvs_tmpdir);
         (void)xasprintf(&path2, "%s/diff2.XXXXXXXXXX", cvs_tmpdir);          (void)xasprintf(&path2, "%s/diff2.XXXXXXXXXX", cvs_tmpdir);
         (void)xasprintf(&path3, "%s/diff3.XXXXXXXXXX", cvs_tmpdir);          (void)xasprintf(&path3, "%s/diff3.XXXXXXXXXX", cvs_tmpdir);
   
         fds[2] = cvs_buf_write_stmp(b1, path1, NULL);          fds[2] = buf_write_stmp(b1, path1, NULL);
         if (verbose == 1)          if (verbose == 1)
                 cvs_printf("Retrieving revision %s\n", r1);                  cvs_printf("Retrieving revision %s\n", r1);
         fds[3] = rcs_rev_write_stmp(cf->file_rcs, d3rev1, path2, 0);          fds[3] = rcs_rev_write_stmp(cf->file_rcs, d3rev1, path2, 0);
Line 192 
Line 192 
         diffreg(path2, path3, fds[3], fds[4], d2, D_FORCEASCII);          diffreg(path2, path3, fds[3], fds[4], d2, D_FORCEASCII);
   
         (void)xasprintf(&dp13, "%s/d13.XXXXXXXXXX", cvs_tmpdir);          (void)xasprintf(&dp13, "%s/d13.XXXXXXXXXX", cvs_tmpdir);
         fds[0] = cvs_buf_write_stmp(d1, dp13, NULL);          fds[0] = buf_write_stmp(d1, dp13, NULL);
         cvs_buf_free(d1);          buf_free(d1);
   
         (void)xasprintf(&dp23, "%s/d23.XXXXXXXXXX", cvs_tmpdir);          (void)xasprintf(&dp23, "%s/d23.XXXXXXXXXX", cvs_tmpdir);
         fds[1] = cvs_buf_write_stmp(d2, dp23, NULL);          fds[1] = buf_write_stmp(d2, dp23, NULL);
         cvs_buf_free(d2);          buf_free(d2);
   
         argc = 0;          argc = 0;
         diffbuf = diffb;          diffbuf = diffb;
Line 218 
Line 218 
         if (diff3_conflicts < 0)          if (diff3_conflicts < 0)
                 fatal("cvs_merge_file: merging failed for an unknown reason");                  fatal("cvs_merge_file: merging failed for an unknown reason");
   
         plen = cvs_buf_len(diffb);          plen = buf_len(diffb);
         patch = cvs_buf_release(diffb);          patch = buf_release(diffb);
         dlen = cvs_buf_len(b1);          dlen = buf_len(b1);
         data = cvs_buf_release(b1);          data = buf_release(b1);
   
         if (verbose == 1)          if (verbose == 1)
                 cvs_printf("Merging differences between %s and %s into `%s'\n",                  cvs_printf("Merging differences between %s and %s into `%s'\n",
Line 320 
Line 320 
 }  }
   
 int  int
 ed_patch_lines(struct cvs_lines *dlines, struct cvs_lines *plines)  ed_patch_lines(struct rcs_lines *dlines, struct rcs_lines *plines)
 {  {
         char op, *ep;          char op, *ep;
         struct cvs_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;          u_char tmp;
   
Line 799 
Line 799 
                 (void)fseek(fp[2], (long)de[n].new.from, SEEK_SET);                  (void)fseek(fp[2], (long)de[n].new.from, SEEK_SET);
                 for (k = de[n].new.to-de[n].new.from; k > 0; k-= j) {                  for (k = de[n].new.to-de[n].new.from; k > 0; k-= j) {
                         j = k > BUFSIZ ? BUFSIZ : k;                          j = k > BUFSIZ ? BUFSIZ : k;
                         if (fread(block, (size_t)1, (size_t)j,                          if (fread(block, 1, j, fp[2]) != j)
                             fp[2]) != (size_t)j)  
                                 return (-1);                                  return (-1);
                         block[j] = '\0';                          block[j] = '\0';
                         diff_output("%s", block);                          diff_output("%s", block);

Legend:
Removed from v.1.52  
changed lines
  Added in v.1.53