mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-02-01 06:48:30 +08:00
Clean up exec_subshell, removing al_list from it
This commit is contained in:
parent
6a31457c6d
commit
5f686ebb47
|
@ -301,7 +301,7 @@ bool autoload_t::locate_file_and_maybe_load_it( const wcstring &cmd, bool really
|
||||||
/* If we have a script, either built-in or a file source, then run it */
|
/* If we have a script, either built-in or a file source, then run it */
|
||||||
if (really_load && has_script_source)
|
if (really_load && has_script_source)
|
||||||
{
|
{
|
||||||
if( exec_subshell( script_source.c_str(), 0 ) == -1 )
|
if( exec_subshell( script_source) == -1 )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
Do nothing on failiure
|
Do nothing on failiure
|
||||||
|
|
|
@ -193,7 +193,7 @@ wcstring builtin_help_get( parser_t &parser, const wchar_t *name )
|
||||||
wcstring out;
|
wcstring out;
|
||||||
const wcstring name_esc = escape_string(name, 1);
|
const wcstring name_esc = escape_string(name, 1);
|
||||||
const wcstring cmd = format_string(L"__fish_print_help %ls", name_esc.c_str());
|
const wcstring cmd = format_string(L"__fish_print_help %ls", name_esc.c_str());
|
||||||
if( exec_subshell2( cmd, lst ) >= 0 )
|
if( exec_subshell( cmd, lst ) >= 0 )
|
||||||
{
|
{
|
||||||
for( size_t i=0; i<lst.size(); i++ )
|
for( size_t i=0; i<lst.size(); i++ )
|
||||||
{
|
{
|
||||||
|
|
|
@ -270,7 +270,7 @@ static int condition_test( const wchar_t *condition )
|
||||||
|
|
||||||
if (test_res == CC_NOT_TESTED )
|
if (test_res == CC_NOT_TESTED )
|
||||||
{
|
{
|
||||||
test_res = exec_subshell( condition, 0 )?CC_FALSE:CC_TRUE;
|
test_res = exec_subshell( condition)?CC_FALSE:CC_TRUE;
|
||||||
hash_put( condition_cache, condition, test_res );
|
hash_put( condition_cache, condition, test_res );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -946,7 +946,7 @@ static void complete_cmd_desc( const wchar_t *cmd, std::vector<completion_t> &co
|
||||||
since apropos is only called once.
|
since apropos is only called once.
|
||||||
*/
|
*/
|
||||||
wcstring_list_t list;
|
wcstring_list_t list;
|
||||||
if( exec_subshell2( lookup_cmd, list ) != -1 )
|
if( exec_subshell( lookup_cmd, list ) != -1 )
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
32
exec.cpp
32
exec.cpp
|
@ -1705,23 +1705,8 @@ void exec( parser_t &parser, job_t *j )
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int exec_subshell2( const wcstring &cmd, std::vector<wcstring> &outputs )
|
|
||||||
{
|
|
||||||
array_list_t lst;
|
|
||||||
al_init(&lst);
|
|
||||||
int result = exec_subshell(cmd.c_str(), &lst);
|
|
||||||
int i, max = al_get_count(&lst);
|
|
||||||
for (i=0; i < max; i++) {
|
|
||||||
wchar_t *tmp = (wchar_t *)al_get(&lst, i);
|
|
||||||
outputs.push_back(tmp);
|
|
||||||
free(tmp);
|
|
||||||
}
|
|
||||||
al_destroy(&lst);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
int exec_subshell( const wchar_t *cmd,
|
static int exec_subshell_internal( const wcstring &cmd, wcstring_list_t *lst )
|
||||||
array_list_t *lst )
|
|
||||||
{
|
{
|
||||||
char *begin, *end;
|
char *begin, *end;
|
||||||
char z=0;
|
char z=0;
|
||||||
|
@ -1730,7 +1715,6 @@ int exec_subshell( const wchar_t *cmd,
|
||||||
io_data_t *io_buffer;
|
io_data_t *io_buffer;
|
||||||
char sep=0;
|
char sep=0;
|
||||||
|
|
||||||
CHECK( cmd, -1 );
|
|
||||||
const env_var_t ifs = env_get_string(L"IFS");
|
const env_var_t ifs = env_get_string(L"IFS");
|
||||||
|
|
||||||
if( ! ifs.missing_or_empty() )
|
if( ! ifs.missing_or_empty() )
|
||||||
|
@ -1783,7 +1767,7 @@ int exec_subshell( const wchar_t *cmd,
|
||||||
wchar_t *el = str2wcs( begin );
|
wchar_t *el = str2wcs( begin );
|
||||||
if( el )
|
if( el )
|
||||||
{
|
{
|
||||||
al_push( lst, el );
|
lst->push_back(el);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1801,7 +1785,7 @@ int exec_subshell( const wchar_t *cmd,
|
||||||
el = str2wcs( begin );
|
el = str2wcs( begin );
|
||||||
if( el )
|
if( el )
|
||||||
{
|
{
|
||||||
al_push( lst, el );
|
lst->push_back(el);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1817,3 +1801,13 @@ int exec_subshell( const wchar_t *cmd,
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int exec_subshell( const wcstring &cmd, std::vector<wcstring> &outputs )
|
||||||
|
{
|
||||||
|
return exec_subshell_internal(cmd, &outputs);
|
||||||
|
}
|
||||||
|
|
||||||
|
__warn_unused int exec_subshell( const wcstring &cmd )
|
||||||
|
{
|
||||||
|
return exec_subshell_internal(cmd, NULL);
|
||||||
|
}
|
||||||
|
|
8
exec.h
8
exec.h
|
@ -50,14 +50,12 @@ void exec( parser_t &parser, job_t *j );
|
||||||
proc_gfet_last_status will not be changed.
|
proc_gfet_last_status will not be changed.
|
||||||
|
|
||||||
\param cmd the command to execute
|
\param cmd the command to execute
|
||||||
\param l The list to insert output into.If \c l is zero, the output will be discarded.
|
\param outputs The list to insert output into.
|
||||||
|
|
||||||
\return the status of the last job to exit, or -1 if en error was encountered.
|
\return the status of the last job to exit, or -1 if en error was encountered.
|
||||||
*/
|
*/
|
||||||
__warn_unused int exec_subshell( const wchar_t *cmd,
|
__warn_unused int exec_subshell(const wcstring &cmd, std::vector<wcstring> &outputs );
|
||||||
array_list_t *l );
|
__warn_unused int exec_subshell(const wcstring &cmd );
|
||||||
|
|
||||||
__warn_unused int exec_subshell2( const wcstring &cmd, std::vector<wcstring> &outputs );
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1262,7 +1262,7 @@ static int expand_cmdsubst( parser_t &parser, const wcstring &input, std::vector
|
||||||
|
|
||||||
const wcstring subcmd(paran_begin + 1, paran_end-paran_begin - 1);
|
const wcstring subcmd(paran_begin + 1, paran_end-paran_begin - 1);
|
||||||
|
|
||||||
if( exec_subshell2( subcmd, sub_res) == -1 )
|
if( exec_subshell( subcmd, sub_res) == -1 )
|
||||||
{
|
{
|
||||||
parser.error( CMDSUBST_ERROR, -1, L"Unknown error while evaulating command substitution" );
|
parser.error( CMDSUBST_ERROR, -1, L"Unknown error while evaulating command substitution" );
|
||||||
return 0;
|
return 0;
|
||||||
|
|
4
kill.cpp
4
kill.cpp
|
@ -126,7 +126,7 @@ void kill_add( wchar_t *str )
|
||||||
|
|
||||||
if (cmd != NULL)
|
if (cmd != NULL)
|
||||||
{
|
{
|
||||||
if( exec_subshell( cmd, 0 ) == -1 )
|
if( exec_subshell( cmd) == -1 )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
Do nothing on failiure
|
Do nothing on failiure
|
||||||
|
@ -224,7 +224,7 @@ static void kill_check_x_buffer()
|
||||||
wcstring cmd = L"xsel -t 500 -b";
|
wcstring cmd = L"xsel -t 500 -b";
|
||||||
wcstring new_cut_buffer=L"";
|
wcstring new_cut_buffer=L"";
|
||||||
wcstring_list_t list;
|
wcstring_list_t list;
|
||||||
if( exec_subshell2( cmd, list ) != -1 )
|
if( exec_subshell( cmd, list ) != -1 )
|
||||||
{
|
{
|
||||||
|
|
||||||
for( i=0; i<list.size(); i++ )
|
for( i=0; i<list.size(); i++ )
|
||||||
|
|
|
@ -685,7 +685,7 @@ void reader_write_title()
|
||||||
wcstring_list_t lst;
|
wcstring_list_t lst;
|
||||||
|
|
||||||
proc_push_interactive(0);
|
proc_push_interactive(0);
|
||||||
if( exec_subshell2( title, lst ) != -1 )
|
if( exec_subshell( title, lst ) != -1 )
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
if( lst.size() > 0 )
|
if( lst.size() > 0 )
|
||||||
|
@ -715,7 +715,7 @@ static void exec_prompt()
|
||||||
{
|
{
|
||||||
proc_push_interactive( 0 );
|
proc_push_interactive( 0 );
|
||||||
|
|
||||||
if( exec_subshell2( data->prompt.c_str(), prompt_list ) == -1 )
|
if( exec_subshell( data->prompt.c_str(), prompt_list ) == -1 )
|
||||||
{
|
{
|
||||||
/* If executing the prompt fails, make sure we at least don't print any junk */
|
/* If executing the prompt fails, make sure we at least don't print any junk */
|
||||||
prompt_list.clear();
|
prompt_list.clear();
|
||||||
|
|
|
@ -370,7 +370,7 @@ static wchar_t *complete_get_desc_suffix_internal( const wchar_t *suff_orig )
|
||||||
wcstring_list_t lst;
|
wcstring_list_t lst;
|
||||||
wcstring desc;
|
wcstring desc;
|
||||||
|
|
||||||
if( exec_subshell2( cmd, lst ) != -1 )
|
if( exec_subshell( cmd, lst ) != -1 )
|
||||||
{
|
{
|
||||||
if( lst.size()>0 )
|
if( lst.size()>0 )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user