Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Sep 2013 18:00:45 +0000 (UTC)
From:      Xin LI <delphij@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r255894 - head/usr.bin/patch
Message-ID:  <201309261800.r8QI0jVS077595@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: delphij
Date: Thu Sep 26 18:00:45 2013
New Revision: 255894
URL: http://svnweb.freebsd.org/changeset/base/255894

Log:
  Improve bsdpatch usability:
  
   - Ask only once for "Apply anyway". [1]
   - Tell user what file have failed patch rather than just how
     many hunks failed.
  
  Reported by:	jmg via pfg [1]
  Tested by:	pfg [1]
  Approved by:	re (gjb)

Modified:
  head/usr.bin/patch/patch.c
  head/usr.bin/patch/util.c

Modified: head/usr.bin/patch/patch.c
==============================================================================
--- head/usr.bin/patch/patch.c	Thu Sep 26 17:55:36 2013	(r255893)
+++ head/usr.bin/patch/patch.c	Thu Sep 26 18:00:45 2013	(r255894)
@@ -145,7 +145,7 @@ int
 main(int argc, char *argv[])
 {
 	int	error = 0, hunk, failed, i, fd;
-	bool	patch_seen;
+	bool	patch_seen, reverse_seen;
 	LINENUM	where = 0, newwhere, fuzz, mymaxfuzz;
 	const	char *tmpdir;
 	char	*v;
@@ -247,6 +247,7 @@ main(int argc, char *argv[])
 		/* apply each hunk of patch */
 		hunk = 0;
 		failed = 0;
+		reverse_seen = false;
 		out_of_mem = false;
 		while (another_hunk()) {
 			hunk++;
@@ -257,7 +258,7 @@ main(int argc, char *argv[])
 			if (!skip_rest_of_patch) {
 				do {
 					where = locate_hunk(fuzz);
-					if (hunk == 1 && where == 0 && !force) {
+					if (hunk == 1 && where == 0 && !force && !reverse_seen) {
 						/* dwim for reversed patch? */
 						if (!pch_swap()) {
 							if (fuzz == 0)
@@ -293,6 +294,8 @@ main(int argc, char *argv[])
 								ask("Apply anyway? [n] ");
 								if (*buf != 'y')
 									skip_rest_of_patch = true;
+								else
+									reverse_seen = true;
 								where = 0;
 								reverse = !reverse;
 								if (!pch_swap())
@@ -406,8 +409,8 @@ main(int argc, char *argv[])
 				say("%d out of %d hunks %s--saving rejects to %s\n",
 				    failed, hunk, skip_rest_of_patch ? "ignored" : "failed", rejname);
 			else
-				say("%d out of %d hunks %s\n",
-				    failed, hunk, skip_rest_of_patch ? "ignored" : "failed");
+				say("%d out of %d hunks %s while patching %s\n",
+				    failed, hunk, skip_rest_of_patch ? "ignored" : "failed", filearg[0]);
 			if (!check_only && move_file(TMPREJNAME, rejname) < 0)
 				trejkeep = true;
 		}

Modified: head/usr.bin/patch/util.c
==============================================================================
--- head/usr.bin/patch/util.c	Thu Sep 26 17:55:36 2013	(r255893)
+++ head/usr.bin/patch/util.c	Thu Sep 26 18:00:45 2013	(r255894)
@@ -412,7 +412,7 @@ checked_in(char *file)
 void
 version(void)
 {
-	fprintf(stderr, "patch 2.0-12u9 FreeBSD\n");
+	fprintf(stderr, "patch 2.0-12u10 FreeBSD\n");
 	my_exit(EXIT_SUCCESS);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201309261800.r8QI0jVS077595>