lib/alsa/Version: wrapper for snd_asoundlib_version()
This commit is contained in:
		@@ -257,6 +257,7 @@ UPNP_SOURCES = \
 | 
				
			|||||||
	src/lib/upnp/Action.hxx
 | 
						src/lib/upnp/Action.hxx
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ALSA_SOURCES = \
 | 
					ALSA_SOURCES = \
 | 
				
			||||||
 | 
						src/lib/alsa/Version.cxx src/lib/alsa/Version.hxx \
 | 
				
			||||||
	src/lib/alsa/NonBlock.cxx src/lib/alsa/NonBlock.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