version 1.8, 2005/02/28 20:45:07 |
version 1.9, 2005/03/30 17:43:04 |
|
|
#define CVS_HF_EXCL (CVS_HF_C|CVS_HF_E|CVS_HF_M|CVS_HF_O|CVS_HF_T|CVS_HF_X) |
#define CVS_HF_EXCL (CVS_HF_C|CVS_HF_E|CVS_HF_M|CVS_HF_O|CVS_HF_T|CVS_HF_X) |
|
|
static void cvs_history_print (struct cvs_hent *); |
static void cvs_history_print (struct cvs_hent *); |
|
int cvs_history_options(char *, int, char **, int *); |
|
int cvs_history_sendflags(struct cvsroot *); |
|
|
|
|
extern char *__progname; |
extern char *__progname; |
|
|
|
struct cvs_cmd_info cvs_history = { |
|
cvs_history_options, |
|
cvs_history_sendflags, |
|
NULL, |
|
NULL, |
|
NULL, |
|
0, |
|
CVS_REQ_HISTORY, |
|
CVS_CMD_SENDDIR |
|
}; |
|
|
/* |
static int flags = 0; |
* cvs_history() |
static char *user = NULL; |
* |
static char *zone = "+0000"; |
* Handle the `cvs history' command. |
static char *tag = NULL; |
*/ |
static u_int nbmod = 0; |
|
static u_int rep = 0; |
|
static char *modules[CVS_HISTORY_MAXMOD]; |
|
|
int |
int |
cvs_history(int argc, char **argv) |
cvs_history_options(char *opt, int argc, char **argv, int *arg) |
{ |
{ |
int ch, flags; |
int ch; |
u_int nbmod, rep; |
|
char *user, *zone, *tag, *cp; |
|
char *modules[CVS_HISTORY_MAXMOD], histpath[MAXPATHLEN]; |
|
struct cvsroot *root; |
|
struct cvs_hent *hent; |
|
CVSHIST *hp; |
|
|
|
tag = NULL; |
while ((ch = getopt(argc, argv, opt)) != -1) { |
user = NULL; |
|
zone = "+0000"; |
|
nbmod = 0; |
|
flags = 0; |
|
rep = 0; |
|
|
|
while ((ch = getopt(argc, argv, "acelm:oTt:u:wx:z:")) != -1) { |
|
switch (ch) { |
switch (ch) { |
case 'a': |
case 'a': |
flags |= CVS_HF_A; |
flags |= CVS_HF_A; |
|
|
break; |
break; |
case 'x': |
case 'x': |
rep++; |
rep++; |
for (cp = optarg; *cp != '\0'; cp++) { |
|
} |
|
break; |
break; |
case 'z': |
case 'z': |
zone = optarg; |
zone = optarg; |
|
|
} else if (rep == 0) |
} else if (rep == 0) |
flags |= CVS_HF_O; /* use -o as default */ |
flags |= CVS_HF_O; /* use -o as default */ |
|
|
root = cvsroot_get("."); |
*arg = optind; |
if (root == NULL) { |
return (0); |
cvs_log(LP_ERR, |
} |
"No CVSROOT specified! Please use the `-d' option"); |
|
cvs_log(LP_ERR, |
|
"or set the CVSROOT environment variable."); |
|
return (EX_USAGE); |
|
} |
|
if (root->cr_method == CVS_METHOD_LOCAL) { |
|
snprintf(histpath, sizeof(histpath), "%s/%s", root->cr_dir, |
|
CVS_PATH_HISTORY); |
|
hp = cvs_hist_open(histpath); |
|
if (hp == NULL) { |
|
return (EX_UNAVAILABLE); |
|
} |
|
|
|
while ((hent = cvs_hist_getnext(hp)) != NULL) { |
int |
cvs_history_print(hent); |
cvs_history_sendflags(struct cvsroot *root) |
} |
{ |
cvs_hist_close(hp); |
|
} else { |
|
if (cvs_connect(root) < 0) |
|
return (EX_PROTOCOL); |
|
|
|
if ((flags & CVS_HF_C) && (cvs_sendarg(root, "-c", 0) < 0)) |
if ((flags & CVS_HF_C) && (cvs_sendarg(root, "-c", 0) < 0)) |
return (EX_PROTOCOL); |
return (EX_PROTOCOL); |
|
|
if ((flags & CVS_HF_O) && (cvs_sendarg(root, "-o", 0) < 0)) |
if ((flags & CVS_HF_O) && (cvs_sendarg(root, "-o", 0) < 0)) |
return (EX_PROTOCOL); |
return (EX_PROTOCOL); |
|
|
if (tag != NULL) { |
if (tag != NULL) { |
if ((cvs_sendarg(root, "-t", 0) < 0) || |
if ((cvs_sendarg(root, "-t", 0) < 0) || |
(cvs_sendarg(root, tag, 0) < 0)) |
(cvs_sendarg(root, tag, 0) < 0)) |
return (EX_PROTOCOL); |
|
} |
|
if (user != NULL) { |
|
if ((cvs_sendarg(root, "-u", 0) < 0) || |
|
(cvs_sendarg(root, user, 0) < 0)) |
|
return (EX_PROTOCOL); |
|
} |
|
|
|
if ((cvs_sendarg(root, "-z", 0) < 0) || |
|
(cvs_sendarg(root, zone, 0) < 0)) |
|
return (EX_PROTOCOL); |
return (EX_PROTOCOL); |
|
} |
|
|
if (cvs_sendreq(root, CVS_REQ_HISTORY, NULL) < 0) |
if (user != NULL) { |
|
if ((cvs_sendarg(root, "-u", 0) < 0) || |
|
(cvs_sendarg(root, user, 0) < 0)) |
return (EX_PROTOCOL); |
return (EX_PROTOCOL); |
} |
} |
|
|
|
if ((cvs_sendarg(root, "-z", 0) < 0) || |
|
(cvs_sendarg(root, zone, 0) < 0)) |
|
return (EX_PROTOCOL); |
|
|
return (0); |
return (0); |
} |
} |