summaryrefslogtreecommitdiff
path: root/aports/busybox/0001-ash-add-built-in-BB_ASH_VERSION-variable.patch
diff options
context:
space:
mode:
Diffstat (limited to 'aports/busybox/0001-ash-add-built-in-BB_ASH_VERSION-variable.patch')
-rw-r--r--aports/busybox/0001-ash-add-built-in-BB_ASH_VERSION-variable.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/aports/busybox/0001-ash-add-built-in-BB_ASH_VERSION-variable.patch b/aports/busybox/0001-ash-add-built-in-BB_ASH_VERSION-variable.patch
new file mode 100644
index 0000000..f7f901f
--- /dev/null
+++ b/aports/busybox/0001-ash-add-built-in-BB_ASH_VERSION-variable.patch
@@ -0,0 +1,83 @@
+From cf95fcc20717e4c0906109b13565fdd06d874ee0 Mon Sep 17 00:00:00 2001
+From: Ariadne Conill <ariadne@dereferenced.org>
+Date: Wed, 10 Mar 2021 23:38:57 -0700
+Subject: [PATCH] ash: add built-in $BB_ASH_VERSION variable
+
+This is helpful for detecting if the shell is busybox ash or not,
+which is necessary for enabling ash-specific features in /etc/profile
+and Alpine's default $ENV.
+
+https://gitlab.alpinelinux.org/alpine/aports/-/issues/12398 outlines
+the rationale for detecting what shell is running in /etc/profile and
+similar.
+
+function old new delta
+.rodata 77899 77925 +26
+varinit_data 360 384 +24
+------------------------------------------------------------------------------
+(add/remove: 0/0 grow/shrink: 2/0 up/down: 50/0) Total: 50 bytes
+
+Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
+---
+ shell/ash.c | 26 +++++++++++++++++++-------
+ 1 file changed, 19 insertions(+), 7 deletions(-)
+
+diff --git a/shell/ash.c b/shell/ash.c
+index 6a16833b1..b8525dd57 100644
+--- a/shell/ash.c
++++ b/shell/ash.c
+@@ -153,6 +153,14 @@
+ //config: you to run the specified command or builtin,
+ //config: even when there is a function with the same name.
+ //config:
++//config:config ASH_VERSION_VAR
++//config: bool "declare $BB_ASH_VERSION variable"
++//config: default y
++//config: depends on SHELL_ASH
++//config: help
++//config: Enable support for declaring the $BB_ASH_VERSION variable,
++//config: which is set as the busybox version.
++//config:
+ //config:endif # ash options
+
+ //applet:IF_ASH(APPLET(ash, BB_DIR_BIN, BB_SUID_DROP))
+@@ -2109,6 +2117,9 @@ static const struct {
+ { VSTRFIXED|VTEXTFIXED , "PS1=$ " , NULL },
+ { VSTRFIXED|VTEXTFIXED , "PS2=> " , NULL },
+ { VSTRFIXED|VTEXTFIXED , "PS4=+ " , NULL },
++#if ENABLE_ASH_VERSION_VAR
++ { VSTRFIXED|VTEXTFIXED , "BB_ASH_VERSION=" BB_VER, NULL },
++#endif
+ #if ENABLE_ASH_GETOPTS
+ { VSTRFIXED|VTEXTFIXED , defoptindvar, getoptsreset },
+ #endif
+@@ -2159,18 +2170,19 @@ extern struct globals_var *BB_GLOBAL_CONST ash_ptr_to_globals_var;
+ #define vps1 varinit[VAR_OFFSET1 + 2]
+ #define vps2 varinit[VAR_OFFSET1 + 3]
+ #define vps4 varinit[VAR_OFFSET1 + 4]
++#define VAR_OFFSET2 (VAR_OFFSET1 + ENABLE_ASH_VERSION_VAR)
+ #if ENABLE_ASH_GETOPTS
+-# define voptind varinit[VAR_OFFSET1 + 5]
++# define voptind varinit[VAR_OFFSET2 + 5]
+ #endif
+-#define VAR_OFFSET2 (VAR_OFFSET1 + ENABLE_ASH_GETOPTS)
+-#define vlineno varinit[VAR_OFFSET2 + 5]
++#define VAR_OFFSET3 (VAR_OFFSET2 + ENABLE_ASH_GETOPTS)
++#define vlineno varinit[VAR_OFFSET3 + 5]
+ #if ENABLE_ASH_RANDOM_SUPPORT
+-# define vrandom varinit[VAR_OFFSET2 + 6]
++# define vrandom varinit[VAR_OFFSET3 + 6]
+ #endif
+-#define VAR_OFFSET3 (VAR_OFFSET2 + ENABLE_ASH_RANDOM_SUPPORT)
++#define VAR_OFFSET4 (VAR_OFFSET2 + ENABLE_ASH_RANDOM_SUPPORT)
+ #if BASH_EPOCH_VARS
+-# define vepochs varinit[VAR_OFFSET3 + 6]
+-# define vepochr varinit[VAR_OFFSET3 + 7]
++# define vepochs varinit[VAR_OFFSET4 + 6]
++# define vepochr varinit[VAR_OFFSET4 + 7]
+ #endif
+ #define INIT_G_var() do { \
+ unsigned i; \
+--
+2.30.2
+