*/
/** \file audiod.c the paraslash's audio daemon */
+#include <regex.h>
#include <sys/types.h>
#include <dirent.h>
#include <signal.h>
#include "ggo.h"
#include "recv.h"
#include "filter.h"
-#include "grab_client.cmdline.h"
#include "grab_client.h"
#include "client.cmdline.h"
#include "client.h"
* \return The audio format number on success, -E_UNSUPPORTED_AUDIO_FORMAT if
* \a name is not a supported audio format.
*/
-int get_audio_format_num(char *name)
+int get_audio_format_num(const char *name)
{
int i;
s->fc->inbufp = &s->receiver_node->buf;
s->fc->in_loaded = &s->receiver_node->loaded;
s->fc->input_error = &s->receiver_node->task.error;
- s->fc->task.pre_select = filter_pre_select;
- s->fc->task.post_select = NULL;
+ s->fc->task.pre_select = NULL;
+ s->fc->task.post_select = filter_post_select;
s->fc->task.error = 0;
s->fc->num_filters = nf;
stat_task->server_stream_start : *now;
s->offset_seconds = stat_task->offset_seconds;
s->seconds_total = stat_task->length_seconds;
- activate_inactive_grab_clients(slot_num, s->format, s->fc);
+ activate_inactive_grab_clients(s->format, s->fc);
}
static int open_receiver(int format)
{
int ret;
struct command_task *ct = container_of(t, struct command_task, task);
+ static struct timeval last_status_dump;
+ struct timeval tmp;
+
+ tv_add(&last_status_dump, &(struct timeval){0, 500 * 1000}, &tmp);
+ if (tv_diff(&tmp, now, NULL) < 0) {
+ audiod_status_dump();
+ last_status_dump = *now;
+ }
- audiod_status_dump();
if (!FD_ISSET(ct->fd, &s->rfds))
return;
ret = handle_connect(ct->fd);
drop_privileges_or_die(conf.user_arg, conf.group_arg);
parse_config_or_die();
init_colors_or_die();
+ init_random_seed_or_die();
daemon_set_flag(DF_LOG_TIME);
daemon_set_flag(DF_LOG_HOSTNAME);
daemon_set_flag(DF_LOG_LL);
register_task(&cmd_task->task);
register_task(&stat_task->task);
s.default_timeout.tv_sec = 0;
- s.default_timeout.tv_usec = 99 * 1000;
+ s.default_timeout.tv_usec = 999 * 1000;
ret = schedule(&s);
PARA_EMERG_LOG("%s\n", para_strerror(-ret));