From e4a53df7db8a8520c552a718ee7671b986312919 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Sun, 4 Jan 2009 20:31:23 +0100
Subject: don't exit after --create-db

Start the daemon after --create-db.  This makes --create-db a flag
which discards the old database and starts with a fresh one.
---
 NEWS           | 1 +
 doc/mpd.1      | 2 +-
 src/cmdline.c  | 2 +-
 src/database.c | 7 -------
 src/main.c     | 7 +------
 5 files changed, 4 insertions(+), 15 deletions(-)

diff --git a/NEWS b/NEWS
index 1b672285d..a8ebb125f 100644
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,7 @@ ver 0.15 - (200?/??/??)
 * fix minor memory leak in decoder_tag()
 * added Icy-Metadata support
 * fix cross-fading bug: it used to play some chunks of the new song twice
+* --create-db starts the MPD daemon instead of exiting
 
 ver 0.14 (2008/12/25)
 * audio outputs:
diff --git a/doc/mpd.1 b/doc/mpd.1
index c1ddf1762..f2fd2286f 100644
--- a/doc/mpd.1
+++ b/doc/mpd.1
@@ -26,7 +26,7 @@ Kill the currently running mpd session.  The pid_file parameter must be
 specified in the config file for this to work.
 .TP
 .BI --create-db
-Force (re)creation of database and exit.
+Force (re)creation of database.
 .TP
 .BI --no-create-db
 Do not create database, even if it doesn't exist.
diff --git a/src/cmdline.c b/src/cmdline.c
index 35adb2a8d..48c1e87e6 100644
--- a/src/cmdline.c
+++ b/src/cmdline.c
@@ -86,7 +86,7 @@ void parseOptions(int argc, char **argv, Options *options)
 		{ "kill", 0, 0, G_OPTION_ARG_NONE, &options->kill,
 		  "kill the currently running mpd session", NULL },
 		{ "create-db", 0, 0, G_OPTION_ARG_NONE, &option_create_db,
-		  "force (re)creation of database and exit", NULL },
+		  "force (re)creation of database", NULL },
 		{ "no-create-db", 0, 0, G_OPTION_ARG_NONE, &option_no_create_db,
 		  "don't create database, even if it doesn't exist", NULL },
 		{ "no-daemon", 0, 0, G_OPTION_ARG_NONE, &option_no_daemon,
diff --git a/src/database.c b/src/database.c
index 9eadd17f7..42dd02219 100644
--- a/src/database.c
+++ b/src/database.c
@@ -57,13 +57,6 @@ db_init(void)
 	ret = directory_update_init(NULL);
 	if (ret == 0)
 		g_error("directory update failed");
-
-	do {
-		event_pipe_wait();
-	} while (isUpdatingDB());
-
-	stats.numberOfSongs = countSongsIn(NULL);
-	stats.dbPlayTime = sumSongTimesIn(NULL);
 }
 
 void
diff --git a/src/main.c b/src/main.c
index c44b6df97..d0573e9b3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -135,10 +135,6 @@ static void openDB(Options * options, char *argv0)
 		if (db_check() < 0)
 			exit(EXIT_FAILURE);
 		db_init();
-		if (db_save() < 0)
-			exit(EXIT_FAILURE);
-		if (options->createDB)
-			exit(EXIT_SUCCESS);
 	}
 }
 
@@ -238,8 +234,7 @@ int main(int argc, char *argv[])
 	tag_lib_init();
 	log_init(options.verbose, options.stdOutput);
 
-	if (options.createDB <= 0)
-		listenOnPort();
+	listenOnPort();
 
 	changeToUser();
 
-- 
cgit v1.2.3