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

Diff for /src/usr.bin/rcs/co.c between version 1.48 and 1.49

version 1.48, 2005/12/19 18:24:12 version 1.49, 2005/12/23 00:59:56
Line 36 
Line 36 
 #include "rcs.h"  #include "rcs.h"
 #include "rcsprog.h"  #include "rcsprog.h"
   
 #define CO_OPTSTRING    "f::k:l::M::p::q::r::s:Tu::Vw::x:"  #define CO_OPTSTRING    "d:f::k:l::M::p::q::r::s:Tu::Vw::x:"
   
 static void     checkout_err_nobranch(RCSFILE *, const char *, const char *,  static void     checkout_err_nobranch(RCSFILE *, const char *, const char *,
     const char *, int);      const char *, int);
Line 48 
Line 48 
         RCSNUM *frev, *rev;          RCSNUM *frev, *rev;
         RCSFILE *file;          RCSFILE *file;
         char fpath[MAXPATHLEN];          char fpath[MAXPATHLEN];
         char *author, *username;          char *author, *username, *date;
         const char *state;          const char *state;
         time_t rcs_mtime = -1;          time_t rcs_mtime = -1;
   
Line 58 
Line 58 
         frev = NULL;          frev = NULL;
         state = NULL;          state = NULL;
         author = NULL;          author = NULL;
           date = NULL;
   
         while ((ch = rcs_getopt(argc, argv, CO_OPTSTRING)) != -1) {          while ((ch = rcs_getopt(argc, argv, CO_OPTSTRING)) != -1) {
                 switch (ch) {                  switch (ch) {
                   case 'd':
                           date = xstrdup(rcs_optarg);
                           break;
                 case 'f':                  case 'f':
                         rcs_set_rev(rcs_optarg, &rev);                          rcs_set_rev(rcs_optarg, &rev);
                         flags |= FORCE;                          flags |= FORCE;
Line 167 
Line 171 
                         frev = rev;                          frev = rev;
   
                 if (checkout_rev(file, frev, argv[i], flags,                  if (checkout_rev(file, frev, argv[i], flags,
                     username, author, state) < 0) {                      username, author, state, date) < 0) {
                                 rcs_close(file);                                  rcs_close(file);
                                 continue;                                  continue;
                 }                  }
Line 197 
Line 201 
  * Checkout revision <rev> from RCSFILE <file>, writing it to the path <dst>   * Checkout revision <rev> from RCSFILE <file>, writing it to the path <dst>
  * Currenly recognised <flags> are CO_LOCK, CO_UNLOCK and CO_REVDATE.   * Currenly recognised <flags> are CO_LOCK, CO_UNLOCK and CO_REVDATE.
  *   *
  * Looks up revision based upon <lockname>, <author>, <state>   * Looks up revision based upon <lockname>, <author>, <state> and <date>
  *   *
  * Returns 0 on success, -1 on failure.   * Returns 0 on success, -1 on failure.
  */   */
 int  int
 checkout_rev(RCSFILE *file, RCSNUM *frev, const char *dst, int flags,  checkout_rev(RCSFILE *file, RCSNUM *frev, const char *dst, int flags,
     const char *lockname, const char *author, const char *state)      const char *lockname, const char *author, const char *state,
       const char *date)
 {  {
         BUF *bp;          BUF *bp;
         int lcount;          int lcount;
Line 212 
Line 217 
         struct stat st;          struct stat st;
         struct rcs_delta *rdp;          struct rcs_delta *rdp;
         struct rcs_lock *lkp;          struct rcs_lock *lkp;
         char *content, msg[128];          char *content, msg[128], *fdate;
           time_t rcsdate, givendate;
   
           rcsdate = givendate = -1;
           if (date != NULL)
                   givendate = cvs_date_parse(date);
   
         /* Check out the latest revision if <frev> is greater than HEAD */          /* Check out the latest revision if <frev> is greater than HEAD */
         if (rcsnum_cmp(frev, file->rf_head, 0) == -1)          if (rcsnum_cmp(frev, file->rf_head, 0) == -1)
                 frev = file->rf_head;                  frev = file->rf_head;
Line 240 
Line 250 
                 }                  }
   
                 TAILQ_FOREACH(rdp, &file->rf_delta, rd_list) {                  TAILQ_FOREACH(rdp, &file->rf_delta, rd_list) {
                           if (date != NULL) {
                                   fdate = asctime(&rdp->rd_date);
                                   rcsdate = cvs_date_parse(fdate);
                                   if (givendate <= rcsdate)
                                           continue;
                           }
   
                         if ((author != NULL) &&                          if ((author != NULL) &&
                             (strcmp(rdp->rd_author, author)))                              (strcmp(rdp->rd_author, author)))
                                 continue;                                  continue;
   
                         if ((state != NULL) &&                          if ((state != NULL) &&
                             (strcmp(rdp->rd_state, state)))                              (strcmp(rdp->rd_state, state)))
                                 continue;                                  continue;
Line 255 
Line 273 
         }          }
   
         if (rdp == NULL) {          if (rdp == NULL) {
                 checkout_err_nobranch(file, author, NULL, state, flags);                  checkout_err_nobranch(file, author, date, state, flags);
                 return (-1);                  return (-1);
         }          }
   

Legend:
Removed from v.1.48  
changed lines
  Added in v.1.49