[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.94 and 1.95

version 1.94, 2006/05/27 20:57:42 version 1.95, 2006/05/27 21:11:11
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;  int Nflag = 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",
Line 64 
Line 64 
                         break;                          break;
                 case 'N':                  case 'N':
                         strlcat(diffargs, " -N", sizeof(diffargs));                          strlcat(diffargs, " -N", sizeof(diffargs));
                         include_added_files = 1;                          Nflag = 1;
                         break;                          break;
                 case 'r':                  case 'r':
                         if (diff_rev1 == NULL) {                          if (diff_rev1 == NULL) {
Line 132 
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_ADDED && include_added_files == 0) {          } else if (cf->file_status == FILE_ADDED && Nflag == 0) {
                 cvs_log(LP_ERR, "%s is a new entry, no comparison available",                  cvs_log(LP_ERR, "%s is a new entry, no comparison available",
                     cf->file_path);                      cf->file_path);
                 return;                  return;
           } else if (cf->file_status == FILE_REMOVED && Nflag == 0) {
                   cvs_log(LP_ERR, "%s was removed, no comparison available",
                       cf->file_path);
                   return;
         } else if (cf->file_status == FILE_UPTODATE && diff_rev2 == NULL) {          } else if (cf->file_status == FILE_UPTODATE && diff_rev2 == NULL) {
                 return;                  return;
         }          }
Line 163 
Line 167 
                 tv[1] = tv[0];                  tv[1] = tv[0];
         }          }
   
         if (diff_rev2 != NULL && cf->file_status != FILE_ADDED) {          if (diff_rev2 != NULL && cf->file_status != FILE_ADDED &&
               cf->file_status != FILE_REMOVED) {
                 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 174 
Line 179 
                 tv2[0].tv_sec = rcs_rev_getdate(cf->file_rcs, diff_rev2);                  tv2[0].tv_sec = rcs_rev_getdate(cf->file_rcs, diff_rev2);
                 tv2[0].tv_usec = 0;                  tv2[0].tv_usec = 0;
                 tv2[1] = tv2[0];                  tv2[1] = tv2[0];
         } else {          } else if (cf->file_status != FILE_REMOVED) {
                 if (fstat(cf->fd, &st) == -1)                  if (fstat(cf->fd, &st) == -1)
                         fatal("fstat failed %s", strerror(errno));                          fatal("fstat failed %s", strerror(errno));
                 if ((b2 = cvs_buf_load(cf->file_path, BUF_AUTOEXT)) == NULL)                  if ((b2 = cvs_buf_load(cf->file_path, BUF_AUTOEXT)) == NULL)
Line 220 
Line 225 
                         fatal("cvs_diff_local: truncation");                          fatal("cvs_diff_local: truncation");
         }          }
   
         len = strlcpy(p2, cvs_tmpdir, sizeof(p2));          if (cf->file_status != FILE_REMOVED) {
         if (len >= sizeof(p2))                  len = strlcpy(p2, cvs_tmpdir, sizeof(p2));
                 fatal("cvs_diff_local: truncation");                  if (len >= sizeof(p2))
                           fatal("cvs_diff_local: truncation");
   
         len = strlcat(p2, "/diff2.XXXXXXXXXX", sizeof(p2));                  len = strlcat(p2, "/diff2.XXXXXXXXXX", sizeof(p2));
         if (len >= sizeof(p2))                  if (len >= sizeof(p2))
                 fatal("cvs_diff_local: truncation");                          fatal("cvs_diff_local: truncation");
   
         cvs_buf_write_stmp(b2, p2, 0600, tv2);                  cvs_buf_write_stmp(b2, p2, 0600, tv2);
         cvs_buf_free(b2);                  cvs_buf_free(b2);
           } else {
                   len = strlcpy(p2, CVS_PATH_DEVNULL, sizeof(p2));
                   if (len >= sizeof(p2))
                           fatal("cvs_diff_local: truncation");
           }
   
         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);

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