/* the Music Player Daemon (MPD) * Copyright (C) 2003-2007 by Warren Dukes (warren.dukes@gmail.com) * This project's homepage is: http://www.musicpd.org * * 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 * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef MPD_CONF_H #define MPD_CONF_H #include #include #define CONF_MUSIC_DIR "music_directory" #define CONF_PLAYLIST_DIR "playlist_directory" #define CONF_FOLLOW_INSIDE_SYMLINKS "follow_inside_symlinks" #define CONF_FOLLOW_OUTSIDE_SYMLINKS "follow_outside_symlinks" #define CONF_DB_FILE "db_file" #define CONF_STICKER_FILE "sticker_file" #define CONF_LOG_FILE "log_file" #define CONF_ERROR_FILE "error_file" #define CONF_PID_FILE "pid_file" #define CONF_STATE_FILE "state_file" #define CONF_USER "user" #define CONF_BIND_TO_ADDRESS "bind_to_address" #define CONF_PORT "port" #define CONF_LOG_LEVEL "log_level" #define CONF_ZEROCONF_NAME "zeroconf_name" #define CONF_ZEROCONF_ENABLED "zeroconf_enabled" #define CONF_PASSWORD "password" #define CONF_DEFAULT_PERMS "default_permissions" #define CONF_AUDIO_OUTPUT "audio_output" #define CONF_AUDIO_OUTPUT_FORMAT "audio_output_format" #define CONF_MIXER_TYPE "mixer_type" #define CONF_MIXER_DEVICE "mixer_device" #define CONF_MIXER_CONTROL "mixer_control" #define CONF_REPLAYGAIN "replaygain" #define CONF_REPLAYGAIN_PREAMP "replaygain_preamp" #define CONF_VOLUME_NORMALIZATION "volume_normalization" #define CONF_SAMPLERATE_CONVERTER "samplerate_converter" #define CONF_AUDIO_BUFFER_SIZE "audio_buffer_size" #define CONF_BUFFER_BEFORE_PLAY "buffer_before_play" #define CONF_HTTP_PROXY_HOST "http_proxy_host" #define CONF_HTTP_PROXY_PORT "http_proxy_port" #define CONF_HTTP_PROXY_USER "http_proxy_user" #define CONF_HTTP_PROXY_PASSWORD "http_proxy_password" #define CONF_CONN_TIMEOUT "connection_timeout" #define CONF_MAX_CONN "max_connections" #define CONF_MAX_PLAYLIST_LENGTH "max_playlist_length" #define CONF_MAX_COMMAND_LIST_SIZE "max_command_list_size" #define CONF_MAX_OUTPUT_BUFFER_SIZE "max_output_buffer_size" #define CONF_FS_CHARSET "filesystem_charset" #define CONF_ID3V1_ENCODING "id3v1_encoding" #define CONF_METADATA_TO_USE "metadata_to_use" #define CONF_SAVE_ABSOLUTE_PATHS "save_absolute_paths_in_playlists" #define CONF_DECODER "decoder" #define CONF_GAPLESS_MP3_PLAYBACK "gapless_mp3_playback" #define CONF_BOOL_UNSET -1 #define CONF_BOOL_INVALID -2 #define DEFAULT_PLAYLIST_MAX_LENGTH (1024*16) #define DEFAULT_PLAYLIST_SAVE_ABSOLUTE_PATHS false struct block_param { char *name; char *value; int line; }; struct config_param { char *value; unsigned int line; struct block_param *block_params; int num_block_params; }; void config_global_init(void); void config_global_finish(void); void config_read_file(const char *file); /** * Adds a new configuration parameter. The name must be registered * with registerConfigParam(). */ void config_add_param(const char *name, struct config_param *param); /* don't free the returned value set _last_ to NULL to get first entry */ struct config_param * config_get_next_param(const char *name, const struct config_param *last); static inline struct config_param * config_get_param(const char *name) { return config_get_next_param(name, NULL); } const char * config_get_string(const char *name, const char *default_value); /** * Returns an optional configuration variable which contains an * absolute path. If there is a tilde prefix, it is expanded. Aborts * MPD if the path is not a valid absolute path. */ const char * config_get_path(const char *name); unsigned config_get_positive(const char *name, unsigned default_value); struct block_param * getBlockParam(const struct config_param *param, const char *name); bool config_get_bool(const char *name, bool default_value); const char * config_get_block_string(const struct config_param *param, const char *name, const char *default_value); static inline char * config_dup_block_string(const struct config_param *param, const char *name, const char *default_value) { return g_strdup(config_get_block_string(param, name, default_value)); } unsigned config_get_block_unsigned(const struct config_param *param, const char *name, unsigned default_value); bool config_get_block_bool(const struct config_param *param, const char *name, bool default_value); struct config_param * newConfigParam(const char *value, int line); void config_param_free(gpointer data, gpointer user_data); void addBlockParam(struct config_param *param, const char *name, const char *value, int line); #endif