lib/alsa/Version: wrapper for snd_asoundlib_version()
This commit is contained in:
		| @@ -257,6 +257,7 @@ UPNP_SOURCES = \ | ||||
| 	src/lib/upnp/Action.hxx | ||||
|  | ||||
| ALSA_SOURCES = \ | ||||
| 	src/lib/alsa/Version.cxx src/lib/alsa/Version.hxx \ | ||||
| 	src/lib/alsa/NonBlock.cxx src/lib/alsa/NonBlock.hxx | ||||
|  | ||||
| # | ||||
|   | ||||
							
								
								
									
										52
									
								
								src/lib/alsa/Version.cxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								src/lib/alsa/Version.cxx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| /* | ||||
|  * Copyright 2003-2017 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 "Version.hxx" | ||||
|  | ||||
| #include <alsa/asoundlib.h> | ||||
|  | ||||
| gcc_pure | ||||
| static uint_least32_t | ||||
| ParseAlsaVersion(const char *p) | ||||
| { | ||||
| 	char *endptr; | ||||
| 	unsigned long major, minor = 0, subminor = 0; | ||||
|  | ||||
| 	major = strtoul(p, &endptr, 10); | ||||
| 	if (*endptr == '.') { | ||||
| 		p = endptr + 1; | ||||
| 		minor = strtoul(p, &endptr, 10); | ||||
| 		if (*endptr == '.') { | ||||
| 			p = endptr + 1; | ||||
| 			subminor = strtoul(p, nullptr, 10); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return MakeAlsaVersion(major, minor, subminor); | ||||
| } | ||||
|  | ||||
| uint_least32_t | ||||
| GetRuntimeAlsaVersion() | ||||
| { | ||||
| 	const char *version = snd_asoundlib_version(); | ||||
| 	if (version == nullptr) | ||||
| 		return 0; | ||||
|  | ||||
| 	return ParseAlsaVersion(version); | ||||
| } | ||||
							
								
								
									
										42
									
								
								src/lib/alsa/Version.hxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								src/lib/alsa/Version.hxx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| /* | ||||
|  * Copyright 2003-2017 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_ALSA_VERSION_HXX | ||||
| #define MPD_ALSA_VERSION_HXX | ||||
|  | ||||
| #include "Compiler.h" | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| static constexpr uint_least32_t | ||||
| MakeAlsaVersion(uint_least32_t major, uint_least32_t minor, | ||||
| 		uint_least32_t subminor) | ||||
| { | ||||
| 	return (major << 16) | (minor << 8) | subminor; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Wrapper for snd_asoundlib_version() which translates the resulting | ||||
|  * string to an integer constructed with MakeAlsaVersion(). | ||||
|  */ | ||||
| gcc_const | ||||
| uint_least32_t | ||||
| GetRuntimeAlsaVersion(); | ||||
|  | ||||
| #endif | ||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann