/* SPDX-License-Identifier: LGPL-2.1+ */
-#include <dirent.h>
#include <errno.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include "conf-files.h"
#include "def.h"
#include "hashmap.h"
#include "log.h"
#include "macro.h"
-#include "missing.h"
#include "path-util.h"
#include "set.h"
#include "sort-util.h"
/* Is this a masking entry? */
if ((flags & CONF_FILES_FILTER_MASKED))
if (null_or_empty(&st)) {
+ assert(masked);
+
/* Mark this one as masked */
- r = set_put_strdup(masked, de->d_name);
+ r = set_put_strdup(&masked, de->d_name);
if (r < 0)
return r;
/* Does this node have the executable bit set? */
if (flags & CONF_FILES_EXECUTABLE)
- /* As requested: check if the file is marked exectuable. Note that we don't check access(X_OK)
+ /* As requested: check if the file is marked executable. Note that we don't check access(X_OK)
* here, as we care about whether the file is marked executable at all, and not whether it is
* executable for us, because if so, such errors are stuff we should log about. */
key = p;
} else {
- p = strjoin(dirpath, "/", de->d_name);
+ p = path_join(dirpath, de->d_name);
if (!p)
return -ENOMEM;
_cleanup_free_ char *rdir = NULL;
char *p1, *p2;
- rdir = prefix_root(root, *dir);
+ rdir = path_join(root, *dir);
if (!rdir)
return -ENOMEM;
if (p2) {
/* Our new entry has higher priority */
- t = prefix_root(root, path);
+ t = path_join(root, path);
if (!t)
return log_oom();
}
/* The new file has lower priority than all the existing entries */
- t = prefix_root(root, path);
+ t = path_join(root, path);
if (!t)
return -ENOMEM;
return conf_files_list_strv_internal(strv, suffix, root, flags, copy);
}
-int conf_files_list(char ***strv, const char *suffix, const char *root, unsigned flags, const char *dir, ...) {
+int conf_files_list(char ***strv, const char *suffix, const char *root, unsigned flags, const char *dir) {
_cleanup_strv_free_ char **dirs = NULL;
- va_list ap;
assert(strv);
- va_start(ap, dir);
- dirs = strv_new_ap(dir, ap);
- va_end(ap);
-
+ dirs = strv_new(dir);
if (!dirs)
return -ENOMEM;
if (r < 0)
return log_error_errno(r, "Failed to extend config file list: %m");
- p = prefix_root(root, replacement);
+ p = path_join(root, replacement);
if (!p)
return log_oom();
}