Commit 11884b88 authored by Laurent Aimar's avatar Laurent Aimar

Added strnlen replacement (Untested)

Revert back mp4 r20330 !
parent 11db57b5
......@@ -463,7 +463,7 @@ need_libc=false
AC_CHECK_FUNCS(gettimeofday strtod strtol strtof strtoll strtoull strsep isatty vasprintf asprintf swab sigrelse getpwuid memalign posix_memalign if_nametoindex atoll getenv putenv setenv gmtime_r ctime_r localtime_r lrintf daemon scandir fork bsearch lstat strlcpy)
dnl Check for usual libc functions
AC_CHECK_FUNCS(strdup strndup atof)
AC_CHECK_FUNCS(strdup strndup strnlen atof)
AC_CHECK_FUNCS(strcasecmp,,[AC_CHECK_FUNCS(stricmp)])
AC_CHECK_FUNCS(strncasecmp,,[AC_CHECK_FUNCS(strnicmp)])
AC_CHECK_FUNCS(strcasestr,,[AC_CHECK_FUNCS(stristr)])
......
......@@ -871,6 +871,13 @@ static inline void _SetQWBE( uint8_t *p, uint64_t i_qw )
# define vlc_strndup NULL
#endif
#ifndef HAVE_STRNLEN
# define strnlen vlc_strnlen
VLC_EXPORT( size_t, vlc_strnlen, ( const char *, size_t ) );
#elif !defined(__PLUGIN__)
# define vlc_strnlen NULL
#endif
#ifndef HAVE_STRLCPY
# define strlcpy vlc_strlcpy
VLC_EXPORT( size_t, vlc_strlcpy, ( char *, const char *, size_t ) );
......
......@@ -61,17 +61,18 @@
MP4_GET1BYTE( p_void->i_version ); \
MP4_GET3BYTES( p_void->i_flags )
#define MP4_GETSTRINGZ( p_str ) \
if( ( i_read > 0 )&&(p_peek[0] ) ) \
{ \
p_str = calloc( sizeof( char ), __MIN( strlen( (char*)p_peek ), i_read )+1);\
memcpy( p_str, p_peek, __MIN( strlen( (char*)p_peek ), i_read ) ); \
p_str[__MIN( strlen( (char*)p_peek ), i_read )] = 0; \
p_peek += strlen( (char *)p_str ) + 1; \
i_read -= strlen( (char *)p_str ) + 1; \
} \
else \
{ \
#define MP4_GETSTRINGZ( p_str ) \
if( (i_read > 0) && (p_peek[0]) ) \
{ \
const int __i_copy__ = strnlen( (char*)p_peek, i_read-1 ); \
p_str = calloc( sizeof(char), __i_copy__+1 ); \
if( __i_copy__ > 0 ) memcpy( p_str, p_peek, __i_copy__ ); \
p_str[__i_copy__] = 0; \
p_peek += __i_copy__ + 1; \
i_read -= __i_copy__ + 1; \
} \
else \
{ \
p_str = NULL; \
}
......
......@@ -112,6 +112,17 @@ char *vlc_strndup( const char *string, size_t n )
}
#endif
/*****************************************************************************
* strnlen:
*****************************************************************************/
#if !defined( HAVE_STRNLEN )
size_t vlc_strnlen( const char *psz, size_t n )
{
const char *psz_end = memchr( psz, 0, n );
return psz_end ? ( psz_end - psz ) : n;
}
#endif
/*****************************************************************************
* strcasecmp: compare two strings ignoring case
*****************************************************************************/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment