Fix Spotify exemption from purge during init-rescan

This commit is contained in:
ejurgensen 2014-05-14 20:44:07 +02:00
parent 6b0c5997bf
commit 915719f0f8
3 changed files with 26 additions and 14 deletions

View File

@ -1932,14 +1932,19 @@ db_file_ping(int id)
}
void
db_file_ping_bymatch(char *path)
db_file_ping_bymatch(char *path, int isdir)
{
#define Q_TMPL "UPDATE files SET db_timestamp = %" PRIi64 " WHERE path LIKE '%q/%%';"
#define Q_TMPL_DIR "UPDATE files SET db_timestamp = %" PRIi64 " WHERE path LIKE '%q/%%';"
#define Q_TMPL_NODIR "UPDATE files SET db_timestamp = %" PRIi64 " WHERE path LIKE '%q%%';"
char *query;
char *errmsg;
int ret;
query = sqlite3_mprintf(Q_TMPL, (int64_t)time(NULL), path);
if (isdir)
query = sqlite3_mprintf(Q_TMPL_DIR, (int64_t)time(NULL), path);
else
query = sqlite3_mprintf(Q_TMPL_NODIR, (int64_t)time(NULL), path);
if (!query)
{
DPRINTF(E_LOG, L_DB, "Out of memory for query string\n");
@ -1956,7 +1961,8 @@ db_file_ping_bymatch(char *path)
sqlite3_free(errmsg);
sqlite3_free(query);
#undef Q_TMPL
#undef Q_TMPL_DIR
#undef Q_TMPL_NODIR
}
char *
@ -2745,14 +2751,19 @@ db_pl_ping(int id)
}
void
db_pl_ping_bymatch(char *path)
db_pl_ping_bymatch(char *path, int isdir)
{
#define Q_TMPL "UPDATE playlists SET db_timestamp = %" PRIi64 " WHERE path LIKE '%q/%%';"
#define Q_TMPL_DIR "UPDATE playlists SET db_timestamp = %" PRIi64 " WHERE path LIKE '%q/%%';"
#define Q_TMPL_NODIR "UPDATE playlists SET db_timestamp = %" PRIi64 " WHERE path LIKE '%q%%';"
char *query;
char *errmsg;
int ret;
query = sqlite3_mprintf(Q_TMPL, (int64_t)time(NULL), path);
if (isdir)
query = sqlite3_mprintf(Q_TMPL_DIR, (int64_t)time(NULL), path);
else
query = sqlite3_mprintf(Q_TMPL_NODIR, (int64_t)time(NULL), path);
if (!query)
{
DPRINTF(E_LOG, L_DB, "Out of memory for query string\n");
@ -2769,7 +2780,8 @@ db_pl_ping_bymatch(char *path)
sqlite3_free(errmsg);
sqlite3_free(query);
#undef Q_TMPL
#undef Q_TMPL_DIR
#undef Q_TMPL_NODIR
}
static int

View File

@ -367,7 +367,7 @@ void
db_file_ping(int id);
void
db_file_ping_bymatch(char *path);
db_file_ping_bymatch(char *path, int isdir);
char *
db_file_path_byid(int id);
@ -419,7 +419,7 @@ void
db_pl_ping(int id);
void
db_pl_ping_bymatch(char *path);
db_pl_ping_bymatch(char *path, int isdir);
struct playlist_info *
db_pl_fetch_bypath(char *path);

View File

@ -994,8 +994,8 @@ bulk_scan(int flags)
db_file_disable_bymatch(path, "", 0);
db_pl_disable_bymatch(path, "", 0);
db_file_ping_bymatch(path);
db_pl_ping_bymatch(path);
db_file_ping_bymatch(path, 1);
db_pl_ping_bymatch(path, 1);
continue;
}
@ -1031,8 +1031,8 @@ bulk_scan(int flags)
/* Protect spotify from the imminent purge if rescanning */
if (flags & F_SCAN_RESCAN)
{
db_file_ping_bymatch("spotify:");
db_pl_ping_bymatch("spotify:");
db_file_ping_bymatch("spotify:", 0);
db_pl_ping_bymatch("spotify:", 0);
}
DPRINTF(E_DBG, L_SCAN, "Purging old database content\n");