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

Diff for /src/usr.bin/cvs/admin.c between version 1.6 and 1.7

version 1.6, 2005/03/26 08:09:54 version 1.7, 2005/03/30 17:43:04
Line 41 
Line 41 
 #include "proto.h"  #include "proto.h"
   
   
 int cvs_admin_file (CVSFILE *, void *);  
   
 #define LOCK_SET        0x01  #define LOCK_SET        0x01
 #define LOCK_REMOVE     0x02  #define LOCK_REMOVE     0x02
   
Line 51 
Line 49 
 #define FLAG_INTERACTIVE        0x04  #define FLAG_INTERACTIVE        0x04
 #define FLAG_QUIET              0x08  #define FLAG_QUIET              0x08
   
 /*  int cvs_admin_options(char *, int, char **, int *);
  * cvs_admin()  int cvs_admin_sendflags(struct cvsroot *);
  *  int cvs_admin_file(CVSFILE *, void *);
  * Handler for the `cvs admin' command.  
  * Returns 0 on success, or one of the known exit codes on error.  struct cvs_cmd_info cvs_admin = {
  */          cvs_admin_options,
           cvs_admin_sendflags,
           cvs_admin_file,
           NULL, NULL,
           CF_SORT | CF_IGNORE | CF_RECURSE,
           CVS_REQ_ADMIN,
           CVS_CMD_ALLOWSPEC | CVS_CMD_SENDDIR | CVS_CMD_SENDARGS2
   };
   
   static char *q, *Ntag, *ntag, *comment, *replace_msg;
   static char *alist, *subst, *lockrev_arg, *unlockrev_arg;
   static char *state, *userfile, *branch_arg, *elist, *range;
   static int runflags, kflag, lockrev, strictlock;
   
 int  int
 cvs_admin(int argc, char **argv)  cvs_admin_options(char *opt, int argc, char **argv, int *arg)
 {  {
         int i, ch, flags;          int ch;
         int runflags, kflag, lockrev, strictlock;  
         char *q, *Ntag, *ntag, *comment, *replace_msg;  
         char *alist, *subst, *lockrev_arg, *unlockrev_arg;  
         char *state, *userfile, *branch_arg, *elist, *range;  
         struct cvsroot *root;  
         RCSNUM *rcs;          RCSNUM *rcs;
   
         runflags = strictlock = lockrev = 0;          runflags = strictlock = lockrev = 0;
         Ntag = ntag = comment = replace_msg = NULL;          Ntag = ntag = comment = replace_msg = NULL;
         state = alist = subst = elist = lockrev_arg = NULL;          state = alist = subst = elist = lockrev_arg = NULL;
         range = userfile = branch_arg = unlockrev_arg = NULL;          range = userfile = branch_arg = unlockrev_arg = NULL;
         flags = CF_SORT|CF_IGNORE|CF_RECURSE;  
   
         /* option-o-rama ! */          /* option-o-rama ! */
         while ((ch = getopt(argc, argv, "a:A:b::c:e::Ik:l::Lm:n:N:o:qs:t:u::U"))          while ((ch = getopt(argc, argv, opt)) != -1) {
             != -1) {  
                 switch (ch) {                  switch (ch) {
                 case 'a':                  case 'a':
                         alist = optarg;                          alist = optarg;
Line 193 
Line 197 
                 *q = ':';                  *q = ':';
         }          }
   
         if (argc == 0) {          *arg = optind;
                 cvs_files = cvs_file_get(".", flags);          return (0);
         } else {  }
                 cvs_files = cvs_file_getspec(argv, argc, 0);  
         }  
         if (cvs_files == NULL)  
                 return (EX_DATAERR);  
   
         root = CVS_DIR_ROOT(cvs_files);  int
         if (root == NULL) {  cvs_admin_sendflags(struct cvsroot *root)
                 cvs_log(LP_ERR,  {
                     "No CVSROOT specified!  Please use the `-d' option");          if ((alist != NULL) && ((cvs_sendarg(root, "-a", 0) < 0) ||
                 cvs_log(LP_ERR,              (cvs_sendarg(root, alist, 0) < 0)))
                     "or set the CVSROOT environment variable.");                  return (EX_PROTOCOL);
                 return (EX_USAGE);  
         }  
   
         if (root->cr_method != CVS_METHOD_LOCAL) {          if ((userfile != NULL) && ((cvs_sendarg(root, "-A", 0) < 0) ||
                 if (cvs_connect(root) < 0)              (cvs_sendarg(root, userfile, 0) < 0)))
                         return (EX_PROTOCOL);                  return (EX_PROTOCOL);
   
                 if ((alist != NULL) && ((cvs_sendarg(root, "-a", 0) < 0) ||          if (runflags & FLAG_BRANCH) {
                     (cvs_sendarg(root, alist, 0) < 0)))                  if (cvs_sendarg(root, "-b", 0) < 0)
                         return (EX_PROTOCOL);                          return (EX_PROTOCOL);
                   if ((branch_arg != NULL) &&
                 if ((userfile != NULL) && ((cvs_sendarg(root, "-A", 0) < 0) ||                      (cvs_sendarg(root, branch_arg, 0) < 0))
                     (cvs_sendarg(root, userfile, 0) < 0)))  
                         return (EX_PROTOCOL);                          return (EX_PROTOCOL);
           }
   
                 if (runflags & FLAG_BRANCH) {          if ((comment != NULL) && ((cvs_sendarg(root, "-c", 0) < 0) ||
                         if (cvs_sendarg(root, "-b", 0) < 0)              (cvs_sendarg(root, comment, 0) < 0)))
                                 return (EX_PROTOCOL);                  return (EX_PROTOCOL);
                         if ((branch_arg != NULL) &&  
                             (cvs_sendarg(root, branch_arg, 0) < 0))  
                                 return (EX_PROTOCOL);  
                 }  
   
                 if ((comment != NULL) && ((cvs_sendarg(root, "-c", 0) < 0) ||          if (runflags & FLAG_DELUSER)  {
                     (cvs_sendarg(root, comment, 0) < 0)))                  if (cvs_sendarg(root, "-e", 0) < 0)
                         return (EX_PROTOCOL);                          return (EX_PROTOCOL);
                   if ((elist != NULL) &&
                 if (runflags & FLAG_DELUSER)  {                      (cvs_sendarg(root, elist, 0) < 0))
                         if (cvs_sendarg(root, "-e", 0) < 0)  
                                 return (EX_PROTOCOL);  
                         if ((elist != NULL) &&  
                             (cvs_sendarg(root, elist, 0) < 0))  
                                 return (EX_PROTOCOL);  
                 }  
   
                 if (runflags & FLAG_INTERACTIVE) {  
                         if (cvs_sendarg(root, "-I", 0) < 0)  
                                 return (EX_PROTOCOL);  
                 }  
   
                 if ((subst != NULL) && ((cvs_sendarg(root, "-k", 0) < 0) ||  
                     (cvs_sendarg(root, subst, 0) < 0)))  
                         return (EX_PROTOCOL);                          return (EX_PROTOCOL);
           }
   
                 if (lockrev & LOCK_SET) {          if (runflags & FLAG_INTERACTIVE) {
                         if (cvs_sendarg(root, "-l", 0) < 0)                  if (cvs_sendarg(root, "-I", 0) < 0)
                                 return (EX_PROTOCOL);  
                         if ((lockrev_arg != NULL) &&  
                             (cvs_sendarg(root, lockrev_arg, 0) < 0))  
                                 return (0);  
                 }  
   
                 if ((strictlock & LOCK_SET) &&  
                     (cvs_sendarg(root, "-L", 0) < 0))  
                         return (EX_PROTOCOL);                          return (EX_PROTOCOL);
           }
   
                 if ((replace_msg != NULL) && ((cvs_sendarg(root, "-m", 0) < 0)          if ((subst != NULL) && ((cvs_sendarg(root, "-k", 0) < 0) ||
                     || (cvs_sendarg(root, replace_msg, 0) < 0)))              (cvs_sendarg(root, subst, 0) < 0)))
                         return (EX_PROTOCOL);                  return (EX_PROTOCOL);
   
                 if ((ntag != NULL) && ((cvs_sendarg(root, "-n", 0) < 0) ||          if (lockrev & LOCK_SET) {
                     (cvs_sendarg(root, ntag, 0) < 0)))                  if (cvs_sendarg(root, "-l", 0) < 0)
                         return (EX_PROTOCOL);                          return (EX_PROTOCOL);
                   if ((lockrev_arg != NULL) &&
                       (cvs_sendarg(root, lockrev_arg, 0) < 0))
                           return (0);
           }
   
                 if ((Ntag != NULL) && ((cvs_sendarg(root, "-N", 0) < 0) ||          if ((strictlock & LOCK_SET) &&
                     (cvs_sendarg(root, Ntag, 0) < 0)))              (cvs_sendarg(root, "-L", 0) < 0))
                         return (EX_PROTOCOL);                  return (EX_PROTOCOL);
   
                 if ((range != NULL) && ((cvs_sendarg(root, "-o", 0) < 0) ||          if ((replace_msg != NULL) && ((cvs_sendarg(root, "-m", 0) < 0)
                     (cvs_sendarg(root, range, 0) < 0)))              || (cvs_sendarg(root, replace_msg, 0) < 0)))
                         return (EX_PROTOCOL);                  return (EX_PROTOCOL);
   
                 if ((state != NULL) && ((cvs_sendarg(root, "-s", 0) < 0) ||          if ((ntag != NULL) && ((cvs_sendarg(root, "-n", 0) < 0) ||
                     (cvs_sendarg(root, state, 0) < 0)))              (cvs_sendarg(root, ntag, 0) < 0)))
                         return (EX_PROTOCOL);                  return (EX_PROTOCOL);
   
                 if (lockrev & LOCK_REMOVE) {          if ((Ntag != NULL) && ((cvs_sendarg(root, "-N", 0) < 0) ||
                         if (cvs_sendarg(root, "-u", 0) < 0)              (cvs_sendarg(root, Ntag, 0) < 0)))
                                 return (EX_PROTOCOL);                  return (EX_PROTOCOL);
                         if ((unlockrev_arg != NULL) &&  
                             (cvs_sendarg(root, unlockrev_arg, 0) < 0))  
                                 return (EX_PROTOCOL);  
                 }  
   
                 if ((strictlock & LOCK_REMOVE) &&          if ((range != NULL) && ((cvs_sendarg(root, "-o", 0) < 0) ||
                     (cvs_sendarg(root, "-U", 0) < 0))              (cvs_sendarg(root, range, 0) < 0)))
                         return (EX_PROTOCOL);                  return (EX_PROTOCOL);
         }  
   
         cvs_file_examine(cvs_files, cvs_admin_file, NULL);          if ((state != NULL) && ((cvs_sendarg(root, "-s", 0) < 0) ||
               (cvs_sendarg(root, state, 0) < 0)))
                   return (EX_PROTOCOL);
   
         if (root->cr_method != CVS_METHOD_LOCAL) {          if (lockrev & LOCK_REMOVE) {
                 if (cvs_senddir(root, cvs_files) < 0)                  if (cvs_sendarg(root, "-u", 0) < 0)
                         return (EX_PROTOCOL);                          return (EX_PROTOCOL);
                 for (i = 0; i < argc; i++)                  if ((unlockrev_arg != NULL) &&
                         if (cvs_sendarg(root, argv[i], 0) < 0)                      (cvs_sendarg(root, unlockrev_arg, 0) < 0))
                                 return (EX_PROTOCOL);  
                 if (cvs_sendreq(root, CVS_REQ_ADMIN, NULL) < 0)  
                         return (EX_PROTOCOL);                          return (EX_PROTOCOL);
         }          }
   
           if ((strictlock & LOCK_REMOVE) &&
               (cvs_sendarg(root, "-U", 0) < 0))
                   return (EX_PROTOCOL);
   
         return (0);          return (0);
 }  }
   
   
 /*  /*
  * cvs_admin_file()   * cvs_admin_file()

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7