diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2023-04-01 23:16:01 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2023-04-01 23:17:53 +0200 |
commit | 6748e6494c223b779a204b370e395f82c8e5247f (patch) | |
tree | 1a18e42803c8d6700ef8bc8d4e22552a2ff5c8b4 | |
parent | fd5fb2d2b59640910addf5c946a39d4cc5c09003 (diff) | |
download | busybox-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.c | 15 |
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); |