]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - afs.c
Merge topic branch t/fd into master
[paraslash.git] / afs.c
diff --git a/afs.c b/afs.c
index b15f83852e6919c4f0867065d13776c211416087..865effde671a4848298ab09d502898c6225a937c 100644 (file)
--- a/afs.c
+++ b/afs.c
@@ -448,7 +448,7 @@ static int activate_mood_or_playlist(const char *arg, struct para_buffer *pb)
                mode = PLAY_MODE_MOOD;
        } else {
                ret = -ERRNO_TO_PARA_ERROR(EINVAL);
-               msg = make_message("%s: parse error", arg);
+               msg = make_message("%s: parse error\n", arg);
        }
        if (pb)
                para_printf(pb, "%s", msg);
@@ -529,8 +529,8 @@ static void init_admissible_files(const char *arg)
 {
        int ret = activate_mood_or_playlist(arg, NULL);
        if (ret < 0) {
-               PARA_WARNING_LOG("could not activate %s: %s\n", arg,
-                       para_strerror(-ret));
+               PARA_WARNING_LOG("could not activate %s: %s\n", arg?
+                       arg : "dummy", para_strerror(-ret));
                if (arg)
                        activate_mood_or_playlist(NULL, NULL);
        }
@@ -580,17 +580,6 @@ static void get_database_dir(void)
        PARA_INFO_LOG("afs_database dir %s\n", database_dir);
 }
 
-static int make_database_dir(void)
-{
-       int ret;
-
-       get_database_dir();
-       ret = para_mkdir(database_dir, 0777);
-       if (ret >= 0 || ret == -ERRNO_TO_PARA_ERROR(EEXIST))
-               return 1;
-       return ret;
-}
-
 static int open_afs_tables(void)
 {
        int i, ret;
@@ -963,6 +952,7 @@ __noreturn void afs_init(int socket_fd)
        ret = schedule(&s);
        sched_shutdown(&s);
        mood_unload();
+       playlist_unload();
 out_close:
        close_afs_tables();
 out:
@@ -1018,7 +1008,8 @@ static int com_select(struct command_context *cc, struct lls_parse_result *lpr)
                send_errctx(cc, errctx);
                return ret;
        }
-       return send_lls_callback_request(com_select_callback, cmd, lpr, cc);
+       ret = send_lls_callback_request(com_select_callback, cmd, lpr, cc);
+       return ret == osl(-E_OSL_RB_KEY_NOT_FOUND)? -E_BAD_MOP : ret;
 }
 EXPORT_SERVER_CMD_HANDLER(select);
 
@@ -1060,7 +1051,8 @@ static int com_init(struct command_context *cc, struct lls_parse_result *lpr)
                .size = sizeof(table_mask)};
        unsigned num_inputs = lls_num_inputs(lpr);
 
-       ret = make_database_dir();
+       get_database_dir();
+       ret = para_mkdir(database_dir);
        if (ret < 0)
                return ret;
        if (num_inputs > 0) {