From 915719f0f8e29f1d2680adc6c1fffa6c9ef58f64 Mon Sep 17 00:00:00 2001 From: ejurgensen Date: Wed, 14 May 2014 20:44:07 +0200 Subject: [PATCH] Fix Spotify exemption from purge during init-rescan --- src/db.c | 28 ++++++++++++++++++++-------- src/db.h | 4 ++-- src/filescanner.c | 8 ++++---- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/db.c b/src/db.c index f3b30cad..fc102f6a 100644 --- a/src/db.c +++ b/src/db.c @@ -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 diff --git a/src/db.h b/src/db.h index 24be38c8..790686bd 100644 --- a/src/db.h +++ b/src/db.h @@ -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); diff --git a/src/filescanner.c b/src/filescanner.c index 266799d6..b14dadf8 100644 --- a/src/filescanner.c +++ b/src/filescanner.c @@ -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");