* fix cc10 check

This commit is contained in:
Dirk-Jan C. Binnema 2011-05-19 20:50:16 +03:00
parent 49858a6fc1
commit 21cbf42d27
1 changed files with 28 additions and 19 deletions

View File

@ -306,6 +306,33 @@ has_noindex_file (const char *path)
}
static gboolean
is_dotdir_to_ignore (const char* dir)
{
int i;
const char* ignore[] = {
".notmuch",
".nnmaildir",
".#evolution"
}; /* when adding names, check the optimization below */
if (dir[0] != '.')
return FALSE; /* not a dotdir */
if (dir[1] == '\0' || (dir[1] == '.' && dir[2] == '\0'))
return TRUE; /* ignore '.' and '..' */
/* optimization: special dirs have 'n' or '#' in pos 1 */
if (dir[1] != 'n' && dir[1] != '#')
return FALSE; /* not special: don't ignore */
for (i = 0; i != G_N_ELEMENTS(ignore); ++i)
if (strcmp(dir, ignore[i]) == 0)
return TRUE;
return FALSE; /* don't ignore */
}
static gboolean
ignore_dir_entry (struct dirent *entry, unsigned char d_type)
{
@ -322,25 +349,7 @@ ignore_dir_entry (struct dirent *entry, unsigned char d_type)
/* ignore '.' and '..' dirs, as well as .notmuch and
* .nnmaildir */
/* does not start with '.', so don't ignore */
if (G_LIKELY(name[0] != '.'))
return FALSE;
/* ignore . and .. */
if (name[1] == '\0' || (name[1] == '.' && name[2] == '\0'))
return TRUE;
/* ignore .notmuch, .nnmaildir */
if ((name[1] == 'n') && /* optimization */
(strcmp (name, ".notmuch") == 0 ||
strcmp (name, ".nnmaildir") == 0))
return TRUE;
/* ignore '.#evolution */
if ((name[1] == '#') && (strcmp (name, ".#evolution")))
return TRUE;
return FALSE;
return is_dotdir_to_ignore (entry->d_name);
}