conf-files: split CONF_FILES_FILTER_MASKED flag into two
This commit is contained in:
+18
-9
@@ -63,16 +63,25 @@ static int files_add(
|
||||
}
|
||||
|
||||
/* Is this a masking entry? */
|
||||
if ((flags & CONF_FILES_FILTER_MASKED))
|
||||
if (null_or_empty(&st)) {
|
||||
/* Mark this one as masked */
|
||||
r = set_put_strdup(masked, de->d_name);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (FLAGS_SET(flags, CONF_FILES_FILTER_MASKED_BY_SYMLINK) && stat_may_be_dev_null(&st)) {
|
||||
/* Mark this one as masked */
|
||||
r = set_put_strdup(masked, de->d_name);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
log_debug("File '%s/%s' is a mask.", dirpath, de->d_name);
|
||||
continue;
|
||||
}
|
||||
log_debug("File '%s/%s' is a mask (symlink to /dev/null).", dirpath, de->d_name);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (FLAGS_SET(flags, CONF_FILES_FILTER_MASKED_BY_EMPTY) && stat_is_empty(&st)) {
|
||||
/* Mark this one as masked */
|
||||
r = set_put_strdup(masked, de->d_name);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
log_debug("File '%s/%s' is a mask (an empty file).", dirpath, de->d_name);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Does this node have the right type? */
|
||||
if (flags & (CONF_FILES_REGULAR|CONF_FILES_DIRECTORY))
|
||||
|
||||
@@ -4,11 +4,13 @@
|
||||
#include "forward.h"
|
||||
|
||||
typedef enum ConfFilesFlags {
|
||||
CONF_FILES_EXECUTABLE = 1 << 0,
|
||||
CONF_FILES_REGULAR = 1 << 1,
|
||||
CONF_FILES_DIRECTORY = 1 << 2,
|
||||
CONF_FILES_BASENAME = 1 << 3,
|
||||
CONF_FILES_FILTER_MASKED = 1 << 4,
|
||||
CONF_FILES_EXECUTABLE = 1 << 0,
|
||||
CONF_FILES_REGULAR = 1 << 1,
|
||||
CONF_FILES_DIRECTORY = 1 << 2,
|
||||
CONF_FILES_BASENAME = 1 << 3,
|
||||
CONF_FILES_FILTER_MASKED_BY_SYMLINK = 1 << 4,
|
||||
CONF_FILES_FILTER_MASKED_BY_EMPTY = 1 << 5,
|
||||
CONF_FILES_FILTER_MASKED = CONF_FILES_FILTER_MASKED_BY_SYMLINK | CONF_FILES_FILTER_MASKED_BY_EMPTY,
|
||||
} ConfFilesFlags;
|
||||
|
||||
int conf_files_list(char ***ret, const char *suffix, const char *root, ConfFilesFlags flags, const char *dir);
|
||||
|
||||
Reference in New Issue
Block a user