diff options
author | AnotherTest <ali.mpfard@gmail.com> | 2021-01-18 04:34:16 +0330 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-01-19 08:19:43 +0100 |
commit | cd6e5c064ba9c9350b06a362ce84f5c674b2e7fe (patch) | |
tree | 5ec4b11d4ed3d2839f87f42492f94b999ffc5248 /Userland/Shell | |
parent | 39af1f8519d4a33a90ae79e5b3277652aac85270 (diff) | |
download | serenity-cd6e5c064ba9c9350b06a362ce84f5c674b2e7fe.zip |
Shell: Add a builtin that parses its sole argument and dumps its AST
Pretty useful for debugging.
Diffstat (limited to 'Userland/Shell')
-rw-r--r-- | Userland/Shell/Builtin.cpp | 9 | ||||
-rw-r--r-- | Userland/Shell/Shell.h | 3 |
2 files changed, 11 insertions, 1 deletions
diff --git a/Userland/Shell/Builtin.cpp b/Userland/Shell/Builtin.cpp index d3a48b5089..731710af43 100644 --- a/Userland/Shell/Builtin.cpp +++ b/Userland/Shell/Builtin.cpp @@ -40,6 +40,15 @@ extern char** environ; namespace Shell { +int Shell::builtin_dump(int argc, const char** argv) +{ + if (argc != 2) + return 1; + + Parser { argv[1] }.parse()->dump(0); + return 0; +} + int Shell::builtin_alias(int argc, const char** argv) { Vector<const char*> arguments; diff --git a/Userland/Shell/Shell.h b/Userland/Shell/Shell.h index 3530d2e003..b86923e445 100644 --- a/Userland/Shell/Shell.h +++ b/Userland/Shell/Shell.h @@ -63,7 +63,8 @@ __ENUMERATE_SHELL_BUILTIN(disown) \ __ENUMERATE_SHELL_BUILTIN(fg) \ __ENUMERATE_SHELL_BUILTIN(bg) \ - __ENUMERATE_SHELL_BUILTIN(wait) + __ENUMERATE_SHELL_BUILTIN(wait) \ + __ENUMERATE_SHELL_BUILTIN(dump) #define ENUMERATE_SHELL_OPTIONS() \ __ENUMERATE_SHELL_OPTION(inline_exec_keep_empty_segments, false, "Keep empty segments in inline execute $(...)") \ |