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

Diff for /src/usr.bin/rcs/rcsmerge.c between version 1.23 and 1.24

version 1.23, 2006/03/24 05:14:48 version 1.24, 2006/04/12 08:23:30
Line 35 
Line 35 
 rcsmerge_main(int argc, char **argv)  rcsmerge_main(int argc, char **argv)
 {  {
         int i, ch;          int i, ch;
         char *fcont, fpath[MAXPATHLEN], r1[16], r2[16];          char *fcont, fpath[MAXPATHLEN], r1[16], r2[16], *rev_str1, *rev_str2;
         RCSFILE *file;          RCSFILE *file;
         RCSNUM *baserev, *rev2, *frev;          RCSNUM *rev1, *rev2;
         BUF *bp;          BUF *bp;
   
         baserev = rev2 = RCS_HEAD_REV;          rev1 = rev2 = NULL;
           rev_str1 = rev_str2 = NULL;
   
         while ((ch = rcs_getopt(argc, argv, "AEek:p::q::r:TVx::z:")) != -1) {          while ((ch = rcs_getopt(argc, argv, "AEek:p::q::r:TVx::z:")) != -1) {
                 switch (ch) {                  switch (ch) {
Line 56 
Line 57 
                         }                          }
                         break;                          break;
                 case 'p':                  case 'p':
                         rcs_set_rev(rcs_optarg, &baserev);                          rcs_setrevstr2(&rev_str1, &rev_str2, rcs_optarg);
                         pipeout = 1;                          pipeout = 1;
                         break;                          break;
                 case 'q':                  case 'q':
                         rcs_set_rev(rcs_optarg, &baserev);                          rcs_setrevstr2(&rev_str1, &rev_str2, rcs_optarg);
                         verbose = 0;                          verbose = 0;
                         break;                          break;
                 case 'r':                  case 'r':
                         if (baserev == RCS_HEAD_REV)                          rcs_setrevstr2(&rev_str1, &rev_str2, rcs_optarg);
                                 rcs_set_rev(rcs_optarg, &baserev);  
                         else if (rev2 == RCS_HEAD_REV)  
                                 rcs_set_rev(rcs_optarg, &rev2);  
                         else  
                                 fatal("too many revision numbers");  
                         break;                          break;
                 case 'T':                  case 'T':
                         /*                          /*
Line 101 
Line 97 
                 exit(1);                  exit(1);
         }          }
   
         if (baserev == RCS_HEAD_REV) {          if (rev_str1 == NULL) {
                 cvs_log(LP_ERR, "no base revision number given");                  cvs_log(LP_ERR, "no base revision number given");
                 (usage)();                  (usage)();
                 exit(1);                  exit(1);
Line 117 
Line 113 
                 if (verbose == 1)                  if (verbose == 1)
                         fprintf(stderr, "RCS file: %s\n", fpath);                          fprintf(stderr, "RCS file: %s\n", fpath);
   
                 if (rev2 == RCS_HEAD_REV)                  if (rev1 != NULL) {
                         frev = file->rf_head;                          rcsnum_free(rev1);
                 else                          rev1 = NULL;
                         frev = rev2;                  }
                   if (rev2 != NULL) {
                           rcsnum_free(rev2);
                           rev2 = NULL;
                   }
   
                 if (rcsnum_cmp(baserev, frev, 0) == 0) {                  rcs_set_rev(rev_str1, &rev1);
                   if (rev_str2 != NULL)
                           rcs_set_rev(rev_str2, &rev2);
                   else {
                           rev2 = rcsnum_alloc();
                           rcsnum_cpy(file->rf_head, rev2, 0);
                   }
   
                   if (rcsnum_cmp(rev1, rev2, 0) == 0) {
                         rcs_close(file);                          rcs_close(file);
                         continue;                          continue;
                 }                  }
   
                 rcsnum_tostr(baserev, r1, sizeof(r1));                  if (verbose == 1) {
                 rcsnum_tostr(frev, r2, sizeof(r2));                          (void)rcsnum_tostr(rev1, r1, sizeof(r1));
                           (void)rcsnum_tostr(rev2, r2, sizeof(r2));
   
                 if (verbose == 1)  
                         fprintf(stderr, "Merging differences between %s and "                          fprintf(stderr, "Merging differences between %s and "
                             "%s into %s%s\n", r1, r2, argv[i],                              "%s into %s%s\n", r1, r2, argv[i],
                             (pipeout == 1) ? "; result to stdout":"");                              (pipeout == 1) ? "; result to stdout":"");
                   }
   
                 if ((bp = cvs_diff3(file, argv[i], baserev,                  if ((bp = cvs_diff3(file, argv[i], rev1, rev2,
                     frev, verbose)) == NULL) {                      verbose)) == NULL) {
                         cvs_log(LP_ERR, "failed to merge");                          cvs_log(LP_ERR, "failed to merge");
                         rcs_close(file);                          rcs_close(file);
                         continue;                          continue;

Legend:
Removed from v.1.23  
changed lines
  Added in v.1.24