mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-07 10:01:14 -03:00
remove some wcstring -> wchar_t* -> wcstring conversions
Mostly related to usage _(L"foo"), keeping in mind the _ macro does a wcstring().c_str() already. And a smattering of other trivial micro-optimizations certain to not help tangibly.
This commit is contained in:
@@ -545,8 +545,8 @@ void builtin_get_names(std::vector<completion_t> *list) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Return a one-line description of the specified builtin.
|
/// Return a one-line description of the specified builtin.
|
||||||
wcstring builtin_get_desc(const wcstring &name) {
|
const wchar_t *builtin_get_desc(const wcstring &name) {
|
||||||
wcstring result;
|
const wchar_t *result;
|
||||||
const builtin_data_t *builtin = builtin_lookup(name);
|
const builtin_data_t *builtin = builtin_lookup(name);
|
||||||
if (builtin) {
|
if (builtin) {
|
||||||
result = _(builtin->desc);
|
result = _(builtin->desc);
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ proc_status_t builtin_run(parser_t &parser, int job_pgrp, wchar_t **argv, io_str
|
|||||||
|
|
||||||
wcstring_list_t builtin_get_names();
|
wcstring_list_t builtin_get_names();
|
||||||
void builtin_get_names(std::vector<completion_t> *list);
|
void builtin_get_names(std::vector<completion_t> *list);
|
||||||
wcstring builtin_get_desc(const wcstring &b);
|
const wchar_t *builtin_get_desc(const wcstring &b);
|
||||||
|
|
||||||
/// Support for setting and removing transient command lines. This is used by
|
/// Support for setting and removing transient command lines. This is used by
|
||||||
/// 'complete -C' in order to make the commandline builtin operate on the string
|
/// 'complete -C' in order to make the commandline builtin operate on the string
|
||||||
|
|||||||
@@ -448,8 +448,7 @@ static int validate_arg(parser_t &parser, const argparse_cmd_opts_t &opts, optio
|
|||||||
if (is_long_flag) {
|
if (is_long_flag) {
|
||||||
vars.set_one(var_name_prefix + L"name", ENV_LOCAL, opt_spec->long_flag);
|
vars.set_one(var_name_prefix + L"name", ENV_LOCAL, opt_spec->long_flag);
|
||||||
} else {
|
} else {
|
||||||
vars.set_one(var_name_prefix + L"name", ENV_LOCAL,
|
vars.set_one(var_name_prefix + L"name", ENV_LOCAL, wcstring(1, opt_spec->short_flag));
|
||||||
wcstring(1, opt_spec->short_flag).c_str());
|
|
||||||
}
|
}
|
||||||
vars.set_one(var_name_prefix + L"value", ENV_LOCAL, woptarg);
|
vars.set_one(var_name_prefix + L"value", ENV_LOCAL, woptarg);
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ static void builtin_complete_add2(const wchar_t *cmd, int cmd_type, const wchar_
|
|||||||
comp, desc, flags);
|
comp, desc, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old_opt.empty() && gnu_opt.empty() && std::wcslen(short_opt) == 0) {
|
if (old_opt.empty() && gnu_opt.empty() && short_opt[0] == L'\0') {
|
||||||
complete_add(cmd, cmd_type, wcstring(), option_type_args_only, result_mode, condition, comp,
|
complete_add(cmd, cmd_type, wcstring(), option_type_args_only, result_mode, condition, comp,
|
||||||
desc, flags);
|
desc, flags);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ static const wchar_t *math_get_arg(int *argidx, wchar_t **argv, wcstring *storag
|
|||||||
return math_get_arg_argv(argidx, argv);
|
return math_get_arg_argv(argidx, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static wcstring math_describe_error(te_error_t& error) {
|
static const wchar_t *math_describe_error(te_error_t& error) {
|
||||||
if (error.position == 0) return L"NO ERROR?!?";
|
if (error.position == 0) return L"NO ERROR?!?";
|
||||||
|
|
||||||
switch(error.type) {
|
switch(error.type) {
|
||||||
@@ -210,7 +210,7 @@ static int evaluate_expression(const wchar_t *cmd, parser_t &parser, io_streams_
|
|||||||
streams.out.push_back(L'\n');
|
streams.out.push_back(L'\n');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
streams.err.append_format(L"%ls: Error: %ls\n", cmd, math_describe_error(error).c_str());
|
streams.err.append_format(L"%ls: Error: %ls\n", cmd, math_describe_error(error));
|
||||||
streams.err.append_format(L"'%ls'\n", expression.c_str());
|
streams.err.append_format(L"'%ls'\n", expression.c_str());
|
||||||
streams.err.append_format(L"%*ls%ls\n", error.position - 1, L" ",L"^");
|
streams.err.append_format(L"%*ls%ls\n", error.position - 1, L" ",L"^");
|
||||||
retval = STATUS_CMD_ERROR;
|
retval = STATUS_CMD_ERROR;
|
||||||
|
|||||||
@@ -1008,13 +1008,13 @@ bool regex_replacer_t::replace_matches(const wcstring &arg) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wcstring outstr(output, outlen);
|
|
||||||
bool rc = true;
|
bool rc = true;
|
||||||
if (pcre2_rc < 0) {
|
if (pcre2_rc < 0) {
|
||||||
string_error(streams, _(L"%ls: Regular expression substitute error: %ls\n"), argv0,
|
string_error(streams, _(L"%ls: Regular expression substitute error: %ls\n"), argv0,
|
||||||
pcre2_strerror(pcre2_rc).c_str());
|
pcre2_strerror(pcre2_rc).c_str());
|
||||||
rc = false;
|
rc = false;
|
||||||
} else {
|
} else {
|
||||||
|
wcstring outstr(output, outlen);
|
||||||
bool replacement_occurred = pcre2_rc > 0;
|
bool replacement_occurred = pcre2_rc > 0;
|
||||||
if (!opts.quiet && (!opts.filter || replacement_occurred)) {
|
if (!opts.quiet && (!opts.filter || replacement_occurred)) {
|
||||||
streams.out.append(outstr);
|
streams.out.append(outstr);
|
||||||
|
|||||||
@@ -1484,8 +1484,7 @@ static bool unescape_string_internal(const wchar_t *const input, const size_t in
|
|||||||
if (unescape_special && input_position == 0 &&
|
if (unescape_special && input_position == 0 &&
|
||||||
!std::wcscmp(input, PROCESS_EXPAND_SELF_STR)) {
|
!std::wcscmp(input, PROCESS_EXPAND_SELF_STR)) {
|
||||||
to_append_or_none = PROCESS_EXPAND_SELF;
|
to_append_or_none = PROCESS_EXPAND_SELF;
|
||||||
input_position +=
|
input_position += PROCESS_EXPAND_SELF_STR_LEN - 1; // skip over 'self's
|
||||||
std::wcslen(PROCESS_EXPAND_SELF_STR) - 1; // skip over 'self' part.
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -508,7 +508,7 @@ static void parse_cmd_string(const wcstring &str, wcstring *path, wcstring *cmd,
|
|||||||
const environment_t &vars) {
|
const environment_t &vars) {
|
||||||
if (!path_get_path(str, path, vars)) {
|
if (!path_get_path(str, path, vars)) {
|
||||||
/// Use the empty string as the 'path' for commands that can not be found.
|
/// Use the empty string as the 'path' for commands that can not be found.
|
||||||
*path = L"";
|
path->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the path is not included in the command.
|
// Make sure the path is not included in the command.
|
||||||
@@ -1150,8 +1150,8 @@ bool completer_t::complete_variable(const wcstring &str, size_t start_offset) {
|
|||||||
auto var = vars.get(env_name);
|
auto var = vars.get(env_name);
|
||||||
if (!var) continue;
|
if (!var) continue;
|
||||||
|
|
||||||
wcstring value = expand_escape_variable(*var);
|
|
||||||
if (this->type() != COMPLETE_AUTOSUGGEST) {
|
if (this->type() != COMPLETE_AUTOSUGGEST) {
|
||||||
|
wcstring value = expand_escape_variable(*var);
|
||||||
desc = format_string(COMPLETE_VAR_DESC_VAL, value.c_str());
|
desc = format_string(COMPLETE_VAR_DESC_VAL, value.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1493,7 +1493,7 @@ void completer_t::perform() {
|
|||||||
bool cursor_in_whitespace =
|
bool cursor_in_whitespace =
|
||||||
!plain_statement.location_in_or_at_end_of_source_range(pos);
|
!plain_statement.location_in_or_at_end_of_source_range(pos);
|
||||||
if (cursor_in_whitespace) {
|
if (cursor_in_whitespace) {
|
||||||
current_argument = L"";
|
current_argument.clear();
|
||||||
previous_argument = matching_arg;
|
previous_argument = matching_arg;
|
||||||
} else {
|
} else {
|
||||||
current_argument = matching_arg;
|
current_argument = matching_arg;
|
||||||
|
|||||||
@@ -481,7 +481,7 @@ static void update_fish_color_support(const environment_t &vars) {
|
|||||||
debug(2, L"256 color support enabled for TERM=%ls", term.c_str());
|
debug(2, L"256 color support enabled for TERM=%ls", term.c_str());
|
||||||
} else if (term.find(L"xterm") != wcstring::npos) {
|
} else if (term.find(L"xterm") != wcstring::npos) {
|
||||||
// Assume that all 'xterm's can handle 256, except for Terminal.app from Snow Leopard
|
// Assume that all 'xterm's can handle 256, except for Terminal.app from Snow Leopard
|
||||||
wcstring term_program, term_version;
|
wcstring term_program;
|
||||||
if (auto tp = vars.get(L"TERM_PROGRAM")) term_program = tp->as_string();
|
if (auto tp = vars.get(L"TERM_PROGRAM")) term_program = tp->as_string();
|
||||||
if (auto tpv = vars.get(L"TERM_PROGRAM_VERSION")) {
|
if (auto tpv = vars.get(L"TERM_PROGRAM_VERSION")) {
|
||||||
if (term_program == L"Apple_Terminal" &&
|
if (term_program == L"Apple_Terminal" &&
|
||||||
@@ -821,7 +821,7 @@ static void handle_fish_history_change(const wcstring &op, const wcstring &var_n
|
|||||||
env_stack_t &vars) {
|
env_stack_t &vars) {
|
||||||
UNUSED(op);
|
UNUSED(op);
|
||||||
UNUSED(var_name);
|
UNUSED(var_name);
|
||||||
reader_change_history(history_session_id(vars).c_str());
|
reader_change_history(history_session_id(vars));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_function_path_change(const wcstring &op, const wcstring &var_name,
|
static void handle_function_path_change(const wcstring &op, const wcstring &var_name,
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ enum expand_error_t {
|
|||||||
|
|
||||||
/// The string represented by PROCESS_EXPAND_SELF
|
/// The string represented by PROCESS_EXPAND_SELF
|
||||||
#define PROCESS_EXPAND_SELF_STR L"%self"
|
#define PROCESS_EXPAND_SELF_STR L"%self"
|
||||||
|
#define PROCESS_EXPAND_SELF_STR_LEN 5
|
||||||
|
|
||||||
/// Perform various forms of expansion on in, such as tilde expansion (\~USER becomes the users home
|
/// Perform various forms of expansion on in, such as tilde expansion (\~USER becomes the users home
|
||||||
/// directory), variable expansion (\$VAR_NAME becomes the value of the environment variable
|
/// directory), variable expansion (\$VAR_NAME becomes the value of the environment variable
|
||||||
|
|||||||
@@ -2668,7 +2668,7 @@ static void test_complete() {
|
|||||||
do_test((completions.at(1).flags & COMPLETE_NO_SPACE) != 0);
|
do_test((completions.at(1).flags & COMPLETE_NO_SPACE) != 0);
|
||||||
|
|
||||||
// Test wraps.
|
// Test wraps.
|
||||||
do_test(comma_join(complete_get_wrap_targets(L"wrapper1")) == L"");
|
do_test(comma_join(complete_get_wrap_targets(L"wrapper1")).empty());
|
||||||
complete_add_wrapper(L"wrapper1", L"wrapper2");
|
complete_add_wrapper(L"wrapper1", L"wrapper2");
|
||||||
do_test(comma_join(complete_get_wrap_targets(L"wrapper1")) == L"wrapper2");
|
do_test(comma_join(complete_get_wrap_targets(L"wrapper1")) == L"wrapper2");
|
||||||
complete_add_wrapper(L"wrapper2", L"wrapper3");
|
complete_add_wrapper(L"wrapper2", L"wrapper3");
|
||||||
@@ -2679,7 +2679,7 @@ static void test_complete() {
|
|||||||
do_test(comma_join(complete_get_wrap_targets(L"wrapper2")) == L"wrapper3");
|
do_test(comma_join(complete_get_wrap_targets(L"wrapper2")) == L"wrapper3");
|
||||||
do_test(comma_join(complete_get_wrap_targets(L"wrapper3")) == L"wrapper1");
|
do_test(comma_join(complete_get_wrap_targets(L"wrapper3")) == L"wrapper1");
|
||||||
complete_remove_wrapper(L"wrapper1", L"wrapper2");
|
complete_remove_wrapper(L"wrapper1", L"wrapper2");
|
||||||
do_test(comma_join(complete_get_wrap_targets(L"wrapper1")) == L"");
|
do_test(comma_join(complete_get_wrap_targets(L"wrapper1")).empty());
|
||||||
do_test(comma_join(complete_get_wrap_targets(L"wrapper2")) == L"wrapper3");
|
do_test(comma_join(complete_get_wrap_targets(L"wrapper2")) == L"wrapper3");
|
||||||
do_test(comma_join(complete_get_wrap_targets(L"wrapper3")) == L"wrapper1");
|
do_test(comma_join(complete_get_wrap_targets(L"wrapper3")) == L"wrapper1");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -371,7 +371,7 @@ static size_t trim_leading_spaces(std::string &str) {
|
|||||||
|
|
||||||
static bool extract_prefix_and_unescape_yaml(std::string *key, std::string *value,
|
static bool extract_prefix_and_unescape_yaml(std::string *key, std::string *value,
|
||||||
const std::string &line) {
|
const std::string &line) {
|
||||||
size_t where = line.find(":");
|
size_t where = line.find(':');
|
||||||
if (where != std::string::npos) {
|
if (where != std::string::npos) {
|
||||||
key->assign(line, 0, where);
|
key->assign(line, 0, where);
|
||||||
|
|
||||||
@@ -1868,7 +1868,7 @@ wcstring history_session_id(const environment_t &vars) {
|
|||||||
if (var) {
|
if (var) {
|
||||||
wcstring session_id = var->as_string();
|
wcstring session_id = var->as_string();
|
||||||
if (session_id.empty()) {
|
if (session_id.empty()) {
|
||||||
result = L"";
|
result.clear();
|
||||||
} else if (session_id == L"default") {
|
} else if (session_id == L"default") {
|
||||||
; // using the default value
|
; // using the default value
|
||||||
} else if (valid_var_name(session_id)) {
|
} else if (valid_var_name(session_id)) {
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ void outputter_t::set_color(rgb_color_t c, rgb_color_t c2) {
|
|||||||
if (c == c2) c = (c2 == rgb_color_t::white()) ? rgb_color_t::black() : rgb_color_t::white();
|
if (c == c2) c = (c2 == rgb_color_t::white()) ? rgb_color_t::black() : rgb_color_t::white();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((enter_bold_mode != 0) && (std::strlen(enter_bold_mode) > 0)) {
|
if (enter_bold_mode && enter_bold_mode[0] != '\0') {
|
||||||
if (bg_set && !last_bg_set) {
|
if (bg_set && !last_bg_set) {
|
||||||
// Background color changed and is set, so we enter bold mode to make reading easier.
|
// Background color changed and is set, so we enter bold mode to make reading easier.
|
||||||
// This means bold mode is _always_ on when the background color is set.
|
// This means bold mode is _always_ on when the background color is set.
|
||||||
@@ -295,7 +295,7 @@ void outputter_t::set_color(rgb_color_t c, rgb_color_t c2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lastly, we set bold, underline, italics, dim, and reverse modes correctly.
|
// Lastly, we set bold, underline, italics, dim, and reverse modes correctly.
|
||||||
if (is_bold && !was_bold && enter_bold_mode && std::strlen(enter_bold_mode) > 0 && !bg_set) {
|
if (is_bold && !was_bold && enter_bold_mode && enter_bold_mode[0] != '\0' && !bg_set) {
|
||||||
// The unconst cast is for NetBSD's benefit. DO NOT REMOVE!
|
// The unconst cast is for NetBSD's benefit. DO NOT REMOVE!
|
||||||
writembs_nofail(*this, tparm((char *)enter_bold_mode));
|
writembs_nofail(*this, tparm((char *)enter_bold_mode));
|
||||||
was_bold = is_bold;
|
was_bold = is_bold;
|
||||||
@@ -310,27 +310,27 @@ void outputter_t::set_color(rgb_color_t c, rgb_color_t c2) {
|
|||||||
}
|
}
|
||||||
was_underline = is_underline;
|
was_underline = is_underline;
|
||||||
|
|
||||||
if (was_italics && !is_italics && enter_italics_mode && std::strlen(enter_italics_mode) > 0) {
|
if (was_italics && !is_italics && enter_italics_mode && enter_italics_mode[0] != '\0') {
|
||||||
writembs_nofail(*this, exit_italics_mode);
|
writembs_nofail(*this, exit_italics_mode);
|
||||||
was_italics = is_italics;
|
was_italics = is_italics;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!was_italics && is_italics && enter_italics_mode && std::strlen(enter_italics_mode) > 0) {
|
if (!was_italics && is_italics && enter_italics_mode && enter_italics_mode[0] != '\0') {
|
||||||
writembs_nofail(*this, enter_italics_mode);
|
writembs_nofail(*this, enter_italics_mode);
|
||||||
was_italics = is_italics;
|
was_italics = is_italics;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_dim && !was_dim && enter_dim_mode && std::strlen(enter_dim_mode) > 0) {
|
if (is_dim && !was_dim && enter_dim_mode && enter_dim_mode[0] != '\0') {
|
||||||
writembs_nofail(*this, enter_dim_mode);
|
writembs_nofail(*this, enter_dim_mode);
|
||||||
was_dim = is_dim;
|
was_dim = is_dim;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_reverse && !was_reverse) {
|
if (is_reverse && !was_reverse) {
|
||||||
// Some terms do not have a reverse mode set, so standout mode is a fallback.
|
// Some terms do not have a reverse mode set, so standout mode is a fallback.
|
||||||
if (enter_reverse_mode && std::strlen(enter_reverse_mode) > 0) {
|
if (enter_reverse_mode && enter_reverse_mode[0] != '\0') {
|
||||||
writembs_nofail(*this, enter_reverse_mode);
|
writembs_nofail(*this, enter_reverse_mode);
|
||||||
was_reverse = is_reverse;
|
was_reverse = is_reverse;
|
||||||
} else if (enter_standout_mode && std::strlen(enter_standout_mode) > 0) {
|
} else if (enter_standout_mode && enter_standout_mode[0] != '\0') {
|
||||||
writembs_nofail(*this, enter_standout_mode);
|
writembs_nofail(*this, enter_standout_mode);
|
||||||
was_reverse = is_reverse;
|
was_reverse = is_reverse;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -691,7 +691,7 @@ void parse_ll_t::report_tokenizer_error(const tok_t &tok) {
|
|||||||
parse_error_code_t parse_error_code = parse_error_from_tokenizer_error(tok.error);
|
parse_error_code_t parse_error_code = parse_error_from_tokenizer_error(tok.error);
|
||||||
this->parse_error_at_location(tok.offset, tok.length, tok.offset + tok.error_offset,
|
this->parse_error_at_location(tok.offset, tok.length, tok.offset + tok.error_offset,
|
||||||
parse_error_code, L"%ls",
|
parse_error_code, L"%ls",
|
||||||
tokenizer_get_error_message(tok.error).c_str());
|
tokenizer_get_error_message(tok.error));
|
||||||
}
|
}
|
||||||
|
|
||||||
void parse_ll_t::parse_error_unexpected_token(const wchar_t *expected, parse_token_t token) {
|
void parse_ll_t::parse_error_unexpected_token(const wchar_t *expected, parse_token_t token) {
|
||||||
|
|||||||
@@ -17,7 +17,8 @@
|
|||||||
#include "tokenizer.h"
|
#include "tokenizer.h"
|
||||||
#include "wutil.h" // IWYU pragma: keep
|
#include "wutil.h" // IWYU pragma: keep
|
||||||
|
|
||||||
wcstring tokenizer_get_error_message(tokenizer_error_t err) {
|
// _(s) is already wgettext(s).c_str(), so let's not convert back to wcstring
|
||||||
|
const wchar_t * tokenizer_get_error_message(tokenizer_error_t err) {
|
||||||
switch (err) {
|
switch (err) {
|
||||||
case tokenizer_error_t::none:
|
case tokenizer_error_t::none:
|
||||||
return L"";
|
return L"";
|
||||||
@@ -47,7 +48,7 @@ wcstring tokenizer_get_error_message(tokenizer_error_t err) {
|
|||||||
return _(L"Unexpected ')' found, expecting '}'");
|
return _(L"Unexpected ')' found, expecting '}'");
|
||||||
}
|
}
|
||||||
assert(0 && "Unexpected tokenizer error");
|
assert(0 && "Unexpected tokenizer error");
|
||||||
return NULL;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Whether carets redirect stderr.
|
// Whether carets redirect stderr.
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ enum class tokenizer_error_t {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/// Get the error message for an error \p err.
|
/// Get the error message for an error \p err.
|
||||||
wcstring tokenizer_get_error_message(tokenizer_error_t err);
|
const wchar_t *tokenizer_get_error_message(tokenizer_error_t err);
|
||||||
|
|
||||||
struct tok_t {
|
struct tok_t {
|
||||||
// The type of the token.
|
// The type of the token.
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ bool wildcard_match(const wcstring &str, const wcstring &wc, bool leading_dots_f
|
|||||||
/// \param stat_res The result of calling stat on the file
|
/// \param stat_res The result of calling stat on the file
|
||||||
/// \param buf The struct buf output of calling stat on the file
|
/// \param buf The struct buf output of calling stat on the file
|
||||||
/// \param err The errno value after a failed stat call on the file.
|
/// \param err The errno value after a failed stat call on the file.
|
||||||
static wcstring file_get_desc(const wcstring &filename, int lstat_res, const struct stat &lbuf,
|
static const wchar_t *file_get_desc(const wcstring &filename, int lstat_res, const struct stat &lbuf,
|
||||||
int stat_res, const struct stat &buf, int err) {
|
int stat_res, const struct stat &buf, int err) {
|
||||||
if (lstat_res) {
|
if (lstat_res) {
|
||||||
return COMPLETE_FILE_DESC;
|
return COMPLETE_FILE_DESC;
|
||||||
@@ -929,14 +929,12 @@ int wildcard_expand_string(const wcstring &wc, const wcstring &working_directory
|
|||||||
// Check for a leading slash. If we find one, we have an absolute path: the prefix is empty, the
|
// Check for a leading slash. If we find one, we have an absolute path: the prefix is empty, the
|
||||||
// base dir is /, and the wildcard is the remainder. If we don't find one, the prefix is the
|
// base dir is /, and the wildcard is the remainder. If we don't find one, the prefix is the
|
||||||
// working directory, the base dir is empty.
|
// working directory, the base dir is empty.
|
||||||
wcstring prefix, base_dir, effective_wc;
|
wcstring prefix = L"", base_dir = L"", effective_wc;
|
||||||
if (string_prefixes_string(L"/", wc)) {
|
if (string_prefixes_string(L"/", wc)) {
|
||||||
prefix = L"";
|
|
||||||
base_dir = L"/";
|
base_dir = L"/";
|
||||||
effective_wc = wc.substr(1);
|
effective_wc = wc.substr(1);
|
||||||
} else {
|
} else {
|
||||||
prefix = working_directory;
|
prefix = working_directory;
|
||||||
base_dir = L"";
|
|
||||||
effective_wc = wc;
|
effective_wc = wc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ static owning_lock<std::unordered_map<wcstring, wcstring>> wgettext_map;
|
|||||||
bool wreaddir_resolving(DIR *dir, const wcstring &dir_path, wcstring &out_name, bool *out_is_dir) {
|
bool wreaddir_resolving(DIR *dir, const wcstring &dir_path, wcstring &out_name, bool *out_is_dir) {
|
||||||
struct dirent *result = readdir(dir);
|
struct dirent *result = readdir(dir);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
out_name = L"";
|
out_name.clear();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ bool wreaddir_resolving(DIR *dir, const wcstring &dir_path, wcstring &out_name,
|
|||||||
bool wreaddir(DIR *dir, wcstring &out_name) {
|
bool wreaddir(DIR *dir, wcstring &out_name) {
|
||||||
struct dirent *result = readdir(dir);
|
struct dirent *result = readdir(dir);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
out_name = L"";
|
out_name.clear();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user