#
ensure_single_trailing_newline()
{
- f=$1
-
- # Remove newlines at end of file
- # Check that the current line only contains newlines
- # If it doesn't match, print it
- # If it does match and we're not at the end of the file,
- # append the next line to the current line and repeat the check
- # If it does match and we're at the end of the file,
- # remove the line.
- sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba' $f >$f.tmpi
-
- # Then add a newline to the end of the file
- # '$' denotes the end of file
- # 'a\' appends the following text (which in this case is nothing)
- # on a new line
- sed -e '$a\' $f.tmpi >$f.tmp
-
- diff -q $f $f.tmp >/dev/null || mv $f.tmp $f
- rm -f $f.tmp $f.tmpi
+ file="${1}"
+
+ if test $(tail -c1 "$file") ; then
+ echo '' >> "$file"
+ fi
}
export -f ensure_single_trailing_newline