summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authorHarald Hoyer <harald@redhat.com>2013-04-18 10:15:25 +0200
committerHarald Hoyer <harald@redhat.com>2013-04-18 11:29:00 +0200
commit98f59e59e0c31ffcb953d3a7dba0da5e6f2f55f7 (patch)
tree236c8c85234c6d8063639b079dee26d585764552 /src/shared
parentbef89518003a37f0fbd2f53beaa6bb7d01efed45 (diff)
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
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/fileio.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/shared/fileio.c b/src/shared/fileio.c
index 2a272593a8..337b9e4147 100644
--- a/src/shared/fileio.c
+++ b/src/shared/fileio.c
@@ -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);