Fix red 8f582c90de
global_settings is not defined when building the database tool. Add a path buffer in tc_stat to fix this. This also avoids race conditions that may occur if changing the path setting at runtime. Change-Id: Ib2ca92c2e34929c79b19ef145fd7ccdcd62c8d04
This commit is contained in:
parent
3957aa8720
commit
879b5dae39
2 changed files with 15 additions and 9 deletions
|
@ -484,12 +484,12 @@ static int NO_INLINE open_db_fd(const char* filename, int mode)
|
|||
|
||||
if(mode & O_CREAT)
|
||||
{
|
||||
if (mkdir(global_settings.tagcache_db_path) < 0 && errno != EEXIST)
|
||||
if (mkdir(tc_stat.db_path) < 0 && errno != EEXIST)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return open_pathfmt(buf, sizeof(buf), mode, "%s/%s",
|
||||
global_settings.tagcache_db_path, filename);
|
||||
tc_stat.db_path, filename);
|
||||
}
|
||||
|
||||
static int NO_INLINE remove_db_file(const char* filename)
|
||||
|
@ -497,7 +497,7 @@ static int NO_INLINE remove_db_file(const char* filename)
|
|||
char buf[MAX_PATH];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/%s",
|
||||
global_settings.tagcache_db_path, filename);
|
||||
tc_stat.db_path, filename);
|
||||
|
||||
return remove(buf);
|
||||
}
|
||||
|
@ -513,7 +513,7 @@ static int open_tag_fd(struct tagcache_header *hdr, int tag, bool write)
|
|||
|
||||
fd = open_pathfmt(fname, sizeof(fname),
|
||||
write ? O_RDWR : O_RDONLY, "%s/" TAGCACHE_FILE_INDEX,
|
||||
global_settings.tagcache_db_path, tag);
|
||||
tc_stat.db_path, tag);
|
||||
if (fd < 0)
|
||||
{
|
||||
logf("tag file open failed: tag=%d write=%d file= " TAGCACHE_FILE_INDEX,
|
||||
|
@ -891,7 +891,7 @@ static bool open_files(struct tagcache_search *tcs, int tag)
|
|||
char fname[MAX_PATH];
|
||||
tcs->idxfd[tag] = open_pathfmt(fname, sizeof(fname),
|
||||
O_RDONLY, "%s/" TAGCACHE_FILE_INDEX,
|
||||
global_settings.tagcache_db_path, tag);
|
||||
tc_stat.db_path, tag);
|
||||
}
|
||||
|
||||
if (tcs->idxfd[tag] < 0)
|
||||
|
@ -1516,7 +1516,7 @@ static void remove_files(void)
|
|||
continue;
|
||||
|
||||
snprintf(buf, bufsz, "%s/" TAGCACHE_FILE_INDEX,
|
||||
global_settings.tagcache_db_path, i);
|
||||
tc_stat.db_path, i);
|
||||
remove(buf);
|
||||
}
|
||||
}
|
||||
|
@ -1676,7 +1676,7 @@ bool tagcache_search_add_clause(struct tagcache_search *tcs,
|
|||
char fname[MAX_PATH];
|
||||
tcs->idxfd[clause->tag] = open_pathfmt(fname, sizeof(fname), O_RDONLY,
|
||||
"%s/" TAGCACHE_FILE_INDEX,
|
||||
global_settings.tagcache_db_path, clause->tag);
|
||||
tc_stat.db_path, clause->tag);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2830,7 +2830,7 @@ static int build_index(int index_type, struct tagcache_header *h, int tmpfd)
|
|||
*/
|
||||
fd = open_pathfmt(buf, bufsz, O_WRONLY | O_CREAT | O_TRUNC,
|
||||
"%s/" TAGCACHE_FILE_INDEX,
|
||||
global_settings.tagcache_db_path, index_type);
|
||||
tc_stat.db_path, index_type);
|
||||
if (fd < 0)
|
||||
{
|
||||
logf(TAGCACHE_FILE_INDEX " open fail", index_type);
|
||||
|
@ -4487,7 +4487,7 @@ static bool check_deleted_files(void)
|
|||
|
||||
logf("reverse scan...");
|
||||
fd = open_pathfmt(buf, bufsz, O_RDONLY, "%s/" TAGCACHE_FILE_INDEX,
|
||||
global_settings.tagcache_db_path, tag_filename);
|
||||
tc_stat.db_path, tag_filename);
|
||||
if (fd < 0)
|
||||
{
|
||||
logf(TAGCACHE_FILE_INDEX " open fail", tag_filename);
|
||||
|
@ -5126,6 +5126,8 @@ void tagcache_init(void)
|
|||
write_lock = read_lock = 0;
|
||||
|
||||
#ifndef __PCTOOL__
|
||||
strmemccpy(tc_stat.db_path, global_settings.tagcache_db_path,
|
||||
sizeof(tc_stat.db_path));
|
||||
mutex_init(&command_queue_mutex);
|
||||
queue_init(&tagcache_queue, true);
|
||||
create_thread(tagcache_thread, tagcache_stack,
|
||||
|
@ -5133,6 +5135,8 @@ void tagcache_init(void)
|
|||
IF_PRIO(, PRIORITY_BACKGROUND)
|
||||
IF_COP(, CPU));
|
||||
#else
|
||||
/* use default DB path */
|
||||
strcpy(tc_stat.db_path, ROCKBOX_DIR);
|
||||
tc_stat.initialized = true;
|
||||
allocate_tempbuf();
|
||||
commit();
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "metadata.h"
|
||||
#include "settings.h"
|
||||
|
||||
/**
|
||||
Note: When adding new tags, make sure to update index_entry_ec and tags_str in
|
||||
|
@ -89,6 +90,7 @@ struct tagcache_stat {
|
|||
*curentry; /* Path of the current entry being scanned. */
|
||||
volatile bool syncscreen;/* Synchronous operation with debug screen? */
|
||||
// const char *uimessage; /* Pending error message. Implement soon. */
|
||||
char db_path[MAX_PATHNAME+1]; /* Path to DB root directory */
|
||||
};
|
||||
|
||||
enum source_type {source_constant,
|
||||
|
|
Loading…
Reference in a new issue