summaryrefslogtreecommitdiff
path: root/usr.bin/rcs/rcsdiff.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/rcs/rcsdiff.c')
-rw-r--r--usr.bin/rcs/rcsdiff.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/usr.bin/rcs/rcsdiff.c b/usr.bin/rcs/rcsdiff.c
index b0890fcd5c1..b40082dba7f 100644
--- a/usr.bin/rcs/rcsdiff.c
+++ b/usr.bin/rcs/rcsdiff.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rcsdiff.c,v 1.17 2005/11/21 16:20:29 xsa Exp $ */
+/* $OpenBSD: rcsdiff.c,v 1.18 2005/11/22 15:00:06 xsa Exp $ */
/*
* Copyright (c) 2005 Joris Vink <joris@openbsd.org>
* All rights reserved.
@@ -40,6 +40,8 @@
static int rcsdiff_file(RCSFILE *, RCSNUM *, const char *);
static int rcsdiff_rev(RCSFILE *, RCSNUM *, RCSNUM *, const char *);
+static int kflag = RCS_KWEXP_ERR;
+
int
rcsdiff_main(int argc, char **argv)
{
@@ -54,12 +56,21 @@ rcsdiff_main(int argc, char **argv)
strlcpy(diffargs, "diff", sizeof(diffargs));
- while ((ch = rcs_getopt(argc, argv, "cnqr:uVx:")) != -1) {
+ while ((ch = rcs_getopt(argc, argv, "ck:nqr:uVx:")) != -1) {
switch (ch) {
case 'c':
strlcat(diffargs, " -c", sizeof(diffargs));
diff_format = D_CONTEXT;
break;
+ case 'k':
+ kflag = rcs_kflag_get(rcs_optarg);
+ if (RCS_KWEXP_INVAL(kflag)) {
+ cvs_log(LP_ERR,
+ "invalid RCS keyword expansion mode");
+ (usage)();
+ exit(1);
+ }
+ break;
case 'n':
strlcat(diffargs, " -n", sizeof(diffargs));
diff_format = D_RCSDIFF;
@@ -118,8 +129,8 @@ rcsdiff_main(int argc, char **argv)
frev = rev;
if (verbose == 1) {
- printf("%s\n", RCS_DIFF_DIV);
- printf("RCS file: %s\n", fpath);
+ fprintf(stderr, "%s\n", RCS_DIFF_DIV);
+ fprintf(stderr, "RCS file: %s\n", fpath);
}
diff_file = argv[i];
@@ -148,7 +159,7 @@ void
rcsdiff_usage(void)
{
fprintf(stderr,
- "usage: rcsdiff [-cnquV] [-rrev1 [-rrev2]] file ...\n");
+ "usage: rcsdiff [-cnquV] [-kmode] [-rrev1 [-rrev2]] file ...\n");
}
static int
@@ -166,8 +177,8 @@ rcsdiff_file(RCSFILE *rfp, RCSNUM *rev, const char *filename)
rcsnum_tostr(rev, rbuf, sizeof(rbuf));
if (verbose == 1) {
- printf("retrieving revision %s\n", rbuf);
- printf("%s -r%s %s\n", diffargs, rbuf, filename);
+ fprintf(stderr, "retrieving revision %s\n", rbuf);
+ fprintf(stderr, "%s -r%s %s\n", diffargs, rbuf, filename);
}
if ((b1 = rcs_getrev(rfp, rev)) == NULL) {
@@ -225,7 +236,7 @@ rcsdiff_rev(RCSFILE *rfp, RCSNUM *rev1, RCSNUM *rev2, const char *filename)
rcsnum_tostr(rev2, rbuf2, sizeof(rbuf2));
if (verbose == 1)
- printf("retrieving revision %s\n", rbuf2);
+ fprintf(stderr, "retrieving revision %s\n", rbuf2);
if ((b2 = rcs_getrev(rfp, rev2)) == NULL) {
cvs_log(LP_ERR, "failed to retrieve revision");
@@ -233,7 +244,8 @@ rcsdiff_rev(RCSFILE *rfp, RCSNUM *rev1, RCSNUM *rev2, const char *filename)
}
if (verbose == 1)
- printf("%s -r%s -r%s %s\n", diffargs, rbuf1, rbuf2, filename);
+ fprintf(stderr,
+ "%s -r%s -r%s %s\n", diffargs, rbuf1, rbuf2, filename);
strlcpy(path1, rcs_tmpdir, sizeof(path1));
strlcat(path1, "/diff1.XXXXXXXXXX", sizeof(path1));