sd-journal: fix sd_journal_open_directory with SD_JOURNAL_OS_ROOT
The directory argument that is given to sd_j_o_d was ignored when SD_JOURNAL_OS_ROOT was given, and directories relative to the root of the host file system were used. With that flag, sd_j_o_d should do the same as sd_j_open_container: use the path as "prefix", i.e. the directory relative to which everything happens. Instead of touching sd_j_o_d, journal_new is fixed to do what sd_j_o_c was doing, and treat the specified path as prefix when SD_JOURNAL_OS_ROOT is specified.
This commit is contained in:
parent
10752e829b
commit
16fefe9080
|
@ -1719,9 +1719,16 @@ static sd_journal *journal_new(int flags, const char *path) {
|
|||
j->data_threshold = DEFAULT_DATA_THRESHOLD;
|
||||
|
||||
if (path) {
|
||||
j->path = strdup(path);
|
||||
if (!j->path)
|
||||
char *t;
|
||||
|
||||
t = strdup(path);
|
||||
if (!t)
|
||||
goto fail;
|
||||
|
||||
if (flags & SD_JOURNAL_OS_ROOT)
|
||||
j->prefix = t;
|
||||
else
|
||||
j->path = t;
|
||||
}
|
||||
|
||||
j->files = ordered_hashmap_new(&string_hash_ops);
|
||||
|
@ -1795,13 +1802,10 @@ _public_ int sd_journal_open_container(sd_journal **ret, const char *machine, in
|
|||
if (!streq_ptr(class, "container"))
|
||||
return -EIO;
|
||||
|
||||
j = journal_new(flags, NULL);
|
||||
j = journal_new(flags, root);
|
||||
if (!j)
|
||||
return -ENOMEM;
|
||||
|
||||
j->prefix = root;
|
||||
root = NULL;
|
||||
|
||||
r = add_search_paths(j);
|
||||
if (r < 0)
|
||||
goto fail;
|
||||
|
|
Loading…
Reference in a new issue