From: Laurent Aimar Date: Sun, 12 Apr 2009 13:24:23 +0000 (+0200) Subject: Implemented replacement for swab. X-Git-Tag: 1.0.0-pre2~92 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=e8689aeac08c65fd665c651f03f024e35249ec4b;p=vlc Implemented replacement for swab. --- diff --git a/compat/swab.c b/compat/swab.c new file mode 100644 index 0000000000..f0f34332b3 --- /dev/null +++ b/compat/swab.c @@ -0,0 +1,43 @@ +/***************************************************************************** + * swab.c: swab() replacement + ***************************************************************************** + * Copyright © 2009 the VideoLAN project + * + * 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. + *****************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +void swab( const void *p_src_, void *p_dst_, ssize_t n ) +{ + const uint8_t *p_src = p_src_; + uint8_t *p_dst = p_dst_; + + if( n < 0 ) + return; + + for( ssize_t i = 0; i < n-1; i += 2 ) + { + uint8_t i_tmp = p_src[i+0]; + p_dst[i+0] = p_src[i+1]; + p_dst[i+1] = i_tmp; + } +} + diff --git a/configure.ac b/configure.ac index 85f314c67f..a50ea8b407 100644 --- a/configure.ac +++ b/configure.ac @@ -552,10 +552,10 @@ dnl Check for system libs needed need_libc=false dnl Check for usual libc functions -AC_CHECK_FUNCS([gettimeofday isatty swab sigrelse getpwuid_r memalign posix_memalign if_nametoindex getenv putenv setenv ctime_r lrintf daemon fork lstat posix_fadvise posix_madvise uselocale]) +AC_CHECK_FUNCS([gettimeofday isatty sigrelse getpwuid_r memalign posix_memalign if_nametoindex getenv putenv setenv ctime_r lrintf daemon fork lstat posix_fadvise posix_madvise uselocale]) AC_FUNC_ALLOCA AC_CHECK_FUNCS(fcntl) -AC_REPLACE_FUNCS([asprintf atof atoll gmtime_r lldiv localtime_r rewind strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtoll vasprintf]) +AC_REPLACE_FUNCS([asprintf atof atoll gmtime_r lldiv localtime_r rewind strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtoll vasprintf swab]) AC_CHECK_FUNCS([stricmp strnicmp]) dnl Check for Linux system calls diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index 7c07079112..ecc8fecef6 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -184,4 +184,8 @@ typedef void *locale_t; #define N_(str) gettext_noop (str) #define gettext_noop(str) (str) +#ifndef HAVE_SWAB +void swab (const void *, void *, ssize_t); +#endif + #endif /* !LIBVLC_FIXUPS_H */