aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-01-04 21:18:16 +0100
committerMax Kellermann <max@duempel.org>2009-01-04 21:18:16 +0100
commit82166b715c2e8b39eb20d179c95aa982335ad07c (patch)
tree2a66426ae0db1fede2649d61f465ba20f1830812
parent6acba7350938c099afab7bec04c8dc9adf674424 (diff)
downloadmpd-82166b715c2e8b39eb20d179c95aa982335ad07c.tar.gz
mpd-82166b715c2e8b39eb20d179c95aa982335ad07c.tar.xz
mpd-82166b715c2e8b39eb20d179c95aa982335ad07c.zip
database: db_init() initializes library, does not update
For updating the database, directory_update_init() should be called explicitly.
Diffstat (limited to '')
-rw-r--r--src/database.c10
-rw-r--r--src/database.h13
-rw-r--r--src/main.c11
3 files changed, 25 insertions, 9 deletions
diff --git a/src/database.c b/src/database.c
index b465a3472..7c5e829ac 100644
--- a/src/database.c
+++ b/src/database.c
@@ -22,10 +22,8 @@
#include "directory_save.h"
#include "song.h"
#include "conf.h"
-#include "ls.h"
#include "path.h"
#include "stats.h"
-#include "update.h"
#include "config.h"
#include <glib.h>
@@ -48,13 +46,7 @@ static time_t directory_dbModTime;
void
db_init(void)
{
- unsigned ret;
-
music_root = directory_new("", NULL);
-
- ret = directory_update_init(NULL);
- if (ret == 0)
- g_error("directory update failed");
}
void
@@ -256,6 +248,8 @@ db_load(void)
int foundFsCharset = 0;
int foundVersion = 0;
+ assert(music_root != NULL);
+
if (!music_root)
music_root = directory_new("", NULL);
while (!(fp = fopen(dbFile, "r")) && errno == EINTR) ;
diff --git a/src/database.h b/src/database.h
index b6884b604..238ddb374 100644
--- a/src/database.h
+++ b/src/database.h
@@ -24,12 +24,25 @@
struct directory;
+/**
+ * Initialize the database library.
+ */
void
db_init(void);
void
db_finish(void);
+/**
+ * Clear the database.
+ */
+static inline void
+db_clear(void)
+{
+ db_finish();
+ db_init();
+}
+
struct directory *
db_get_root(void);
diff --git a/src/main.c b/src/main.c
index d0573e9b3..bd00d4007 100644
--- a/src/main.c
+++ b/src/main.c
@@ -126,7 +126,11 @@ static void changeToUser(void)
static void openDB(Options * options, char *argv0)
{
+ db_init();
+
if (options->createDB > 0 || db_load() < 0) {
+ unsigned job;
+
if (options->createDB < 0) {
g_error("can't open db file and using "
"\"--no-create-db\" command line option; "
@@ -134,7 +138,12 @@ static void openDB(Options * options, char *argv0)
}
if (db_check() < 0)
exit(EXIT_FAILURE);
- db_init();
+
+ db_clear();
+
+ job = directory_update_init(NULL);
+ if (job == 0)
+ g_error("directory update failed");
}
}