[vlc-devel] commit: Partially fix interface parsing order when multiple lua intf aliases are used . (Antoine Cellerier )
git version control
git at videolan.org
Wed Dec 30 15:56:24 CET 2009
vlc | branch: master | Antoine Cellerier <dionoea at videolan.org> | Wed Dec 30 15:54:50 2009 +0100| [27d81721e3d7eff58387facf7be11f94b8f5e7b4] | committer: Antoine Cellerier
Partially fix interface parsing order when multiple lua intf aliases are used.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=27d81721e3d7eff58387facf7be11f94b8f5e7b4
---
modules/misc/lua/intf.c | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/modules/misc/lua/intf.c b/modules/misc/lua/intf.c
index 46c52c0..ad6247c 100644
--- a/modules/misc/lua/intf.c
+++ b/modules/misc/lua/intf.c
@@ -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" );
}
More information about the vlc-devel
mailing list