}
/**
- * Read from stdin, and send the result to the parent process.
+ * Read data from a file descriptor, and send it to the afs process.
*
+ * \param fd File descriptor to read data from.
* \param arg_obj Pointer to the arguments to \a f.
* \param f The callback function.
* \param max_len Don't read more than that many bytes from stdin.
*
* This function is used by commands that wish to let para_server store
* arbitrary data specified by the user (for instance the add_blob family of
- * commands). First, at most \a max_len bytes are read from stdin, the result
+ * commands). First, at most \a max_len bytes are read from \a fd, the result
* is concatenated with the buffer given by \a arg_obj, and the combined buffer
* is made available to the parent process via shared memory.
*
given_playlist = "given_playlist";
if (given_mood) {
- ret = mood_open(given_mood);
+ ret = change_current_mood(given_mood);
if (ret >= 0) {
if (given_playlist)
PARA_WARNING_LOG("ignoring playlist %s\n",
if (ret >= 0)
return PLAY_MODE_PLAYLIST;
}
- ret = mood_open(NULL); /* open first available mood */
+ ret = change_current_mood(NULL); /* open first available mood */
if (ret >= 0)
return PLAY_MODE_MOOD;
- mood_open(""); /* open dummy mood, always successful */
+ change_current_mood(""); /* open dummy mood, always successful */
return PLAY_MODE_MOOD;
}
PARA_NOTICE_LOG("closing afs_tables\n");
score_shutdown(flags);
attribute_shutdown(flags);
- mood_close();
+ close_current_mood();
playlist_close();
moods_shutdown(flags);
playlists_shutdown(flags);
if (!FD_ISSET(st->fd, &s->rfds))
return;
st->signum = para_next_signal();
- PARA_NOTICE_LOG("caught signal %d\n", st->signum);
t->ret = 1;
if (st->signum == SIGUSR1)
return; /* ignore SIGUSR1 */
+ PARA_NOTICE_LOG("caught signal %d\n", st->signum);
t->ret = -E_SIGNAL_CAUGHT;
unregister_tasks();
}
enum com_check_flags {
CHECK_AFT = 1,
- CHECK_MOODS_TABLE = 8,
- CHECK_PLAYLISTS = 16
+ CHECK_MOODS = 2,
+ CHECK_PLAYLISTS = 4
};
int com_check(int fd, int argc, char * const * const argv)
flags |= CHECK_PLAYLISTS;
continue;
}
+ if (!strcmp(arg, "-m")) {
+ flags |= CHECK_MOODS;
+ continue;
+ }
return -E_AFS_SYNTAX;
}
if (i < argc)
return ret;
}
}
+ if (flags & CHECK_PLAYLISTS) {
+ ret = send_callback_request(playlist_check_callback, NULL, &result);
+ if (ret < 0)
+ return ret;
+ if (ret > 0) {
+ ret = send_buffer(fd, (char *) result.data);
+ free(result.data);
+ if (ret < 0)
+ return ret;
+ }
+ }
+ if (flags & CHECK_MOODS) {
+ ret = send_callback_request(mood_check_callback, NULL, &result);
+ if (ret < 0)
+ return ret;
+ if (ret > 0) {
+ ret = send_buffer(fd, (char *) result.data);
+ free(result.data);
+ if (ret < 0)
+ return ret;
+ }
+ }
return 1;
}