summaryrefslogtreecommitdiffstats
path: root/usr.bin/cvs/diff.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2010-07-28 21:19:30 +0000
committernicm <nicm@openbsd.org>2010-07-28 21:19:30 +0000
commit72026f1ae0ba0d183d8acb0dfd804d7cdfa7b45e (patch)
tree22be5f0174528759b848c8af6f9ce7bbec876c68 /usr.bin/cvs/diff.c
parentthe default pciide chip needs no additional register restores; tested by jcs on one model (diff)
downloadwireguard-openbsd-72026f1ae0ba0d183d8acb0dfd804d7cdfa7b45e.tar.xz
wireguard-openbsd-72026f1ae0ba0d183d8acb0dfd804d7cdfa7b45e.zip
Support -U and -C to specify the context length for "cvs diff".
This doesn't alter cvs rdiff, where -U and -C are not support by GNU cvs. ok sthen zinovik
Diffstat (limited to 'usr.bin/cvs/diff.c')
-rw-r--r--usr.bin/cvs/diff.c35
1 files changed, 31 insertions, 4 deletions
diff --git a/usr.bin/cvs/diff.c b/usr.bin/cvs/diff.c
index 4900eda2b32..a9ee2ab448f 100644
--- a/usr.bin/cvs/diff.c
+++ b/usr.bin/cvs/diff.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: diff.c,v 1.157 2010/07/23 21:46:05 ray Exp $ */
+/* $OpenBSD: diff.c,v 1.158 2010/07/28 21:19:30 nicm Exp $ */
/*
* Copyright (c) 2008 Tobias Stoeckmann <tobias@openbsd.org>
* Copyright (c) 2006 Joris Vink <joris@openbsd.org>
@@ -49,7 +49,7 @@ struct cvs_cmd cvs_cmd_diff = {
"Show differences between revisions",
"[-abcdilNnpRuw] [[-D date] [-r rev] [-D date2 | -r rev2]] "
"[-k mode] [file ...]",
- "abcfdD:ik:lNnpr:Ruw",
+ "abcfC:dD:ik:lNnpr:RuU:w",
NULL,
cvs_diff
};
@@ -70,6 +70,7 @@ cvs_diff(int argc, char **argv)
{
int ch, flags;
char *arg = ".";
+ const char *errstr;
struct cvs_recursion cr;
flags = CR_RECURSE_DIRS;
@@ -91,6 +92,14 @@ cvs_diff(int argc, char **argv)
strlcat(diffargs, " -c", sizeof(diffargs));
diff_format = D_CONTEXT;
break;
+ case 'C':
+ diff_context = strtonum(optarg, 0, INT_MAX, &errstr);
+ if (errstr != NULL)
+ fatal("context lines %s: %s", errstr, optarg);
+ strlcat(diffargs, " -C ", sizeof(diffargs));
+ strlcat(diffargs, optarg, sizeof(diffargs));
+ diff_format = D_CONTEXT;
+ break;
case 'd':
strlcat(diffargs, " -d", sizeof(diffargs));
dflags |= D_MINIMAL;
@@ -161,6 +170,14 @@ cvs_diff(int argc, char **argv)
strlcat(diffargs, " -u", sizeof(diffargs));
diff_format = D_UNIFIED;
break;
+ case 'U':
+ diff_context = strtonum(optarg, 0, INT_MAX, &errstr);
+ if (errstr != NULL)
+ fatal("context lines %s: %s", errstr, optarg);
+ strlcat(diffargs, " -U ", sizeof(diffargs));
+ strlcat(diffargs, optarg, sizeof(diffargs));
+ diff_format = D_UNIFIED;
+ break;
case 'V':
fatal("the -V option is obsolete "
"and should not be used");
@@ -209,13 +226,23 @@ cvs_diff(int argc, char **argv)
switch (diff_format) {
case D_CONTEXT:
- cvs_client_send_request("Argument -c");
+ if (cvs_cmdop == CVS_OP_RDIFF)
+ cvs_client_send_request("Argument -c");
+ else {
+ cvs_client_send_request("Argument -C %d",
+ diff_context);
+ }
break;
case D_RCSDIFF:
cvs_client_send_request("Argument -n");
break;
case D_UNIFIED:
- cvs_client_send_request("Argument -u");
+ if (cvs_cmdop == CVS_OP_RDIFF)
+ cvs_client_send_request("Argument -u");
+ else {
+ cvs_client_send_request("Argument -U %d",
+ diff_context);
+ }
break;
default:
break;