aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2023-04-01 23:16:01 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2023-04-01 23:17:53 +0200
commit6748e6494c223b779a204b370e395f82c8e5247f (patch)
tree1a18e42803c8d6700ef8bc8d4e22552a2ff5c8b4
parentfd5fb2d2b59640910addf5c946a39d4cc5c09003 (diff)
downloadbusybox-w32-6748e6494c223b779a204b370e395f82c8e5247f.tar.gz
busybox-w32-6748e6494c223b779a204b370e395f82c8e5247f.tar.bz2
busybox-w32-6748e6494c223b779a204b370e395f82c8e5247f.zip
hush (NOMMU): fix LINENO in execed children
function old new delta hush_main 1815 1851 +36 re_execute_shell 601 635 +34 .rodata 102721 102726 +5 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/0 up/down: 75/0) Total: 75 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--shell/hush.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/shell/hush.c b/shell/hush.c
index 170edf415..a938cc790 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -7468,6 +7468,9 @@ static void re_execute_shell(char ***to_free, const char *s,
7468 if (!cur->flg_export || cur->flg_read_only) 7468 if (!cur->flg_export || cur->flg_read_only)
7469 cnt += 2; 7469 cnt += 2;
7470 } 7470 }
7471# if ENABLE_HUSH_LINENO_VAR
7472 cnt += 2;
7473# endif
7471# if ENABLE_HUSH_FUNCTIONS 7474# if ENABLE_HUSH_FUNCTIONS
7472 for (funcp = G.top_func; funcp; funcp = funcp->next) 7475 for (funcp = G.top_func; funcp; funcp = funcp->next)
7473 cnt += 3; 7476 cnt += 3;
@@ -7489,6 +7492,10 @@ static void re_execute_shell(char ***to_free, const char *s,
7489 *pp++ = cur->varstr; 7492 *pp++ = cur->varstr;
7490 } 7493 }
7491 } 7494 }
7495# if ENABLE_HUSH_LINENO_VAR
7496 *pp++ = (char *) "-L";
7497 *pp++ = utoa(G.execute_lineno);
7498# endif
7492# if ENABLE_HUSH_FUNCTIONS 7499# if ENABLE_HUSH_FUNCTIONS
7493 for (funcp = G.top_func; funcp; funcp = funcp->next) { 7500 for (funcp = G.top_func; funcp; funcp = funcp->next) {
7494 *pp++ = (char *) "-F"; 7501 *pp++ = (char *) "-F";
@@ -10400,6 +10407,9 @@ int hush_main(int argc, char **argv)
10400 "cexinsl" 10407 "cexinsl"
10401#if !BB_MMU 10408#if !BB_MMU
10402 "$:R:V:" 10409 "$:R:V:"
10410# if ENABLE_HUSH_LINENO_VAR
10411 "L:"
10412# endif
10403# if ENABLE_HUSH_FUNCTIONS 10413# if ENABLE_HUSH_FUNCTIONS
10404 "F:" 10414 "F:"
10405# endif 10415# endif
@@ -10498,6 +10508,11 @@ int hush_main(int argc, char **argv)
10498 case 'V': 10508 case 'V':
10499 set_local_var(xstrdup(optarg), opt == 'R' ? SETFLAG_MAKE_RO : 0); 10509 set_local_var(xstrdup(optarg), opt == 'R' ? SETFLAG_MAKE_RO : 0);
10500 break; 10510 break;
10511# if ENABLE_HUSH_LINENO_VAR
10512 case 'L':
10513 G.parse_lineno = xatou(optarg);
10514 break;
10515# endif
10501# if ENABLE_HUSH_FUNCTIONS 10516# if ENABLE_HUSH_FUNCTIONS
10502 case 'F': { 10517 case 'F': {
10503 struct function *funcp = new_function(optarg); 10518 struct function *funcp = new_function(optarg);