diff -urp ../xine-lib-1.1.4.orig/src/xine-engine/load_plugins.c ./src/xine-engine/load_plugins.c --- ../xine-lib-1.1.4.orig/src/xine-engine/load_plugins.c 2007-01-19 00:30:18.000000000 +0100 +++ ./src/xine-engine/load_plugins.c 2007-01-30 19:04:56.000000000 +0100 @@ -2366,9 +2366,19 @@ char *xine_get_file_extensions (xine_t * plugin_node_t *node; char *str; int list_id, list_size; + int havempgdecoder = 0; + const char * const * p; pthread_mutex_lock (&catalog->lock); + _build_list_typed_plugins(&catalog, catalog->plugin_lists[PLUGIN_AUDIO_DECODER - 1]); + for (p = catalog->ids; p && *p; p++) { + if (strcmp (*p, "mad") == 0 || strcmp (*p, "ffmpegaudio") == 0) { + havempgdecoder = 1; + break; + } + } + /* calc length of output */ len = 0; @@ -2382,7 +2392,8 @@ char *xine_get_file_extensions (xine_t * cls = (demux_class_t *)node->plugin_class; - if((exts = cls->get_extensions(cls)) && *exts) + if((exts = cls->get_extensions(cls)) && *exts && + (havempgdecoder || !strstr (exts, "mp3"))) len += strlen(exts) + 1; } } @@ -2402,7 +2413,8 @@ char *xine_get_file_extensions (xine_t * cls = (demux_class_t *)node->plugin_class; - if((e = cls->get_extensions (cls)) && *e) { + if((e = cls->get_extensions (cls)) && *e && + (havempgdecoder || !strstr (e, "mp3"))) { l = strlen(e); memcpy (&str[pos], e, l);