summaryrefslogtreecommitdiffstats
path: root/usr.bin/cvs/history.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/cvs/history.c')
-rw-r--r--usr.bin/cvs/history.c112
1 files changed, 46 insertions, 66 deletions
diff --git a/usr.bin/cvs/history.c b/usr.bin/cvs/history.c
index cdd47a4d874..309dd2711a4 100644
--- a/usr.bin/cvs/history.c
+++ b/usr.bin/cvs/history.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: history.c,v 1.8 2005/02/28 20:45:07 joris Exp $ */
+/* $OpenBSD: history.c,v 1.9 2005/03/30 17:43:04 joris Exp $ */
/*
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
* All rights reserved.
@@ -55,35 +55,36 @@
#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 *);
-
+int cvs_history_options(char *, int, char **, int *);
+int cvs_history_sendflags(struct cvsroot *);
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;
+static char *user = NULL;
+static char *zone = "+0000";
+static char *tag = NULL;
+static u_int nbmod = 0;
+static u_int rep = 0;
+static char *modules[CVS_HISTORY_MAXMOD];
-/*
- * cvs_history()
- *
- * Handle the `cvs history' command.
- */
int
-cvs_history(int argc, char **argv)
+cvs_history_options(char *opt, int argc, char **argv, int *arg)
{
- int ch, flags;
- 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;
- user = NULL;
- zone = "+0000";
- nbmod = 0;
- flags = 0;
- rep = 0;
-
- while ((ch = getopt(argc, argv, "acelm:oTt:u:wx:z:")) != -1) {
+ int ch;
+
+ while ((ch = getopt(argc, argv, opt)) != -1) {
switch (ch) {
case 'a':
flags |= CVS_HF_A;
@@ -127,8 +128,6 @@ cvs_history(int argc, char **argv)
break;
case 'x':
rep++;
- for (cp = optarg; *cp != '\0'; cp++) {
- }
break;
case 'z':
zone = optarg;
@@ -145,55 +144,36 @@ cvs_history(int argc, char **argv)
} else if (rep == 0)
flags |= CVS_HF_O; /* use -o as default */
- root = cvsroot_get(".");
- if (root == NULL) {
- 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) {
- cvs_history_print(hent);
- }
- cvs_hist_close(hp);
- } else {
- if (cvs_connect(root) < 0)
- return (EX_PROTOCOL);
+ *arg = optind;
+ return (0);
+}
- if ((flags & CVS_HF_C) && (cvs_sendarg(root, "-c", 0) < 0))
- return (EX_PROTOCOL);
+int
+cvs_history_sendflags(struct cvsroot *root)
+{
- if ((flags & CVS_HF_O) && (cvs_sendarg(root, "-o", 0) < 0))
- return (EX_PROTOCOL);
+ if ((flags & CVS_HF_C) && (cvs_sendarg(root, "-c", 0) < 0))
+ return (EX_PROTOCOL);
- if (tag != NULL) {
- if ((cvs_sendarg(root, "-t", 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 ((flags & CVS_HF_O) && (cvs_sendarg(root, "-o", 0) < 0))
+ return (EX_PROTOCOL);
- if ((cvs_sendarg(root, "-z", 0) < 0) ||
- (cvs_sendarg(root, zone, 0) < 0))
+ if (tag != NULL) {
+ if ((cvs_sendarg(root, "-t", 0) < 0) ||
+ (cvs_sendarg(root, tag, 0) < 0))
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);
}
+ if ((cvs_sendarg(root, "-z", 0) < 0) ||
+ (cvs_sendarg(root, zone, 0) < 0))
+ return (EX_PROTOCOL);
+
return (0);
}