When editing the series file with certain editors, it is possible that
no trailing newline character is present on the last line. In such
case, adding a new patch at the end of the series would corrupt the
series file. Prevent that by ensuring that a newline character is
always present.

This fixes the second issue reported in bug #54295:
https://savannah.nongnu.org/bugs/?54295

Signed-off-by: Jean Delvare <[email protected]>
---
 quilt/scripts/patchfns.in |    7 +++++++
 test/missing-newline.test |   22 ++++++++++++++++++++++
 2 files changed, 29 insertions(+)

--- quilt.orig/quilt/scripts/patchfns.in        2018-10-04 11:40:43.162325693 
+0200
+++ quilt/quilt/scripts/patchfns.in     2018-10-04 11:41:28.170856471 +0200
@@ -258,6 +258,13 @@ insert_in_series()
                if [ -e "$SERIES" ]
                then
                        cat "$SERIES" > $tmpfile
+
+                       # Ensure there is a trailing newline before we append 
the rest
+                       last_char=$(tail -c 1 "$tmpfile")
+                       if ! [ -z "$last_char" -o "$last_char" = $'\n' -o 
"$last_char" = $'\r' ]
+                       then
+                               echo "" >> $tmpfile
+                       fi
                fi
                echo "$patch$patch_args" >> $tmpfile
        fi
--- /dev/null   1970-01-01 00:00:00.000000000 +0000
+++ quilt/test/missing-newline.test     2018-10-04 11:41:32.420906613 +0200
@@ -0,0 +1,22 @@
+$ mkdir patches
+
+$ echo foo > foo
+$ quilt new 1.patch
+> Patch %{P}1.patch is now on top
+
+$ quilt add foo
+> File foo added to patch %{P}1.patch
+
+$ echo bar > foo
+$ quilt refresh -p ab
+> Refreshed patch %{P}1.patch
+
+# Sabotage the series file
+$ echo -n 1.patch > patches/series
+
+# quilt should insert the missing newline before appending
+$ quilt new 2.patch
+> Patch %{P}2.patch is now on top
+$ cat patches/series
+> 1.patch
+> 2.patch


-- 
Jean Delvare
SUSE L3 Support

_______________________________________________
Quilt-dev mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/quilt-dev

Reply via email to