+
/*
* This file is part of DisOrder.
- * Copyright (C) 2004, 2005, 2006, 2007 Richard Kettlewell
+ * Copyright (C) 2004-2008 Richard Kettlewell
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#ifndef CONFIGURATION_H
#define CONFIGURATION_H
-#include "speaker-protocol.h"
+#include <pcre.h>
-struct real_pcre;
+#include "speaker-protocol.h"
+#include "rights.h"
/* Configuration is kept in a @struct config@; the live configuration
* is always pointed to by @config@. Values in @config@ are UTF-8 encoded.
struct namepart {
char *part; /* part */
- struct real_pcre *re; /* regexp */
+ pcre *re; /* regexp */
char *replace; /* replacement string */
char *context; /* context glob */
unsigned reflags; /* regexp flags */
char *type; /* track or dir */
char *context; /* sort or choose */
char *replace; /* substitution string */
- struct real_pcre *re; /* compiled re */
+ pcre *re; /* compiled re */
unsigned flags; /* regexp flags */
};
/** @brief Sox syntax generation */
long sox_generation;
- /** @brief Speaker backend
+ /** @brief API used to play sound
*
* Choices are @ref BACKEND_ALSA, @ref BACKEND_COMMAND or @ref
* BACKEND_NETWORK.
*/
- int speaker_backend;
+ int api;
+
+/* These values had better be non-negative */
#define BACKEND_ALSA 0 /**< Use ALSA (Linux only) */
#define BACKEND_COMMAND 1 /**< Execute a command */
#define BACKEND_NETWORK 2 /**< Transmit RTP */
#define BACKEND_COREAUDIO 3 /**< Use Core Audio (Mac only) */
#define BACKEND_OSS 4 /**< Use OSS */
+#if HAVE_ALSA_ASOUNDLIB_H
+# define DEFAULT_BACKEND BACKEND_ALSA
+#elif HAVE_SYS_SOUNDCARD_H || EMPEG_HOST
+# define DEFAULT_BACKEND BACKEND_OSS
+#elif HAVE_COREAUDIO_AUDIOHARDWARE_H
+# define DEFAULT_BACKEND BACKEND_COREAUDIO
+#else
+# error Cannot choose a default backend
+#endif
+
/** @brief Home directory for state files */
const char *home;
struct stringlist templates;
/** @brief Canonical URL of web interface */
- const char *url;
+ char *url;
/** @brief Short display limit */
long short_display;
/** @brief Target queue length */
long queue_pad;
+ /** @brief Minimum time between a track being played again */
+ long replay_min;
+
struct namepartlist namepart; /* transformations */
/** @brief Termination signal for subprocesses */
/** @brief TTL for multicast packets */
long multicast_ttl;
+ /** @brief Whether to loop back multicast packets */
+ int multicast_loop;
+
+ /** @brief Login lifetime in seconds */
+ long cookie_login_lifetime;
+
+ /** @brief Signing key lifetime in seconds */
+ long cookie_key_lifetime;
+
+ /** @brief Default rights for a new user */
+ char *default_rights;
+
+ /** @brief SMTP server for sending mail */
+ char *smtp_server;
+
+ /** @brief Origin address for outbound mail */
+ char *mail_sender;
+
+ /** @brief Maximum number of tracks in response to 'new' */
+ long new_max;
+
+ /** @brief Minimum interval between password reminder emails */
+ long reminder_interval;
+
+ /** @brief Whether to allow user management over TCP */
+ int remote_userman;
+
+ /** @brief Maximum age of biased-up tracks */
+ long new_bias_age;
+
+ /** @brief Maximum bias */
+ long new_bias;
+
/* derived values: */
int nparts; /* number of distinct name parts */
char **parts; /* name part list */
/* get the private config file */
extern char *configfile;
+extern int config_per_user;
#endif /* CONFIGURATION_H */