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

Diff for /src/usr.bin/cvs/getlog.c between version 1.20 and 1.21

version 1.20, 2005/04/13 16:37:50 version 1.21, 2005/04/13 19:44:42
Line 47 
Line 47 
 #define CVS_GETLOG_REVEND \  #define CVS_GETLOG_REVEND \
  "============================================================================="   "============================================================================="
   
 static int  cvs_getlog_file    (CVSFILE *, void *);  static int  cvs_getlog_remote  (CVSFILE *, void *);
 static int  cvs_getlog_local   (CVSFILE *, void *);  static int  cvs_getlog_local   (CVSFILE *, void *);
   
 int cvs_getlog_options(char *, int, char **, int *);  int cvs_getlog_options(char *, int, char **, int *);
Line 55 
Line 55 
 struct cvs_cmd_info cvs_getlog = {  struct cvs_cmd_info cvs_getlog = {
         cvs_getlog_options,          cvs_getlog_options,
         NULL,          NULL,
         cvs_getlog_file,          cvs_getlog_remote,
         NULL, NULL,          NULL, NULL,
         CF_RECURSE,          CF_RECURSE,
         CVS_REQ_LOG,          CVS_REQ_LOG,
         CVS_CMD_SENDDIR | CVS_CMD_ALLOWSPEC | CVS_CMD_SENDARGS2          CVS_CMD_SENDDIR | CVS_CMD_ALLOWSPEC | CVS_CMD_SENDARGS2
 };  };
   
 static int rfonly = 0;  static int log_rfonly = 0;
 static int honly = 0;  static int log_honly = 0;
   static int log_notags = 0;
   
 int  int
 cvs_getlog_options(char *opt, int argc, char **argv, int *arg)  cvs_getlog_options(char *opt, int argc, char **argv, int *arg)
Line 75 
Line 76 
                 case 'd':                  case 'd':
                         break;                          break;
                 case 'h':                  case 'h':
                         honly = 1;                          log_honly = 1;
                         break;                          break;
                 case 'l':                  case 'l':
                         cvs_getlog.file_flags &= ~CF_RECURSE;                          cvs_getlog.file_flags &= ~CF_RECURSE;
                         break;                          break;
                   case 'N':
                           log_notags = 1;
                           break;
                 case 'R':                  case 'R':
                         rfonly = 1;                          log_rfonly = 1;
                         break;                          break;
                 case 'r':                  case 'r':
                         break;                          break;
Line 96 
Line 100 
   
   
 /*  /*
  * cvs_getlog_file()   * cvs_getlog_remote()
  *   *
  * Diff a single file.  
  */   */
 static int  static int
 cvs_getlog_file(CVSFILE *cf, void *arg)  cvs_getlog_remote(CVSFILE *cf, void *arg)
 {  {
         int ret;          int ret;
         char *repo, fpath[MAXPATHLEN];          char *repo, fpath[MAXPATHLEN];
         RCSFILE *rf;  
         struct cvsroot *root;          struct cvsroot *root;
         struct cvs_ent *entp;          struct cvs_ent *entp;
   
         ret = 0;          ret = 0;
         rf = NULL;  
         root = CVS_DIR_ROOT(cf);          root = CVS_DIR_ROOT(cf);
         repo = CVS_DIR_REPO(cf);          repo = CVS_DIR_REPO(cf);
   
Line 133 
Line 134 
   
         switch (cf->cf_cvstat) {          switch (cf->cf_cvstat) {
         case CVS_FST_UNKNOWN:          case CVS_FST_UNKNOWN:
                 ret = cvs_sendreq(root, CVS_REQ_QUESTIONABLE,                  ret = cvs_sendreq(root, CVS_REQ_QUESTIONABLE, cf->cf_name);
                     CVS_FILE_NAME(cf));  
                 break;                  break;
         case CVS_FST_UPTODATE:          case CVS_FST_UPTODATE:
                 ret = cvs_sendreq(root, CVS_REQ_UNCHANGED,                  ret = cvs_sendreq(root, CVS_REQ_UNCHANGED, cf->cf_name);
                     CVS_FILE_NAME(cf));  
                 break;                  break;
         case CVS_FST_ADDED:          case CVS_FST_ADDED:
         case CVS_FST_MODIFIED:          case CVS_FST_MODIFIED:
                 ret = cvs_sendreq(root, CVS_REQ_ISMODIFIED,                  ret = cvs_sendreq(root, CVS_REQ_ISMODIFIED, cf->cf_name);
                     CVS_FILE_NAME(cf));  
                 break;                  break;
         default:          default:
                 break;                  break;
Line 160 
Line 158 
 cvs_getlog_local(CVSFILE *cf, void *arg)  cvs_getlog_local(CVSFILE *cf, void *arg)
 {  {
         int nrev;          int nrev;
         char fpath[MAXPATHLEN], rcspath[MAXPATHLEN], numbuf[64];          char rcspath[MAXPATHLEN], numbuf[64];
         char *repo;          char *repo;
         RCSFILE *rf;          RCSFILE *rf;
         struct rcs_sym *sym;          struct rcs_sym *sym;
         struct rcs_delta *rdp;          struct rcs_delta *rdp;
           struct rcs_access *acp;
         struct cvsroot *root;          struct cvsroot *root;
   
         cvs_file_getpath(cf, fpath, sizeof(fpath));  
         if (cf->cf_cvstat == CVS_FST_UNKNOWN) {          if (cf->cf_cvstat == CVS_FST_UNKNOWN) {
                 cvs_printf("? %s\n", fpath);                  cvs_log(LP_WARN, "nothing known about %s", cf->cf_name);
                 return (0);                  return (0);
         }          }
   
         if (cf->cf_type == DT_DIR)          if (cf->cf_type == DT_DIR) {
                   cvs_log(LP_INFO, "Logging %s", cf->cf_name);
                 return (0);                  return (0);
           }
   
         nrev = 0;          nrev = 0;
         root = CVS_DIR_ROOT(cf);          root = CVS_DIR_ROOT(cf);
Line 183 
Line 183 
         snprintf(rcspath, sizeof(rcspath), "%s/%s/%s%s",          snprintf(rcspath, sizeof(rcspath), "%s/%s/%s%s",
             root->cr_dir, repo, CVS_FILE_NAME(cf), RCS_FILE_EXT);              root->cr_dir, repo, CVS_FILE_NAME(cf), RCS_FILE_EXT);
   
           if (log_rfonly) {
                   cvs_printf("%s\n", rcspath);
                   return (0);
           }
   
         rf = rcs_open(rcspath, RCS_READ);          rf = rcs_open(rcspath, RCS_READ);
         if (rf == NULL)          if (rf == NULL)
                 return (-1);                  return (-1);
Line 192 
Line 197 
             rcsnum_tostr(rcs_head_get(rf), numbuf, sizeof(numbuf)));              rcsnum_tostr(rcs_head_get(rf), numbuf, sizeof(numbuf)));
         cvs_printf("branch: %s\n",          cvs_printf("branch: %s\n",
             rcsnum_tostr(rcs_branch_get(rf), numbuf, sizeof(numbuf)));              rcsnum_tostr(rcs_branch_get(rf), numbuf, sizeof(numbuf)));
         cvs_printf("locks:\naccess list:\n");          cvs_printf("locks: %s\n", (rf->rf_flags & RCS_SLOCK) ? "strict" : "");
   
         cvs_printf("symbolic names:\n");          cvs_printf("access list:\n");
         TAILQ_FOREACH(sym, &(rf->rf_symbols), rs_list) {          TAILQ_FOREACH(acp, &(rf->rf_access), ra_list)
                 cvs_printf("\t%s: %s\n", sym->rs_name,                  cvs_printf("\t%s\n", acp->ra_name);
                     rcsnum_tostr(sym->rs_num, numbuf, sizeof(numbuf)));  
           if (!log_notags) {
                   cvs_printf("symbolic names:\n");
                   TAILQ_FOREACH(sym, &(rf->rf_symbols), rs_list)
                           cvs_printf("\t%s: %s\n", sym->rs_name,
                               rcsnum_tostr(sym->rs_num, numbuf, sizeof(numbuf)));
         }          }
   
         cvs_printf("keyword substitution: %s\n", "");          cvs_printf("keyword substitution: %s\n", "");
         cvs_printf("total revisions: %u;\tselected revisions: %u\n",  
             rf->rf_ndelta, nrev);  
   
         cvs_printf("description:\n");          if (log_honly)
                   cvs_printf("total revisions: %u;\n", rf->rf_ndelta);
         TAILQ_FOREACH(rdp, &(rf->rf_delta), rd_list) {          else {
                 rcsnum_tostr(rdp->rd_num, numbuf, sizeof(numbuf));                  cvs_printf("total revisions: %u;\tselected revisions: %u\n",
                 cvs_printf(CVS_GETLOG_REVSEP "\nrevision %s\n", numbuf);                      rf->rf_ndelta, nrev);
                 cvs_printf("date: %d/%02d/%02d %02d:%02d:%02d;  author: %s;"                  cvs_printf("description:\n%s", rf->rf_desc);
                     "  state: %s;\n",                  TAILQ_FOREACH(rdp, &(rf->rf_delta), rd_list) {
                     rdp->rd_date.tm_year + 1900, rdp->rd_date.tm_mon + 1,                          rcsnum_tostr(rdp->rd_num, numbuf, sizeof(numbuf));
                     rdp->rd_date.tm_mday, rdp->rd_date.tm_hour,                          cvs_printf(CVS_GETLOG_REVSEP "\nrevision %s\n", numbuf);
                     rdp->rd_date.tm_min, rdp->rd_date.tm_sec,                          cvs_printf("date: %d/%02d/%02d %02d:%02d:%02d;"
                     rdp->rd_author, rdp->rd_state);                              "  author: %s;  state: %s;\n",
                 cvs_printf("%s", rdp->rd_log);                              rdp->rd_date.tm_year + 1900,
                               rdp->rd_date.tm_mon + 1,
                               rdp->rd_date.tm_mday, rdp->rd_date.tm_hour,
                               rdp->rd_date.tm_min, rdp->rd_date.tm_sec,
                               rdp->rd_author, rdp->rd_state);
                           cvs_printf("%s", rdp->rd_log);
                   }
         }          }
   
         cvs_printf(CVS_GETLOG_REVEND "\n");          cvs_printf(CVS_GETLOG_REVEND "\n");

Legend:
Removed from v.1.20  
changed lines
  Added in v.1.21