X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=afs.c;h=ef05a473e85a022568a785ecc8da140d2b19d1dc;hp=59595567fcd6c7b4f7c66c49bfb2e3183cd73283;hb=f5ec2fd02149c64869beadfb7575c17141e0c58e;hpb=10a62b85c43319d9cdefd7d04823aaed47b3817e diff --git a/afs.c b/afs.c index 59595567..ef05a473 100644 --- a/afs.c +++ b/afs.c @@ -482,7 +482,7 @@ static int activate_mood_or_playlist(const char *arg, int *num_admissible) ret = change_current_mood(arg + 2); mode = PLAY_MODE_MOOD; } else - return -E_AFS_SYNTAX; + return -ERRNO_TO_PARA_ERROR(EINVAL); if (ret < 0) return ret; } @@ -497,10 +497,12 @@ static int activate_mood_or_playlist(const char *arg, int *num_admissible) strncpy(mmd->afs_mode_string, arg, sizeof(mmd->afs_mode_string)); mmd->afs_mode_string[sizeof(mmd->afs_mode_string) - 1] = '\0'; + mmd->events++; mutex_unlock(mmd_mutex); } else { mutex_lock(mmd_mutex); strcpy(mmd->afs_mode_string, "dummy"); + mmd->events++; mutex_unlock(mmd_mutex); current_mop = NULL; } @@ -580,7 +582,7 @@ static int com_select_callback(struct afs_callback_arg *aca) goto out; /* ignore subsequent errors (but log them) */ para_printf(&aca->pbout, "could not activate %s\n", arg); - if (current_mop) { + if (current_mop && strcmp(current_mop, arg) != 0) { int ret2; para_printf(&aca->pbout, "switching back to %s\n", current_mop); ret2 = activate_mood_or_playlist(current_mop, &num_admissible); @@ -615,8 +617,13 @@ EXPORT_SERVER_CMD_HANDLER(select); static void init_admissible_files(const char *arg) { - if (activate_mood_or_playlist(arg, NULL) < 0) + int ret = activate_mood_or_playlist(arg, 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); /* always successful */ + } } static int setup_command_socket_or_die(void)