00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MPD_CONF_H
00021 #define MPD_CONF_H
00022
00023 #include <stdbool.h>
00024 #include <glib.h>
00025
00026 #define CONF_MUSIC_DIR "music_directory"
00027 #define CONF_PLAYLIST_DIR "playlist_directory"
00028 #define CONF_FOLLOW_INSIDE_SYMLINKS "follow_inside_symlinks"
00029 #define CONF_FOLLOW_OUTSIDE_SYMLINKS "follow_outside_symlinks"
00030 #define CONF_DB_FILE "db_file"
00031 #define CONF_STICKER_FILE "sticker_file"
00032 #define CONF_LOG_FILE "log_file"
00033 #define CONF_ERROR_FILE "error_file"
00034 #define CONF_PID_FILE "pid_file"
00035 #define CONF_STATE_FILE "state_file"
00036 #define CONF_USER "user"
00037 #define CONF_BIND_TO_ADDRESS "bind_to_address"
00038 #define CONF_PORT "port"
00039 #define CONF_LOG_LEVEL "log_level"
00040 #define CONF_ZEROCONF_NAME "zeroconf_name"
00041 #define CONF_ZEROCONF_ENABLED "zeroconf_enabled"
00042 #define CONF_PASSWORD "password"
00043 #define CONF_DEFAULT_PERMS "default_permissions"
00044 #define CONF_AUDIO_OUTPUT "audio_output"
00045 #define CONF_AUDIO_OUTPUT_FORMAT "audio_output_format"
00046 #define CONF_MIXER_TYPE "mixer_type"
00047 #define CONF_MIXER_DEVICE "mixer_device"
00048 #define CONF_MIXER_CONTROL "mixer_control"
00049 #define CONF_REPLAYGAIN "replaygain"
00050 #define CONF_REPLAYGAIN_PREAMP "replaygain_preamp"
00051 #define CONF_VOLUME_NORMALIZATION "volume_normalization"
00052 #define CONF_SAMPLERATE_CONVERTER "samplerate_converter"
00053 #define CONF_AUDIO_BUFFER_SIZE "audio_buffer_size"
00054 #define CONF_BUFFER_BEFORE_PLAY "buffer_before_play"
00055 #define CONF_HTTP_PROXY_HOST "http_proxy_host"
00056 #define CONF_HTTP_PROXY_PORT "http_proxy_port"
00057 #define CONF_HTTP_PROXY_USER "http_proxy_user"
00058 #define CONF_HTTP_PROXY_PASSWORD "http_proxy_password"
00059 #define CONF_CONN_TIMEOUT "connection_timeout"
00060 #define CONF_MAX_CONN "max_connections"
00061 #define CONF_MAX_PLAYLIST_LENGTH "max_playlist_length"
00062 #define CONF_MAX_COMMAND_LIST_SIZE "max_command_list_size"
00063 #define CONF_MAX_OUTPUT_BUFFER_SIZE "max_output_buffer_size"
00064 #define CONF_FS_CHARSET "filesystem_charset"
00065 #define CONF_ID3V1_ENCODING "id3v1_encoding"
00066 #define CONF_METADATA_TO_USE "metadata_to_use"
00067 #define CONF_SAVE_ABSOLUTE_PATHS "save_absolute_paths_in_playlists"
00068 #define CONF_DECODER "decoder"
00069 #define CONF_INPUT "input"
00070 #define CONF_GAPLESS_MP3_PLAYBACK "gapless_mp3_playback"
00071
00072 #define CONF_BOOL_UNSET -1
00073 #define CONF_BOOL_INVALID -2
00074
00075 #define DEFAULT_PLAYLIST_MAX_LENGTH (1024*16)
00076 #define DEFAULT_PLAYLIST_SAVE_ABSOLUTE_PATHS false
00077
00078 struct block_param {
00079 char *name;
00080 char *value;
00081 int line;
00082 };
00083
00084 struct config_param {
00085 char *value;
00086 unsigned int line;
00087
00088 struct block_param *block_params;
00089 unsigned num_block_params;
00090 };
00091
00092 void config_global_init(void);
00093 void config_global_finish(void);
00094
00095 void config_read_file(const char *file);
00096
00101 void
00102 config_add_param(const char *name, struct config_param *param);
00103
00104
00105
00106 struct config_param *
00107 config_get_next_param(const char *name, const struct config_param *last);
00108
00109 static inline struct config_param *
00110 config_get_param(const char *name)
00111 {
00112 return config_get_next_param(name, NULL);
00113 }
00114
00115 const char *
00116 config_get_string(const char *name, const char *default_value);
00117
00123 const char *
00124 config_get_path(const char *name);
00125
00126 unsigned
00127 config_get_positive(const char *name, unsigned default_value);
00128
00129 struct block_param *
00130 config_get_block_param(const struct config_param *param, const char *name);
00131
00132 bool config_get_bool(const char *name, bool default_value);
00133
00134 const char *
00135 config_get_block_string(const struct config_param *param, const char *name,
00136 const char *default_value);
00137
00138 static inline char *
00139 config_dup_block_string(const struct config_param *param, const char *name,
00140 const char *default_value)
00141 {
00142 return g_strdup(config_get_block_string(param, name, default_value));
00143 }
00144
00145 unsigned
00146 config_get_block_unsigned(const struct config_param *param, const char *name,
00147 unsigned default_value);
00148
00149 bool
00150 config_get_block_bool(const struct config_param *param, const char *name,
00151 bool default_value);
00152
00153 struct config_param *
00154 config_new_param(const char *value, int line);
00155
00156 void
00157 config_add_block_param(struct config_param *param, const char *name,
00158 const char *value, int line);
00159
00160 #endif