From: Rafaël Carré Date: Thu, 19 Aug 2010 00:23:35 +0000 (+0200) Subject: fix zsh completion X-Git-Tag: 1.2.0-pre1~5386 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=faa09ff63a2bdf68db989a5a9bfe80027c951c0e;p=vlc fix zsh completion add needed header to fix build process all config items process all items of config lists (off by one) fix display of lists: some option have a space in their name --- diff --git a/extras/analyser/zsh.cpp b/extras/analyser/zsh.cpp index 318822ac15..609568a882 100644 --- a/extras/analyser/zsh.cpp +++ b/extras/analyser/zsh.cpp @@ -39,6 +39,7 @@ typedef std::pair mcpair; #include #include +#include /* evil hack */ #undef __PLUGIN__ @@ -145,7 +146,7 @@ void ParseModules( mumap &mods, mcmap &mods2 ) if( p_item->i_type & CONFIG_ITEM ) ParseOption( p_item, mods, mods2 ); } - while( i_items++ < p_module->i_config_items && p_item++ ); + while( ++i_items < p_module->confsize && p_item++ ); } module_list_free( p_list ); @@ -268,7 +269,7 @@ void ParseOption( module_config_t *p_item, mumap &mods, mcmap &mods2 ) int i = p_item->i_list -1; char *psz_list; if( p_item->ppsz_list_text ) - asprintf( &psz_list, "%s\\:%s", p_item->ppsz_list[i], + asprintf( &psz_list, "%s\\:\\\"%s\\\"", p_item->ppsz_list[i], p_item->ppsz_list_text[i] ); else psz_list = strdup(p_item->ppsz_list[i]); @@ -276,10 +277,10 @@ void ParseOption( module_config_t *p_item, mumap &mods, mcmap &mods2 ) while( i>1 ) { if( p_item->ppsz_list_text ) - asprintf( &psz_list2, "%s\\:%s %s", p_item->ppsz_list[i-1], + asprintf( &psz_list2, "%s\\:\\\"%s\\\" %s", p_item->ppsz_list[i-1], p_item->ppsz_list_text[i-1], psz_list ); else - asprintf( &psz_list2, "%s %s", p_item->ppsz_list[i-1], + asprintf( &psz_list2, "\\\"%s\\\" %s", p_item->ppsz_list[i-1], psz_list ); free( psz_list ); @@ -308,18 +309,18 @@ void ParseOption( module_config_t *p_item, mumap &mods, mcmap &mods2 ) int i = p_item->i_list -1; char *psz_list; if( p_item->ppsz_list_text ) - asprintf( &psz_list, "%d\\:%s", p_item->pi_list[i], + asprintf( &psz_list, "%d\\:\\\"%s\\\"", p_item->pi_list[i], p_item->ppsz_list_text[i] ); else psz_list = strdup(p_item->ppsz_list[i]); char *psz_list2; - while( i>1 ) + while( i > 0 ) { if( p_item->ppsz_list_text ) - asprintf( &psz_list2, "%d\\:%s %s", p_item->pi_list[i-1], + asprintf( &psz_list2, "%d\\:\\\"%s\\\" %s", p_item->pi_list[i-1], p_item->ppsz_list_text[i-1], psz_list ); else - asprintf( &psz_list2, "%s %s", p_item->ppsz_list[i-1], + asprintf( &psz_list2, "\\\"%s\\\" %s", p_item->ppsz_list[i-1], psz_list ); free( psz_list );