From c01ab2b89f9bb6c3cadec364bc9c6eb1333cc34f Mon Sep 17 00:00:00 2001 From: tb Date: Wed, 20 Dec 2017 21:08:06 +0000 Subject: [PATCH] Fix adding and removing files with git-style a/ b/ diffs: only skip six letters if they actually match "--- a/" and "+++ b/" instead of laxer checks. ok tom, tedu, millert --- usr.bin/patch/pch.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/usr.bin/patch/pch.c b/usr.bin/patch/pch.c index cc9047cfa8c..539754d814b 100644 --- a/usr.bin/patch/pch.c +++ b/usr.bin/patch/pch.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pch.c,v 1.58 2017/05/30 06:55:40 florian Exp $ */ +/* $OpenBSD: pch.c,v 1.59 2017/12/20 21:08:06 tb Exp $ */ /* * patch - a program to apply diffs to original files @@ -301,14 +301,16 @@ intuit_diff_type(void) &names[OLD_FILE].exists, strippath); else if (strnEQ(s, "--- ", 4)) { size_t off = 4; - if (piece_of_git && strippath == 957) + if (piece_of_git && strippath == 957 && + strnEQ(s, "--- a/", 6)) off = 6; names[NEW_FILE].path = fetchname(s + off, &names[NEW_FILE].exists, strippath); } else if (strnEQ(s, "+++ ", 4)) { /* pretend it is the old name */ size_t off = 4; - if (piece_of_git && strippath == 957) + if (piece_of_git && strippath == 957 && + strnEQ(s, "+++ b/", 6)) off = 6; names[OLD_FILE].path = fetchname(s + off, &names[OLD_FILE].exists, strippath); -- 2.20.1