mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 08:57:34 +00:00
Shell: Add a "." builtin that aliases to "source" in POSIX
This patch adds an alias to the source builtin when an user types ".". We cannot just add an enumeration entry using __ENUMERATE_SHELL_BUILTIN because "." is not a valid name in a function. This patch adds handling similarly to the name rewriting of ":". This alias is limited to POSIX mode only.
This commit is contained in:
parent
6e5457d9e0
commit
9531abcb1a
2 changed files with 7 additions and 1 deletions
|
@ -1328,6 +1328,8 @@ ErrorOr<bool> Shell::run_builtin(const AST::Command& command, Vector<NonnullRefP
|
||||||
|
|
||||||
if (name == ":"sv)
|
if (name == ":"sv)
|
||||||
name = "noop"sv;
|
name = "noop"sv;
|
||||||
|
else if (m_in_posix_mode && name == "."sv)
|
||||||
|
name = "source"sv;
|
||||||
|
|
||||||
#define __ENUMERATE_SHELL_BUILTIN(builtin, _mode) \
|
#define __ENUMERATE_SHELL_BUILTIN(builtin, _mode) \
|
||||||
if (name == #builtin) { \
|
if (name == #builtin) { \
|
||||||
|
@ -1921,7 +1923,7 @@ ErrorOr<int> Shell::builtin_run_with_env(Main::Arguments arguments)
|
||||||
|
|
||||||
bool Shell::has_builtin(StringView name) const
|
bool Shell::has_builtin(StringView name) const
|
||||||
{
|
{
|
||||||
if (name == ":"sv)
|
if (name == ":"sv || (m_in_posix_mode && name == "."sv))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
#define __ENUMERATE_SHELL_BUILTIN(builtin, mode) \
|
#define __ENUMERATE_SHELL_BUILTIN(builtin, mode) \
|
||||||
|
|
|
@ -462,7 +462,11 @@ private:
|
||||||
|
|
||||||
#undef __ENUMERATE_SHELL_BUILTIN
|
#undef __ENUMERATE_SHELL_BUILTIN
|
||||||
|
|
||||||
|
"."sv, // Needs to be aliased to "source" in POSIX mode.
|
||||||
|
// clang-format off
|
||||||
|
// Clang-format does not properly indent this, it gives it 4 spaces too few.
|
||||||
":"sv, // POSIX-y name for "noop".
|
":"sv, // POSIX-y name for "noop".
|
||||||
|
// clang-format on
|
||||||
};
|
};
|
||||||
|
|
||||||
bool m_should_ignore_jobs_on_next_exit { false };
|
bool m_should_ignore_jobs_on_next_exit { false };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue