From e2123909a9be46a704bc922ae9cf0a0a50040cc8 Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Wed, 3 Sep 2008 21:07:12 +0200 Subject: [PATCH] Implemented strsep replacement. --- include/vlc_common.h | 1 + include/vlc_fixups.h | 4 ++++ src/extras/libc.c | 22 ++++++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/include/vlc_common.h b/include/vlc_common.h index 52d01ca657..66550db4ff 100644 --- a/include/vlc_common.h +++ b/include/vlc_common.h @@ -755,6 +755,7 @@ VLC_EXPORT( size_t, vlc_strlcpy, ( char *, const char *, size_t ) ); VLC_EXPORT( long long, vlc_strtoll, ( const char *nptr, char **endptr, int base ) ); VLC_EXPORT( char *, vlc_strcasestr, ( const char *s1, const char *s2 ) ); +VLC_EXPORT( char *, vlc_strsep, ( char **, const char * ) ); #if defined(WIN32) || defined(UNDER_CE) /* win32, cl and icl support */ diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index df250fc818..11e279f805 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -108,6 +108,10 @@ static inline char *strndup (const char *str, size_t max) # define strtoll vlc_strtoll #endif +#ifndef HAVE_STRSEP +# define strsep vlc_strsep +#endif + #ifndef HAVE_ATOLL # define atoll( str ) (strtoll ((str), (char **)NULL, 10)) #endif diff --git a/src/extras/libc.c b/src/extras/libc.c index f58f05fe77..f20b8a31d5 100644 --- a/src/extras/libc.c +++ b/src/extras/libc.c @@ -208,6 +208,28 @@ extern size_t vlc_strlcpy (char *tgt, const char *src, size_t bufsize) #endif } +/** + * Extract a token from string. + * It is a replacement for strsep if not present. + */ +char *vlc_strsep( char **ppsz_string, const char *psz_delimiters ) +{ + char *psz_string = *ppsz_string; + if( !psz_string ) + return NULL; + + char *p = strpbrk( psz_string, psz_delimiters ); + if( !p ) + { + *ppsz_string = NULL; + return psz_string; + } + *p++ = '\0'; + + *ppsz_string = p; + return psz_string; +} + /***************************************************************************** * vlc_*dir_wrapper: wrapper under Windows to return the list of drive letters * when called with an empty argument or just '\' -- 2.39.5