patch command doesn't respect "\ No newline at end of file"
Bryan Green
bryan at aetheros.com
Thu Jan 12 23:17:44 UTC 2023
The busybox version of the patch command is not handling patches correctly
which end with "\ No newline at end of file".
If the patch is from a file with a newline to one without, the patch
command "succeeds" but does not remove the newline.
If the patch is from a file without a newline to one with a newline, the
patch command fails with a "Hunk ... FAILED" error.
I'm using busybox v1.23.2, but I don't see any source code changes since
then that would affect this behavior.
Here is a log to show how I reproduced the issue.
# echo -n line > nonewline
/data # hexdump -Cv nonewline
00000000 6c 69 6e 65 |line|
00000004
# echo line > withnewline
# hexdump -Cv withnewline
00000000 6c 69 6e 65 0a |line.|
00000005
# diff withnewline nonewline > rmnewline.patch
# cat rmnewline.patch
--- withnewline
+++ nonewline
@@ -1 +1 @@
-line
+line
\ No newline at end of file
# cp withnewline withnewline.tmp
# patch withnewline.tmp rmnewline.patch
patching file withnewline.tmp
# hexdump -Cv withnewline.tmp
00000000 6c 69 6e 65 0a |line.|
00000005
/data # diff nonewline withnewline > addnewline.patch
/data # cat addnewline.patch
--- nonewline
+++ withnewline
@@ -1 +1 @@
-line
\ No newline at end of file
+line
/data # cp nonewline nonewline.tmp
/data # patch nonewline.tmp addnewline.patch
patching file nonewline.tmp
Hunk 1 FAILED 1/1.
-line
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20230112/116601f3/attachment.html>
More information about the busybox
mailing list