From f772f4ba20bdee4d6e4af259636838d6a0622069 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 24 May 2026 20:22:30 +0100 Subject: [PATCH] alias: implement a set of builtin aliases --- bshell/aliases/echo.c | 45 ++++++++++++++++++++++++++++++++++++++++ bshell/aliases/percent.c | 45 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 bshell/aliases/echo.c create mode 100644 bshell/aliases/percent.c diff --git a/bshell/aliases/echo.c b/bshell/aliases/echo.c new file mode 100644 index 0000000..8193124 --- /dev/null +++ b/bshell/aliases/echo.c @@ -0,0 +1,45 @@ +#include "../command/alias.h" +#include "../command/command.h" + +#include +#include +#include + +#define BSHELL_TYPE_ECHO (bshell_echo_get_type()) + +fx_type_id bshell_echo_get_type(void); + +FX_DECLARE_TYPE(bshell_echo); + +FX_TYPE_CLASS_DECLARATION_BEGIN(bshell_echo) +FX_TYPE_CLASS_DECLARATION_END(bshell_echo) + +struct bshell_echo_p { +}; + +static void init(fx_object *obj, void *priv) +{ +} + +FX_TYPE_CLASS_BEGIN(bshell_echo) + FX_TYPE_VTABLE_INTERFACE_BEGIN(fx_object, FX_TYPE_OBJECT) + FX_INTERFACE_ENTRY(to_string) = NULL; + FX_TYPE_VTABLE_INTERFACE_END(fx_object, FX_TYPE_OBJECT) + + FX_TYPE_VTABLE_INTERFACE_BEGIN(bshell_alias, BSHELL_TYPE_ALIAS) + FX_INTERFACE_ENTRY(a_callable_name) = "echo"; + FX_INTERFACE_ENTRY(a_target_name) = "Write-Output"; + FX_TYPE_VTABLE_INTERFACE_END(bshell_cmdlet, BSHELL_TYPE_CMDLET) + + FX_TYPE_VTABLE_INTERFACE_BEGIN(bshell_command, BSHELL_TYPE_COMMAND) + FX_TYPE_VTABLE_INTERFACE_END(bshell_command, BSHELL_TYPE_COMMAND) +FX_TYPE_CLASS_END(bshell_echo) + +FX_TYPE_DEFINITION_BEGIN(bshell_echo) + FX_TYPE_ID(0xedd507bf, 0x2e32, 0x425b, 0x9c73, 0x2ba9539eace0); + FX_TYPE_NAME("bshell.core.echo"); + FX_TYPE_EXTENDS(BSHELL_TYPE_ALIAS); + FX_TYPE_CLASS(bshell_echo_class); + FX_TYPE_INSTANCE_INIT(init); + FX_TYPE_INSTANCE_PRIVATE(struct bshell_echo_p); +FX_TYPE_DEFINITION_END(bshell_echo) diff --git a/bshell/aliases/percent.c b/bshell/aliases/percent.c new file mode 100644 index 0000000..894b216 --- /dev/null +++ b/bshell/aliases/percent.c @@ -0,0 +1,45 @@ +#include "../command/alias.h" +#include "../command/command.h" + +#include +#include +#include + +#define BSHELL_TYPE_PERCENT (bshell_percent_get_type()) + +fx_type_id bshell_percent_get_type(void); + +FX_DECLARE_TYPE(bshell_percent); + +FX_TYPE_CLASS_DECLARATION_BEGIN(bshell_percent) +FX_TYPE_CLASS_DECLARATION_END(bshell_percent) + +struct bshell_percent_p { +}; + +static void init(fx_object *obj, void *priv) +{ +} + +FX_TYPE_CLASS_BEGIN(bshell_percent) + FX_TYPE_VTABLE_INTERFACE_BEGIN(fx_object, FX_TYPE_OBJECT) + FX_INTERFACE_ENTRY(to_string) = NULL; + FX_TYPE_VTABLE_INTERFACE_END(fx_object, FX_TYPE_OBJECT) + + FX_TYPE_VTABLE_INTERFACE_BEGIN(bshell_alias, BSHELL_TYPE_ALIAS) + FX_INTERFACE_ENTRY(a_callable_name) = "%"; + FX_INTERFACE_ENTRY(a_target_name) = "ForEach-Object"; + FX_TYPE_VTABLE_INTERFACE_END(bshell_cmdlet, BSHELL_TYPE_CMDLET) + + FX_TYPE_VTABLE_INTERFACE_BEGIN(bshell_command, BSHELL_TYPE_COMMAND) + FX_TYPE_VTABLE_INTERFACE_END(bshell_command, BSHELL_TYPE_COMMAND) +FX_TYPE_CLASS_END(bshell_percent) + +FX_TYPE_DEFINITION_BEGIN(bshell_percent) + FX_TYPE_ID(0x4255a9de, 0xd6f6, 0x4708, 0x829c, 0xffa4c6034edb); + FX_TYPE_NAME("bshell.core.percent"); + FX_TYPE_EXTENDS(BSHELL_TYPE_ALIAS); + FX_TYPE_CLASS(bshell_percent_class); + FX_TYPE_INSTANCE_INIT(init); + FX_TYPE_INSTANCE_PRIVATE(struct bshell_percent_p); +FX_TYPE_DEFINITION_END(bshell_percent)