summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-04-13 20:22:53 -0400
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-04-13 20:24:39 -0400
commitd3b6d0c21ea5a0d15ec6dbd8b8d179138b7463bc (patch)
tree7388d97b95b47d81737025ec0b88f63452a3c6f5
parent7914d6bba47a21b98617d04c992a9075ff5af4c0 (diff)
fileio: in envfiles, do not skip lines following empty lines
https://bugs.freedesktop.org/show_bug.cgi?id=63477
-rw-r--r--src/binfmt/binfmt.c2
-rw-r--r--src/journal/catalog.c2
-rw-r--r--src/modules-load/modules-load.c2
-rw-r--r--src/shared/conf-parser.c2
-rw-r--r--src/shared/install.c2
-rw-r--r--src/shared/util.h2
-rw-r--r--src/sysctl/sysctl.c2
-rw-r--r--src/test/test-unit-file.c31
8 files changed, 38 insertions, 7 deletions
diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
index 9ca1e604c..5a42b3dbe 100644
--- a/src/binfmt/binfmt.c
+++ b/src/binfmt/binfmt.c
@@ -110,7 +110,7 @@ static int apply_file(const char *path, bool ignore_enoent) {
p = strstrip(l);
if (!*p)
continue;
- if (strchr(COMMENTS, *p))
+ if (strchr(COMMENTS "\n", *p))
continue;
k = apply_rule(p);
diff --git a/src/journal/catalog.c b/src/journal/catalog.c
index ebf062260..7681af662 100644
--- a/src/journal/catalog.c
+++ b/src/journal/catalog.c
@@ -180,7 +180,7 @@ int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path) {
continue;
}
- if (strchr(COMMENTS, line[0]))
+ if (strchr(COMMENTS "\n", line[0]))
continue;
if (empty_line &&
diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
index 9ee260302..b3f7af0ef 100644
--- a/src/modules-load/modules-load.c
+++ b/src/modules-load/modules-load.c
@@ -206,7 +206,7 @@ static int apply_file(struct kmod_ctx *ctx, const char *path, bool ignore_enoent
l = strstrip(line);
if (!*l)
continue;
- if (strchr(COMMENTS, *l))
+ if (strchr(COMMENTS "\n", *l))
continue;
k = load_module(ctx, l);
diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
index fbacf986a..fea2e5624 100644
--- a/src/shared/conf-parser.c
+++ b/src/shared/conf-parser.c
@@ -174,7 +174,7 @@ static int parse_line(
if (!*l)
return 0;
- if (strchr(COMMENTS, *l))
+ if (strchr(COMMENTS "\n", *l))
return 0;
if (startswith(l, ".include ")) {
diff --git a/src/shared/install.c b/src/shared/install.c
index f9d223eee..71e04335e 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -1699,7 +1699,7 @@ int unit_file_query_preset(UnitFileScope scope, const char *name) {
if (!*l)
continue;
- if (strchr(COMMENTS, *l))
+ if (strchr(COMMENTS "\n", *l))
continue;
if (first_word(l, "enable")) {
diff --git a/src/shared/util.h b/src/shared/util.h
index 99ec0a39b..ad9753655 100644
--- a/src/shared/util.h
+++ b/src/shared/util.h
@@ -52,7 +52,7 @@ union dirent_storage {
#define WHITESPACE " \t\n\r"
#define NEWLINE "\n\r"
#define QUOTES "\"\'"
-#define COMMENTS "#;\n"
+#define COMMENTS "#;"
#define FORMAT_BYTES_MAX 8
diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
index e0ba78a2f..db18dd9f6 100644
--- a/src/sysctl/sysctl.c
+++ b/src/sysctl/sysctl.c
@@ -149,7 +149,7 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
if (!*p)
continue;
- if (strchr(COMMENTS, *p))
+ if (strchr(COMMENTS "\n", *p))
continue;
value = strchr(p, '=');
diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c
index 3cf84637e..1bf11e66a 100644
--- a/src/test/test-unit-file.c
+++ b/src/test/test-unit-file.c
@@ -199,6 +199,17 @@ static void test_config_parse_exec(void) {
"#--nouser-config \\\n" \
"normal=line"
+#define env_file_4 \
+ "# Generated\n" \
+ "\n" \
+ "HWMON_MODULES=\"coretemp f71882fg\"\n" \
+ "\n" \
+ "# For compatibility reasons\n" \
+ "\n" \
+ "MODULE_0=coretemp\n" \
+ "MODULE_1=f71882fg"
+
+
static void test_load_env_file_1(void) {
char _cleanup_strv_free_ **data = NULL;
int r;
@@ -251,6 +262,25 @@ static void test_load_env_file_3(void) {
unlink(name);
}
+static void test_load_env_file_4(void) {
+ char _cleanup_strv_free_ **data = NULL;
+ int r;
+
+ char name[] = "/tmp/test-load-env-file.XXXXXX";
+ int _cleanup_close_ fd = mkstemp(name);
+ assert(fd >= 0);
+ assert_se(write(fd, env_file_4, sizeof(env_file_4)) == sizeof(env_file_4));
+
+ r = load_env_file(name, NULL, &data);
+ assert(r == 0);
+ assert(streq(data[0], "HWMON_MODULES=coretemp f71882fg"));
+ assert(streq(data[1], "MODULE_0=coretemp"));
+ assert(streq(data[2], "MODULE_1=f71882fg"));
+ assert(data[3] == NULL);
+ unlink(name);
+}
+
+
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wnonnull"
@@ -327,6 +357,7 @@ int main(int argc, char *argv[]) {
test_load_env_file_1();
test_load_env_file_2();
test_load_env_file_3();
+ test_load_env_file_4();
test_install_printf();
return 0;