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

Diff for /src/usr.bin/cvs/diff.c between version 1.93 and 1.94

version 1.93, 2006/05/27 17:52:27 version 1.94, 2006/05/27 20:57:42
Line 25 
Line 25 
 int     cvs_diff(int, char **);  int     cvs_diff(int, char **);
 void    cvs_diff_local(struct cvs_file *);  void    cvs_diff_local(struct cvs_file *);
   
   int include_added_files = 0;
   
 struct cvs_cmd cvs_cmd_diff = {  struct cvs_cmd cvs_cmd_diff = {
         CVS_OP_DIFF, CVS_REQ_DIFF, "diff",          CVS_OP_DIFF, CVS_REQ_DIFF, "diff",
         { "di", "dif" },          { "di", "dif" },
Line 60 
Line 62 
                         strlcat(diffargs, " -n", sizeof(diffargs));                          strlcat(diffargs, " -n", sizeof(diffargs));
                         diff_format = D_RCSDIFF;                          diff_format = D_RCSDIFF;
                         break;                          break;
                   case 'N':
                           strlcat(diffargs, " -N", sizeof(diffargs));
                           include_added_files = 1;
                           break;
                 case 'r':                  case 'r':
                         if (diff_rev1 == NULL) {                          if (diff_rev1 == NULL) {
                                 diff_rev1 = rcsnum_parse(optarg);                                  diff_rev1 = rcsnum_parse(optarg);
Line 126 
Line 132 
         } else if (cf->file_status == FILE_UNKNOWN) {          } else if (cf->file_status == FILE_UNKNOWN) {
                 cvs_log(LP_ERR, "I know nothing about %s", cf->file_path);                  cvs_log(LP_ERR, "I know nothing about %s", cf->file_path);
                 return;                  return;
         } else if (cf->file_status == FILE_UPTODATE && diff_rev2 == NULL)          } else if (cf->file_status == FILE_ADDED && include_added_files == 0) {
                   cvs_log(LP_ERR, "%s is a new entry, no comparison available",
                       cf->file_path);
                 return;                  return;
           } else if (cf->file_status == FILE_UPTODATE && diff_rev2 == NULL) {
                   return;
           }
   
         diff_file = cf->file_path;          diff_file = cf->file_path;
         cvs_printf("Index: %s\n%s\nRCS file: %s\n", cf->file_path,          cvs_printf("Index: %s\n%s\nRCS file: %s\n", cf->file_path,
             RCS_DIFF_DIV, cf->file_rpath);              RCS_DIFF_DIV, cf->file_rpath);
   
         if (diff_rev1 != NULL)          if (cf->file_status != FILE_ADDED) {
                 r1 = diff_rev1;                  if (diff_rev1 != NULL)
         else                          r1 = diff_rev1;
                 r1 = cf->file_ent->ce_rev;                  else
                           r1 = cf->file_ent->ce_rev;
   
         diff_rev1 = r1;                  diff_rev1 = r1;
         rcsnum_tostr(r1, rbuf , sizeof(rbuf));                  rcsnum_tostr(r1, rbuf , sizeof(rbuf));
         cvs_printf("retrieving revision %s\n", rbuf);                  cvs_printf("retrieving revision %s\n", rbuf);
         if ((b1 = rcs_getrev(cf->file_rcs, r1)) == NULL)                  if ((b1 = rcs_getrev(cf->file_rcs, r1)) == NULL)
                 fatal("failed to retrieve revision %s", rbuf);                          fatal("failed to retrieve revision %s", rbuf);
   
         b1 = rcs_kwexp_buf(b1, cf->file_rcs, r1);                  b1 = rcs_kwexp_buf(b1, cf->file_rcs, r1);
   
         tv[0].tv_sec = rcs_rev_getdate(cf->file_rcs, r1);                  tv[0].tv_sec = rcs_rev_getdate(cf->file_rcs, r1);
         tv[0].tv_usec = 0;                  tv[0].tv_usec = 0;
         tv[1] = tv[0];                  tv[1] = tv[0];
           }
   
         if (diff_rev2 != NULL) {          if (diff_rev2 != NULL && cf->file_status != FILE_ADDED) {
                 rcsnum_tostr(diff_rev2, rbuf, sizeof(rbuf));                  rcsnum_tostr(diff_rev2, rbuf, sizeof(rbuf));
                 cvs_printf("retrieving revision %s\n", rbuf);                  cvs_printf("retrieving revision %s\n", rbuf);
                 if ((b2 = rcs_getrev(cf->file_rcs, diff_rev2)) == NULL)                  if ((b2 = rcs_getrev(cf->file_rcs, diff_rev2)) == NULL)
Line 178 
Line 191 
   
         cvs_printf("%s", diffargs);          cvs_printf("%s", diffargs);
   
         rcsnum_tostr(r1, rbuf, sizeof(rbuf));          if (cf->file_status != FILE_ADDED) {
         cvs_printf(" -r%s", rbuf);                  rcsnum_tostr(r1, rbuf, sizeof(rbuf));
   
         if (diff_rev2 != NULL) {  
                 rcsnum_tostr(diff_rev2, rbuf, sizeof(rbuf));  
                 cvs_printf(" -r%s", rbuf);                  cvs_printf(" -r%s", rbuf);
   
                   if (diff_rev2 != NULL) {
                           rcsnum_tostr(diff_rev2, rbuf, sizeof(rbuf));
                           cvs_printf(" -r%s", rbuf);
                   }
         }          }
   
         cvs_printf(" %s\n", cf->file_path);          cvs_printf(" %s\n", cf->file_path);
   
         len = strlcpy(p1, cvs_tmpdir, sizeof(p1));          if (cf->file_status != FILE_ADDED) {
         if (len >= sizeof(p1))                  len = strlcpy(p1, cvs_tmpdir, sizeof(p1));
                   if (len >= sizeof(p1))
                 fatal("cvs_diff_local: truncation");                  fatal("cvs_diff_local: truncation");
   
         len = strlcat(p1, "/diff1.XXXXXXXXXX", sizeof(p1));                  len = strlcat(p1, "/diff1.XXXXXXXXXX", sizeof(p1));
         if (len >= sizeof(p1))                  if (len >= sizeof(p1))
                 fatal("cvs_diff_local: truncation");                          fatal("cvs_diff_local: truncation");
   
         cvs_buf_write_stmp(b1, p1, 0600, tv);                  cvs_buf_write_stmp(b1, p1, 0600, tv);
         cvs_buf_free(b1);                  cvs_buf_free(b1);
           } else {
                   len = strlcpy(p1, CVS_PATH_DEVNULL, sizeof(p1));
                   if (len >= sizeof(p1))
                           fatal("cvs_diff_local: truncation");
           }
   
         len = strlcpy(p2, cvs_tmpdir, sizeof(p2));          len = strlcpy(p2, cvs_tmpdir, sizeof(p2));
         if (len >= sizeof(p2))          if (len >= sizeof(p2))
Line 212 
Line 233 
   
         cvs_diffreg(p1, p2, NULL);          cvs_diffreg(p1, p2, NULL);
         cvs_worklist_run(&temp_files, cvs_worklist_unlink);          cvs_worklist_run(&temp_files, cvs_worklist_unlink);
   
           diff_rev1 = diff_rev2 = NULL;
 }  }

Legend:
Removed from v.1.93  
changed lines
  Added in v.1.94