]> git.sesse.net Git - vlc/commitdiff
Partially fix interface parsing order when multiple lua intf aliases are used.
authorAntoine Cellerier <dionoea@videolan.org>
Wed, 30 Dec 2009 14:54:50 +0000 (15:54 +0100)
committerAntoine Cellerier <dionoea@videolan.org>
Wed, 30 Dec 2009 14:54:50 +0000 (15:54 +0100)
modules/misc/lua/intf.c

index 46c52c0b701a5db2ea0f7d86f49331d1c764060a..ad6247c6551206eb62971a5845b8d563a7906f98 100644 (file)
@@ -108,7 +108,7 @@ static const struct
     { "http", "http" },
     { NULL, NULL } };
 
-static bool WordInList( const char *psz_list, const char *psz_word )
+static const char *WordInList( const char *psz_list, const char *psz_word )
 {
     const char *psz_str = strstr( psz_list, psz_word );
     int i_len = strlen( psz_word );
@@ -118,10 +118,10 @@ static bool WordInList( const char *psz_list, const char *psz_word )
          /* it doesn't start in middle of a word */
          /* it doest end in middle of a word */
          && ( psz_str[i_len] == '\0' || psz_str[i_len] == ',' ) )
-            return true;
+            return psz_str;
         psz_str = strstr( psz_str, psz_word );
     }
-    return false;
+    return NULL;
 }
 
 static char *GetModuleName( intf_thread_t *p_intf )
@@ -132,12 +132,25 @@ static char *GetModuleName( intf_thread_t *p_intf )
         psz_intf = var_GetString( p_intf, p_intf->psz_intf+1 );
     else*/
         psz_intf = p_intf->psz_intf;
+
+    int i_candidate = -1;
+    const char *psz_candidate = NULL;
     for( i = 0; pp_shortcuts[i].psz_name; i++ )
     {
-        if( WordInList( psz_intf, pp_shortcuts[i].psz_shortcut ) )
-            return strdup( pp_shortcuts[i].psz_name );
+        const char *psz_match;
+        if( ( psz_match = WordInList( psz_intf, pp_shortcuts[i].psz_shortcut ) ) )
+        {
+            if( !psz_candidate || psz_match < psz_candidate )
+            {
+                psz_candidate = psz_match;
+                i_candidate = i;
+            }
+        }
     }
 
+    if( i_candidate >= 0 )
+        return strdup( pp_shortcuts[i_candidate].psz_name );
+
     return var_CreateGetString( p_intf, "lua-intf" );
 }