diff options
author | Ray Lai <ray@cvs.openbsd.org> | 2006-05-05 01:30:00 +0000 |
---|---|---|
committer | Ray Lai <ray@cvs.openbsd.org> | 2006-05-05 01:30:00 +0000 |
commit | 33fade9e1ab2b17b91558c27d469d81de39591a4 (patch) | |
tree | 93b3ae1db4b3789af03122b36b67aa0a7f58e424 | |
parent | 279bf209f80fbecedcda6ea0adb0f03d4a65d2bc (diff) |
o GNU ci returns 0 when a file is reverted (co -l file; ci file).
o Don't unlock file after revert.
o Fix spelling.
Passes extra tests in GNU rcstest.
OK niallo@.
-rw-r--r-- | regress/usr.bin/rcs/Makefile | 11 | ||||
-rw-r--r-- | usr.bin/rcs/ci.c | 14 | ||||
-rw-r--r-- | usr.bin/rcs/co.c | 11 |
3 files changed, 22 insertions, 14 deletions
diff --git a/regress/usr.bin/rcs/Makefile b/regress/usr.bin/rcs/Makefile index 490d36b2553..e8c331fd782 100644 --- a/regress/usr.bin/rcs/Makefile +++ b/regress/usr.bin/rcs/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.30 2006/05/05 01:11:37 ray Exp $ +# $OpenBSD: Makefile,v 1.31 2006/05/05 01:29:59 ray Exp $ # Regression tests by Niall O'Higgins <niallo@openbsd.org>. # ksh -> Makefile by Ray Lai <ray@cyth.net>. @@ -64,6 +64,7 @@ LTESTS= ci-initial \ rcs-iflag \ rlog-lflag \ ci-nofile \ + ci-revert \ #ci-keywords \ .for t in ${LTESTS} @@ -545,6 +546,14 @@ test-rlog-zflag: clean test-ci-nofile: @${CI} -q nonexistent || case "$$?" in 1) exit 0;; esac && exit 1 +test-ci-revert: clean + @mkdir RCS + @touch file + @echo . | ${CI} -q -l file + @${CI} -q -mm -l file + @# Make sure reverting doesn't unlock file. + @${CI} -q -mm -l file + test-ci-keywords: clean @mkdir RCS @sed 's/.*/$$&$$/' ${.CURDIR}/keywords.in > file diff --git a/usr.bin/rcs/ci.c b/usr.bin/rcs/ci.c index cbadf6db726..e7c2ad10fad 100644 --- a/usr.bin/rcs/ci.c +++ b/usr.bin/rcs/ci.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ci.c,v 1.168 2006/05/04 07:06:58 xsa Exp $ */ +/* $OpenBSD: ci.c,v 1.169 2006/05/05 01:29:59 ray Exp $ */ /* * Copyright (c) 2005, 2006 Niall O'Higgins <niallo@openbsd.org> * All rights reserved. @@ -508,7 +508,7 @@ checkin_update(struct checkin_params *pb) */ if (!(pb->flags & FORCE) && (strlen(pb->deltatext) < 1)) { checkin_revert(pb); - goto fail; + goto out; } /* If no log message specified, get it interactively. */ @@ -567,8 +567,6 @@ checkin_update(struct checkin_params *pb) pb->file->rf_mode = st.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH|S_IRUSR|S_IRGRP|S_IROTH); - xfree(pb->deltatext); - xfree(filec); (void)close(workfile_fd); (void)unlink(pb->filename); @@ -585,6 +583,11 @@ checkin_update(struct checkin_params *pb) xfree(pb->rcs_msg); pb->rcs_msg = NULL; } + +out: + xfree(pb->deltatext); + xfree(filec); + return (0); fail: @@ -781,9 +784,6 @@ checkin_revert(struct checkin_params *pb) if ((pb->flags & CO_LOCK) || (pb->flags & CO_UNLOCK)) checkout_rev(pb->file, pb->frev, pb->filename, pb->flags, pb->username, pb->author, NULL, NULL); - if (rcs_lock_remove(pb->file, pb->username, pb->frev) < 0) - if (rcs_errno != RCS_ERR_NOENT) - warnx("failed to remove lock"); } /* diff --git a/usr.bin/rcs/co.c b/usr.bin/rcs/co.c index 20d9e83fb17..6cd15e1245d 100644 --- a/usr.bin/rcs/co.c +++ b/usr.bin/rcs/co.c @@ -1,4 +1,4 @@ -/* $OpenBSD: co.c,v 1.87 2006/04/29 05:31:28 ray Exp $ */ +/* $OpenBSD: co.c,v 1.88 2006/05/05 01:29:59 ray Exp $ */ /* * Copyright (c) 2005 Joris Vink <joris@openbsd.org> * All rights reserved. @@ -231,7 +231,7 @@ checkout_usage(void) /* * Checkout revision <rev> from RCSFILE <file>, writing it to the path <dst> - * Currenly recognised <flags> are CO_LOCK, CO_UNLOCK and CO_REVDATE. + * Currently recognised <flags> are CO_LOCK, CO_UNLOCK and CO_REVDATE. * * Looks up revision based upon <lockname>, <author>, <state> and <date> * @@ -349,9 +349,6 @@ checkout_rev(RCSFILE *file, RCSNUM *frev, const char *dst, int flags, !(flags & CO_REVERT) && file->rf_ndelta != 0) printf("revision %s", buf); - if (!(flags & QUIET) && (flags & CO_REVERT)) - printf("done"); - if (file->rf_ndelta != 0) { if ((bp = rcs_getrev(file, rev)) == NULL) { warnx("cannot find revision `%s'", buf); @@ -424,7 +421,9 @@ checkout_rev(RCSFILE *file, RCSNUM *frev, const char *dst, int flags, warnx("no revisions, so nothing can be %s", (flags & CO_LOCK) ? "locked" : "unlocked"); } else if (file->rf_ndelta != 0) { - if (!(flags & QUIET) && !(flags & NEWFILE)) + /* XXX - Not a good way to detect if a newline is needed. */ + if (!(flags & QUIET) && !(flags & NEWFILE) && + !(flags & CO_REVERT)) printf("\n"); } |