From 22fe2438b98e2d041b4481c0c8706096a8f160ce Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sat, 24 May 2008 12:40:57 +0300 Subject: [PATCH] Simplify, fix and inline strcasecmp and strncasecmp --- include/vlc_common.h | 2 -- include/vlc_fixups.h | 22 +++++++++++++++++++-- src/extras/libc.c | 46 -------------------------------------------- src/libvlccore.sym | 2 -- 4 files changed, 20 insertions(+), 52 deletions(-) diff --git a/include/vlc_common.h b/include/vlc_common.h index 99166d4fba..87f2e904a2 100644 --- a/include/vlc_common.h +++ b/include/vlc_common.h @@ -728,8 +728,6 @@ struct dirent; VLC_EXPORT( int, vlc_scandir, ( const char *name, struct dirent ***namelist, int (*filter) ( const struct dirent * ), int (*compar) ( const struct dirent **, const struct dirent ** ) ) ); VLC_EXPORT( int, vlc_alphasort, ( const struct dirent **a, const struct dirent **b ) ); -VLC_EXPORT( int, vlc_strcasecmp, ( const char *s1, const char *s2 ) ); -VLC_EXPORT( int, vlc_strncasecmp, ( const char *s1, const char *s2, size_t n ) ); VLC_EXPORT( char *, vlc_strcasestr, ( const char *s1, const char *s2 ) ); #if defined(WIN32) || defined(UNDER_CE) diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index cd7dc8288a..10f5448ca8 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -117,7 +117,16 @@ static inline getenv (const char *name) #ifndef HAVE_STRCASECMP # ifndef HAVE_STRICMP -# define strcasecmp vlc_strcasecmp +# include +static inline int strcasecmp (const char *s1, const char *s2) +{ + for (size_t i = 0;; i++) + { + int d = tolower (s1[i]) - tolower (s2[i]); + if (d) return d; + } + return 0; +} # else # define strcasecmp stricmp # endif @@ -125,7 +134,16 @@ static inline getenv (const char *name) #ifndef HAVE_STRNCASECMP # ifndef HAVE_STRNICMP -# define strncasecmp vlc_strncasecmp +# include +static inline int strncasecmp (const char *s1, const char *s2, size_t n) +{ + for (size_t i = 0; i < n; i++) + { + int d = tolower (s1[i]) - tolower (s2[i]); + if (d) return d; + } + return 0; +} # else # define strncasecmp strnicmp # endif diff --git a/src/extras/libc.c b/src/extras/libc.c index 0c100397ba..5b8e9b20b3 100644 --- a/src/extras/libc.c +++ b/src/extras/libc.c @@ -74,52 +74,6 @@ # define strcoll strcmp #endif -/***************************************************************************** - * strcasecmp: compare two strings ignoring case - *****************************************************************************/ -#if !defined( HAVE_STRCASECMP ) && !defined( HAVE_STRICMP ) -int vlc_strcasecmp( const char *s1, const char *s2 ) -{ - int c1, c2; - if( !s1 || !s2 ) return -1; - - while( *s1 && *s2 ) - { - c1 = tolower(*s1); - c2 = tolower(*s2); - - if( c1 != c2 ) return (c1 < c2 ? -1 : 1); - s1++; s2++; - } - - if( !*s1 && !*s2 ) return 0; - else return (*s1 ? 1 : -1); -} -#endif - -/***************************************************************************** - * strncasecmp: compare n chars from two strings ignoring case - *****************************************************************************/ -#if !defined( HAVE_STRNCASECMP ) && !defined( HAVE_STRNICMP ) -int vlc_strncasecmp( const char *s1, const char *s2, size_t n ) -{ - int c1, c2; - if( !s1 || !s2 ) return -1; - - while( n > 0 && *s1 && *s2 ) - { - c1 = tolower(*s1); - c2 = tolower(*s2); - - if( c1 != c2 ) return (c1 < c2 ? -1 : 1); - s1++; s2++; n--; - } - - if( !n || (!*s1 && !*s2) ) return 0; - else return (*s1 ? 1 : -1); -} -#endif - /****************************************************************************** * strcasestr: find a substring (little) in another substring (big) * Case sensitive. Return NULL if not found, return big if little == null diff --git a/src/libvlccore.sym b/src/libvlccore.sym index 24392c1dce..0f4a1410c4 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -438,10 +438,8 @@ vlc_recvmsg vlc_scandir vlc_sdp_Start vlc_sendmsg -vlc_strcasecmp vlc_strcasestr vlc_strlcpy -vlc_strncasecmp vlc_strtoll vlc_submodule_create __vlc_thread_create -- 2.39.2