From bb163eb65f8b8e30e1419563296eee922bdc313f Mon Sep 17 00:00:00 2001 From: Justin Maggard Date: Wed, 18 Sep 2013 15:29:59 -0700 Subject: [PATCH] Fix various inotify issues with deleting entire folder contents, and then re-adding content back to the same folder. This should be the cause of '(null)' folder names. --- inotify.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/inotify.c b/inotify.c index 74a8fbd..935edb2 100644 --- a/inotify.c +++ b/inotify.c @@ -540,8 +540,7 @@ inotify_remove_file(const char * path) if( ends_with(path, ".srt") ) { - rows = sql_exec(db, "DELETE from CAPTIONS where PATH = '%q'", path); - return rows; + return sql_exec(db, "DELETE from CAPTIONS where PATH = '%q'", path); } /* Invalidate the scanner cache so we don't insert files into non-existent containers */ valid_cache = 0; @@ -563,11 +562,13 @@ inotify_remove_file(const char * path) else { /* Delete the parent containers if we are about to empty them. */ - snprintf(sql, sizeof(sql), "SELECT PARENT_ID from OBJECTS where DETAIL_ID = %lld", (long long int)detailID); + snprintf(sql, sizeof(sql), "SELECT PARENT_ID from OBJECTS where DETAIL_ID = %lld" + " and PARENT_ID not like '64$%%'", + (long long int)detailID); if( (sql_get_table(db, sql, &result, &rows, NULL) == SQLITE_OK) ) { int i, children; - for( i=1; i <= rows; i++ ) + for( i = 1; i <= rows; i++ ) { /* If it's a playlist item, adjust the item count of the playlist */ if( strncmp(result[i], MUSIC_PLIST_ID, strlen(MUSIC_PLIST_ID)) == 0 ) @@ -581,8 +582,6 @@ inotify_remove_file(const char * path) continue; if( children < 2 ) { - sql_exec(db, "DELETE from DETAILS where ID =" - " (SELECT DETAIL_ID from OBJECTS where OBJECT_ID = '%s')", result[i]); sql_exec(db, "DELETE from OBJECTS where OBJECT_ID = '%s'", result[i]); ptr = strrchr(result[i], '$'); @@ -590,8 +589,6 @@ inotify_remove_file(const char * path) *ptr = '\0'; if( sql_get_int_field(db, "SELECT count(*) from OBJECTS where PARENT_ID = '%s'", result[i]) == 0 ) { - sql_exec(db, "DELETE from DETAILS where ID =" - " (SELECT DETAIL_ID from OBJECTS where OBJECT_ID = '%s')", result[i]); sql_exec(db, "DELETE from OBJECTS where OBJECT_ID = '%s'", result[i]); } }