Skip to content

patch.py adds extra newline at EOF #50

@nils-ballmann

Description

@nils-ballmann

I have observed that patch.py adds an extra newline at the end of the patched file even though the unified patch doesn't alter the line at all.

I know it is good behavior on Linux to have a newline at the end of the file. Some C/C++ coding standards make this even mandatory. But with PHP and some other web technologies, there are strong reasons to NOT have a newline at the end of the file, as it may result in undesired additional newline output to the client, possibly breaking everything.

Small example for illustration, including [LF] as newline ('\n') and [EOF] as the end of the file.

original file (old/test.php):

<?php[LF]
[LF]
echo "<html><title>asdf</title><body>asdf</body></html>";[LF]
[LF]
?>[EOF]

with patch file (without [LF] and [EOF], generated via diff -Naur old/test.php new/test.php > test.php.patch):

--- old/test.php	2017-03-29 11:19:36.103349100 +0200
+++ new/test.php	2017-03-29 11:20:16.270349100 +0200
@@ -1,5 +1,5 @@
 <?php
 
-echo "<html><title>asdf</title><body>asdf</body></html>";
+echo "<html><title>A real title</title><body>A real body</body></html>";
 
 ?>
\ No newline at end of file

becomes:

<?php[LF]
[LF]
echo "<html><title>A real title</title><body>A real body</body></html>";[LF]
[LF]
?>[LF][EOF]

but should be (new/test.php):

<?php[LF]
[LF]
echo "<html><title>A real title</title><body>A real body</body></html>";[LF]
[LF]
?>[EOF]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions