summaryrefslogtreecommitdiff
path: root/src/xine-engine/demux.c
diff options
context:
space:
mode:
authorDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2007-12-12 15:13:31 +0100
committerDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2007-12-12 15:13:31 +0100
commit552c28241aa1e6820857f5bf8bd8bbb9ee99dd99 (patch)
tree2b611c01a7fbb1cde54a58236557c61fd9b2248e /src/xine-engine/demux.c
parentb39d5d3f3e65ef7b741dc4d675dc4d91d250c25b (diff)
parenta151844ec16b67d6f844c176a611d5907e15ed5c (diff)
downloadxine-lib-552c28241aa1e6820857f5bf8bd8bbb9ee99dd99.tar.gz
xine-lib-552c28241aa1e6820857f5bf8bd8bbb9ee99dd99.tar.bz2
Merge with 1.2-plugins-changes.
Diffstat (limited to 'src/xine-engine/demux.c')
-rw-r--r--src/xine-engine/demux.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/xine-engine/demux.c b/src/xine-engine/demux.c
index f33397256..187c27873 100644
--- a/src/xine-engine/demux.c
+++ b/src/xine-engine/demux.c
@@ -448,6 +448,11 @@ int _x_demux_read_header( input_plugin_t *input, unsigned char *buffer, off_t si
int _x_demux_check_extension (const char *mrl, const char *extensions){
char *last_dot, *e, *ext_copy, *ext_work;
+ int found = 0;
+
+ /* An empty extensions string means that the by-extension method can't
+ be used, so consider those cases as always passing. */
+ if ( extensions == NULL ) return 1;
ext_copy = strdup(extensions);
ext_work = ext_copy;
@@ -455,15 +460,23 @@ int _x_demux_check_extension (const char *mrl, const char *extensions){
last_dot = strrchr (mrl, '.');
if (last_dot) {
last_dot++;
- while ( ( e = xine_strsep(&ext_work, " ")) != NULL ) {
+ }
+
+ while ( ( e = xine_strsep(&ext_work, " ")) != NULL ) {
+ if ( strstr(e, ":/") ) {
+ if ( strcasecmp (mrl, e) == 0 ) {
+ found = 1;
+ break;
+ }
+ } else if (last_dot) {
if (strcasecmp (last_dot, e) == 0) {
- free(ext_copy);
- return 1;
+ found = 1;
+ break;
}
}
}
free(ext_copy);
- return 0;
+ return found;
}