version 1.19, 2005/04/12 14:58:40 |
version 1.20, 2005/04/13 16:37:50 |
|
|
#define CVS_GETLOG_REVEND \ |
#define CVS_GETLOG_REVEND \ |
"=============================================================================" |
"=============================================================================" |
|
|
#ifdef notyet |
|
static void cvs_getlog_print (const char *, RCSFILE *, u_int); |
|
#endif |
|
static int cvs_getlog_file (CVSFILE *, void *); |
static int cvs_getlog_file (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 *); |
|
|
|
|
repo = CVS_DIR_REPO(cf); |
repo = CVS_DIR_REPO(cf); |
|
|
if (cf->cf_type == DT_DIR) { |
if (cf->cf_type == DT_DIR) { |
if (root->cr_method != CVS_METHOD_LOCAL) { |
if (cf->cf_cvstat == CVS_FST_UNKNOWN) |
if (cf->cf_cvstat == CVS_FST_UNKNOWN) |
ret = cvs_sendreq(root, CVS_REQ_QUESTIONABLE, |
ret = cvs_sendreq(root, CVS_REQ_QUESTIONABLE, |
CVS_FILE_NAME(cf)); |
CVS_FILE_NAME(cf)); |
else |
else |
ret = cvs_senddir(root, cf); |
ret = cvs_senddir(root, cf); |
|
} |
|
|
|
return (ret); |
return (ret); |
} |
} |
|
|
cvs_file_getpath(cf, fpath, sizeof(fpath)); |
cvs_file_getpath(cf, fpath, sizeof(fpath)); |
entp = cvs_ent_getent(fpath); |
entp = cvs_ent_getent(fpath); |
|
|
if (root->cr_method != CVS_METHOD_LOCAL) { |
if ((entp != NULL) && (cvs_sendentry(root, entp) < 0)) { |
if ((entp != NULL) && (cvs_sendentry(root, entp) < 0)) { |
cvs_ent_free(entp); |
cvs_ent_free(entp); |
return (-1); |
return (CVS_EX_PROTO); |
} |
} |
|
|
|
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, |
CVS_FILE_NAME(cf)); |
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, |
CVS_FILE_NAME(cf)); |
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, |
CVS_FILE_NAME(cf)); |
CVS_FILE_NAME(cf)); |
break; |
break; |
default: |
default: |
break; |
break; |
} |
|
} else { |
|
if (cf->cf_cvstat == CVS_FST_UNKNOWN) { |
|
cvs_printf("? %s\n", fpath); |
|
return (0); |
|
} |
|
|
|
snprintf(fpath, sizeof(fpath), "%s/%s/%s%s", |
|
root->cr_dir, repo, CVS_FILE_NAME(cf), RCS_FILE_EXT); |
|
|
|
rf = rcs_open(fpath, RCS_READ); |
|
if (rf == NULL) { |
|
if (entp != NULL) |
|
cvs_ent_free(entp); |
|
return (CVS_EX_DATA); |
|
} |
|
|
|
rcs_close(rf); |
|
} |
} |
|
|
if (entp != NULL) |
if (entp != NULL) |
|
|
return (ret); |
return (ret); |
} |
} |
|
|
#ifdef notyet |
|
static void |
|
cvs_getlog_print(const char *file, RCSFILE *rfp, u_int flags) |
static int |
|
cvs_getlog_local(CVSFILE *cf, void *arg) |
{ |
{ |
char numbuf[64], datebuf[64], *sp; |
int nrev; |
|
char fpath[MAXPATHLEN], rcspath[MAXPATHLEN], numbuf[64]; |
|
char *repo; |
|
RCSFILE *rf; |
|
struct rcs_sym *sym; |
struct rcs_delta *rdp; |
struct rcs_delta *rdp; |
|
struct cvsroot *root; |
|
|
cvs_printf("RCS file: %s\nWorking file: %s\n", |
cvs_file_getpath(cf, fpath, sizeof(fpath)); |
rfp->rf_path, file); |
if (cf->cf_cvstat == CVS_FST_UNKNOWN) { |
cvs_printf("Working file: %s\n", (char *)NULL); |
cvs_printf("? %s\n", fpath); |
cvs_printf("head: %s\nbranch:\nlocks:\naccess list:\n"); |
return (0); |
cvs_printf("symbolic names:\nkeyword substitutions:\n"); |
} |
cvs_printf("total revisions: %u;\tselected revisions: %u\n", 1, 1); |
|
|
|
|
if (cf->cf_type == DT_DIR) |
|
return (0); |
|
|
|
nrev = 0; |
|
root = CVS_DIR_ROOT(cf); |
|
repo = CVS_DIR_REPO(cf); |
|
|
|
snprintf(rcspath, sizeof(rcspath), "%s/%s/%s%s", |
|
root->cr_dir, repo, CVS_FILE_NAME(cf), RCS_FILE_EXT); |
|
|
|
rf = rcs_open(rcspath, RCS_READ); |
|
if (rf == NULL) |
|
return (-1); |
|
|
|
cvs_printf("\nRCS file: %s\nWorking file: %s\n", rcspath, cf->cf_name); |
|
cvs_printf("head: %s\n", |
|
rcsnum_tostr(rcs_head_get(rf), numbuf, sizeof(numbuf))); |
|
cvs_printf("branch: %s\n", |
|
rcsnum_tostr(rcs_branch_get(rf), numbuf, sizeof(numbuf))); |
|
cvs_printf("locks:\naccess list:\n"); |
|
|
|
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("total revisions: %u;\tselected revisions: %u\n", |
|
rf->rf_ndelta, nrev); |
|
|
cvs_printf("description:\n"); |
cvs_printf("description:\n"); |
|
|
for (;;) { |
TAILQ_FOREACH(rdp, &(rf->rf_delta), rd_list) { |
cvs_printf(CVS_GETLOG_REVSEP "\n"); |
|
rcsnum_tostr(rdp->rd_num, numbuf, sizeof(numbuf)); |
rcsnum_tostr(rdp->rd_num, numbuf, sizeof(numbuf)); |
cvs_printf("revision %s\n", numbuf); |
cvs_printf(CVS_GETLOG_REVSEP "\nrevision %s\n", numbuf); |
cvs_printf("date: %d/%02d/%d %02d:%02d:%02d; author: %s;" |
cvs_printf("date: %d/%02d/%02d %02d:%02d:%02d; author: %s;" |
" state: %s; lines:", |
" state: %s;\n", |
rdp->rd_date.tm_year, rdp->rd_date.tm_mon + 1, |
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_mday, rdp->rd_date.tm_hour, |
rdp->rd_date.tm_min, rdp->rd_date.tm_sec, |
rdp->rd_date.tm_min, rdp->rd_date.tm_sec, |
rdp->rd_author, rdp->rd_state); |
rdp->rd_author, rdp->rd_state); |
|
cvs_printf("%s", rdp->rd_log); |
} |
} |
|
|
cvs_printf(CVS_GETLOG_REVEND "\n"); |
cvs_printf(CVS_GETLOG_REVEND "\n"); |
|
|
|
rcs_close(rf); |
|
|
|
return (0); |
} |
} |
#endif |
|