Fixed reader.cpp to not show garbage while showing help on auto completing (on pressin tab) for executables like "ls -"

This commit is contained in:
Siteshwar Vashisht 2012-01-19 00:03:19 +05:30
parent 7e124cf95e
commit c959584831
7 changed files with 22 additions and 18 deletions

View file

@ -3894,9 +3894,13 @@ void builtin_get_names( array_list_t *list )
}
void builtin_get_names2(std::vector<completion_t> &list) {
for (int i=0;i<builtin.size; ++i) {
for (int i=0;i<builtin.size ; ++i) {
completion_t data_to_push;
data_to_push.completion = (wchar_t*) builtin.arr[i].key;
if (builtin.arr[i].key == 0)
continue;
data_to_push.completion = (wchar_t*)builtin.arr[i].key;
list.push_back( data_to_push );
}
}

View file

@ -166,7 +166,7 @@ wchar_t **completions_to_char_arr( std::vector<completion_t> &l )
}
for( i=0; i< l.size(); i++ )
{
res[i] = (wchar_t *)l.at(i).completion.c_str();
res[i] = const_cast<wchar_t*>(l.at(i).completion.c_str());
}
res[i]='\0';
return res;

View file

@ -1131,7 +1131,7 @@ static void complete_cmd( const wchar_t *cmd,
{
continue;
}
add_slash = nxt_path[path_len-1]!=L'/';
nxt_completion = wcsdupcat( nxt_path,
add_slash?L"/":L"",

View file

@ -1745,7 +1745,7 @@ int exec_subshell( const wchar_t *cmd,
CHECK( cmd, -1 );
// ifs = env_get(L"IFS");
const env_var_t ifs = env_get_string(L"IFS").empty()?NULL:env_get_string(L"IFS").c_str();
const env_var_t ifs = env_get_string(L"IFS");
if( ! ifs.missing_or_empty() )
{

View file

@ -691,7 +691,7 @@ static int expand_pid( wchar_t *in,
if( wcscmp( (in+1), SELF_STR )==0 )
{
wchar_t *str= (wchar_t *)malloc( sizeof(wchar_t)*32);
// free(in);
free(in);
swprintf( str, 32, L"%d", getpid() );
completion_t data_to_push;
@ -1787,7 +1787,8 @@ static int expand_cmdsubst2( const wcstring &input, std::vector<completion_t> &o
const wchar_t * const in = input.c_str();
completion_t data_to_push;
switch( parse_util_locate_cmdsubst(in,
int parse_ret;
switch( parse_ret = parse_util_locate_cmdsubst(in,
&paran_begin,
&paran_end,
0 ) )
@ -2059,7 +2060,7 @@ static void remove_internal_separator2( wcstring &s, int conv )
int expand_string2( const wcstring &input, std::vector<completion_t> &output, int flags )
{
std::vector<completion_t> list1, list2;
std::vector<completion_t> list1, list2;
std::vector<completion_t> *in, *out;
size_t i;
@ -2127,7 +2128,7 @@ int expand_string2( const wcstring &input, std::vector<completion_t> &output, in
}
else
{
if(!expand_variables2( next.empty()?NULL:const_cast<wchar_t*>(next.c_str()), *out, next.size() - 1 ))
if(!expand_variables2( const_cast<wchar_t*>(next.c_str()), *out, next.size() - 1 ))
{
return EXPAND_ERROR;
}
@ -2143,7 +2144,7 @@ int expand_string2( const wcstring &input, std::vector<completion_t> &output, in
{
wcstring next = in->at(i).completion;
if( !expand_brackets( const_cast<wchar_t*>(next.c_str()), flags, *out ))
if( !expand_brackets( wcsdup(next.c_str()), flags, *out ))
{
return EXPAND_ERROR;
}
@ -2169,7 +2170,7 @@ int expand_string2( const wcstring &input, std::vector<completion_t> &output, in
interested in other completions, so we
short-circut and return
*/
expand_pid( const_cast<wchar_t*>(next.c_str()), flags, output );
expand_pid( wcsdup(next.c_str()), flags, output );
return EXPAND_OK;
}
else
@ -2181,7 +2182,7 @@ int expand_string2( const wcstring &input, std::vector<completion_t> &output, in
}
else
{
if( !expand_pid( const_cast<wchar_t*>(next.c_str()), flags, *out ) )
if( !expand_pid( wcsdup(next.c_str()), flags, *out ) )
{
return EXPAND_ERROR;
}

View file

@ -1225,14 +1225,14 @@ static void run_pager( wchar_t *prefix, int is_quoted, const std::vector<complet
else
{
wcstring foo_wstr = escape_string( el.completion, ESCAPE_ALL | ESCAPE_NO_QUOTED );
foo = foo_wstr.empty()?NULL:const_cast<wchar_t*>(foo_wstr.c_str());
foo = wcsdup(foo_wstr.c_str());
}
}
if( !el.description.empty() )
{
wcstring baz_wstr = escape_string( el.description, 1 );
baz = baz_wstr.empty()?NULL:const_cast<wchar_t*>(baz_wstr.c_str());
baz = wcsdup(baz_wstr.c_str());
}
if( !foo )
@ -1254,8 +1254,8 @@ static void run_pager( wchar_t *prefix, int is_quoted, const std::vector<complet
foo );
}
// free( foo );
// free( baz );
free( foo );
free( baz );
}
free( escaped_separator );
@ -2889,7 +2889,6 @@ wchar_t *reader_readline()
// comp = al_halloc( 0 );
data->complete_func( buffcpy, comp );
sort_completion_list( comp );
remove_duplicates( comp );

View file

@ -810,7 +810,7 @@ static int wildcard_expand_internal( const wchar_t *wc,
return -1;
}
if( !wc || !base_dir || out.empty())
if( !wc || !base_dir )
{
debug( 2, L"Got null string on line %d of file %s", __LINE__, __FILE__ );
return 0;