]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - afs.c
afs.c: Replace underscore by space in log message text.
[paraslash.git] / afs.c
diff --git a/afs.c b/afs.c
index 050e1965cb68e71257c109d35b6ae23671c56949..031a00993ffec086a1fe447fb6d4f1bc528234fd 100644 (file)
--- a/afs.c
+++ b/afs.c
@@ -39,11 +39,10 @@ enum afs_table_num {
        TBLNUM_AUDIO_FILES,
        /** The table for the paraslash attributes. See \ref attribute.c. */
        TBLNUM_ATTRIBUTES,
-       /**
-        * Paraslash's scoring system is based on Gaussian normal
-        * distributions, and the relevant data is stored in the rbtrees of an
-        * osl table containing only volatile columns. See \ref score.c for
-        * details.
+       /*
+        * Moods and playlists organize the current set of admissible files in
+        * an osl table which contains only volatile columns. Each row consists
+        * of a pointer to an audio file and the score value of this file.
         */
        TBLNUM_SCORES,
        /**
@@ -418,11 +417,10 @@ static int pass_afd(int fd, char *buf, size_t size)
  */
 static int open_next_audio_file(void)
 {
-       struct audio_file_data afd;
-       int ret, shmid;
+       int ret, shmid, fd;
        char buf[8];
 
-       ret = open_and_update_audio_file(&afd);
+       ret = open_and_update_audio_file(&fd);
        if (ret < 0) {
                if (ret != -OSL_ERRNO_TO_PARA_ERROR(E_OSL_RB_KEY_NOT_FOUND))
                        PARA_ERROR_LOG("%s\n", para_strerror(-ret));
@@ -435,8 +433,8 @@ static int open_next_audio_file(void)
        }
        *(uint32_t *)buf = NEXT_AUDIO_FILE;
        *(uint32_t *)(buf + 4) = (uint32_t)shmid;
-       ret = pass_afd(afd.fd, buf, 8);
-       close(afd.fd);
+       ret = pass_afd(fd, buf, 8);
+       close(fd);
        if (ret >= 0)
                return ret;
 destroy:
@@ -448,7 +446,6 @@ no_admissible_files:
        return write_all(server_socket, buf, 8);
 }
 
-/* Never fails if arg == NULL */
 static int activate_mood_or_playlist(const char *arg, int *num_admissible,
                char **errmsg)
 {
@@ -456,8 +453,13 @@ static int activate_mood_or_playlist(const char *arg, int *num_admissible,
        int ret;
 
        if (!arg) {
-               ret = change_current_mood(NULL, NULL); /* always successful */
                mode = PLAY_MODE_MOOD;
+               ret = change_current_mood(NULL, errmsg);
+               if (ret < 0) {
+                       if (num_admissible)
+                               *num_admissible = 0;
+                       return ret;
+               }
        } else {
                if (!strncmp(arg, "p/", 2)) {
                        ret = playlist_open(arg + 2);
@@ -616,10 +618,10 @@ static void init_admissible_files(const char *arg)
 {
        int ret = activate_mood_or_playlist(arg, NULL, NULL);
        if (ret < 0) {
-               assert(arg);
                PARA_WARNING_LOG("could not activate %s: %s\n", arg,
                        para_strerror(-ret));
-               activate_mood_or_playlist(NULL, NULL, NULL);
+               if (arg)
+                       activate_mood_or_playlist(NULL, NULL, NULL);
        }
 }
 
@@ -645,7 +647,7 @@ static char *database_dir;
 static void close_afs_tables(void)
 {
        int i;
-       PARA_NOTICE_LOG("closing afs_tables\n");
+       PARA_NOTICE_LOG("closing afs tables\n");
        for (i = 0; i < NUM_AFS_TABLES; i++)
                afs_tables[i].close();
        free(database_dir);
@@ -660,7 +662,7 @@ static void get_database_dir(void)
                else {
                        char *home = para_homedir();
                        database_dir = make_message(
-                               "%s/.paraslash/afs_database-0.4", home);
+                               "%s/.paraslash/afs_database-0.7", home);
                        free(home);
                }
        }
@@ -982,7 +984,7 @@ __noreturn void afs_init(int socket_fd)
        int i, ret;
 
        register_signal_task(&s);
-       INIT_LIST_HEAD(&afs_client_list);
+       init_list_head(&afs_client_list);
        for (i = 0; i < NUM_AFS_TABLES; i++)
                afs_tables[i].init(&afs_tables[i]);
        ret = open_afs_tables();