fix: revert changes of whitespaces handling

This commit is contained in:
Yaroslav Gurov 2025-07-05 13:38:33 +02:00
parent 4c12402c1f
commit 2db7e1d22d

View file

@ -677,9 +677,6 @@ bool config_read_line(struct config_ctx *ctx, const char *input)
size_t len, cleaned_len = 0; size_t len, cleaned_len = 0;
char *line, *comment; char *line, *comment;
bool ret = true; bool ret = true;
bool found_equals = false;
bool found_value_start = false;
size_t value_end = 0;
/* This is what strchrnul is for, but that isn't portable. */ /* This is what strchrnul is for, but that isn't portable. */
comment = strchr(input, COMMENT_CHAR); comment = strchr(input, COMMENT_CHAR);
@ -695,35 +692,9 @@ bool config_read_line(struct config_ctx *ctx, const char *input)
goto out; goto out;
} }
/* Remove preceding and trailing whitespaces before value for (size_t i = 0; i < len; ++i) {
First pass: find the actual end of the value (trim trailing spaces) */ if (!char_is_space(input[i]))
for (size_t i = len; i > 0; --i) {
if (!char_is_space(input[i - 1])) {
value_end = i;
break;
}
}
/* Second pass: clean according to KEY = VALUE rules */
for (size_t i = 0; i < value_end; ++i) {
if (!found_equals) {
/* Before '=': remove all whitespace */
if (input[i] == '=') {
line[cleaned_len++] = input[i];
found_equals = true;
} else if (!char_is_space(input[i])) {
line[cleaned_len++] = input[i];
}
} else if (!found_value_start) {
/* After '=' but before value: skip whitespace until first non-space */
if (!char_is_space(input[i])) {
line[cleaned_len++] = input[i];
found_value_start = true;
}
} else {
/* Within value: preserve all characters including spaces */
line[cleaned_len++] = input[i]; line[cleaned_len++] = input[i];
}
} }
if (!cleaned_len) if (!cleaned_len)