mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-23 06:41:42 +08:00
another step in fixing issue #3985
This primarily replaces "STATUS_BUILTIN_OK" with "STATUS_CMD_OK" and "STATUS_BUILTIN_ERROR" with "STATUS_CMD_ERROR". That is because we want to make it clear these status codes are applicable to fish functions as well as builtins. Future changes will make it easier to use these symbols and values in functions.
This commit is contained in:
parent
23978aee81
commit
4c38867768
|
@ -876,17 +876,21 @@ Fish stores the exit status of the last process in the last job to exit in the `
|
|||
|
||||
If `fish` encounters a problem while executing a command, the status variable may also be set to a specific value:
|
||||
|
||||
- 1 is the generally the exit status from fish builtin commands if they were supplied with invalid arguments
|
||||
- 0 is generally the exit status of fish commands if they successfully performed the requested operation.
|
||||
|
||||
- 123 means that the command was not executed because the command name contained invalid characters
|
||||
- 1 is generally the exit status of fish commands if they failed to perform the requested operation.
|
||||
|
||||
- 124 means that the command was not executed because none of the wildcards in the command produced any matches
|
||||
- 121 is generally the exit status of fish commands if they were supplied with invalid arguments.
|
||||
|
||||
- 125 means that while an executable with the specified name was located, the operating system could not actually execute the command
|
||||
- 123 means that the command was not executed because the command name contained invalid characters.
|
||||
|
||||
- 126 means that while a file with the specified name was located, it was not executable
|
||||
- 124 means that the command was not executed because none of the wildcards in the command produced any matches.
|
||||
|
||||
- 127 means that no function, builtin or command with the given name could be located
|
||||
- 125 means that while an executable with the specified name was located, the operating system could not actually execute the command.
|
||||
|
||||
- 126 means that while a file with the specified name was located, it was not executable.
|
||||
|
||||
- 127 means that no function, builtin or command with the given name could be located.
|
||||
|
||||
If a process exits through a signal, the exit status will be 128 plus the number of the signal.
|
||||
|
||||
|
|
380
src/builtin.cpp
380
src/builtin.cpp
File diff suppressed because it is too large
Load Diff
|
@ -176,7 +176,7 @@ int builtin_complete(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
cmd_to_complete.push_back(tmp);
|
||||
} else {
|
||||
streams.err.append_format(_(L"%ls: Invalid token '%ls'\n"), cmd, w.woptarg);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -196,7 +196,7 @@ int builtin_complete(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
short_opt.append(w.woptarg);
|
||||
if (w.woptarg[0] == '\0') {
|
||||
streams.err.append_format(_(L"%ls: -s requires a non-empty string\n"), cmd);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -204,7 +204,7 @@ int builtin_complete(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
gnu_opt.push_back(w.woptarg);
|
||||
if (w.woptarg[0] == '\0') {
|
||||
streams.err.append_format(_(L"%ls: -l requires a non-empty string\n"), cmd);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -212,7 +212,7 @@ int builtin_complete(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
old_opt.push_back(w.woptarg);
|
||||
if (w.woptarg[0] == '\0') {
|
||||
streams.err.append_format(_(L"%ls: -o requires a non-empty string\n"), cmd);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -239,22 +239,22 @@ int builtin_complete(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
// This corresponds to using 'complete -C' in non-interactive mode.
|
||||
// See #2361.
|
||||
builtin_missing_argument(parser, streams, cmd, argv[w.woptind - 1]);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
do_complete_param = arg;
|
||||
break;
|
||||
}
|
||||
case 'h': {
|
||||
builtin_print_help(parser, streams, cmd, streams.out);
|
||||
return STATUS_BUILTIN_OK;
|
||||
return STATUS_CMD_OK;
|
||||
}
|
||||
case ':': {
|
||||
builtin_missing_argument(parser, streams, cmd, argv[w.woptind - 1]);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
case '?': {
|
||||
builtin_unknown_option(parser, streams, cmd, argv[w.woptind - 1]);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
default: {
|
||||
DIE("unexpected retval from wgetopt_long");
|
||||
|
@ -266,7 +266,7 @@ int builtin_complete(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
if (w.woptind != argc) {
|
||||
streams.err.append_format(BUILTIN_ERR_TOO_MANY_ARGUMENTS, cmd);
|
||||
builtin_print_help(parser, streams, cmd, streams.err);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
if (condition && wcslen(condition)) {
|
||||
|
@ -280,7 +280,7 @@ int builtin_complete(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
streams.err.append_format(L"\n%s: ", cmd);
|
||||
streams.err.append(errors.at(i).describe(condition_string));
|
||||
}
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -295,7 +295,7 @@ int builtin_complete(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
comp);
|
||||
streams.err.append(err_text);
|
||||
streams.err.push_back(L'\n');
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -374,5 +374,5 @@ int builtin_complete(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
}
|
||||
}
|
||||
|
||||
return STATUS_BUILTIN_OK;
|
||||
return STATUS_CMD_OK;
|
||||
}
|
||||
|
|
|
@ -209,7 +209,7 @@ void builtin_printf_state_t::fatal_error(const wchar_t *fmt, ...) {
|
|||
streams.err.append(errstr);
|
||||
if (!string_suffixes_string(L"\n", errstr)) streams.err.push_back(L'\n');
|
||||
|
||||
this->exit_code = STATUS_BUILTIN_ERROR;
|
||||
this->exit_code = STATUS_CMD_ERROR;
|
||||
this->early_exit = true;
|
||||
}
|
||||
|
||||
|
@ -729,7 +729,7 @@ int builtin_printf(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
|
||||
if (argc <= 1) {
|
||||
state.fatal_error(_(L"printf: not enough arguments"));
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
format = argv[1];
|
||||
|
|
|
@ -525,7 +525,7 @@ int builtin_set(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
if (!valid_var_name(dest)) {
|
||||
streams.err.append_format(BUILTIN_ERR_VARNAME, cmd, dest);
|
||||
builtin_print_help(parser, streams, argv[0], streams.err);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
// Set assignment can work in two modes, either using slices or using the whole array. We detect
|
||||
|
@ -619,7 +619,7 @@ int builtin_set(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
|
||||
free(dest);
|
||||
|
||||
if (retcode == STATUS_BUILTIN_OK && preserve_failure_exit_status)
|
||||
if (retcode == STATUS_CMD_OK && preserve_failure_exit_status)
|
||||
retcode = incoming_exit_status;
|
||||
return retcode;
|
||||
}
|
||||
|
|
|
@ -99,7 +99,7 @@ int builtin_set_color(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
}
|
||||
case 'h': {
|
||||
builtin_print_help(parser, streams, argv[0], streams.out);
|
||||
return STATUS_BUILTIN_OK;
|
||||
return STATUS_CMD_OK;
|
||||
}
|
||||
case 'o': {
|
||||
bold = true;
|
||||
|
@ -123,10 +123,10 @@ int builtin_set_color(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
}
|
||||
case 'c': {
|
||||
print_colors(streams);
|
||||
return STATUS_BUILTIN_OK;
|
||||
return STATUS_CMD_OK;
|
||||
}
|
||||
case '?': {
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
default: {
|
||||
DIE("unexpected opt");
|
||||
|
@ -141,7 +141,7 @@ int builtin_set_color(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
rgb_color_t fg = rgb_color_t(argv[w.woptind]);
|
||||
if (fg.is_none()) {
|
||||
streams.err.append_format(_(L"%ls: Unknown color '%ls'\n"), argv[0], argv[w.woptind]);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
fgcolors.push_back(fg);
|
||||
}
|
||||
|
@ -149,7 +149,7 @@ int builtin_set_color(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
if (fgcolors.empty() && bgcolor == NULL && !bold && !underline && !italics && !dim &&
|
||||
!reverse) {
|
||||
streams.err.append_format(_(L"%ls: Expected an argument\n"), argv[0]);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
// #1323: We may have multiple foreground colors. Choose the best one. If we had no foreground
|
||||
|
@ -160,13 +160,13 @@ int builtin_set_color(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
const rgb_color_t bg = rgb_color_t(bgcolor ? bgcolor : L"");
|
||||
if (bgcolor && bg.is_none()) {
|
||||
streams.err.append_format(_(L"%ls: Unknown color '%ls'\n"), argv[0], bgcolor);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
// Test if we have at least basic support for setting fonts, colors and related bits - otherwise
|
||||
// just give up...
|
||||
if (cur_term == NULL || !exit_attribute_mode) {
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
// Save old output function so we can restore it.
|
||||
|
@ -228,5 +228,5 @@ int builtin_set_color(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
streams.out.append(str2wcstring(builtin_set_color_output));
|
||||
builtin_set_color_output.clear();
|
||||
|
||||
return STATUS_BUILTIN_OK;
|
||||
return STATUS_CMD_OK;
|
||||
}
|
||||
|
|
|
@ -140,7 +140,7 @@ static int string_escape(parser_t &parser, io_streams_t &streams, int argc, wcha
|
|||
nesc++;
|
||||
}
|
||||
|
||||
return nesc > 0 ? STATUS_BUILTIN_OK : STATUS_BUILTIN_ERROR;
|
||||
return nesc > 0 ? STATUS_CMD_OK : STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
static int string_join(parser_t &parser, io_streams_t &streams, int argc, wchar_t **argv) {
|
||||
|
@ -203,7 +203,7 @@ static int string_join(parser_t &parser, io_streams_t &streams, int argc, wchar_
|
|||
streams.out.push_back(L'\n');
|
||||
}
|
||||
|
||||
return nargs > 1 ? STATUS_BUILTIN_OK : STATUS_BUILTIN_ERROR;
|
||||
return nargs > 1 ? STATUS_CMD_OK : STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
static int string_length(parser_t &parser, io_streams_t &streams, int argc, wchar_t **argv) {
|
||||
|
@ -257,7 +257,7 @@ static int string_length(parser_t &parser, io_streams_t &streams, int argc, wcha
|
|||
}
|
||||
}
|
||||
|
||||
return nnonempty > 0 ? STATUS_BUILTIN_OK : STATUS_BUILTIN_ERROR;
|
||||
return nnonempty > 0 ? STATUS_CMD_OK : STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
struct match_options_t {
|
||||
|
@ -598,7 +598,7 @@ static int string_match(parser_t &parser, io_streams_t &streams, int argc, wchar
|
|||
}
|
||||
}
|
||||
|
||||
return matcher->match_count() > 0 ? STATUS_BUILTIN_OK : STATUS_BUILTIN_ERROR;
|
||||
return matcher->match_count() > 0 ? STATUS_CMD_OK : STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
struct replace_options_t {
|
||||
|
@ -831,7 +831,7 @@ static int string_replace(parser_t &parser, io_streams_t &streams, int argc, wch
|
|||
}
|
||||
}
|
||||
|
||||
return replacer->replace_count() > 0 ? STATUS_BUILTIN_OK : STATUS_BUILTIN_ERROR;
|
||||
return replacer->replace_count() > 0 ? STATUS_CMD_OK : STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
/// Given iterators into a string (forward or reverse), splits the haystack iterators
|
||||
|
@ -960,7 +960,7 @@ static int string_split(parser_t &parser, io_streams_t &streams, int argc, wchar
|
|||
}
|
||||
|
||||
// We split something if we have more split values than args.
|
||||
return splits.size() > arg_count ? STATUS_BUILTIN_OK : STATUS_BUILTIN_ERROR;
|
||||
return splits.size() > arg_count ? STATUS_CMD_OK : STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
// Helper function to abstract the repeat logic from string_repeat
|
||||
|
@ -1073,7 +1073,7 @@ static int string_repeat(parser_t &parser, io_streams_t &streams, int argc, wcha
|
|||
}
|
||||
}
|
||||
|
||||
return !is_empty ? STATUS_BUILTIN_OK : STATUS_BUILTIN_ERROR;
|
||||
return !is_empty ? STATUS_CMD_OK : STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
static int string_sub(parser_t &parser, io_streams_t &streams, int argc, wchar_t **argv) {
|
||||
|
@ -1178,7 +1178,7 @@ static int string_sub(parser_t &parser, io_streams_t &streams, int argc, wchar_t
|
|||
nsub++;
|
||||
}
|
||||
|
||||
return nsub > 0 ? STATUS_BUILTIN_OK : STATUS_BUILTIN_ERROR;
|
||||
return nsub > 0 ? STATUS_CMD_OK : STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
static int string_trim(parser_t &parser, io_streams_t &streams, int argc, wchar_t **argv) {
|
||||
|
@ -1272,7 +1272,7 @@ static int string_trim(parser_t &parser, io_streams_t &streams, int argc, wchar_
|
|||
}
|
||||
}
|
||||
|
||||
return ntrim > 0 ? STATUS_BUILTIN_OK : STATUS_BUILTIN_ERROR;
|
||||
return ntrim > 0 ? STATUS_CMD_OK : STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
static const struct string_subcommand {
|
||||
|
@ -1298,7 +1298,7 @@ int builtin_string(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
|
||||
if (wcscmp(argv[1], L"-h") == 0 || wcscmp(argv[1], L"--help") == 0) {
|
||||
builtin_print_help(parser, streams, L"string", streams.err);
|
||||
return STATUS_BUILTIN_OK;
|
||||
return STATUS_CMD_OK;
|
||||
}
|
||||
|
||||
const string_subcommand *subcmd = &string_subcommands[0];
|
||||
|
|
|
@ -192,7 +192,7 @@ class expression {
|
|||
|
||||
virtual ~expression() {}
|
||||
|
||||
/// Evaluate returns true if the expression is true (i.e. STATUS_BUILTIN_OK).
|
||||
/// Evaluate returns true if the expression is true (i.e. STATUS_CMD_OK).
|
||||
virtual bool evaluate(wcstring_list_t &errors) = 0;
|
||||
};
|
||||
|
||||
|
@ -592,7 +592,7 @@ bool combining_expression::evaluate(wcstring_list_t &errors) {
|
|||
}
|
||||
|
||||
errors.push_back(format_string(L"Unknown token type in %s", __func__));
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
bool parenthetical_expression::evaluate(wcstring_list_t &errors) {
|
||||
|
@ -742,7 +742,7 @@ int builtin_test(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
using namespace test_expressions;
|
||||
|
||||
// The first argument should be the name of the command ('test').
|
||||
if (!argv[0]) return STATUS_BUILTIN_ERROR;
|
||||
if (!argv[0]) return STATUS_CMD_ERROR;
|
||||
|
||||
// Whether we are invoked with bracket '[' or not.
|
||||
wchar_t *program_name = argv[0];
|
||||
|
@ -759,7 +759,7 @@ int builtin_test(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
argc--;
|
||||
} else {
|
||||
streams.err.append(L"[: the last argument must be ']'\n");
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -767,10 +767,10 @@ int builtin_test(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
const wcstring_list_t args(argv + 1, argv + 1 + argc);
|
||||
|
||||
if (argc == 0) {
|
||||
return STATUS_BUILTIN_ERROR; // Per 1003.1, exit false.
|
||||
return STATUS_CMD_ERROR; // Per 1003.1, exit false.
|
||||
} else if (argc == 1) {
|
||||
// Per 1003.1, exit true if the arg is non-empty.
|
||||
return args.at(0).empty() ? STATUS_BUILTIN_ERROR : STATUS_BUILTIN_OK;
|
||||
return args.at(0).empty() ? STATUS_CMD_ERROR : STATUS_CMD_OK;
|
||||
}
|
||||
|
||||
// Try parsing
|
||||
|
@ -785,7 +785,7 @@ int builtin_test(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
streams.err.append_format(L"and returned parse error: %ls\n", err.c_str());
|
||||
#endif
|
||||
streams.err.append(err);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
wcstring_list_t eval_errors;
|
||||
|
@ -796,5 +796,5 @@ int builtin_test(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
streams.err.append_format(L"\t%ls\n", eval_errors.at(i).c_str());
|
||||
}
|
||||
}
|
||||
return result ? STATUS_BUILTIN_OK : STATUS_BUILTIN_ERROR;
|
||||
return result ? STATUS_CMD_OK : STATUS_CMD_ERROR;
|
||||
}
|
||||
|
|
|
@ -144,9 +144,9 @@ static int set_limit(int resource, int hard, int soft, rlim_t value, io_streams_
|
|||
} else {
|
||||
builtin_wperror(L"ulimit", streams);
|
||||
}
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
return STATUS_BUILTIN_OK;
|
||||
return STATUS_CMD_OK;
|
||||
}
|
||||
|
||||
/// The ulimit builtin, used for setting resource limits.
|
||||
|
@ -245,11 +245,11 @@ int builtin_ulimit(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
}
|
||||
case ':': {
|
||||
streams.err.append_format(BUILTIN_ERR_MISSING, cmd, argv[w.woptind - 1]);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
case '?': {
|
||||
builtin_unknown_option(parser, streams, cmd, argv[w.woptind - 1]);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
default: {
|
||||
DIE("unexpected retval from wgetopt_long");
|
||||
|
@ -260,18 +260,18 @@ int builtin_ulimit(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
|
||||
if (report_all) {
|
||||
print_all(hard, streams);
|
||||
return STATUS_BUILTIN_OK;
|
||||
return STATUS_CMD_OK;
|
||||
}
|
||||
|
||||
int arg_count = argc - w.woptind;
|
||||
if (arg_count == 0) {
|
||||
// Show current limit value.
|
||||
print(what, hard, streams);
|
||||
return STATUS_BUILTIN_OK;
|
||||
return STATUS_CMD_OK;
|
||||
} else if (arg_count != 1) {
|
||||
streams.err.append_format(BUILTIN_ERR_TOO_MANY_ARGUMENTS, cmd);
|
||||
builtin_print_help(parser, streams, cmd, streams.err);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
|
||||
// Change current limit value.
|
||||
|
@ -284,7 +284,7 @@ int builtin_ulimit(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
if (*argv[w.woptind] == L'\0') {
|
||||
streams.err.append_format(_(L"%ls: New limit cannot be an empty string\n"), cmd);
|
||||
builtin_print_help(parser, streams, cmd, streams.err);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
} else if (wcscasecmp(argv[w.woptind], L"unlimited") == 0) {
|
||||
new_limit = RLIM_INFINITY;
|
||||
} else if (wcscasecmp(argv[w.woptind], L"hard") == 0) {
|
||||
|
@ -296,7 +296,7 @@ int builtin_ulimit(parser_t &parser, io_streams_t &streams, wchar_t **argv) {
|
|||
if (errno) {
|
||||
streams.err.append_format(_(L"%ls: Invalid limit '%ls'\n"), cmd, argv[w.woptind]);
|
||||
builtin_print_help(parser, streams, cmd, streams.err);
|
||||
return STATUS_BUILTIN_ERROR;
|
||||
return STATUS_CMD_ERROR;
|
||||
}
|
||||
new_limit *= get_multiplier(what);
|
||||
}
|
||||
|
|
|
@ -854,11 +854,11 @@ bool valid_func_name(const wcstring &str);
|
|||
// Return values (`$status` values for fish scripts) for various situations.
|
||||
enum {
|
||||
/// The status code used for normal exit in a command.
|
||||
STATUS_BUILTIN_OK = 0,
|
||||
STATUS_CMD_OK = 0,
|
||||
/// The status code used for failure exit in a command (but not if the args were invalid).
|
||||
STATUS_BUILTIN_ERROR = 1,
|
||||
STATUS_CMD_ERROR = 1,
|
||||
/// The status code used when a command was not found.
|
||||
STATUS_UNKNOWN_COMMAND = 127,
|
||||
STATUS_CMD_UNKNOWN = 127,
|
||||
|
||||
/// TODO: Figure out why we have two distinct failure codes for when an external command cannot
|
||||
/// be run.
|
||||
|
|
|
@ -373,7 +373,7 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
|
||||
// Stomp the exit status of any initialization commands (issue #635).
|
||||
proc_set_last_status(STATUS_BUILTIN_OK);
|
||||
proc_set_last_status(STATUS_CMD_OK);
|
||||
|
||||
// Run the commands specified as arguments, if any.
|
||||
if (!cmds.empty()) {
|
||||
|
@ -426,7 +426,7 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
}
|
||||
|
||||
int exit_status = res ? STATUS_UNKNOWN_COMMAND : proc_get_last_status();
|
||||
int exit_status = res ? STATUS_CMD_UNKNOWN : proc_get_last_status();
|
||||
|
||||
proc_fire_event(L"PROCESS_EXIT", EVENT_EXIT, getpid(), exit_status);
|
||||
|
||||
|
|
|
@ -3818,311 +3818,311 @@ static void test_string(void) {
|
|||
int expected_rc;
|
||||
const wchar_t *expected_out;
|
||||
} string_tests[] = {
|
||||
{{L"string", L"escape", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"escape", L"", 0}, STATUS_BUILTIN_OK, L"''\n"},
|
||||
{{L"string", L"escape", L"-n", L"", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"escape", L"a", 0}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"escape", L"\x07", 0}, STATUS_BUILTIN_OK, L"\\cg\n"},
|
||||
{{L"string", L"escape", L"\"x\"", 0}, STATUS_BUILTIN_OK, L"'\"x\"'\n"},
|
||||
{{L"string", L"escape", L"hello world", 0}, STATUS_BUILTIN_OK, L"'hello world'\n"},
|
||||
{{L"string", L"escape", L"-n", L"hello world", 0}, STATUS_BUILTIN_OK, L"hello\\ world\n"},
|
||||
{{L"string", L"escape", L"hello", L"world", 0}, STATUS_BUILTIN_OK, L"hello\nworld\n"},
|
||||
{{L"string", L"escape", L"-n", L"~", 0}, STATUS_BUILTIN_OK, L"\\~\n"},
|
||||
{{L"string", L"escape", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"escape", L"", 0}, STATUS_CMD_OK, L"''\n"},
|
||||
{{L"string", L"escape", L"-n", L"", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"escape", L"a", 0}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"escape", L"\x07", 0}, STATUS_CMD_OK, L"\\cg\n"},
|
||||
{{L"string", L"escape", L"\"x\"", 0}, STATUS_CMD_OK, L"'\"x\"'\n"},
|
||||
{{L"string", L"escape", L"hello world", 0}, STATUS_CMD_OK, L"'hello world'\n"},
|
||||
{{L"string", L"escape", L"-n", L"hello world", 0}, STATUS_CMD_OK, L"hello\\ world\n"},
|
||||
{{L"string", L"escape", L"hello", L"world", 0}, STATUS_CMD_OK, L"hello\nworld\n"},
|
||||
{{L"string", L"escape", L"-n", L"~", 0}, STATUS_CMD_OK, L"\\~\n"},
|
||||
|
||||
{{L"string", L"join", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"join", L"", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"join", L"", L"", L"", L"", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"join", L"", L"a", L"b", L"c", 0}, STATUS_BUILTIN_OK, L"abc\n"},
|
||||
{{L"string", L"join", L"", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"join", L"", L"", L"", L"", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"join", L"", L"a", L"b", L"c", 0}, STATUS_CMD_OK, L"abc\n"},
|
||||
{{L"string", L"join", L".", L"fishshell", L"com", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"fishshell.com\n"},
|
||||
{{L"string", L"join", L"/", L"usr", 0}, STATUS_BUILTIN_ERROR, L"usr\n"},
|
||||
{{L"string", L"join", L"/", L"usr", 0}, STATUS_CMD_ERROR, L"usr\n"},
|
||||
{{L"string", L"join", L"/", L"usr", L"local", L"bin", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"usr/local/bin\n"},
|
||||
{{L"string", L"join", L"...", L"3", L"2", L"1", 0}, STATUS_BUILTIN_OK, L"3...2...1\n"},
|
||||
{{L"string", L"join", L"...", L"3", L"2", L"1", 0}, STATUS_CMD_OK, L"3...2...1\n"},
|
||||
{{L"string", L"join", L"-q", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"join", L"-q", L".", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"join", L"-q", L".", L".", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"join", L"-q", L".", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"join", L"-q", L".", L".", 0}, STATUS_CMD_ERROR, L""},
|
||||
|
||||
{{L"string", L"length", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"length", L"", 0}, STATUS_BUILTIN_ERROR, L"0\n"},
|
||||
{{L"string", L"length", L"", L"", L"", 0}, STATUS_BUILTIN_ERROR, L"0\n0\n0\n"},
|
||||
{{L"string", L"length", L"a", 0}, STATUS_BUILTIN_OK, L"1\n"},
|
||||
{{L"string", L"length", L"\U0002008A", 0}, STATUS_BUILTIN_OK, L"1\n"},
|
||||
{{L"string", L"length", L"um", L"dois", L"três", 0}, STATUS_BUILTIN_OK, L"2\n4\n4\n"},
|
||||
{{L"string", L"length", L"um", L"dois", L"três", 0}, STATUS_BUILTIN_OK, L"2\n4\n4\n"},
|
||||
{{L"string", L"length", L"-q", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"length", L"-q", L"", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"length", L"-q", L"a", 0}, STATUS_BUILTIN_OK, L""},
|
||||
{{L"string", L"length", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"length", L"", 0}, STATUS_CMD_ERROR, L"0\n"},
|
||||
{{L"string", L"length", L"", L"", L"", 0}, STATUS_CMD_ERROR, L"0\n0\n0\n"},
|
||||
{{L"string", L"length", L"a", 0}, STATUS_CMD_OK, L"1\n"},
|
||||
{{L"string", L"length", L"\U0002008A", 0}, STATUS_CMD_OK, L"1\n"},
|
||||
{{L"string", L"length", L"um", L"dois", L"três", 0}, STATUS_CMD_OK, L"2\n4\n4\n"},
|
||||
{{L"string", L"length", L"um", L"dois", L"três", 0}, STATUS_CMD_OK, L"2\n4\n4\n"},
|
||||
{{L"string", L"length", L"-q", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"length", L"-q", L"", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"length", L"-q", L"a", 0}, STATUS_CMD_OK, L""},
|
||||
|
||||
{{L"string", L"match", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"match", L"", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"", L"", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"match", L"?", L"a", 0}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"match", L"*", L"", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"match", L"**", L"", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"match", L"*", L"xyzzy", 0}, STATUS_BUILTIN_OK, L"xyzzy\n"},
|
||||
{{L"string", L"match", L"**", L"plugh", 0}, STATUS_BUILTIN_OK, L"plugh\n"},
|
||||
{{L"string", L"match", L"a*b", L"axxb", 0}, STATUS_BUILTIN_OK, L"axxb\n"},
|
||||
{{L"string", L"match", L"a??b", L"axxb", 0}, STATUS_BUILTIN_OK, L"axxb\n"},
|
||||
{{L"string", L"match", L"-i", L"a??B", L"axxb", 0}, STATUS_BUILTIN_OK, L"axxb\n"},
|
||||
{{L"string", L"match", L"-i", L"a??b", L"Axxb", 0}, STATUS_BUILTIN_OK, L"Axxb\n"},
|
||||
{{L"string", L"match", L"a*", L"axxb", 0}, STATUS_BUILTIN_OK, L"axxb\n"},
|
||||
{{L"string", L"match", L"*a", L"xxa", 0}, STATUS_BUILTIN_OK, L"xxa\n"},
|
||||
{{L"string", L"match", L"*a*", L"axa", 0}, STATUS_BUILTIN_OK, L"axa\n"},
|
||||
{{L"string", L"match", L"*a*", L"xax", 0}, STATUS_BUILTIN_OK, L"xax\n"},
|
||||
{{L"string", L"match", L"*a*", L"bxa", 0}, STATUS_BUILTIN_OK, L"bxa\n"},
|
||||
{{L"string", L"match", L"*a", L"a", 0}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"match", L"a*", L"a", 0}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"match", L"a*b*c", L"axxbyyc", 0}, STATUS_BUILTIN_OK, L"axxbyyc\n"},
|
||||
{{L"string", L"match", L"a*b?c", L"axxbyc", 0}, STATUS_BUILTIN_OK, L"axxbyc\n"},
|
||||
{{L"string", L"match", L"*?", L"a", 0}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"match", L"*?", L"ab", 0}, STATUS_BUILTIN_OK, L"ab\n"},
|
||||
{{L"string", L"match", L"?*", L"a", 0}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"match", L"?*", L"ab", 0}, STATUS_BUILTIN_OK, L"ab\n"},
|
||||
{{L"string", L"match", L"\\*", L"*", 0}, STATUS_BUILTIN_OK, L"*\n"},
|
||||
{{L"string", L"match", L"a*\\", L"abc\\", 0}, STATUS_BUILTIN_OK, L"abc\\\n"},
|
||||
{{L"string", L"match", L"a*\\?", L"abc?", 0}, STATUS_BUILTIN_OK, L"abc?\n"},
|
||||
{{L"string", L"match", L"", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"", L"", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"match", L"?", L"a", 0}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"match", L"*", L"", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"match", L"**", L"", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"match", L"*", L"xyzzy", 0}, STATUS_CMD_OK, L"xyzzy\n"},
|
||||
{{L"string", L"match", L"**", L"plugh", 0}, STATUS_CMD_OK, L"plugh\n"},
|
||||
{{L"string", L"match", L"a*b", L"axxb", 0}, STATUS_CMD_OK, L"axxb\n"},
|
||||
{{L"string", L"match", L"a??b", L"axxb", 0}, STATUS_CMD_OK, L"axxb\n"},
|
||||
{{L"string", L"match", L"-i", L"a??B", L"axxb", 0}, STATUS_CMD_OK, L"axxb\n"},
|
||||
{{L"string", L"match", L"-i", L"a??b", L"Axxb", 0}, STATUS_CMD_OK, L"Axxb\n"},
|
||||
{{L"string", L"match", L"a*", L"axxb", 0}, STATUS_CMD_OK, L"axxb\n"},
|
||||
{{L"string", L"match", L"*a", L"xxa", 0}, STATUS_CMD_OK, L"xxa\n"},
|
||||
{{L"string", L"match", L"*a*", L"axa", 0}, STATUS_CMD_OK, L"axa\n"},
|
||||
{{L"string", L"match", L"*a*", L"xax", 0}, STATUS_CMD_OK, L"xax\n"},
|
||||
{{L"string", L"match", L"*a*", L"bxa", 0}, STATUS_CMD_OK, L"bxa\n"},
|
||||
{{L"string", L"match", L"*a", L"a", 0}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"match", L"a*", L"a", 0}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"match", L"a*b*c", L"axxbyyc", 0}, STATUS_CMD_OK, L"axxbyyc\n"},
|
||||
{{L"string", L"match", L"a*b?c", L"axxbyc", 0}, STATUS_CMD_OK, L"axxbyc\n"},
|
||||
{{L"string", L"match", L"*?", L"a", 0}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"match", L"*?", L"ab", 0}, STATUS_CMD_OK, L"ab\n"},
|
||||
{{L"string", L"match", L"?*", L"a", 0}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"match", L"?*", L"ab", 0}, STATUS_CMD_OK, L"ab\n"},
|
||||
{{L"string", L"match", L"\\*", L"*", 0}, STATUS_CMD_OK, L"*\n"},
|
||||
{{L"string", L"match", L"a*\\", L"abc\\", 0}, STATUS_CMD_OK, L"abc\\\n"},
|
||||
{{L"string", L"match", L"a*\\?", L"abc?", 0}, STATUS_CMD_OK, L"abc?\n"},
|
||||
|
||||
{{L"string", L"match", L"?", L"", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"?", L"ab", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"??", L"a", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"?a", L"a", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"a?", L"a", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"a??B", L"axxb", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"a*b", L"axxbc", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"*b", L"bbba", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"?", L"", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"?", L"ab", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"??", L"a", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"?a", L"a", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"a?", L"a", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"a??B", L"axxb", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"a*b", L"axxbc", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"*b", L"bbba", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"0x[0-9a-fA-F][0-9a-fA-F]", L"0xbad", 0},
|
||||
STATUS_BUILTIN_ERROR,
|
||||
STATUS_CMD_ERROR,
|
||||
L""},
|
||||
|
||||
{{L"string", L"match", L"-a", L"*", L"ab", L"cde", 0}, STATUS_BUILTIN_OK, L"ab\ncde\n"},
|
||||
{{L"string", L"match", L"*", L"ab", L"cde", 0}, STATUS_BUILTIN_OK, L"ab\ncde\n"},
|
||||
{{L"string", L"match", L"-n", L"*d*", L"cde", 0}, STATUS_BUILTIN_OK, L"1 3\n"},
|
||||
{{L"string", L"match", L"-n", L"*x*", L"cde", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"-q", L"a*", L"b", L"c", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"-q", L"a*", L"b", L"a", 0}, STATUS_BUILTIN_OK, L""},
|
||||
{{L"string", L"match", L"-a", L"*", L"ab", L"cde", 0}, STATUS_CMD_OK, L"ab\ncde\n"},
|
||||
{{L"string", L"match", L"*", L"ab", L"cde", 0}, STATUS_CMD_OK, L"ab\ncde\n"},
|
||||
{{L"string", L"match", L"-n", L"*d*", L"cde", 0}, STATUS_CMD_OK, L"1 3\n"},
|
||||
{{L"string", L"match", L"-n", L"*x*", L"cde", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"-q", L"a*", L"b", L"c", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"-q", L"a*", L"b", L"a", 0}, STATUS_CMD_OK, L""},
|
||||
|
||||
{{L"string", L"match", L"-r", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"match", L"-r", L"", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"-r", L"", L"", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"match", L"-r", L".", L"a", 0}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"match", L"-r", L".*", L"", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"match", L"-r", L"a*b", L"b", 0}, STATUS_BUILTIN_OK, L"b\n"},
|
||||
{{L"string", L"match", L"-r", L"a*b", L"aab", 0}, STATUS_BUILTIN_OK, L"aab\n"},
|
||||
{{L"string", L"match", L"-r", L"-i", L"a*b", L"Aab", 0}, STATUS_BUILTIN_OK, L"Aab\n"},
|
||||
{{L"string", L"match", L"-r", L"", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"-r", L"", L"", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"match", L"-r", L".", L"a", 0}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"match", L"-r", L".*", L"", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"match", L"-r", L"a*b", L"b", 0}, STATUS_CMD_OK, L"b\n"},
|
||||
{{L"string", L"match", L"-r", L"a*b", L"aab", 0}, STATUS_CMD_OK, L"aab\n"},
|
||||
{{L"string", L"match", L"-r", L"-i", L"a*b", L"Aab", 0}, STATUS_CMD_OK, L"Aab\n"},
|
||||
{{L"string", L"match", L"-r", L"-a", L"a[bc]", L"abadac", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"ab\nac\n"},
|
||||
{{L"string", L"match", L"-r", L"a", L"xaxa", L"axax", 0}, STATUS_BUILTIN_OK, L"a\na\n"},
|
||||
{{L"string", L"match", L"-r", L"a", L"xaxa", L"axax", 0}, STATUS_CMD_OK, L"a\na\n"},
|
||||
{{L"string", L"match", L"-r", L"-a", L"a", L"xaxa", L"axax", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"a\na\na\na\n"},
|
||||
{{L"string", L"match", L"-r", L"a[bc]", L"abadac", 0}, STATUS_BUILTIN_OK, L"ab\n"},
|
||||
{{L"string", L"match", L"-r", L"-q", L"a[bc]", L"abadac", 0}, STATUS_BUILTIN_OK, L""},
|
||||
{{L"string", L"match", L"-r", L"-q", L"a[bc]", L"ad", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"match", L"-r", L"a[bc]", L"abadac", 0}, STATUS_CMD_OK, L"ab\n"},
|
||||
{{L"string", L"match", L"-r", L"-q", L"a[bc]", L"abadac", 0}, STATUS_CMD_OK, L""},
|
||||
{{L"string", L"match", L"-r", L"-q", L"a[bc]", L"ad", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"match", L"-r", L"(a+)b(c)", L"aabc", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"aabc\naa\nc\n"},
|
||||
{{L"string", L"match", L"-r", L"-a", L"(a)b(c)", L"abcabc", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"abc\na\nc\nabc\na\nc\n"},
|
||||
{{L"string", L"match", L"-r", L"(a)b(c)", L"abcabc", 0}, STATUS_BUILTIN_OK, L"abc\na\nc\n"},
|
||||
{{L"string", L"match", L"-r", L"(a)b(c)", L"abcabc", 0}, STATUS_CMD_OK, L"abc\na\nc\n"},
|
||||
{{L"string", L"match", L"-r", L"(a|(z))(bc)", L"abc", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"abc\na\nbc\n"},
|
||||
{{L"string", L"match", L"-r", L"-n", L"a", L"ada", L"dad", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"1 1\n2 1\n"},
|
||||
{{L"string", L"match", L"-r", L"-n", L"-a", L"a", L"bacadae", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"2 1\n4 1\n6 1\n"},
|
||||
{{L"string", L"match", L"-r", L"-n", L"(a).*(b)", L"a---b", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"1 5\n1 1\n5 1\n"},
|
||||
{{L"string", L"match", L"-r", L"-n", L"(a)(b)", L"ab", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"1 2\n1 1\n2 1\n"},
|
||||
{{L"string", L"match", L"-r", L"-n", L"(a)(b)", L"abab", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"1 2\n1 1\n2 1\n"},
|
||||
{{L"string", L"match", L"-r", L"-n", L"-a", L"(a)(b)", L"abab", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"1 2\n1 1\n2 1\n3 2\n3 1\n4 1\n"},
|
||||
{{L"string", L"match", L"-r", L"*", L"", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"match", L"-r", L"-a", L"a*", L"b", 0}, STATUS_BUILTIN_OK, L"\n\n"},
|
||||
{{L"string", L"match", L"-r", L"foo\\Kbar", L"foobar", 0}, STATUS_BUILTIN_OK, L"bar\n"},
|
||||
{{L"string", L"match", L"-r", L"-a", L"a*", L"b", 0}, STATUS_CMD_OK, L"\n\n"},
|
||||
{{L"string", L"match", L"-r", L"foo\\Kbar", L"foobar", 0}, STATUS_CMD_OK, L"bar\n"},
|
||||
{{L"string", L"match", L"-r", L"(foo)\\Kbar", L"foobar", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"bar\nfoo\n"},
|
||||
{{L"string", L"match", L"-r", L"(?=ab\\K)", L"ab", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"match", L"-r", L"(?=ab\\K)", L"ab", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"match", L"-r", L"(?=ab\\K)..(?=cd\\K)", L"abcd", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"\n"},
|
||||
|
||||
{{L"string", L"replace", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"replace", L"", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"replace", L"", L"", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"replace", L"", L"", L"", 0}, STATUS_BUILTIN_ERROR, L"\n"},
|
||||
{{L"string", L"replace", L"", L"", L" ", 0}, STATUS_BUILTIN_ERROR, L" \n"},
|
||||
{{L"string", L"replace", L"a", L"b", L"", 0}, STATUS_BUILTIN_ERROR, L"\n"},
|
||||
{{L"string", L"replace", L"a", L"b", L"a", 0}, STATUS_BUILTIN_OK, L"b\n"},
|
||||
{{L"string", L"replace", L"a", L"b", L"xax", 0}, STATUS_BUILTIN_OK, L"xbx\n"},
|
||||
{{L"string", L"replace", L"a", L"b", L"xax", L"axa", 0}, STATUS_BUILTIN_OK, L"xbx\nbxa\n"},
|
||||
{{L"string", L"replace", L"bar", L"x", L"red barn", 0}, STATUS_BUILTIN_OK, L"red xn\n"},
|
||||
{{L"string", L"replace", L"x", L"bar", L"red xn", 0}, STATUS_BUILTIN_OK, L"red barn\n"},
|
||||
{{L"string", L"replace", L"--", L"x", L"-", L"xyz", 0}, STATUS_BUILTIN_OK, L"-yz\n"},
|
||||
{{L"string", L"replace", L"--", L"y", L"-", L"xyz", 0}, STATUS_BUILTIN_OK, L"x-z\n"},
|
||||
{{L"string", L"replace", L"--", L"z", L"-", L"xyz", 0}, STATUS_BUILTIN_OK, L"xy-\n"},
|
||||
{{L"string", L"replace", L"-i", L"z", L"X", L"_Z_", 0}, STATUS_BUILTIN_OK, L"_X_\n"},
|
||||
{{L"string", L"replace", L"-a", L"a", L"A", L"aaa", 0}, STATUS_BUILTIN_OK, L"AAA\n"},
|
||||
{{L"string", L"replace", L"-i", L"a", L"z", L"AAA", 0}, STATUS_BUILTIN_OK, L"zAA\n"},
|
||||
{{L"string", L"replace", L"-q", L"x", L">x<", L"x", 0}, STATUS_BUILTIN_OK, L""},
|
||||
{{L"string", L"replace", L"-a", L"x", L"", L"xxx", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"replace", L"-a", L"***", L"_", L"*****", 0}, STATUS_BUILTIN_OK, L"_**\n"},
|
||||
{{L"string", L"replace", L"", L"", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"replace", L"", L"", L"", 0}, STATUS_CMD_ERROR, L"\n"},
|
||||
{{L"string", L"replace", L"", L"", L" ", 0}, STATUS_CMD_ERROR, L" \n"},
|
||||
{{L"string", L"replace", L"a", L"b", L"", 0}, STATUS_CMD_ERROR, L"\n"},
|
||||
{{L"string", L"replace", L"a", L"b", L"a", 0}, STATUS_CMD_OK, L"b\n"},
|
||||
{{L"string", L"replace", L"a", L"b", L"xax", 0}, STATUS_CMD_OK, L"xbx\n"},
|
||||
{{L"string", L"replace", L"a", L"b", L"xax", L"axa", 0}, STATUS_CMD_OK, L"xbx\nbxa\n"},
|
||||
{{L"string", L"replace", L"bar", L"x", L"red barn", 0}, STATUS_CMD_OK, L"red xn\n"},
|
||||
{{L"string", L"replace", L"x", L"bar", L"red xn", 0}, STATUS_CMD_OK, L"red barn\n"},
|
||||
{{L"string", L"replace", L"--", L"x", L"-", L"xyz", 0}, STATUS_CMD_OK, L"-yz\n"},
|
||||
{{L"string", L"replace", L"--", L"y", L"-", L"xyz", 0}, STATUS_CMD_OK, L"x-z\n"},
|
||||
{{L"string", L"replace", L"--", L"z", L"-", L"xyz", 0}, STATUS_CMD_OK, L"xy-\n"},
|
||||
{{L"string", L"replace", L"-i", L"z", L"X", L"_Z_", 0}, STATUS_CMD_OK, L"_X_\n"},
|
||||
{{L"string", L"replace", L"-a", L"a", L"A", L"aaa", 0}, STATUS_CMD_OK, L"AAA\n"},
|
||||
{{L"string", L"replace", L"-i", L"a", L"z", L"AAA", 0}, STATUS_CMD_OK, L"zAA\n"},
|
||||
{{L"string", L"replace", L"-q", L"x", L">x<", L"x", 0}, STATUS_CMD_OK, L""},
|
||||
{{L"string", L"replace", L"-a", L"x", L"", L"xxx", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"replace", L"-a", L"***", L"_", L"*****", 0}, STATUS_CMD_OK, L"_**\n"},
|
||||
{{L"string", L"replace", L"-a", L"***", L"***", L"******", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"******\n"},
|
||||
{{L"string", L"replace", L"-a", L"a", L"b", L"xax", L"axa", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"xbx\nbxb\n"},
|
||||
|
||||
{{L"string", L"replace", L"-r", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"replace", L"-r", L"", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"replace", L"-r", L"", L"", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"replace", L"-r", L"", L"", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"replace", L"-r", L"", L"", L"", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"\n"}, // pcre2 behavior
|
||||
{{L"string", L"replace", L"-r", L"", L"", L" ", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L" \n"}, // pcre2 behavior
|
||||
{{L"string", L"replace", L"-r", L"a", L"b", L"", 0}, STATUS_BUILTIN_ERROR, L"\n"},
|
||||
{{L"string", L"replace", L"-r", L"a", L"b", L"a", 0}, STATUS_BUILTIN_OK, L"b\n"},
|
||||
{{L"string", L"replace", L"-r", L".", L"x", L"abc", 0}, STATUS_BUILTIN_OK, L"xbc\n"},
|
||||
{{L"string", L"replace", L"-r", L".", L"", L"abc", 0}, STATUS_BUILTIN_OK, L"bc\n"},
|
||||
{{L"string", L"replace", L"-r", L"a", L"b", L"", 0}, STATUS_CMD_ERROR, L"\n"},
|
||||
{{L"string", L"replace", L"-r", L"a", L"b", L"a", 0}, STATUS_CMD_OK, L"b\n"},
|
||||
{{L"string", L"replace", L"-r", L".", L"x", L"abc", 0}, STATUS_CMD_OK, L"xbc\n"},
|
||||
{{L"string", L"replace", L"-r", L".", L"", L"abc", 0}, STATUS_CMD_OK, L"bc\n"},
|
||||
{{L"string", L"replace", L"-r", L"(\\w)(\\w)", L"$2$1", L"ab", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"ba\n"},
|
||||
{{L"string", L"replace", L"-r", L"(\\w)", L"$1$1", L"ab", 0}, STATUS_BUILTIN_OK, L"aab\n"},
|
||||
{{L"string", L"replace", L"-r", L"-a", L".", L"x", L"abc", 0}, STATUS_BUILTIN_OK, L"xxx\n"},
|
||||
{{L"string", L"replace", L"-r", L"(\\w)", L"$1$1", L"ab", 0}, STATUS_CMD_OK, L"aab\n"},
|
||||
{{L"string", L"replace", L"-r", L"-a", L".", L"x", L"abc", 0}, STATUS_CMD_OK, L"xxx\n"},
|
||||
{{L"string", L"replace", L"-r", L"-a", L"(\\w)", L"$1$1", L"ab", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"aabb\n"},
|
||||
{{L"string", L"replace", L"-r", L"-a", L".", L"", L"abc", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"replace", L"-r", L"-a", L".", L"", L"abc", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"replace", L"-r", L"a", L"x", L"bc", L"cd", L"de", 0},
|
||||
STATUS_BUILTIN_ERROR,
|
||||
STATUS_CMD_ERROR,
|
||||
L"bc\ncd\nde\n"},
|
||||
{{L"string", L"replace", L"-r", L"a", L"x", L"aba", L"caa", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"xba\ncxa\n"},
|
||||
{{L"string", L"replace", L"-r", L"-a", L"a", L"x", L"aba", L"caa", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"xbx\ncxx\n"},
|
||||
{{L"string", L"replace", L"-r", L"-i", L"A", L"b", L"xax", 0}, STATUS_BUILTIN_OK, L"xbx\n"},
|
||||
{{L"string", L"replace", L"-r", L"-i", L"A", L"b", L"xax", 0}, STATUS_CMD_OK, L"xbx\n"},
|
||||
{{L"string", L"replace", L"-r", L"-i", L"[a-z]", L".", L"1A2B", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"1.2B\n"},
|
||||
{{L"string", L"replace", L"-r", L"A", L"b", L"xax", 0}, STATUS_BUILTIN_ERROR, L"xax\n"},
|
||||
{{L"string", L"replace", L"-r", L"A", L"b", L"xax", 0}, STATUS_CMD_ERROR, L"xax\n"},
|
||||
{{L"string", L"replace", L"-r", L"a", L"$1", L"a", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"replace", L"-r", L"(a)", L"$2", L"a", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"replace", L"-r", L"*", L".", L"a", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"replace", L"-r", L"^(.)", L"\t$1", L"abc", L"x", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"\tabc\n\tx\n"},
|
||||
|
||||
{{L"string", L"split", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"split", L":", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"split", L":", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"split", L".", L"www.ch.ic.ac.uk", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"www\nch\nic\nac\nuk\n"},
|
||||
{{L"string", L"split", L"..", L"....", 0}, STATUS_BUILTIN_OK, L"\n\n\n"},
|
||||
{{L"string", L"split", L"..", L"....", 0}, STATUS_CMD_OK, L"\n\n\n"},
|
||||
{{L"string", L"split", L"-m", L"x", L"..", L"....", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"split", L"-m1", L"..", L"....", 0}, STATUS_BUILTIN_OK, L"\n..\n"},
|
||||
{{L"string", L"split", L"-m1", L"..", L"....", 0}, STATUS_CMD_OK, L"\n..\n"},
|
||||
{{L"string", L"split", L"-m0", L"/", L"/usr/local/bin/fish", 0},
|
||||
STATUS_BUILTIN_ERROR,
|
||||
STATUS_CMD_ERROR,
|
||||
L"/usr/local/bin/fish\n"},
|
||||
{{L"string", L"split", L"-m2", L":", L"a:b:c:d", L"e:f:g:h", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"a\nb\nc:d\ne\nf\ng:h\n"},
|
||||
{{L"string", L"split", L"-m1", L"-r", L"/", L"/usr/local/bin/fish", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"/usr/local/bin\nfish\n"},
|
||||
{{L"string", L"split", L"-r", L".", L"www.ch.ic.ac.uk", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"www\nch\nic\nac\nuk\n"},
|
||||
{{L"string", L"split", L"--", L"--", L"a--b---c----d", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"a\nb\n-c\n\nd\n"},
|
||||
{{L"string", L"split", L"-r", L"..", L"....", 0}, STATUS_BUILTIN_OK, L"\n\n\n"},
|
||||
{{L"string", L"split", L"-r", L"..", L"....", 0}, STATUS_CMD_OK, L"\n\n\n"},
|
||||
{{L"string", L"split", L"-r", L"--", L"--", L"a--b---c----d", 0},
|
||||
STATUS_BUILTIN_OK,
|
||||
STATUS_CMD_OK,
|
||||
L"a\nb-\nc\n\nd\n"},
|
||||
{{L"string", L"split", L"", L"", 0}, STATUS_BUILTIN_ERROR, L"\n"},
|
||||
{{L"string", L"split", L"", L"a", 0}, STATUS_BUILTIN_ERROR, L"a\n"},
|
||||
{{L"string", L"split", L"", L"ab", 0}, STATUS_BUILTIN_OK, L"a\nb\n"},
|
||||
{{L"string", L"split", L"", L"abc", 0}, STATUS_BUILTIN_OK, L"a\nb\nc\n"},
|
||||
{{L"string", L"split", L"-m1", L"", L"abc", 0}, STATUS_BUILTIN_OK, L"a\nbc\n"},
|
||||
{{L"string", L"split", L"-r", L"", L"", 0}, STATUS_BUILTIN_ERROR, L"\n"},
|
||||
{{L"string", L"split", L"-r", L"", L"a", 0}, STATUS_BUILTIN_ERROR, L"a\n"},
|
||||
{{L"string", L"split", L"-r", L"", L"ab", 0}, STATUS_BUILTIN_OK, L"a\nb\n"},
|
||||
{{L"string", L"split", L"-r", L"", L"abc", 0}, STATUS_BUILTIN_OK, L"a\nb\nc\n"},
|
||||
{{L"string", L"split", L"-r", L"-m1", L"", L"abc", 0}, STATUS_BUILTIN_OK, L"ab\nc\n"},
|
||||
{{L"string", L"split", L"", L"", 0}, STATUS_CMD_ERROR, L"\n"},
|
||||
{{L"string", L"split", L"", L"a", 0}, STATUS_CMD_ERROR, L"a\n"},
|
||||
{{L"string", L"split", L"", L"ab", 0}, STATUS_CMD_OK, L"a\nb\n"},
|
||||
{{L"string", L"split", L"", L"abc", 0}, STATUS_CMD_OK, L"a\nb\nc\n"},
|
||||
{{L"string", L"split", L"-m1", L"", L"abc", 0}, STATUS_CMD_OK, L"a\nbc\n"},
|
||||
{{L"string", L"split", L"-r", L"", L"", 0}, STATUS_CMD_ERROR, L"\n"},
|
||||
{{L"string", L"split", L"-r", L"", L"a", 0}, STATUS_CMD_ERROR, L"a\n"},
|
||||
{{L"string", L"split", L"-r", L"", L"ab", 0}, STATUS_CMD_OK, L"a\nb\n"},
|
||||
{{L"string", L"split", L"-r", L"", L"abc", 0}, STATUS_CMD_OK, L"a\nb\nc\n"},
|
||||
{{L"string", L"split", L"-r", L"-m1", L"", L"abc", 0}, STATUS_CMD_OK, L"ab\nc\n"},
|
||||
{{L"string", L"split", L"-q", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"split", L"-q", L":", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"split", L"-q", L"x", L"axbxc", 0}, STATUS_BUILTIN_OK, L""},
|
||||
{{L"string", L"split", L"-q", L":", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"split", L"-q", L"x", L"axbxc", 0}, STATUS_CMD_OK, L""},
|
||||
|
||||
{{L"string", L"sub", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"sub", L"abcde", 0}, STATUS_BUILTIN_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"sub", L"abcde", 0}, STATUS_CMD_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", L"-l", L"x", L"abcde", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"sub", L"-s", L"x", L"abcde", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"sub", L"-l0", L"abcde", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"sub", L"-l2", L"abcde", 0}, STATUS_BUILTIN_OK, L"ab\n"},
|
||||
{{L"string", L"sub", L"-l5", L"abcde", 0}, STATUS_BUILTIN_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", L"-l6", L"abcde", 0}, STATUS_BUILTIN_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", L"-l0", L"abcde", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"sub", L"-l2", L"abcde", 0}, STATUS_CMD_OK, L"ab\n"},
|
||||
{{L"string", L"sub", L"-l5", L"abcde", 0}, STATUS_CMD_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", L"-l6", L"abcde", 0}, STATUS_CMD_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", L"-l-1", L"abcde", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"sub", L"-s0", L"abcde", 0}, STATUS_INVALID_ARGS, L""},
|
||||
{{L"string", L"sub", L"-s1", L"abcde", 0}, STATUS_BUILTIN_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", L"-s5", L"abcde", 0}, STATUS_BUILTIN_OK, L"e\n"},
|
||||
{{L"string", L"sub", L"-s6", L"abcde", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"sub", L"-s-1", L"abcde", 0}, STATUS_BUILTIN_OK, L"e\n"},
|
||||
{{L"string", L"sub", L"-s-5", L"abcde", 0}, STATUS_BUILTIN_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", L"-s-6", L"abcde", 0}, STATUS_BUILTIN_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", L"-s1", L"-l0", L"abcde", 0}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"sub", L"-s1", L"-l1", L"abcde", 0}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"sub", L"-s2", L"-l2", L"abcde", 0}, STATUS_BUILTIN_OK, L"bc\n"},
|
||||
{{L"string", L"sub", L"-s-1", L"-l1", L"abcde", 0}, STATUS_BUILTIN_OK, L"e\n"},
|
||||
{{L"string", L"sub", L"-s-1", L"-l2", L"abcde", 0}, STATUS_BUILTIN_OK, L"e\n"},
|
||||
{{L"string", L"sub", L"-s-3", L"-l2", L"abcde", 0}, STATUS_BUILTIN_OK, L"cd\n"},
|
||||
{{L"string", L"sub", L"-s-3", L"-l4", L"abcde", 0}, STATUS_BUILTIN_OK, L"cde\n"},
|
||||
{{L"string", L"sub", L"-q", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"sub", L"-q", L"abcde", 0}, STATUS_BUILTIN_OK, L""},
|
||||
{{L"string", L"sub", L"-s1", L"abcde", 0}, STATUS_CMD_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", L"-s5", L"abcde", 0}, STATUS_CMD_OK, L"e\n"},
|
||||
{{L"string", L"sub", L"-s6", L"abcde", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"sub", L"-s-1", L"abcde", 0}, STATUS_CMD_OK, L"e\n"},
|
||||
{{L"string", L"sub", L"-s-5", L"abcde", 0}, STATUS_CMD_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", L"-s-6", L"abcde", 0}, STATUS_CMD_OK, L"abcde\n"},
|
||||
{{L"string", L"sub", L"-s1", L"-l0", L"abcde", 0}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"sub", L"-s1", L"-l1", L"abcde", 0}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"sub", L"-s2", L"-l2", L"abcde", 0}, STATUS_CMD_OK, L"bc\n"},
|
||||
{{L"string", L"sub", L"-s-1", L"-l1", L"abcde", 0}, STATUS_CMD_OK, L"e\n"},
|
||||
{{L"string", L"sub", L"-s-1", L"-l2", L"abcde", 0}, STATUS_CMD_OK, L"e\n"},
|
||||
{{L"string", L"sub", L"-s-3", L"-l2", L"abcde", 0}, STATUS_CMD_OK, L"cd\n"},
|
||||
{{L"string", L"sub", L"-s-3", L"-l4", L"abcde", 0}, STATUS_CMD_OK, L"cde\n"},
|
||||
{{L"string", L"sub", L"-q", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"sub", L"-q", L"abcde", 0}, STATUS_CMD_OK, L""},
|
||||
|
||||
{{L"string", L"trim", 0}, STATUS_BUILTIN_ERROR, L""},
|
||||
{{L"string", L"trim", L""}, STATUS_BUILTIN_ERROR, L"\n"},
|
||||
{{L"string", L"trim", L" "}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"trim", L" \f\n\r\t"}, STATUS_BUILTIN_OK, L"\n"},
|
||||
{{L"string", L"trim", L" a"}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"a "}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"trim", L" a "}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-l", L" a"}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-l", L"a "}, STATUS_BUILTIN_ERROR, L"a \n"},
|
||||
{{L"string", L"trim", L"-l", L" a "}, STATUS_BUILTIN_OK, L"a \n"},
|
||||
{{L"string", L"trim", L"-r", L" a"}, STATUS_BUILTIN_ERROR, L" a\n"},
|
||||
{{L"string", L"trim", L"-r", L"a "}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-r", L" a "}, STATUS_BUILTIN_OK, L" a\n"},
|
||||
{{L"string", L"trim", L"-c", L".", L" a"}, STATUS_BUILTIN_ERROR, L" a\n"},
|
||||
{{L"string", L"trim", L"-c", L".", L"a "}, STATUS_BUILTIN_ERROR, L"a \n"},
|
||||
{{L"string", L"trim", L"-c", L".", L" a "}, STATUS_BUILTIN_ERROR, L" a \n"},
|
||||
{{L"string", L"trim", L"-c", L".", L".a"}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L".", L"a."}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L".", L".a."}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L"\\/", L"/a\\"}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L"\\/", L"a/"}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L"\\/", L"\\a/"}, STATUS_BUILTIN_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L"", L".a."}, STATUS_BUILTIN_ERROR, L".a.\n"},
|
||||
{{L"string", L"trim", 0}, STATUS_CMD_ERROR, L""},
|
||||
{{L"string", L"trim", L""}, STATUS_CMD_ERROR, L"\n"},
|
||||
{{L"string", L"trim", L" "}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"trim", L" \f\n\r\t"}, STATUS_CMD_OK, L"\n"},
|
||||
{{L"string", L"trim", L" a"}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"a "}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"trim", L" a "}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-l", L" a"}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-l", L"a "}, STATUS_CMD_ERROR, L"a \n"},
|
||||
{{L"string", L"trim", L"-l", L" a "}, STATUS_CMD_OK, L"a \n"},
|
||||
{{L"string", L"trim", L"-r", L" a"}, STATUS_CMD_ERROR, L" a\n"},
|
||||
{{L"string", L"trim", L"-r", L"a "}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-r", L" a "}, STATUS_CMD_OK, L" a\n"},
|
||||
{{L"string", L"trim", L"-c", L".", L" a"}, STATUS_CMD_ERROR, L" a\n"},
|
||||
{{L"string", L"trim", L"-c", L".", L"a "}, STATUS_CMD_ERROR, L"a \n"},
|
||||
{{L"string", L"trim", L"-c", L".", L" a "}, STATUS_CMD_ERROR, L" a \n"},
|
||||
{{L"string", L"trim", L"-c", L".", L".a"}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L".", L"a."}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L".", L".a."}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L"\\/", L"/a\\"}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L"\\/", L"a/"}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L"\\/", L"\\a/"}, STATUS_CMD_OK, L"a\n"},
|
||||
{{L"string", L"trim", L"-c", L"", L".a."}, STATUS_CMD_ERROR, L".a.\n"},
|
||||
|
||||
{{0}, STATUS_BUILTIN_ERROR, NULL}};
|
||||
{{0}, STATUS_CMD_ERROR, NULL}};
|
||||
|
||||
struct string_test *t = string_tests;
|
||||
while (t->argv[0] != 0) {
|
||||
|
@ -4181,7 +4181,7 @@ static void test_illegal_command_exit_code(void) {
|
|||
};
|
||||
|
||||
const command_result_tuple_t tests[] = {
|
||||
{L"echo -n", STATUS_BUILTIN_OK}, {L"pwd", STATUS_BUILTIN_OK},
|
||||
{L"echo -n", STATUS_CMD_OK}, {L"pwd", STATUS_CMD_OK},
|
||||
{L")", STATUS_ILLEGAL_CMD}, {L") ", STATUS_ILLEGAL_CMD},
|
||||
{L"*", STATUS_ILLEGAL_CMD}, {L"**", STATUS_ILLEGAL_CMD},
|
||||
{L"%", STATUS_ILLEGAL_CMD}, {L"%test", STATUS_ILLEGAL_CMD},
|
||||
|
@ -4196,7 +4196,7 @@ static void test_illegal_command_exit_code(void) {
|
|||
for (i = 0; i < sizeof tests / sizeof *tests; i++) {
|
||||
res = parser.eval(tests[i].txt, empty_ios, TOP);
|
||||
|
||||
int exit_status = res ? STATUS_UNKNOWN_COMMAND : proc_get_last_status();
|
||||
int exit_status = res ? STATUS_CMD_UNKNOWN : proc_get_last_status();
|
||||
if (exit_status != tests[i].result) {
|
||||
err(L"command '%ls': expected exit code %d , got %d", tests[i].txt, tests[i].result,
|
||||
exit_status);
|
||||
|
|
|
@ -302,7 +302,7 @@ parse_execution_result_t parse_execution_context_t::run_if_statement(
|
|||
} else if (else_clause->child_count == 0) {
|
||||
// 'if' condition failed, no else clause, return 0, we're done.
|
||||
job_list_to_execute = NULL;
|
||||
proc_set_last_status(STATUS_BUILTIN_OK);
|
||||
proc_set_last_status(STATUS_CMD_OK);
|
||||
break;
|
||||
} else {
|
||||
// We have an 'else continuation' (either else-if or else).
|
||||
|
@ -325,7 +325,7 @@ parse_execution_result_t parse_execution_context_t::run_if_statement(
|
|||
run_job_list(*job_list_to_execute, ib);
|
||||
} else {
|
||||
// No job list means no sucessful conditions, so return 0 (issue #1443).
|
||||
proc_set_last_status(STATUS_BUILTIN_OK);
|
||||
proc_set_last_status(STATUS_CMD_OK);
|
||||
}
|
||||
|
||||
// It's possible there's a last-minute cancellation (issue #1297).
|
||||
|
@ -797,7 +797,7 @@ parse_execution_result_t parse_execution_context_t::handle_command_not_found(
|
|||
}
|
||||
|
||||
// Set the last proc status appropriately.
|
||||
proc_set_last_status(err_code == ENOENT ? STATUS_UNKNOWN_COMMAND : STATUS_NOT_EXECUTABLE);
|
||||
proc_set_last_status(err_code == ENOENT ? STATUS_CMD_UNKNOWN : STATUS_NOT_EXECUTABLE);
|
||||
|
||||
return parse_execution_errored;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user