diff options
Diffstat (limited to 'src/conf.h')
-rw-r--r-- | src/conf.h | 66 |
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 |