From bc55f1ccd1c995f7ab502323c96f5a44352a5a80 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Wed, 3 Jan 2018 14:23:29 +0100 Subject: Handle correctly configuration files with Windows EOL Thanks to @fr33tux for the bug report ♥ --- src/sp_config.c | 6 +++++- src/tests/config/windows_eol.ini | 2 ++ src/tests/windows_eol.phpt | 10 ++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 src/tests/config/windows_eol.ini create mode 100644 src/tests/windows_eol.phpt (limited to 'src') diff --git a/src/sp_config.c b/src/sp_config.c index aeadd9d..4d95062 100644 --- a/src/sp_config.c +++ b/src/sp_config.c @@ -175,7 +175,11 @@ int sp_parse_config(const char *conf_file) { while (getline(&lineptr, &n, fd) > 0) { /* We trash the terminal `\n`. This simplify the display of logs. */ if (lineptr[strlen(lineptr) - 1] == '\n') { - lineptr[strlen(lineptr) - 1] = '\0'; + if (lineptr[strlen(lineptr) - 2] == '\r') { + lineptr[strlen(lineptr) - 2] = '\0'; + } else { + lineptr[strlen(lineptr) - 1] = '\0'; + } } if (parse_line(lineptr) == -1) { fclose(fd); diff --git a/src/tests/config/windows_eol.ini b/src/tests/config/windows_eol.ini new file mode 100644 index 0000000..eea230c --- /dev/null +++ b/src/tests/config/windows_eol.ini @@ -0,0 +1,2 @@ +sp.disable_function.function("assert").filename("/tst.php").hash("0df5e049bf954da7054273bd66a3c63e7cbc22fea31bb448c6229f92f04af2b3").allow(); + diff --git a/src/tests/windows_eol.phpt b/src/tests/windows_eol.phpt new file mode 100644 index 0000000..0e81274 --- /dev/null +++ b/src/tests/windows_eol.phpt @@ -0,0 +1,10 @@ +--TEST-- +Windows EOL in configuration file +--SKIPIF-- + +--INI-- +sp.configuration_file={PWD}/config/windows_eol.ini +--FILE-- + +--EXPECT-- +1 -- cgit v1.3