Guarantee a trailing newline when writing a conf so appends cannot join the last line
This commit is contained in:
@@ -276,6 +276,14 @@ function vv_read_conf_raw(string $filename): string {
|
|||||||
function vv_write_conf_raw(string $filename, string $content): bool {
|
function vv_write_conf_raw(string $filename, string $content): bool {
|
||||||
$path = CONF_DIR . '/' . $filename;
|
$path = CONF_DIR . '/' . $filename;
|
||||||
$tmp = $path . '.vv.tmp';
|
$tmp = $path . '.vv.tmp';
|
||||||
|
|
||||||
|
// Guarantee the trailing newline. A textarea does not supply one, so saving through the raw
|
||||||
|
// editor left master.conf ending mid-line — and appending is a real pattern here
|
||||||
|
// (conf_upgrade, and the array writers below), so the next `>>` would have joined itself
|
||||||
|
// onto the last setting instead of starting a line. Appended, never stripped: a deliberate
|
||||||
|
// run of blank lines at the end of a conf is the author's business.
|
||||||
|
if ($content !== '' && !str_ends_with($content, "\n")) $content .= "\n";
|
||||||
|
|
||||||
if (file_put_contents($tmp, $content) === false) return false;
|
if (file_put_contents($tmp, $content) === false) return false;
|
||||||
return rename($tmp, $path);
|
return rename($tmp, $path);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user