diff options
author | Ron Yorston <rmy@pobox.com> | 2021-10-13 14:37:51 +0100 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2021-10-13 14:37:51 +0100 |
commit | 0ecf1aea459571b48dc68ddc2b7b9265740fa960 (patch) | |
tree | 491d6184a44b8b525a4ca35759d622aecd7f6344 /libbb/appletlib.c | |
parent | 4859ddcb20616718efbea12c6bf8b27c469b68de (diff) | |
parent | aaf3d5ba74c5da97ff80b61f30cb8dd225d39096 (diff) | |
download | busybox-w32-0ecf1aea459571b48dc68ddc2b7b9265740fa960.tar.gz busybox-w32-0ecf1aea459571b48dc68ddc2b7b9265740fa960.tar.bz2 busybox-w32-0ecf1aea459571b48dc68ddc2b7b9265740fa960.zip |
Merge branch 'busybox' into merge
Diffstat (limited to 'libbb/appletlib.c')
-rw-r--r-- | libbb/appletlib.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/libbb/appletlib.c b/libbb/appletlib.c index e1f8bf432..6c0be4a83 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c | |||
@@ -262,8 +262,7 @@ void lbb_prepare(const char *applet | |||
262 | IF_FEATURE_INDIVIDUAL(, char **argv)) | 262 | IF_FEATURE_INDIVIDUAL(, char **argv)) |
263 | { | 263 | { |
264 | #ifdef bb_cached_errno_ptr | 264 | #ifdef bb_cached_errno_ptr |
265 | (*(int **)not_const_pp(&bb_errno)) = get_perrno(); | 265 | ASSIGN_CONST_PTR(&bb_errno, get_perrno()); |
266 | barrier(); | ||
267 | #endif | 266 | #endif |
268 | applet_name = applet; | 267 | applet_name = applet; |
269 | 268 | ||
@@ -767,9 +766,9 @@ int scripted_main(int argc UNUSED_PARAM, char **argv) | |||
767 | int script = find_script_by_name(applet_name); | 766 | int script = find_script_by_name(applet_name); |
768 | if (script >= 0) | 767 | if (script >= 0) |
769 | # if ENABLE_SHELL_ASH | 768 | # if ENABLE_SHELL_ASH |
770 | exit(ash_main(-script - 1, argv)); | 769 | return ash_main(-script - 1, argv); |
771 | # elif ENABLE_SHELL_HUSH | 770 | # elif ENABLE_SHELL_HUSH |
772 | exit(hush_main(-script - 1, argv)); | 771 | return hush_main(-script - 1, argv); |
773 | # else | 772 | # else |
774 | return 1; | 773 | return 1; |
775 | # endif | 774 | # endif |
@@ -1161,10 +1160,10 @@ int scripted_main(int argc UNUSED_PARAM, char **argv) | |||
1161 | { | 1160 | { |
1162 | # if ENABLE_SHELL_ASH | 1161 | # if ENABLE_SHELL_ASH |
1163 | int script = 0; | 1162 | int script = 0; |
1164 | exit(ash_main(-script - 1, argv)); | 1163 | return ash_main(-script - 1, argv); |
1165 | # elif ENABLE_SHELL_HUSH | 1164 | # elif ENABLE_SHELL_HUSH |
1166 | int script = 0; | 1165 | int script = 0; |
1167 | exit(hush_main(-script - 1, argv)); | 1166 | return hush_main(-script - 1, argv); |
1168 | # else | 1167 | # else |
1169 | return 1; | 1168 | return 1; |
1170 | # endif | 1169 | # endif |
@@ -1282,7 +1281,7 @@ int main(int argc UNUSED_PARAM, char **argv) | |||
1282 | 1281 | ||
1283 | full_write2_str(bb_basename(argv[0])); | 1282 | full_write2_str(bb_basename(argv[0])); |
1284 | full_write2_str(": no applets enabled\n"); | 1283 | full_write2_str(": no applets enabled\n"); |
1285 | exit(127); | 1284 | return 127; |
1286 | 1285 | ||
1287 | #else | 1286 | #else |
1288 | 1287 | ||
@@ -1314,8 +1313,14 @@ int main(int argc UNUSED_PARAM, char **argv) | |||
1314 | || ENABLE_FEATURE_PREFER_APPLETS | 1313 | || ENABLE_FEATURE_PREFER_APPLETS |
1315 | || !BB_MMU | 1314 | || !BB_MMU |
1316 | ) { | 1315 | ) { |
1317 | if (NUM_APPLETS > 1) | 1316 | if (NUM_APPLETS > 1) { |
1318 | set_task_comm(applet_name); | 1317 | /* Careful, do not trash comm of "SCRIPT.sh" - |
1318 | * the case when started from e.g. #!/bin/ash script. | ||
1319 | * (not limited to shells - #!/bin/awk scripts also exist) | ||
1320 | */ | ||
1321 | if (re_execed_comm()) | ||
1322 | set_task_comm(applet_name); | ||
1323 | } | ||
1319 | } | 1324 | } |
1320 | 1325 | ||
1321 | parse_config_file(); /* ...maybe, if FEATURE_SUID_CONFIG */ | 1326 | parse_config_file(); /* ...maybe, if FEATURE_SUID_CONFIG */ |