=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/history.c,v retrieving revision 1.8 retrieving revision 1.9 diff -c -r1.8 -r1.9 *** src/usr.bin/cvs/history.c 2005/02/28 20:45:07 1.8 --- src/usr.bin/cvs/history.c 2005/03/30 17:43:04 1.9 *************** *** 1,4 **** ! /* $OpenBSD: history.c,v 1.8 2005/02/28 20:45:07 joris Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: history.c,v 1.9 2005/03/30 17:43:04 joris Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. *************** *** 55,89 **** #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 *); - extern char *__progname; ! /* ! * cvs_history() ! * ! * Handle the `cvs history' command. ! */ int ! cvs_history(int argc, char **argv) { ! 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) { switch (ch) { case 'a': flags |= CVS_HF_A; --- 55,90 ---- #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]; ! int ! cvs_history_options(char *opt, int argc, char **argv, int *arg) { ! int ch; ! while ((ch = getopt(argc, argv, opt)) != -1) { switch (ch) { case 'a': flags |= CVS_HF_A; *************** *** 127,134 **** break; case 'x': rep++; - for (cp = optarg; *cp != '\0'; cp++) { - } break; case 'z': zone = optarg; --- 128,133 ---- *************** *** 145,198 **** } 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); ! if ((flags & CVS_HF_C) && (cvs_sendarg(root, "-c", 0) < 0)) ! return (EX_PROTOCOL); ! if ((flags & CVS_HF_O) && (cvs_sendarg(root, "-o", 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 ((cvs_sendarg(root, "-z", 0) < 0) || ! (cvs_sendarg(root, zone, 0) < 0)) return (EX_PROTOCOL); ! if (cvs_sendreq(root, CVS_REQ_HISTORY, NULL) < 0) return (EX_PROTOCOL); } return (0); } --- 144,178 ---- } else if (rep == 0) flags |= CVS_HF_O; /* use -o as default */ ! *arg = optind; ! return (0); ! } ! int ! cvs_history_sendflags(struct cvsroot *root) ! { ! if ((flags & CVS_HF_C) && (cvs_sendarg(root, "-c", 0) < 0)) ! return (EX_PROTOCOL); ! if ((flags & CVS_HF_O) && (cvs_sendarg(root, "-o", 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 ((cvs_sendarg(root, "-z", 0) < 0) || + (cvs_sendarg(root, zone, 0) < 0)) + return (EX_PROTOCOL); return (0); }