Subject: bug#26028: 26.0.50; epatch for multifile patches

From: Eli Zaretskii <[email-masked]>
Date: Wed, 08 Mar 2017 21:17:12 +0200

> From: Arseny Sher <[email-masked]>
> Date: Wed, 08 Mar 2017 20:29:52 +0300
> 
> ars@ars-thinkpad ~/tmp $ mkdir -p old/src
> ars@ars-thinkpad ~/tmp $ echo "void main() { }" > old/src/hello.c
> ars@ars-thinkpad ~/tmp $ mkdir -p new/src
> ars@ars-thinkpad ~/tmp $ echo "int main() { return 0; }" > new/src/hello.c
> ars@ars-thinkpad ~/tmp $ diff -cr old/ new/ > tmp.patch
> ars@ars-thinkpad ~/tmp $ cat tmp.patch
> diff -cr old/src/hello.c new/src/hello.c
> *** old/src/hello.c	2017-03-08 14:29:24.743846995 +0300
> --- new/src/hello.c	2017-03-08 14:29:32.399846824 +0300
> ***************
> *** 1 ****
> ! void main() { }
> --- 1 ----
> ! int main() { return 0; }
> 
> 
> Now I start emacs and do M-x epatch. First of all, it asks me for
> patch buffer or file, I point to '~/tmp/tmp.patch'. Then it asks for
> directory to patch, I say '~/tmp/old' and ediff complains
> 
> Ediff has inferred that
> 	/home/ars/tmp/old/hello.c
> is assumed to be the target for this patch.  However, this file does not exist.

I think you should point it to ~/tmp, not ~/tmp/old.  IOW, the
directory should be the one relative to which the file names in the
patch file will correctly point to the files.