fileio.c: do not parse comments after non-whitespace chars

systemd does not want to understand comments after the first
non-whitespace char occured.

key=foo #comment  will result into key == "foo #comment"
key="foo" #comment  will result into key == "foo#comment"
"key= #comment" will result into key == "#comment"
"key #comment" is an invalid line
This commit is contained in:
Harald Hoyer
2013-04-18 11:29:00 +02:00
parent bef8951800
commit 98f59e59e0
2 changed files with 19 additions and 16 deletions
+5 -4
View File
@@ -239,7 +239,7 @@ static int parse_env_file_internal(
break;
case PRE_VALUE:
if (strchr(newline, c) || strchr(COMMENTS, c)) {
if (strchr(newline, c)) {
state = PRE_KEY;
key[n_key] = 0;
@@ -247,7 +247,7 @@ static int parse_env_file_internal(
value[n_value] = 0;
/* strip trailing whitespace from key */
while(strchr(WHITESPACE, key[--n_key]))
while(n_key && strchr(WHITESPACE, key[--n_key]))
key[n_key]=0;
r = push(key, value, userdata);
@@ -279,6 +279,7 @@ static int parse_env_file_internal(
case VALUE:
if (strchr(newline, c)) {
state = PRE_KEY;
key[n_key] = 0;
if (value)
@@ -289,7 +290,7 @@ static int parse_env_file_internal(
value[last_whitespace] = 0;
/* strip trailing whitespace from key */
while(strchr(WHITESPACE, key[--n_key]))
while(n_key && strchr(WHITESPACE, key[--n_key]))
key[n_key]=0;
r = push(key, value, userdata);
@@ -417,7 +418,7 @@ static int parse_env_file_internal(
value[n_value] = 0;
/* strip trailing whitespace from key */
while(strchr(WHITESPACE, key[--n_key]))
while(n_key && strchr(WHITESPACE, key[--n_key]))
key[n_key]=0;
r = push(key, value, userdata);