[vlc-devel] [PATCH 08/10] Moves a usefull function of access/directory.c from Remi Denis-Courmont to src/text/url.c
Julien 'Lta' BALLET
elthariel at gmail.com
Mon May 26 11:41:48 CEST 2014
From: Julien 'Lta' BALLET <contact at lta.io>
---
include/vlc_url.h | 1 +
src/libvlccore.sym | 1 +
src/text/url.c | 38 ++++++++++++++++++++++++++++++++++++++
3 files changed, 40 insertions(+)
diff --git a/include/vlc_url.h b/include/vlc_url.h
index 820250f..ef0b0f1 100644
--- a/include/vlc_url.h
+++ b/include/vlc_url.h
@@ -49,6 +49,7 @@ VLC_API char * decode_URI_duplicate( const char *psz ) VLC_MALLOC;
VLC_API char * decode_URI( char *psz );
VLC_API char * encode_URI_component( const char *psz ) VLC_MALLOC;
VLC_API char * make_path( const char *url ) VLC_MALLOC;
+VLC_API bool has_ext( const char *psz_exts, const char *psz_uri );
VLC_API void vlc_UrlParse (vlc_url_t *, const char *, unsigned char);
VLC_API void vlc_UrlClean (vlc_url_t *);
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 7150886..d0d37d7 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -245,6 +245,7 @@ vlc_UrlParse
vlc_UrlClean
vlc_path2uri
make_path
+has_ext
mdate
module_config_free
module_config_get
diff --git a/src/text/url.c b/src/text/url.c
index 3492a54..1814c2a 100644
--- a/src/text/url.c
+++ b/src/text/url.c
@@ -379,6 +379,44 @@ out:
static char *vlc_idna_to_ascii (const char *);
/**
+ * Does the provided URI/path/stuff has one of the extension provided ?
+ *
+ * \param psz_exts A comma separated list of extension without dot, or only
+ * one ext (ex: "avi,mkv,webm")
+ * \param psz_uri The uri/path to check (ex: "file:///home/foo/bar.avi")
+ *
+ * \return true if the uri/path has one of the provided extension
+ * false otherwise.
+ */
+bool has_ext( const char *psz_exts, const char *psz_uri )
+{
+ if( psz_exts == NULL )
+ return false;
+
+ const char *ext = strrchr( psz_uri, '.' );
+ if( ext == NULL )
+ return false;
+
+ size_t extlen = strlen (++ext);
+
+ for( const char *type = psz_exts, *end; type[0]; type = end + 1 )
+ {
+ end = strchr( type, ',' );
+ if ( end == NULL )
+ end = type + strlen( type );
+
+ if ( type + extlen == end && !strncasecmp ( ext, type, extlen ) )
+ return true;
+
+ if (*end == '\0')
+ break;
+ }
+
+ return false;
+}
+
+
+/**
* Splits an URL into parts.
* \param url structure of URL parts [OUT]
* \param str nul-terminated URL string to split
--
1.9.3
More information about the vlc-devel
mailing list