summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/shared/util.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/shared/util.c b/src/shared/util.c
index 041b759287..736cb15a5f 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -1800,7 +1800,7 @@ char *ascii_strlower(char *t) {
return t;
}
-bool ignore_file(const char *filename) {
+static bool ignore_file_allow_backup(const char *filename) {
assert(filename);
return
@@ -1808,7 +1808,6 @@ bool ignore_file(const char *filename) {
streq(filename, "lost+found") ||
streq(filename, "aquota.user") ||
streq(filename, "aquota.group") ||
- endswith(filename, "~") ||
endswith(filename, ".rpmnew") ||
endswith(filename, ".rpmsave") ||
endswith(filename, ".rpmorig") ||
@@ -1817,6 +1816,15 @@ bool ignore_file(const char *filename) {
endswith(filename, ".swp");
}
+bool ignore_file(const char *filename) {
+ assert(filename);
+
+ if (endswith(filename, "~"))
+ return false;
+
+ return ignore_file_allow_backup(filename);
+}
+
int fd_nonblock(int fd, bool nonblock) {
int flags;
@@ -4262,7 +4270,12 @@ bool dirent_is_file(const struct dirent *de) {
bool dirent_is_file_with_suffix(const struct dirent *de, const char *suffix) {
assert(de);
- if (!dirent_is_file(de))
+ if (de->d_type != DT_REG &&
+ de->d_type != DT_LNK &&
+ de->d_type != DT_UNKNOWN)
+ return false;
+
+ if (ignore_file_allow_backup(de->d_name))
return false;
return endswith(de->d_name, suffix);