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

Diff for /src/usr.bin/cvs/checkout.c between version 1.150 and 1.151

version 1.150, 2008/06/11 21:24:50 version 1.151, 2008/06/12 07:16:14
Line 49 
Line 49 
 static int nflag = 0;  static int nflag = 0;
   
 char *checkout_target_dir = NULL;  char *checkout_target_dir = NULL;
   
 time_t cvs_specified_date = -1;  time_t cvs_specified_date = -1;
   int disable_fast_checkout = 0;
   
 struct cvs_cmd cvs_cmd_checkout = {  struct cvs_cmd cvs_cmd_checkout = {
         CVS_OP_CHECKOUT, CVS_USE_WDIR, "checkout",          CVS_OP_CHECKOUT, CVS_USE_WDIR, "checkout",
Line 98 
Line 100 
                                 fatal("-d specified two or more times");                                  fatal("-d specified two or more times");
                         dflag = optarg;                          dflag = optarg;
                         checkout_target_dir = dflag;                          checkout_target_dir = dflag;
   
                           if (cvs_server_active == 1)
                                   disable_fast_checkout = 1;
                         break;                          break;
                 case 'j':                  case 'j':
                         if (cvs_join_rev1 == NULL)                          if (cvs_join_rev1 == NULL)
Line 152 
Line 157 
         if (argc == 0)          if (argc == 0)
                 fatal("%s", cvs_cmd_checkout.cmd_synopsis);                  fatal("%s", cvs_cmd_checkout.cmd_synopsis);
   
           if (cvs_server_active == 1 && disable_fast_checkout != 1) {
                   cmdp->cmd_flags &= ~CVS_USE_WDIR;
                   cvs_noexec = 1;
           }
   
         checkout_check_repository(argc, argv);          checkout_check_repository(argc, argv);
   
           if (cvs_server_active == 1 && disable_fast_checkout != 1)
                   cvs_noexec = 0;
   
         return (0);          return (0);
 }  }
   
Line 410 
Line 423 
                 cr.leavedir = NULL;                  cr.leavedir = NULL;
         } else {          } else {
                 cr.enterdir = cvs_update_enterdir;                  cr.enterdir = cvs_update_enterdir;
                 cr.leavedir = cvs_update_leavedir;                  if (cvs_server_active == 1) {
                           if (disable_fast_checkout != 1)
                                   cr.leavedir = NULL;
                           else
                                   cr.leavedir = cvs_update_leavedir;
                   } else {
                           cr.leavedir = prune_dirs ? cvs_update_leavedir : NULL;
                   }
         }          }
         cr.fileproc = cvs_update_local;          cr.fileproc = cvs_update_local;
         cr.flags = flags;          cr.flags = flags;
Line 431 
Line 451 
 void  void
 cvs_checkout_file(struct cvs_file *cf, RCSNUM *rnum, char *tag, int co_flags)  cvs_checkout_file(struct cvs_file *cf, RCSNUM *rnum, char *tag, int co_flags)
 {  {
           BUF *bp;
         mode_t mode;          mode_t mode;
         int cf_kflag, exists, fd;          int cf_kflag, exists, fd;
         time_t rcstime;          time_t rcstime;
         CVSENTRIES *ent;          CVSENTRIES *ent;
         struct timeval tv[2];          struct timeval tv[2];
         struct tm datetm;          struct tm datetm;
         char *tosend;          char *entry, *tosend;
         char template[MAXPATHLEN], *entry;  
         char kbuf[8], sticky[CVS_REV_BUFSZ], rev[CVS_REV_BUFSZ];          char kbuf[8], sticky[CVS_REV_BUFSZ], rev[CVS_REV_BUFSZ];
         char timebuf[CVS_TIME_BUFSZ], tbuf[CVS_TIME_BUFSZ];          char timebuf[CVS_TIME_BUFSZ], tbuf[CVS_TIME_BUFSZ];
   
Line 571 
Line 591 
                         xfree(entry);                          xfree(entry);
   
                         if (!(co_flags & CO_MERGE)) {                          if (!(co_flags & CO_MERGE)) {
                                 (void)xsnprintf(template, MAXPATHLEN,  
                                     "%s/checkout.XXXXXXXXXX", cvs_tmpdir);  
   
                                 fd = rcs_rev_write_stmp(cf->file_rcs, rnum,  
                                     template, 0);  
   
                                 mode = cf->file_rcs->rf_mode;                                  mode = cf->file_rcs->rf_mode;
                                 mode |= S_IWUSR;                                  mode |= S_IWUSR;
                                   bp = rcs_rev_getbuf(cf->file_rcs, rnum, 0);
                                 if (fchmod(fd, mode) == -1) {                                  cvs_remote_send_file_buf(cf->file_path,
                                         cvs_log(LP_ERR,                                      bp, mode);
                                             "failed to set mode for %s",                          } else {
                                             cf->file_path);                                  cvs_remote_send_file(tosend, fd);
                                 }  
   
                                 tosend = template;  
                         }  
   
                         cvs_remote_send_file(tosend, fd);  
   
                         if (!(co_flags & CO_MERGE)) {  
                                 close(fd);  
                                 (void)unlink(template);  
                                 cvs_worklist_run(&temp_files,  
                                     cvs_worklist_unlink);  
                         }                          }
                 }                  }
         }          }

Legend:
Removed from v.1.150  
changed lines
  Added in v.1.151