diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/directory.c | 12 | ||||
-rw-r--r-- | src/directory.h | 2 | ||||
-rw-r--r-- | src/main.c | 1 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/directory.c b/src/directory.c index 891e7c351..8e1904794 100644 --- a/src/directory.c +++ b/src/directory.c @@ -988,6 +988,18 @@ void sortDirectory(Directory * directory) { } } +int checkDirectoryDB() { + char * dbFile = getDbFile(); + + if(access(dbFile, R_OK|W_OK)) { + ERROR("db file \"%s\" cannot be opened for reading/writing: %s", + dbFile, strerror(errno)); + return -1; + } + + return 0; +} + int writeDirectoryDB() { FILE * fp; char * dbFile = getDbFile(); diff --git a/src/directory.h b/src/directory.h index 48807ea87..0a640aaef 100644 --- a/src/directory.h +++ b/src/directory.h @@ -58,6 +58,8 @@ void closeMp3Directory(); int printDirectoryInfo(FILE * fp, char * dirname); +int checkDirectoryDB(); + int writeDirectoryDB(); int readDirectoryDB(); diff --git a/src/main.c b/src/main.c index f7eb8a45a..944eb037a 100644 --- a/src/main.c +++ b/src/main.c @@ -320,6 +320,7 @@ void openDB(Options * options, char * argv0) { exit(EXIT_FAILURE); } flushWarningLog(); + if(checkDirectoryDB()<0) exit(EXIT_FAILURE); initMp3Directory(); if(writeDirectoryDB()<0) exit(EXIT_FAILURE); if(options->createDB) exit(EXIT_SUCCESS); |