X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=mozilla%2Fvlcplugin.cpp;h=afa1399b0022740f9afb6a69ac58fabed56a60bc;hb=850319351cc5f88cecbf55c5b53dece25e543cf8;hp=a9e1781d2ddb928c12036ed85605133ca4559058;hpb=1d8b6ccb091e26a741df730f8d709bf4929d1ace;p=vlc diff --git a/mozilla/vlcplugin.cpp b/mozilla/vlcplugin.cpp index a9e1781d2d..afa1399b00 100644 --- a/mozilla/vlcplugin.cpp +++ b/mozilla/vlcplugin.cpp @@ -62,7 +62,7 @@ VlcPlugin::VlcPlugin( NPP instance, uint16 mode ) : } static bool boolValue(const char *value) { - return ( !strcmp(value, "1") || + return ( !strcmp(value, "1") || !strcasecmp(value, "true") || !strcasecmp(value, "yes") ); } @@ -70,8 +70,8 @@ static bool boolValue(const char *value) { NPError VlcPlugin::init(int argc, char* const argn[], char* const argv[]) { /* prepare VLC command line */ - char *ppsz_argv[32] = { "vlc" }; - int ppsz_argc = 1; + char *ppsz_argv[32]; + int ppsz_argc = 0; /* locate VLC module path */ #ifdef XP_MACOSX @@ -98,24 +98,6 @@ NPError VlcPlugin::init(int argc, char* const argn[], char* const argv[]) RegCloseKey( h_key ); } ppsz_argv[ppsz_argc++] = "--no-one-instance"; - if( IsDebuggerPresent() ) - { - /* - ** VLC default threading mechanism is designed to be as compatible - ** with POSIX as possible. However when debugged on win32, threads - ** lose signals and eventually VLC get stuck during initialization. - ** threading support can be configured to be more debugging friendly - ** but it will be less compatible with POSIX. - ** This is done by initializing with the following options: - */ - ppsz_argv[ppsz_argc++] = "--fast-mutex"; - ppsz_argv[ppsz_argc++] = "--win9x-cv-method=1"; - } - - -#if 0 - ppsz_argv[0] = "C:\\Cygwin\\home\\damienf\\vlc-trunk\\vlc"; -#endif #endif /* XP_MACOSX */ @@ -287,7 +269,7 @@ VlcPlugin::~VlcPlugin() if( libvlc_log ) libvlc_log_close(libvlc_log, NULL); if( libvlc_instance ) - libvlc_destroy(libvlc_instance, NULL ); + libvlc_release(libvlc_instance, NULL ); } /***************************************************************************** @@ -304,15 +286,26 @@ char *VlcPlugin::getAbsoluteURL(const char *url) { // validate protocol header const char *start = url; - while( start != end ) { - char c = tolower(*start); - if( (c < 'a') || (c > 'z') ) - // not valid protocol header, assume relative URL - goto relativeurl; + char c = *start; + if( isalpha(c) ) + { ++start; + while( start != end ) + { + c = *start; + if( ! (isalnum(c) + || ('-' == c) + || ('+' == c) + || ('.' == c) + || ('/' == c)) ) /* VLC uses / to allow user to specify a demuxer */ + // not valid protocol header, assume relative URL + goto relativeurl; + ++start; + } + /* we have a protocol header, therefore URL is absolute */ + return strdup(url); } - /* we have a protocol header, therefore URL is absolute */ - return strdup(url); + // not a valid protocol header, assume relative URL } relativeurl: @@ -379,7 +372,7 @@ relativeurl: return href; } - /* find last path component and replace it */ + /* find last path component and replace it */ while( '/' != *pathend) --pathend; @@ -406,7 +399,7 @@ relativeurl: url = ++p; continue; } - if( '.' != *p ) + if( '.' != *p ) break; ++p; if( '\0' == *p ) @@ -415,7 +408,7 @@ relativeurl: } else { - if( '/' != *p ) + if( '/' != *p ) break; /* relative url starts with '../' */ ++p;