chiark / gitweb /
basic/dirent-util: do not call hidden_file_allow_backup from dirent_is_file_with_suffix
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 27 Apr 2016 12:59:12 +0000 (08:59 -0400)
committerSven Eden <yamakuzure@gmx.net>
Fri, 16 Jun 2017 08:12:58 +0000 (10:12 +0200)
If the file name is supposed to end in a suffix, there's not need to check the
name against a list of "special" file names, which is slow. Instead, just check
that the name doens't start with a period.

src/basic/dirent-util.c

index 5fb535cb13a2a55f86170747a9d4752b4f400864..5019882a0adda998a8b41de6735089c4a81b85ea 100644 (file)
@@ -55,9 +55,7 @@ bool dirent_is_file(const struct dirent *de) {
         if (hidden_file(de->d_name))
                 return false;
 
         if (hidden_file(de->d_name))
                 return false;
 
-        if (de->d_type != DT_REG &&
-            de->d_type != DT_LNK &&
-            de->d_type != DT_UNKNOWN)
+        if (!IN_SET(de->d_type, DT_REG, DT_LNK, DT_UNKNOWN))
                 return false;
 
         return true;
                 return false;
 
         return true;
@@ -66,12 +64,10 @@ bool dirent_is_file(const struct dirent *de) {
 bool dirent_is_file_with_suffix(const struct dirent *de, const char *suffix) {
         assert(de);
 
 bool dirent_is_file_with_suffix(const struct dirent *de, const char *suffix) {
         assert(de);
 
-        if (de->d_type != DT_REG &&
-            de->d_type != DT_LNK &&
-            de->d_type != DT_UNKNOWN)
+        if (!IN_SET(de->d_type, DT_REG, DT_LNK, DT_UNKNOWN))
                 return false;
 
                 return false;
 
-        if (hidden_file_allow_backup(de->d_name))
+        if (de->d_name[0] == '.')
                 return false;
 
         return endswith(de->d_name, suffix);
                 return false;
 
         return endswith(de->d_name, suffix);