diff --git a/builtin.cpp b/builtin.cpp index dbaf5714b..1eaec88e1 100644 --- a/builtin.cpp +++ b/builtin.cpp @@ -1074,7 +1074,7 @@ static int builtin_generic( parser_t &parser, wchar_t **argv ) Output a definition of the specified function to the specified stringbuffer. Used by the functions builtin. */ -static void functions_def( wchar_t *name, string_buffer_t *out ) +static void functions_def( const wcstring &name, string_buffer_t *out ) { const wchar_t *desc = function_get_desc( name ); const wchar_t *def = function_get_definition(name); @@ -1088,7 +1088,7 @@ static void functions_def( wchar_t *name, string_buffer_t *out ) sb_append( out, L"function ", - name, + name.c_str(), NULL); if( desc && wcslen(desc) ) @@ -1369,8 +1369,8 @@ static int builtin_functions( parser_t &parser, wchar_t **argv ) } else if( copy ) { - wchar_t *current_func; - wchar_t *new_func; + wcstring current_func; + wcstring new_func; if( argc-woptind != 2 ) { @@ -1389,18 +1389,18 @@ static int builtin_functions( parser_t &parser, wchar_t **argv ) sb_printf( sb_err, _( L"%ls: Function '%ls' does not exist\n" ), argv[0], - current_func ); + current_func.c_str() ); builtin_print_help( parser, argv[0], sb_err ); return STATUS_BUILTIN_ERROR; } - if( (wcsfuncname( new_func ) != 0) || parser_keywords_is_reserved( new_func ) ) + if( (wcsfuncname( new_func.c_str() ) != 0) || parser_keywords_is_reserved( new_func ) ) { sb_printf( sb_err, _( L"%ls: Illegal function name '%ls'\n"), argv[0], - new_func ); + new_func.c_str()); builtin_print_help( parser, argv[0], sb_err ); return STATUS_BUILTIN_ERROR; } @@ -1411,8 +1411,8 @@ static int builtin_functions( parser_t &parser, wchar_t **argv ) sb_printf( sb_err, _( L"%ls: Function '%ls' already exists. Cannot create copy '%ls'\n" ), argv[0], - new_func, - current_func ); + new_func.c_str(), + current_func.c_str() ); builtin_print_help( parser, argv[0], sb_err ); return STATUS_BUILTIN_ERROR; @@ -3682,9 +3682,8 @@ void builtin_get_names(std::vector &list) { } } -const wchar_t *builtin_get_desc( const wchar_t *name ) +const wchar_t *builtin_get_desc( const wcstring &name ) { - CHECK( name, 0 ); const builtin_data_t *builtin = builtin_lookup(name); return builtin ? _(builtin->desc) : NULL; } diff --git a/builtin.h b/builtin.h index 1083149de..2e86c1d0b 100644 --- a/builtin.h +++ b/builtin.h @@ -159,7 +159,7 @@ void builtin_pop_io(parser_t &parser); /** Return a one-line description of the specified builtin. This is usually a truly constant string, so we should not wrap it in a wcstring. */ -const wchar_t *builtin_get_desc( const wchar_t *b ); +const wchar_t *builtin_get_desc( const wcstring &b ); /** diff --git a/complete.cpp b/complete.cpp index bcd2c67fc..0f7f569fb 100644 --- a/complete.cpp +++ b/complete.cpp @@ -711,7 +711,7 @@ int complete_is_valid_argument( const wchar_t *str, static void complete_strings( std::vector &comp_out, const wchar_t *wc_escaped, const wchar_t *desc, - const wchar_t *(*desc_func)(const wchar_t *), + const wchar_t *(*desc_func)(const wcstring &), std::vector &possible_comp, int flags ) { @@ -862,7 +862,7 @@ static void complete_cmd_desc( const wchar_t *cmd, std::vector &co /** Returns a description for the specified function */ -static const wchar_t *complete_function_desc( const wchar_t *fn ) +static const wchar_t *complete_function_desc( const wcstring &fn ) { const wchar_t *res = function_get_desc( fn ); diff --git a/exec.cpp b/exec.cpp index e0590d37e..38202925c 100644 --- a/exec.cpp +++ b/exec.cpp @@ -441,7 +441,7 @@ static int setup_child_process( job_t *j, process_t *p ) call. Only use it in the execve error handler which calls exit right afterwards, anyway. */ -static wchar_t *get_interpreter( const wchar_t *file ) +static wchar_t *get_interpreter( const wcstring &file ) { string_buffer_t sb; FILE *fp = wfopen( file, "r" ); diff --git a/function.cpp b/function.cpp index 06a284d50..bcb0e0a44 100644 --- a/function.cpp +++ b/function.cpp @@ -85,7 +85,7 @@ static int is_autoload = 0; Make sure that if the specified function is a dynamically loaded function, it has been fully loaded. */ -static int load( const wchar_t *name ) +static int load( const wcstring &name ) { ASSERT_IS_MAIN_THREAD(); scoped_lock lock(functions_lock); @@ -188,9 +188,8 @@ void function_add( function_data_t *data, const parser_t &parser ) } } -int function_exists( const wchar_t *cmd ) +int function_exists( const wcstring &cmd ) { - CHECK( cmd, 0 ); if( parser_keywords_is_reserved(cmd) ) return 0; scoped_lock lock(functions_lock); @@ -198,9 +197,8 @@ int function_exists( const wchar_t *cmd ) return loaded_functions.find(cmd) != loaded_functions.end(); } -int function_exists_no_autoload( const wchar_t *cmd, const env_vars &vars ) +int function_exists_no_autoload( const wcstring &cmd, const env_vars &vars ) { - CHECK( cmd, 0 ); if( parser_keywords_is_reserved(cmd) ) return 0; scoped_lock lock(functions_lock); @@ -238,26 +236,26 @@ shared_ptr function_get(const wcstring &name) } } -const wchar_t *function_get_definition( const wchar_t *name ) +const wchar_t *function_get_definition( const wcstring &name ) { shared_ptr func = function_get(name); return func ? func->definition.c_str() : NULL; } -wcstring_list_t function_get_named_arguments( const wchar_t *name ) +wcstring_list_t function_get_named_arguments( const wcstring &name ) { shared_ptr func = function_get(name); return func ? func->named_arguments : wcstring_list_t(); } -int function_get_shadows( const wchar_t *name ) +int function_get_shadows( const wcstring &name ) { shared_ptr func = function_get(name); return func ? func->shadows : false; } -const wchar_t *function_get_desc( const wchar_t *name ) +const wchar_t *function_get_desc( const wcstring &name ) { /* Empty length string goes to NULL */ shared_ptr func = function_get(name); @@ -268,17 +266,14 @@ const wchar_t *function_get_desc( const wchar_t *name ) } } -void function_set_desc( const wchar_t *name, const wchar_t *desc ) +void function_set_desc( const wcstring &name, const wcstring &desc ) { - CHECK( name, ); - CHECK( desc, ); - load( name ); shared_ptr func = function_get(name); if (func) func->description = desc; } -int function_copy( const wchar_t *name, const wchar_t *new_name ) +int function_copy( const wcstring &name, const wcstring &new_name ) { int result = 0; scoped_lock lock(functions_lock); @@ -318,14 +313,14 @@ wcstring_list_t function_get_names( int get_hidden ) return wcstring_list_t(names.begin(), names.end()); } -const wchar_t *function_get_definition_file( const wchar_t *name ) +const wchar_t *function_get_definition_file( const wcstring &name ) { shared_ptr func = function_get(name); return func ? func->definition_file : NULL; } -int function_get_definition_offset( const wchar_t *name ) +int function_get_definition_offset( const wcstring &name ) { shared_ptr func = function_get(name); return func ? func->definition_offset : -1; diff --git a/function.h b/function.h index 6dd1e5d84..3ede41e8b 100644 --- a/function.h +++ b/function.h @@ -118,27 +118,27 @@ shared_ptr function_get(const wcstring &name); /** Returns the definition of the function with the name \c name. */ -const wchar_t *function_get_definition( const wchar_t *name ); +const wchar_t *function_get_definition( const wcstring &name ); /** Returns the description of the function with the name \c name. */ -const wchar_t *function_get_desc( const wchar_t *name ); +const wchar_t *function_get_desc( const wcstring &name ); /** Sets the description of the function with the name \c name. */ -void function_set_desc( const wchar_t *name, const wchar_t *desc ); +void function_set_desc( const wcstring &name, const wcstring &desc ); /** Returns true if the function with the name name exists. */ -int function_exists( const wchar_t *name ); +int function_exists( const wcstring &name ); /** Returns true if the function with the name name exists, without triggering autoload. */ -int function_exists_no_autoload( const wchar_t *name, const env_vars &vars ); +int function_exists_no_autoload( const wcstring &name, const env_vars &vars ); /** Returns all function names. @@ -154,7 +154,7 @@ wcstring_list_t function_get_names( int get_hidden ); This function does not autoload functions, it will only work on functions that have already been defined. */ -const wchar_t *function_get_definition_file( const wchar_t *name ); +const wchar_t *function_get_definition_file( const wcstring &name ); /** Returns the linenumber where the definition of the specified @@ -163,23 +163,23 @@ const wchar_t *function_get_definition_file( const wchar_t *name ); This function does not autoload functions, it will only work on functions that have already been defined. */ -int function_get_definition_offset( const wchar_t *name ); +int function_get_definition_offset( const wcstring &name ); /** Returns a list of all named arguments of the specified function. */ -wcstring_list_t function_get_named_arguments( const wchar_t *name ); +wcstring_list_t function_get_named_arguments( const wcstring &name ); /** Creates a new function using the same definition as the specified function. Returns non-zero if copy is successful. */ -int function_copy( const wchar_t *name, const wchar_t *new_name ); +int function_copy( const wcstring &name, const wcstring &new_name ); /** Returns whether this function shadows variables of the underlying function */ -int function_get_shadows( const wchar_t *name ); +int function_get_shadows( const wcstring &name ); #endif diff --git a/highlight.cpp b/highlight.cpp index eea6eb21b..338f2720e 100644 --- a/highlight.cpp +++ b/highlight.cpp @@ -855,7 +855,7 @@ static void tokenize( const wchar_t * const buff, int * const color, const int p is_cmd |= builtin_exists( cmd ); if( use_function ) - is_cmd |= function_exists_no_autoload( cmd.c_str(), vars ); + is_cmd |= function_exists_no_autoload( cmd, vars ); /* Moving on to expensive tests diff --git a/parser.cpp b/parser.cpp index 2453a37be..54e52ab5f 100644 --- a/parser.cpp +++ b/parser.cpp @@ -1031,7 +1031,7 @@ const wchar_t *parser_t::current_filename() const if( b->type == FUNCTION_CALL ) { wcstring function_call_name = b->state1(); - return function_get_definition_file(function_call_name.c_str()); + return function_get_definition_file(function_call_name); } b=b->outer; } @@ -1862,7 +1862,7 @@ int parser_t::parse_job( process_t *p, nxt_forbidden = (forbid == nxt); } - if( !nxt_forbidden && has_nxt && function_exists( nxt.c_str() ) ) + if( !nxt_forbidden && has_nxt && function_exists( nxt ) ) { /* Check if we have reached the maximum recursion depth diff --git a/path.cpp b/path.cpp index d56b917d8..50b35795b 100644 --- a/path.cpp +++ b/path.cpp @@ -405,12 +405,12 @@ wchar_t *path_allocate_cdpath( const wchar_t *dir, const wchar_t *wd ) for (wcstring_list_t::const_iterator iter = paths.begin(); iter != paths.end(); iter++) { struct stat buf; - const wchar_t *dir = iter->c_str(); + const wcstring &dir = *iter; if( wstat( dir, &buf ) == 0 ) { if( S_ISDIR(buf.st_mode) ) { - res = wcsdup(dir); + res = wcsdup(dir.c_str()); break; } else @@ -534,7 +534,7 @@ bool paths_are_same_file(const wcstring &path1, const wcstring &path2) { return true; struct stat s1, s2; - if (wstat(path1.c_str(), &s1) == 0 && wstat(path2.c_str(), &s2) == 0) { + if (wstat(path1, &s1) == 0 && wstat(path2, &s2) == 0) { return s1.st_ino == s2.st_ino && s1.st_dev == s2.st_dev; } else { return false; diff --git a/wildcard.cpp b/wildcard.cpp index 8b10f3186..28b683f52 100644 --- a/wildcard.cpp +++ b/wildcard.cpp @@ -205,7 +205,7 @@ static int wildcard_complete_internal( const wchar_t *orig, const wchar_t *wc, int is_first, const wchar_t *desc, - const wchar_t *(*desc_func)(const wchar_t *), + const wchar_t *(*desc_func)(const wcstring &), std::vector &out, int flags ) { @@ -309,7 +309,7 @@ static int wildcard_complete_internal( const wchar_t *orig, int wildcard_complete( const wchar_t *str, const wchar_t *wc, const wchar_t *desc, - const wchar_t *(*desc_func)(const wchar_t *), + const wchar_t *(*desc_func)(const wcstring &), std::vector &out, int flags ) { diff --git a/wildcard.h b/wildcard.h index 8425c5cb4..d5fba374b 100644 --- a/wildcard.h +++ b/wildcard.h @@ -93,7 +93,7 @@ int wildcard_has( const wchar_t *str, int internal ); int wildcard_complete( const wchar_t *str, const wchar_t *wc, const wchar_t *desc, - const wchar_t *(*desc_func)(const wchar_t *), + const wchar_t *(*desc_func)(const wcstring &), std::vector &out, int flags );