This is the mail archive of the cygwin 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]
Other format: [Raw text]

Re: Patch and Cygwin


Eli Zaretskii wrote:

The result is that the only option that seems to be able to handle the mix of line endings is Cygwin using DOS line endings with patch 2.5.9. (The only thing that did not work was preservation of line endings in the patched file, but that seems to be a small problem here.)

To see more of the result see here: http://ourcomments.org/GNU/patchcrlf/readme.txt



I don't use Cygwin, but I tried your tests with the GnuWin32 ports of Diff and Patch (and `cat' from GnuWin32 port of Coreutils), and the tests worked for me as I expected. Here are the results:

   D:\gnu\patches>gnuwin32-test.cmd
   D:\gnu\patches\tempGNUWIN32

   D:/usr/bin/diff.EXE
   D:/usr/bin/patch.EXE

   patching file file-lf.txt
   patching file file-cr-lf.txt

   **** PATCHED file-cr-lf.txt: ********
   This is a test comparing two files^M
   with different line endings.^M
   the name of this file is file-lf.txt^M
   and it has lf line ending.^M
   No this is diffed against the other file^M
   using GnuWin32 diff.^M

   **** PATCHED file-lf.txt: ***********
   This is a test comparing two files^M
   with different line endings.^M
   the name of this file is file-cr-lf.txt^M
   and it has cr-lf line ending.^M
   No this is diffed against the other file^M
   using GnuWin32 diff.^M

   **** THE PATCH: ***********
   3,4c3,4^M
   < the name of this file is file-lf.txt^M
   < and it has lf line ending.^M
   ---^M
   > the name of this file is file-cr-lf.txt^M
   > and it has cr-lf line ending.^M

D:\gnu\patches>

I think this is the result you expected. Is that true?


I think so. The file file-lf.txt has CRLF line endings after patching, otherwise everything is fine. But this is just one of the tests for GnuWin32. Please run all-cmd-tests.cmd and then checkresults.sh (in whatever sh you have).

If you wanted the patched file-lf.txt to retain its Unix-style EOL
format, then gnuwun32-test.cmd should be modified to say

patch --binary file-lf.txt temp.diff

instead of

patch file-lf.txt temp.diff

and then Patch will remove the CR characters from the patch file
temp.diff and produce a LF-only EOLs:


Thanks for the suggestion, but maybe you are misunderstanding me. I want this to work for all the test cases, not just for one of them.

The files on your site indicate that the GnuWin32 test failed, but I
think this is because you used a port of Diff that is not the GnuWin32
port.


Why do you think that? I have written in the readme.txt file what version of diff I believe am using. I have tried to be rather careful here.

If you run all-cmd-tests.cmd and then checkresults.sh do you get different results from those I got?

(Btw, when I downloaded file-cr-lf.txt from your site by
right-clicking on it and selecting "Save target as...", it wound up on
my machine with Unix-style LF-only EOLs. So I'm afraid some people
that will try your tests might get incorrect results if they are not
careful enough to convert file-cr-lf.txt to DOS EOL format first.
Caveat emptor!)


Oh thanks! I forgot to upload this file as binary.

In the sh-tests I have added tests for line ending style for file-cr-lf.txt and file-lf.txt. I will find out a way to do that for the GnuWin32 tests too.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


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