mirror of
https://github.com/clearlinux/systemd-stable.git
synced 2026-06-16 02:35:58 +00:00
fileio: in envfiles, do not skip lines following empty lines
https://bugs.freedesktop.org/show_bug.cgi?id=63477
(cherry picked from commit d3b6d0c21e)
This commit is contained in:
+1
-1
@@ -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);
|
||||
|
||||
@@ -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 &&
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 ")) {
|
||||
|
||||
@@ -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")) {
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
|
||||
+1
-1
@@ -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, '=');
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user