chiark / gitweb /
disorder.h: more consistent approach to function attributes
[disorder] / lib / configuration.h
index 0371f3ea642b641aa9477be30618c73847885a4a..c2a39aa8835c19f58fede0c514293f9c5733de6d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004-2010 Richard Kettlewell
+ * Copyright (C) 2004-2011, 2013 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
@@ -22,7 +22,9 @@
 #ifndef CONFIGURATION_H
 #define CONFIGURATION_H
 
-#include <pcre.h>
+#if HAVE_PCRE_H
+# include <pcre.h>
+#endif
 
 #include "speaker-protocol.h"
 #include "rights.h"
@@ -68,6 +70,8 @@ struct collectionlist {
   struct collection *s;
 };
 
+#if HAVE_PCRE_H
+/** @brief A track name part */
 struct namepart {
   char *part;                          /* part */
   pcre *re;                            /* compiled regexp */
@@ -77,11 +81,13 @@ struct namepart {
   unsigned reflags;                    /* regexp flags */
 };
 
+/** @brief A list of track name parts */
 struct namepartlist {
   int n;
   struct namepart *s;
 };
 
+/** @brief A track name transform */
 struct transform {
   char *type;                          /* track or dir */
   char *context;                       /* sort or choose */
@@ -90,10 +96,12 @@ struct transform {
   unsigned flags;                      /* regexp flags */
 };
 
+/** @brief A list of track name transforms */
 struct transformlist {
   int n;
   struct transform *t;
 };
+#endif
 
 /** @brief System configuration */
 struct config {
@@ -108,24 +116,15 @@ struct config {
   /** @brief All tracklength plugins */
   struct stringlistlist tracklength;
 
-  /** @brief Allowed users */
-  struct stringlistlist allow;
-
   /** @brief Scratch tracks */
   struct stringlist scratch;
 
-  /** @brief Gap between tracks in seconds */
-  long gap;
-
   /** @brief Maximum number of recent tracks to record in history */
   long history;
 
   /** @brief Expiry limit for noticed.db */
   long noticed_history;
   
-  /** @brief Trusted users */
-  struct stringlist trust;
-
   /** @brief User for server to run as */
   const char *user;
 
@@ -153,17 +152,12 @@ struct config {
   /** @brief Mixer channel to use */
   char *channel;
 
-  long prefsync;                       /* preflog sync interval */
-
   /** @brief Secondary listen address */
   struct netaddress listen;
 
   /** @brief Alias format string */
   const char *alias;
 
-  /** @brief Enable server locking */
-  int lock;
-
   /** @brief Nice value for server */
   long nice_server;
 
@@ -191,14 +185,16 @@ struct config {
   /** @brief Maximum lifetime of a playlist lock */
   long playlist_lock_timeout;
 
+#if !_WIN32
   /** @brief Home directory for state files */
   const char *home;
+#endif
 
   /** @brief Login username */
-  const char *username;
+  char *username;
 
   /** @brief Login password */
-  const char *password;
+  char *password;
 
   /** @brief Address to connect to */
   struct netaddress connect;
@@ -215,15 +211,8 @@ struct config {
   /** @brief Maximum refresh interval for web interface (seconds) */
   long refresh;
 
-  /** @brief Facilities restricted to trusted users
-   *
-   * A bitmap of @ref RESTRICT_SCRATCH, @ref RESTRICT_REMOVE and @ref
-   * RESTRICT_MOVE.
-   */
-  unsigned restrictions;               /* restrictions */
-#define RESTRICT_SCRATCH 1             /**< Restrict scratching */
-#define RESTRICT_REMOVE 2              /**< Restrict removal */
-#define RESTRICT_MOVE 4                        /**< Restrict rearrangement */
+  /** @brief Minimum refresh interval for web interface (seconds) */
+  long refresh_min;
 
   /** @brief Target queue length */
   long queue_pad;
@@ -231,14 +220,19 @@ struct config {
   /** @brief Minimum time between a track being played again */
   long replay_min;
   
+#if HAVE_PCRE_H
   struct namepartlist namepart;                /* transformations */
+#endif
 
   /** @brief Termination signal for subprocesses */
   int signal;
 
   /** @brief ALSA output device */
   const char *device;
+
+#if HAVE_PCRE_H
   struct transformlist transform;      /* path name transformations */
+#endif
 
   /** @brief Address to send audio data to */
   struct netaddress broadcast;
@@ -248,6 +242,9 @@ struct config {
 
   /** @brief RTP delay threshold */
   long rtp_delay_threshold;
+
+  /** @brief Verbose RTP transmission logging */
+  int rtp_verbose;
   
   /** @brief TTL for multicast packets */
   long multicast_ttl;
@@ -287,7 +284,13 @@ struct config {
 
   /** @brief Maximum bias */
   long new_bias;
-  
+
+  /** @brief Rescan on (un)mount */
+  int mount_rescan;
+
+  /** @brief RTP mode */
+  const char *rtp_mode;
+
   /* derived values: */
   int nparts;                          /* number of distinct name parts */
   char **parts;                                /* name part list  */
@@ -322,6 +325,8 @@ char *config_private(void);
 
 int config_verify(void);
 
+void config_free(struct config *c);
+
 extern char *configfile;
 extern int config_per_user;