aboutsummaryrefslogtreecommitdiffstats
path: root/src/conf.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/conf.h')
-rw-r--r--src/conf.h66
1 files changed, 49 insertions, 17 deletions
diff --git a/src/conf.h b/src/conf.h
index 1c9413654..1c5e3fb51 100644
--- a/src/conf.h
+++ b/src/conf.h
@@ -20,6 +20,7 @@
#define CONF_H
#include "../config.h"
+#include "list.h"
#define CONF_PORT "port"
#define CONF_MUSIC_DIR "music_directory"
@@ -33,7 +34,6 @@
#define CONF_BUFFER_BEFORE_PLAY "buffer_before_play"
#define CONF_MAX_COMMAND_LIST_SIZE "max_command_list_size"
#define CONF_MAX_OUTPUT_BUFFER_SIZE "max_output_buffer_size"
-#define CONF_AUDIO_OUTPUT "audio_output"
#define CONF_SAVE_ABSOLUTE_PATHS "save_absolute_paths_in_playlists"
#define CONF_BIND_TO_ADDRESS "bind_to_address"
#define CONF_MIXER_TYPE "mixer_type"
@@ -56,37 +56,69 @@
#define CONF_REPLAYGAIN_PREAMP "replaygain_preamp"
#define CONF_ID3V1_ENCODING "id3v1_encoding"
-typedef struct _BlockParam {
- char * name;
- char * value;
- int line;
-} BlockParam;
+/* general audio output options */
+#define CONF_AUDIO_OUTPUT "audio_output"
+#define CONF_AO_NAME "name"
+#define CONF_AO_TYPE "type"
+#define CONF_AO_FORMAT "format"
+
+/* libao options */
+#define CONF_AO_DRIVER "driver"
+#define CONF_AO_OPTIONS "options"
+
+/* shout */
+#define CONF_AO_MOUNT "mount"
+#define CONF_AO_QUALITY "quality"
+#define CONF_AO_USER "user"
+#define CONF_AO_PORT "port"
+#define CONF_AO_PASSWORD "password"
typedef struct _ConfigParam {
- char * value;
- unsigned int line;
- BlockParam * blockParams;
- int numberOfBlockParams;
+ char * name;
+ List * subParamsList;
} ConfigParam;
+typedef struct _ConfigEntry {
+ char * name;
+ char * value;
+ int line;
+ List * subEntriesList;
+ int quieried;
+} ConfigEntry;
+
void initConf();
void readConf(char * file);
/* don't free the returned value
set _last_ to NULL to get first entry */
-ConfigParam * getNextConfigParam(char * name, ConfigParam * last);
+ConfigEntry * getNextChildConfigEntry(ConfigEntry * parent, char * name,
+ ListNode ** last);
+
+#define getNextConfigEntry(name, last) \
+ getNextChildConfigEntry(NULL, name, NULL)
+
+#define getChildConfigEntry(parent, name) \
+ getNextChildConfigEntry(parent, name, NULL)
+
+#define getConfigEntry(name) getNextConfigEntry(name, NULL)
+
+char * getChildConfigEntryValue(ConfigEntry * parent, char * name);
+
+#define getConfigEntryValue(name) getChildConfigEntryValue(NULL, name)
-#define getConfigParam(name) getNextConfigParam(name, NULL)
+char * forceAndGetChildConfigEntryValue(ConfigEntry * parent, char * name);
-char * getConfigParamValue(char * name);
+#define forceAndGetConfigEntryValue(name) \
+ forceAndGetChildConfigEntryValue(NULL, name)
-char * forceAndGetConfigParamValue(char * name);
+ConfigParam * registerChildConfigParam(ConfigParam * parent, char * name);
-void registerConfigParam(char * name, int repeats, int block);
+#define registerConfigParam(name) registerChildConfigParam(NULL, name)
-BlockParam * getBlockParam(ConfigParam * param, char * name);
+char * parseChildConfigFilePath(ConfigEntry * parent, char * name, int force);
-char * parseConfigFilePath(char * name, int force);
+#define parseConfigFilePath(name, force) \
+ parseChildConfigFilePath(NULL, name, force)
#endif