This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: patch problem with forward/backward slashes in patch file


On Wed, 7 Mar 2001 11:15:25 -0500, Christopher Faylor wrote:

>On Wed, Mar 07, 2001 at 12:19:29AM -0800, David Rees wrote:
>>First of all the "-d ." in my call is redundant. I had been using it
>>for testing, but feel free to ignore it in tracking down the problem.
>>
>>Also, as I hope I implied (but didn't say) in my previous email,
>>altering the diff file to use backward slashes as follows also causes
>>patch to run fine:
>>|--- src\testcases\org\apache\tools\ant\taskdefs\ZipTest.java   2001/03/02 16:01:01     1.3
>>|+++ src\testcases\org\apache\tools\ant\taskdefs\ZipTest.java   2001/03/07 00:11:39
>
>Yeah, you've changed the paths into a format that patch doesn't really
>understand, so it just applies the patch to the current directory.
>Patch has no idea that '\' is a directory separator.  On Unix, it's a
>valid filename character.  However, when this "filename" reaches the
>Windows API layour, Windows will translate it into a relative path so
>things will "work".
>

Your explanation makes sense, but shouldn't it be using the cygwin DLL
to recognize that its directory path? Its obviously using the cygwin
DLL to access the file.

>>All this said, using "-p0" or "-p" solves the problem. However, from
>>my understanding, patch should do -p0 by default since its a relative
>>directory. So what I think seems to be happening is that patch doesn't
>>recognize a relative path inside a patch file as relative if it uses
>>forward slashes.
>
>Your understanding is incorrect.  Patch does not default to -p0 by
>default.  Not supplying -pN on the command line is a common cockpit
>error when attempting to apply a patch.  There is nothing strange going
>on here besides the fact that you didn't supply -p0 on the command
>line.
>

This is from the diffutils manual:
"By default, patch strips off all leading directories, leaving just
the base file names, except that when a file name given in the patch
is a relative file name and all of its leading directories already
exist, patch does not strip off the leading directory. (A relative
file name is one that does not start with a slash.) "

http://www.delorie.com/gnu/docs/diffutils/diff_77.html

Of course, the patch manual doesn't mention what it does for relative
vs. absolute files at all.

Maybe its a version issue? Anyway, the obvious solution is always use
-p0.

thanks for the info,

dave

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]