[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.136 and 1.137

version 1.136, 2008/05/30 10:12:12 version 1.137, 2008/05/30 11:06:17
Line 36 
Line 36 
 static char     *koptstr;  static char     *koptstr;
 static char     *rev1 = NULL;  static char     *rev1 = NULL;
 static char     *rev2 = NULL;  static char     *rev2 = NULL;
   static time_t    date1 = -1;
   static time_t    date2 = -1;
   
 struct cvs_cmd cvs_cmd_diff = {  struct cvs_cmd cvs_cmd_diff = {
         CVS_OP_DIFF, CVS_USE_WDIR, "diff",          CVS_OP_DIFF, CVS_USE_WDIR, "diff",
Line 77 
Line 79 
                         strlcat(diffargs, " -c", sizeof(diffargs));                          strlcat(diffargs, " -c", sizeof(diffargs));
                         diff_format = D_CONTEXT;                          diff_format = D_CONTEXT;
                         break;                          break;
                   case 'D':
                           if (date1 == -1 && rev1 == NULL) {
                                   date1 = cvs_date_parse(optarg);
                           } else if (date2 == -1 && rev2 == NULL) {
                                   date2 = cvs_date_parse(optarg);
                           } else {
                                   fatal("no more than 2 revisions/dates can"
                                       " be specified");
                           }
                           break;
                 case 'f':                  case 'f':
                         force_head = 1;                          force_head = 1;
                         break;                          break;
Line 114 
Line 126 
                         flags |= CR_RECURSE_DIRS;                          flags |= CR_RECURSE_DIRS;
                         break;                          break;
                 case 'r':                  case 'r':
                         if (rev1 == NULL) {                          if (date1 == -1 && rev1 == NULL) {
                                 rev1 = optarg;                                  rev1 = optarg;
                         } else if (rev2 == NULL) {                          } else if (date2 == -1 && rev2 == NULL) {
                                 rev2 = optarg;                                  rev2 = optarg;
                         } else {                          } else {
                                 fatal("no more than 2 revisions/dates can"                                  fatal("no more than 2 revisions/dates can"
Line 232 
Line 244 
         int fd1, fd2;          int fd1, fd2;
         struct stat st;          struct stat st;
         struct timeval tv[2], tv2[2];          struct timeval tv[2], tv2[2];
         char rbuf[CVS_REV_BUFSZ], *p1, *p2;          struct tm *datetm;
           char rbuf[CVS_REV_BUFSZ], tbuf[CVS_TIME_BUFSZ], *p1, *p2;
   
         b1 = NULL;          b1 = NULL;
         fd1 = fd2 = -1;          fd1 = fd2 = -1;
Line 286 
Line 299 
                                     cf->file_path);                                      cf->file_path);
                                 return;                                  return;
                         }                          }
                         break;  
                         if (cf->file_rcs == NULL) {                          if (cf->file_rcs == NULL) {
                                 cvs_log(LP_ERR, "cannot find RCS file for %s",                                  cvs_log(LP_ERR, "cannot find RCS file for %s",
                                     cf->file_path);                                      cf->file_path);
Line 296 
Line 308 
                 }                  }
         }          }
   
         if (cf->file_status == FILE_UPTODATE && rev1 == NULL && rev2 == NULL)          if (cf->file_status == FILE_UPTODATE && rev1 == NULL && rev2 == NULL &&
               date1 == -1 && date2 == -1)
                 return;                  return;
   
         if (kflag && cf->file_rcs != NULL)          if (kflag && cf->file_rcs != NULL)
Line 304 
Line 317 
   
         if (cf->file_rcs == NULL)          if (cf->file_rcs == NULL)
                 diff_rev1 = NULL;                  diff_rev1 = NULL;
         else if (rev1 != NULL) {          else if (rev1 != NULL || date1 != -1) {
                   cvs_specified_date = date1;
                 diff_rev1 = rcs_translate_tag(rev1, cf->file_rcs);                  diff_rev1 = rcs_translate_tag(rev1, cf->file_rcs);
                 if (diff_rev1 == NULL && cvs_cmdop == CVS_OP_DIFF) {                  if (diff_rev1 == NULL && cvs_cmdop == CVS_OP_DIFF) {
                         cvs_log(LP_ERR, "tag %s not in file %s", rev1,                          if (rev1 != NULL)
                             cf->file_path);                                  cvs_log(LP_ERR, "tag %s not in file %s", rev1,
                                       cf->file_path);
                           else {
                                   datetm = gmtime(&cvs_specified_date);
                                   strftime(tbuf, sizeof(tbuf),
                                       "%Y.%m.%d.%H.%M.%S", datetm);
                                   cvs_log(LP_ERR, "no revision for date %s in "
                                       "file %s", tbuf, cf->file_path);
                           }
                         goto cleanup;                          goto cleanup;
                 } else if (diff_rev1 == NULL && cvs_cmdop == CVS_OP_RDIFF &&                  } else if (diff_rev1 == NULL && cvs_cmdop == CVS_OP_RDIFF &&
                     force_head) {                      force_head) {
Line 319 
Line 341 
   
                         diff_rev1 = cf->file_rcs->rf_head;                          diff_rev1 = cf->file_rcs->rf_head;
                 }                  }
                   cvs_specified_date = -1;
         } else if (cvs_cmdop == CVS_OP_DIFF) {          } else if (cvs_cmdop == CVS_OP_DIFF) {
                 if (cf->file_ent->ce_status == CVS_ENT_ADDED)                  if (cf->file_ent->ce_status == CVS_ENT_ADDED)
                         diff_rev1 = NULL;                          diff_rev1 = NULL;
Line 328 
Line 351 
   
         if (cf->file_rcs == NULL)          if (cf->file_rcs == NULL)
                 diff_rev2 = NULL;                  diff_rev2 = NULL;
         else if (rev2 != NULL) {          else if (rev2 != NULL || date2 != -1) {
                   cvs_specified_date = date2;
                 diff_rev2 = rcs_translate_tag(rev2, cf->file_rcs);                  diff_rev2 = rcs_translate_tag(rev2, cf->file_rcs);
                 if (diff_rev2 == NULL && cvs_cmdop == CVS_OP_DIFF) {                  if (diff_rev2 == NULL && cvs_cmdop == CVS_OP_DIFF) {
                         cvs_log(LP_ERR, "tag %s not in file %s", rev2,                          if (rev2 != NULL) {
                             cf->file_path);                                  cvs_log(LP_ERR, "tag %s not in file %s", rev2,
                                       cf->file_path);
                           } else {
                                   datetm = gmtime(&cvs_specified_date);
                                   strftime(tbuf, sizeof(tbuf),
                                       "%Y.%m.%d.%H.%M.%S", datetm);
                                   cvs_log(LP_ERR, "no revision for date %s in "
                                       "file %s", tbuf, cf->file_path);
                           }
                         goto cleanup;                          goto cleanup;
                 } else if (diff_rev2 == NULL && cvs_cmdop == CVS_OP_RDIFF &&                  } else if (diff_rev2 == NULL && cvs_cmdop == CVS_OP_RDIFF &&
                     force_head) {                      force_head) {
Line 343 
Line 375 
   
                         diff_rev2 = cf->file_rcs->rf_head;                          diff_rev2 = cf->file_rcs->rf_head;
                 }                  }
                   cvs_specified_date = -1;
         } else if (cvs_cmdop == CVS_OP_RDIFF)          } else if (cvs_cmdop == CVS_OP_RDIFF)
                 diff_rev2 = cf->file_rcs->rf_head;                  diff_rev2 = cf->file_rcs->rf_head;
         else if (cf->file_ent->ce_status == CVS_ENT_REMOVED)          else if (cf->file_ent->ce_status == CVS_ENT_REMOVED)

Legend:
Removed from v.1.136  
changed lines
  Added in v.1.137