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

Diff for /src/usr.bin/cvs/edit.c between version 1.13 and 1.14

version 1.13, 2006/05/27 03:30:30 version 1.14, 2007/01/02 13:51:13
Line 1 
Line 1 
 /*      $OpenBSD$       */  /*      $OpenBSD$       */
 /*  /*
  * Copyright (c) 2005 Jean-Francois Brousseau <jfb@openbsd.org>   * Copyright (c) 2006 Xavier Santolaria <xsa@openbsd.org>
  * All rights reserved.  
  *   *
  * Redistribution and use in source and binary forms, with or without   * Permission to use, copy, modify, and distribute this software for any
  * modification, are permitted provided that the following conditions   * purpose with or without fee is hereby granted, provided that the above
  * are met:   * copyright notice and this permission notice appear in all copies.
  *   *
  * 1. Redistributions of source code must retain the above copyright   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  *    notice, this list of conditions and the following disclaimer.   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  * 2. The name of the author may not be used to endorse or promote products   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  *    derived from this software without specific prior written permission.   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  *   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL  
  * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  
  * EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLUDING, BUT NOT LIMITED TO,  
  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;  
  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,  
  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR  
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF  
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
  */   */
   
 #include "includes.h"  #include "includes.h"
   
 #include "cvs.h"  #include "cvs.h"
 #include "log.h"  #include "log.h"
 #include "proto.h"  #include "remote.h"
   
   static void     cvs_editors_local(struct cvs_file *);
   
   
 static int      cvs_edit_init(struct cvs_cmd *, int, char **, int *);  
 static int      cvs_edit_remote(CVSFILE *, void *);  
 static int      cvs_edit_local(CVSFILE *, void *);  
   
 static int      cvs_editors_remote(CVSFILE *, void *);  
   
   
 struct cvs_cmd cvs_cmd_edit = {  
         CVS_OP_EDIT, CVS_REQ_NOOP, "edit",  
         { },  
         "Mark a file as being edited",  
         "[-lR] [-a action] [file ...]",  
         "a:lR",  
         NULL,  
         CF_SORT | CF_RECURSE,  
         cvs_edit_init,  
         NULL,  
         cvs_edit_remote,  
         cvs_edit_local,  
         NULL,  
         NULL,  
         0  
 };  
   
 struct cvs_cmd cvs_cmd_editors = {  struct cvs_cmd cvs_cmd_editors = {
         CVS_OP_EDITORS, CVS_REQ_EDITORS, "editors",          CVS_OP_EDITORS, 0, "editors",
         { },          { },
         "List editors on a file",          "See who is editing a watched file",
         "[-lR] [file ...]",          "[-lR] [file ...]",
         "lR",          "lR",
         NULL,          NULL,
         CF_SORT | CF_RECURSE,          cvs_editors
         cvs_edit_init,  
         NULL,  
         cvs_editors_remote,  
         NULL,  
         NULL,  
         NULL,  
         CVS_CMD_SENDDIR | CVS_CMD_ALLOWSPEC | CVS_CMD_SENDARGS2  
 };  };
   
   int
 struct cvs_cmd cvs_cmd_unedit = {  cvs_editors(int argc, char **argv)
         CVS_OP_UNEDIT, CVS_REQ_NOOP, "unedit",  
         { },  
         "Undo an edit command",  
         "[-lR] [file ...]",  
         "lR",  
         NULL,  
         CF_SORT | CF_RECURSE,  
         cvs_edit_init,  
         NULL,  
         cvs_edit_remote,  
         cvs_edit_local,  
         NULL,  
         NULL,  
         0  
 };  
   
   
   
 static int  
 cvs_edit_init(struct cvs_cmd *cmd, int argc, char **argv, int *arg)  
 {  {
         int ch;          int ch;
           int flags;
           struct cvs_recursion cr;
   
         while ((ch = getopt(argc, argv, cmd->cmd_opts)) != -1) {          flags = CR_RECURSE_DIRS;
   
           while ((ch = getopt(argc, argv, cvs_cmd_editors.cmd_opts)) != -1) {
                 switch (ch) {                  switch (ch) {
                 case 'a':  
                         /*  
                          * The `editors' and `unedit' commands do not have  
                          * the -a option. Check which command has been issued.  
                          */  
                         if (cvs_cmdop != CVS_OP_EDIT)  
                                 return (CVS_EX_USAGE);  
                         break;  
                 case 'l':                  case 'l':
                         cmd->file_flags &= ~CF_RECURSE;                          flags &= ~CR_RECURSE_DIRS;
                         break;                          break;
                 case 'R':                  case 'R':
                         cmd->file_flags |= CF_RECURSE;  
                         break;                          break;
                 default:                  default:
                         return (CVS_EX_USAGE);                          fatal("%s", cvs_cmd_editors.cmd_synopsis);
                 }                  }
         }          }
   
         *arg = optind;          argc -= optind;
         return (CVS_EX_OK);          argv += optind;
 }  
   
           if (argc == 0)
                   fatal("%s", cvs_cmd_editors.cmd_synopsis);
   
 /*          cr.enterdir = NULL;
  * cvs_edit_remote()          cr.leavedir = NULL;
  *  
  */  
 static int  
 cvs_edit_remote(CVSFILE *cf, void *arg)  
 {  
         return (CVS_EX_OK);  
 }  
   
           if (current_cvsroot->cr_method != CVS_METHOD_LOCAL) {
                   cr.fileproc = cvs_client_sendfile;
   
 /*                  if (!(flags & CR_RECURSE_DIRS))
  * cvs_edit_local()                          cvs_client_send_request("Argument -l");
  *          } else {
  */                  cr.fileproc = cvs_editors_local;
 static int          }
 cvs_edit_local(CVSFILE *cf, void *arg)  
 {  
         return (CVS_EX_OK);  
 }  
   
           cr.flags = flags;
   
 /*          cvs_file_run(argc, argv, &cr);
  * cvs_editors_remote()  
  *  
  */  
 static int  
 cvs_editors_remote(CVSFILE *cf, void *arg)  
 {  
         struct cvsroot *root;  
   
         root = CVS_DIR_ROOT(cf);          if (current_cvsroot->cr_method != CVS_METHOD_LOCAL) {
                   cvs_client_send_files(argv, argc);
         if (cf->cf_type == DT_DIR) {                  cvs_client_senddir(".");
                 if (cf->cf_cvstat == CVS_FST_UNKNOWN)                  cvs_client_send_request("editors");
                         cvs_sendreq(root, CVS_REQ_QUESTIONABLE, cf->cf_name);                  cvs_client_get_responses();
                 else  
                         cvs_senddir(root, cf);  
                 return (0);  
         }          }
   
         cvs_sendentry(root, cf);  
   
         switch (cf->cf_cvstat) {  
         case CVS_FST_UNKNOWN:  
                 cvs_sendreq(root, CVS_REQ_QUESTIONABLE, cf->cf_name);  
                 break;  
         case CVS_FST_UPTODATE:  
                 cvs_sendreq(root, CVS_REQ_UNCHANGED, cf->cf_name);  
                 break;  
         case CVS_FST_ADDED:  
         case CVS_FST_MODIFIED:  
                 cvs_sendreq(root, CVS_REQ_ISMODIFIED, cf->cf_name);  
                 break;  
         default:  
                 break;  
         }  
   
         return (0);          return (0);
   }
   
   static void
   cvs_editors_local(struct cvs_file *cf)
   {
 }  }

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14