mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-13 05:28:49 +00:00
Make false/true into builtins
Making `true` into a builtin is a significant optimization to `while true` loops. As long as `true` is a builtin, we may as well make `false` builtin as well (despite the fact that it's not typically executed in a loop).
This commit is contained in:
parent
27dd37ebb4
commit
d67800bbce
4 changed files with 44 additions and 8 deletions
12
builtin.cpp
12
builtin.cpp
|
@ -4001,6 +4001,16 @@ int builtin_parse(parser_t &parser, wchar_t **argv)
|
||||||
return STATUS_BUILTIN_OK;
|
return STATUS_BUILTIN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int builtin_true(parser_t &parser, wchar_t **argv)
|
||||||
|
{
|
||||||
|
return STATUS_BUILTIN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
int builtin_false(parser_t &parser, wchar_t **argv)
|
||||||
|
{
|
||||||
|
return STATUS_BUILTIN_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
END OF BUILTIN COMMANDS
|
END OF BUILTIN COMMANDS
|
||||||
Below are functions for handling the builtin commands.
|
Below are functions for handling the builtin commands.
|
||||||
|
@ -4038,6 +4048,7 @@ static const builtin_data_t builtin_datas[]=
|
||||||
{ L"end", &builtin_generic, N_(L"End a block of commands") },
|
{ L"end", &builtin_generic, N_(L"End a block of commands") },
|
||||||
{ L"exec", &builtin_generic, N_(L"Run command in current process") },
|
{ L"exec", &builtin_generic, N_(L"Run command in current process") },
|
||||||
{ L"exit", &builtin_exit, N_(L"Exit the shell") },
|
{ L"exit", &builtin_exit, N_(L"Exit the shell") },
|
||||||
|
{ L"false", &builtin_false, N_(L"Return an unsuccessful result") },
|
||||||
{ L"fg", &builtin_fg, N_(L"Send job to foreground") },
|
{ L"fg", &builtin_fg, N_(L"Send job to foreground") },
|
||||||
{ L"for", &builtin_generic, N_(L"Perform a set of commands multiple times") },
|
{ L"for", &builtin_generic, N_(L"Perform a set of commands multiple times") },
|
||||||
{ L"function", &builtin_generic, N_(L"Define a new function") },
|
{ L"function", &builtin_generic, N_(L"Define a new function") },
|
||||||
|
@ -4058,6 +4069,7 @@ static const builtin_data_t builtin_datas[]=
|
||||||
{ L"status", &builtin_status, N_(L"Return status information about fish") },
|
{ L"status", &builtin_status, N_(L"Return status information about fish") },
|
||||||
{ L"switch", &builtin_generic, N_(L"Conditionally execute a block of commands") },
|
{ L"switch", &builtin_generic, N_(L"Conditionally execute a block of commands") },
|
||||||
{ L"test", &builtin_test, N_(L"Test a condition") },
|
{ L"test", &builtin_test, N_(L"Test a condition") },
|
||||||
|
{ L"true", &builtin_true, N_(L"Return a successful result") },
|
||||||
{ L"ulimit", &builtin_ulimit, N_(L"Set or get the shells resource usage limits") },
|
{ L"ulimit", &builtin_ulimit, N_(L"Set or get the shells resource usage limits") },
|
||||||
{ L"while", &builtin_generic, N_(L"Perform a command multiple times") }
|
{ L"while", &builtin_generic, N_(L"Perform a command multiple times") }
|
||||||
};
|
};
|
||||||
|
|
10
doc_src/false.txt
Normal file
10
doc_src/false.txt
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
\section false false - return an unsuccessful result
|
||||||
|
|
||||||
|
\subsection false-synopsis Synopsis
|
||||||
|
\fish{synopsis}
|
||||||
|
false
|
||||||
|
\endfish
|
||||||
|
|
||||||
|
\subsection false-description Description
|
||||||
|
|
||||||
|
`false` sets the exit status to 1.
|
10
doc_src/true.txt
Normal file
10
doc_src/true.txt
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
\section true true - return a successful result
|
||||||
|
|
||||||
|
\subsection true-synopsis Synopsis
|
||||||
|
\fish{synopsis}
|
||||||
|
true
|
||||||
|
\endfish
|
||||||
|
|
||||||
|
\subsection true-description Description
|
||||||
|
|
||||||
|
`true` sets the exit status to 0.
|
|
@ -926,6 +926,8 @@
|
||||||
"$(SRCROOT)/doc_src/umask.txt",
|
"$(SRCROOT)/doc_src/umask.txt",
|
||||||
"$(SRCROOT)/doc_src/vared.txt",
|
"$(SRCROOT)/doc_src/vared.txt",
|
||||||
"$(SRCROOT)/doc_src/while.txt",
|
"$(SRCROOT)/doc_src/while.txt",
|
||||||
|
"$(SRCROOT)/doc_src/true.txt",
|
||||||
|
"$(SRCROOT)/doc_src/false.txt",
|
||||||
);
|
);
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
"$(BUILT_PRODUCTS_DIR)/man/man1/alias.1",
|
"$(BUILT_PRODUCTS_DIR)/man/man1/alias.1",
|
||||||
|
@ -998,6 +1000,8 @@
|
||||||
"$(BUILT_PRODUCTS_DIR)/man/man1/umask.1",
|
"$(BUILT_PRODUCTS_DIR)/man/man1/umask.1",
|
||||||
"$(BUILT_PRODUCTS_DIR)/man/man1/vared.1",
|
"$(BUILT_PRODUCTS_DIR)/man/man1/vared.1",
|
||||||
"$(BUILT_PRODUCTS_DIR)/man/man1/while.1",
|
"$(BUILT_PRODUCTS_DIR)/man/man1/while.1",
|
||||||
|
"$(BUILT_PRODUCTS_DIR)/man/man1/true.1",
|
||||||
|
"$(BUILT_PRODUCTS_DIR)/man/man1/false.1",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
|
|
Loading…
Reference in a new issue