From 19d9c69173067572ef86b2404e99ae81e5b95a58 Mon Sep 17 00:00:00 2001 From: markun Date: Mon, 4 Feb 2008 21:20:04 +0000 Subject: [PATCH] add support for database.unignore files (adds dirs to the database which would be skipped because of a database.ignore file) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16214 a1c6a512-1295-4272-9138-f99709370657 --- apps/tagcache.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/apps/tagcache.c b/apps/tagcache.c index 6c38300a1..a53bdc7f8 100644 --- a/apps/tagcache.c +++ b/apps/tagcache.c @@ -4062,11 +4062,12 @@ static bool check_deleted_files(void) return true; } -static bool check_dir(const char *dirname) +static bool check_dir(const char *dirname, int add_files) { DIR *dir; int len; int success = false; + int ignore, unignore; char newpath[MAX_PATH]; dir = opendir(dirname); @@ -4078,12 +4079,15 @@ static bool check_dir(const char *dirname) /* check for a database.ignore file */ snprintf(newpath, MAX_PATH, "%s/database.ignore", dirname); - if (file_exists(newpath)) - { - closedir(dir); - return false; - } - + ignore = file_exists(newpath); + /* check for a database.unignore file */ + snprintf(newpath, MAX_PATH, "%s/database.unignore", dirname); + unignore = file_exists(newpath); + + /* don't do anything if both ignore and unignore are there */ + if (ignore != unignore) + add_files = unignore; + /* Recursively scan the dir. */ #ifdef __PCTOOL__ while (1) @@ -4113,8 +4117,8 @@ static bool check_dir(const char *dirname) processed_dir_count++; if (entry->attribute & ATTR_DIRECTORY) - check_dir(curpath); - else + check_dir(curpath, add_files); + else if (add_files) { tc_stat.curentry = curpath; @@ -4193,7 +4197,7 @@ void build_tagcache(const char *path) if (strcmp("/", path) != 0) strcpy(curpath, path); - ret = check_dir(path); + ret = check_dir(path, true); /* Write the header. */ header.magic = TAGCACHE_MAGIC; -- 2.11.4.GIT