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

Diff for /src/usr.bin/cvs/tag.c between version 1.59 and 1.60

version 1.59, 2008/01/10 09:39:32 version 1.60, 2008/01/10 11:20:29
Line 15 
Line 15 
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */   */
   
   #include <errno.h>
   #include <string.h>
 #include <unistd.h>  #include <unistd.h>
   
 #include "cvs.h"  #include "cvs.h"
Line 36 
Line 38 
 static char     *tag_name = NULL;  static char     *tag_name = NULL;
 static char     *tag_oldname = NULL;  static char     *tag_oldname = NULL;
   
   struct cvs_cmd cvs_cmd_rtag = {
           CVS_OP_RTAG, 0, "rtag",
           { "rt", "rfreeze" },
           "Add a symbolic tag to a module",
           "[-bcdFflR] [-D date | -r rev] tag modules ...",
           "bcD:dFflRr:",
           NULL,
           cvs_tag
   };
   
 struct cvs_cmd cvs_cmd_tag = {  struct cvs_cmd cvs_cmd_tag = {
         CVS_OP_TAG, 0, "tag",          CVS_OP_TAG, 0, "tag",
         { "ta", "freeze" },          { "ta", "freeze" },
Line 49 
Line 61 
 int  int
 cvs_tag(int argc, char **argv)  cvs_tag(int argc, char **argv)
 {  {
         int ch, flags;          int ch, flags, i;
         char *arg = ".";          char *arg = ".";
         struct cvs_recursion cr;          struct cvs_recursion cr;
   
Line 88 
Line 100 
         argc -= optind;          argc -= optind;
         argv += optind;          argv += optind;
   
         if (argc == 0)          if (cvs_cmdop == CVS_OP_RTAG) {
                   if (argc < 2)
                           fatal("%s", cvs_cmd_rtag.cmd_synopsis);
   
                   for (i = 1; i < argc; i++)
                           if (argv[i][0] == '/')
                                   fatal("Absolute path name is invalid: %s",
                                       argv[i]);
           } else if (cvs_cmdop == CVS_OP_TAG && argc == 0)
                 fatal("%s", cvs_cmd_tag.cmd_synopsis);                  fatal("%s", cvs_cmd_tag.cmd_synopsis);
   
         tag_name = argv[0];          tag_name = argv[0];
Line 143 
Line 163 
   
                 cvs_client_send_request("Argument %s", tag_name);                  cvs_client_send_request("Argument %s", tag_name);
         } else {          } else {
                   if (cvs_cmdop == CVS_OP_RTAG &&
                       chdir(current_cvsroot->cr_dir) == -1)
                           fatal("cvs_tag: %s", strerror(errno));
   
                 cr.fileproc = cvs_tag_local;                  cr.fileproc = cvs_tag_local;
         }          }
   
         cr.flags = flags;          cr.flags = flags;
   
         if (argc > 0)          if (cvs_cmdop == CVS_OP_TAG ||
                 cvs_file_run(argc, argv, &cr);              current_cvsroot->cr_method == CVS_METHOD_LOCAL)) {
         else                  if (argc > 0)
                 cvs_file_run(1, &arg, &cr);                          cvs_file_run(argc, argv, &cr);
                   else
                           cvs_file_run(1, &arg, &cr);
           }
   
         if (current_cvsroot->cr_method != CVS_METHOD_LOCAL) {          if (current_cvsroot->cr_method != CVS_METHOD_LOCAL) {
                 cvs_client_send_files(argv, argc);                  cvs_client_send_files(argv, argc);
                 cvs_client_senddir(".");                  cvs_client_senddir(".");
                 cvs_client_send_request("tag");  
                   cvs_client_send_request((cvs_cmdop == CVS_OP_RTAG) ?
                       "rtag" : "tag");
   
                 cvs_client_get_responses();                  cvs_client_get_responses();
         }          }
   
Line 168 
Line 198 
 {  {
         cvs_log(LP_TRACE, "cvs_tag_local(%s)", cf->file_path);          cvs_log(LP_TRACE, "cvs_tag_local(%s)", cf->file_path);
   
           cvs_file_classify(cf, tag);
   
         if (cf->file_type == CVS_DIR) {          if (cf->file_type == CVS_DIR) {
                 if (verbosity > 1) {                  if (verbosity > 1) {
                         cvs_log(LP_NOTICE, "%s %s",                          cvs_log(LP_NOTICE, "%s %s",
Line 177 
Line 209 
                 return;                  return;
         }          }
   
         cvs_file_classify(cf, tag);  
   
         if (runflags & T_CHECK_UPTODATE) {          if (runflags & T_CHECK_UPTODATE) {
                 if (cf->file_status != FILE_UPTODATE &&                  if (cf->file_status != FILE_UPTODATE &&
                     cf->file_status != FILE_CHECKOUT &&                      cf->file_status != FILE_CHECKOUT &&
Line 216 
Line 246 
                 return;                  return;
         case FILE_CHECKOUT:          case FILE_CHECKOUT:
         case FILE_MODIFIED:          case FILE_MODIFIED:
           case FILE_PATCH:
         case FILE_UPTODATE:          case FILE_UPTODATE:
                 if (tag_add(cf) == 0) {                  if (tag_add(cf) == 0) {
                         if (verbosity > 0)                          if (verbosity > 0)
Line 246 
Line 277 
 tag_add(struct cvs_file *cf)  tag_add(struct cvs_file *cf)
 {  {
         char revbuf[CVS_REV_BUFSZ], trevbuf[CVS_REV_BUFSZ];          char revbuf[CVS_REV_BUFSZ], trevbuf[CVS_REV_BUFSZ];
         RCSNUM *trev;          RCSNUM *srev, *trev;
         struct rcs_sym *sym;          struct rcs_sym *sym;
   
         if (cf->file_rcs == NULL) {          if (cf->file_rcs == NULL) {
Line 256 
Line 287 
                 return (-1);                  return (-1);
         }          }
   
           if (cvs_cmdop == CVS_OP_TAG) {
                   if (cf->file_ent == NULL)
                           return (-1);
                   srev = cf->file_ent->ce_rev;
           } else
                   srev = cf->file_rcsrev;
   
         if (cvs_noexec == 1)          if (cvs_noexec == 1)
                 return (0);                  return (0);
   
         (void)rcsnum_tostr(cf->file_rcsrev, revbuf, sizeof(revbuf));          (void)rcsnum_tostr(srev, revbuf, sizeof(revbuf));
   
         trev = rcs_sym_getrev(cf->file_rcs, tag_name);          trev = rcs_sym_getrev(cf->file_rcs, tag_name);
         if (trev != NULL) {          if (trev != NULL) {
                 if (rcsnum_cmp(cf->file_rcsrev, trev, 0) == 0) {                  if (rcsnum_cmp(srev, trev, 0) == 0) {
                         rcsnum_free(trev);                          rcsnum_free(trev);
                         return (-1);                          return (-1);
                 }                  }
Line 277 
Line 315 
                         return (-1);                          return (-1);
                 } else if (runflags & T_FORCE_MOVE) {                  } else if (runflags & T_FORCE_MOVE) {
                         sym = rcs_sym_get(cf->file_rcs, tag_name);                          sym = rcs_sym_get(cf->file_rcs, tag_name);
                         rcsnum_cpy(cf->file_rcsrev, sym->rs_num, 0);                          rcsnum_cpy(srev, sym->rs_num, 0);
                         cf->file_rcs->rf_flags &= ~RCS_SYNCED;                          cf->file_rcs->rf_flags &= ~RCS_SYNCED;
   
                         return (0);                          return (0);
Line 285 
Line 323 
         }          }
   
         if (runflags & T_BRANCH) {          if (runflags & T_BRANCH) {
                 if ((trev = rcsnum_new_branch(cf->file_rcsrev)) == NULL)                  if ((trev = rcsnum_new_branch(srev)) == NULL)
                         fatal("Cannot create a new branch");                          fatal("Cannot create a new branch");
   
                 for (;;) {                  for (;;) {
Line 303 
Line 341 
                 }                  }
         } else {          } else {
                 trev = rcsnum_alloc();                  trev = rcsnum_alloc();
                 rcsnum_cpy(cf->file_rcsrev, trev, 0);                  rcsnum_cpy(srev, trev, 0);
         }          }
   
         if (rcs_sym_add(cf->file_rcs, tag_name, trev) == -1) {          if (rcs_sym_add(cf->file_rcs, tag_name, trev) == -1) {

Legend:
Removed from v.1.59  
changed lines
  Added in v.1.60