Add support for diffs generated by Perforce.

It basically picks the filenames from the "====" line and strips off the
# revision number.
This commit is contained in:
Ed Schouten 2009-08-23 12:23:24 +00:00
parent 5d5535163a
commit 69eb6d71d0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=196459

View File

@ -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 &&