Tag: move configuration code to TagConfig.cxx
Allow using the Tag.cxx library without the Config library.
This commit is contained in:
		| @@ -426,6 +426,7 @@ libtag_a_SOURCES =\ | ||||
| 	src/tag/Tag.cxx src/tag/Tag.hxx \ | ||||
| 	src/tag/TagHandler.cxx src/tag/TagHandler.hxx \ | ||||
| 	src/tag/TagInternal.hxx \ | ||||
| 	src/tag/TagConfig.cxx src/tag/TagConfig.hxx \ | ||||
| 	src/tag/TagNames.c \ | ||||
| 	src/tag/TagPool.cxx src/tag/TagPool.hxx \ | ||||
| 	src/tag/TagTable.cxx src/tag/TagTable.hxx \ | ||||
|   | ||||
| @@ -39,6 +39,7 @@ | ||||
| #include "Volume.hxx" | ||||
| #include "OutputAll.hxx" | ||||
| #include "tag/Tag.hxx" | ||||
| #include "tag/TagConfig.hxx" | ||||
| #include "replay_gain_config.h" | ||||
| #include "Idle.hxx" | ||||
| #include "SignalHandlers.hxx" | ||||
| @@ -376,6 +377,7 @@ int mpd_main(int argc, char *argv[]) | ||||
|  | ||||
| 	stats_global_init(); | ||||
| 	tag_lib_init(); | ||||
| 	TagLoadConfig(); | ||||
|  | ||||
| 	if (!log_init(options.verbose, options.log_stderr, error)) { | ||||
| 		g_warning("%s", error.GetMessage()); | ||||
|   | ||||
| @@ -21,15 +21,9 @@ | ||||
| #include "Tag.hxx" | ||||
| #include "TagInternal.hxx" | ||||
| #include "TagPool.hxx" | ||||
| #include "ConfigGlobal.hxx" | ||||
| #include "ConfigOption.hxx" | ||||
| #include "Song.hxx" | ||||
| #include "system/FatalError.hxx" | ||||
|  | ||||
| #include <glib.h> | ||||
| #include <assert.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  | ||||
| /** | ||||
| @@ -85,52 +79,8 @@ items_size(const Tag &tag) | ||||
|  | ||||
| void tag_lib_init(void) | ||||
| { | ||||
| 	const char *value; | ||||
| 	int quit = 0; | ||||
| 	char *temp; | ||||
| 	char *s; | ||||
| 	char *c; | ||||
| 	enum tag_type type; | ||||
|  | ||||
| 	/* parse the "metadata_to_use" config parameter below */ | ||||
|  | ||||
| 	/* ignore comments by default */ | ||||
| 	ignore_tag_items[TAG_COMMENT] = true; | ||||
|  | ||||
| 	value = config_get_string(CONF_METADATA_TO_USE, nullptr); | ||||
| 	if (value == nullptr) | ||||
| 		return; | ||||
|  | ||||
| 	memset(ignore_tag_items, true, TAG_NUM_OF_ITEM_TYPES); | ||||
|  | ||||
| 	if (0 == g_ascii_strcasecmp(value, "none")) | ||||
| 		return; | ||||
|  | ||||
| 	temp = c = s = g_strdup(value); | ||||
| 	while (!quit) { | ||||
| 		if (*s == ',' || *s == '\0') { | ||||
| 			if (*s == '\0') | ||||
| 				quit = 1; | ||||
| 			*s = '\0'; | ||||
|  | ||||
| 			c = g_strstrip(c); | ||||
| 			if (*c == 0) | ||||
| 				continue; | ||||
|  | ||||
| 			type = tag_name_parse_i(c); | ||||
| 			if (type == TAG_NUM_OF_ITEM_TYPES) | ||||
| 				FormatFatalError("error parsing metadata item \"%s\"", | ||||
| 						 c); | ||||
|  | ||||
| 			ignore_tag_items[type] = false; | ||||
|  | ||||
| 			s++; | ||||
| 			c = s; | ||||
| 		} | ||||
| 		s++; | ||||
| 	} | ||||
|  | ||||
| 	g_free(temp); | ||||
| } | ||||
|  | ||||
| void | ||||
|   | ||||
							
								
								
									
										73
									
								
								src/tag/TagConfig.cxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								src/tag/TagConfig.cxx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | ||||
| /* | ||||
|  * Copyright (C) 2003-2013 The Music Player Daemon Project | ||||
|  * 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., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #include "config.h" | ||||
| #include "TagConfig.hxx" | ||||
| #include "TagInternal.hxx" | ||||
| #include "Tag.hxx" | ||||
| #include "ConfigGlobal.hxx" | ||||
| #include "ConfigOption.hxx" | ||||
| #include "system/FatalError.hxx" | ||||
|  | ||||
| #include <glib.h> | ||||
|  | ||||
| #include <algorithm> | ||||
|  | ||||
| #include <string.h> | ||||
|  | ||||
| void | ||||
| TagLoadConfig() | ||||
| { | ||||
| 	const char *value = config_get_string(CONF_METADATA_TO_USE, nullptr); | ||||
| 	if (value == nullptr) | ||||
| 		return; | ||||
|  | ||||
| 	std::fill_n(ignore_tag_items, TAG_NUM_OF_ITEM_TYPES, true); | ||||
|  | ||||
| 	if (0 == g_ascii_strcasecmp(value, "none")) | ||||
| 		return; | ||||
|  | ||||
| 	bool quit = false; | ||||
| 	char *temp, *c, *s; | ||||
| 	temp = c = s = g_strdup(value); | ||||
| 	do { | ||||
| 		if (*s == ',' || *s == '\0') { | ||||
| 			if (*s == '\0') | ||||
| 				quit = true; | ||||
| 			*s = '\0'; | ||||
|  | ||||
| 			c = g_strstrip(c); | ||||
| 			if (*c == 0) | ||||
| 				continue; | ||||
|  | ||||
| 			const auto type = tag_name_parse_i(c); | ||||
| 			if (type == TAG_NUM_OF_ITEM_TYPES) | ||||
| 				FormatFatalError("error parsing metadata item \"%s\"", | ||||
| 						 c); | ||||
|  | ||||
| 			ignore_tag_items[type] = false; | ||||
|  | ||||
| 			s++; | ||||
| 			c = s; | ||||
| 		} | ||||
| 		s++; | ||||
| 	} while (!quit); | ||||
|  | ||||
| 	g_free(temp); | ||||
| } | ||||
							
								
								
									
										28
									
								
								src/tag/TagConfig.hxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/tag/TagConfig.hxx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| /* | ||||
|  * Copyright (C) 2003-2013 The Music Player Daemon Project | ||||
|  * 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., | ||||
|  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|  */ | ||||
|  | ||||
| #ifndef MPD_TAG_CONFIG_HXX | ||||
| #define MPD_TAG_CONFIG_HXX | ||||
|  | ||||
| #include "TagType.h" | ||||
|  | ||||
| void | ||||
| TagLoadConfig(); | ||||
|  | ||||
| #endif | ||||
| @@ -27,6 +27,7 @@ | ||||
| #include "ConfigGlobal.hxx" | ||||
| #include "ConfigData.hxx" | ||||
| #include "tag/Tag.hxx" | ||||
| #include "tag/TagConfig.hxx" | ||||
| #include "fs/Path.hxx" | ||||
| #include "util/Error.hxx" | ||||
|  | ||||
| @@ -105,6 +106,7 @@ main(int argc, char **argv) | ||||
| 	} | ||||
|  | ||||
| 	tag_lib_init(); | ||||
| 	TagLoadConfig(); | ||||
|  | ||||
| 	/* do it */ | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann