Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Aug 2009 12:23:25 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r196459 - head/gnu/usr.bin/patch
Message-ID:  <200908231223.n7NCNPqd060679@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ed
Date: Sun Aug 23 12:23:24 2009
New Revision: 196459
URL: http://svn.freebsd.org/changeset/base/196459

Log:
  Add support for diffs generated by Perforce.
  
  It basically picks the filenames from the "====" line and strips off the
  # revision number.

Modified:
  head/gnu/usr.bin/patch/pch.c

Modified: head/gnu/usr.bin/patch/pch.c
==============================================================================
--- head/gnu/usr.bin/patch/pch.c	Sun Aug 23 11:33:46 2009	(r196458)
+++ head/gnu/usr.bin/patch/pch.c	Sun Aug 23 12:23:24 2009	(r196459)
@@ -211,6 +211,25 @@ there_is_another_patch(void)
 	return TRUE;
 }
 
+static char *
+p4_savestr(char *str)
+{
+	char *t, *h;
+
+	/* Leading whitespace. */
+	while (isspace((unsigned char)*str))
+		str++;
+
+	/* Remove the file revision number. */
+	for (t = str, h = NULL; *t != '\0' && !isspace((unsigned char)*t); t++)
+		if (*t == '#')
+			h = t;
+	if (h != NULL)
+		*h = '\0';
+
+	return savestr(str);
+}
+
 /*
  * Determine what kind of diff is in the remaining part of the patch file.
  */
@@ -298,6 +317,11 @@ intuit_diff_type(void)
 				free(revision);
 				revision = Nullch;
 			}
+		} else if (strnEQ(s, "==== ", 5)) {
+			/* Perforce-style diffs. */
+			if ((t = strstr(s + 5, " - ")) != NULL)
+				newtmp = p4_savestr(t + 3);
+			oldtmp = p4_savestr(s + 5);
 		}
 		if ((!diff_type || diff_type == ED_DIFF) &&
 		    first_command_line >= 0L &&



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