aboutsummaryrefslogtreecommitdiff
path: root/libbb/appletlib.c
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2021-10-13 14:37:51 +0100
committerRon Yorston <rmy@pobox.com>2021-10-13 14:37:51 +0100
commit0ecf1aea459571b48dc68ddc2b7b9265740fa960 (patch)
tree491d6184a44b8b525a4ca35759d622aecd7f6344 /libbb/appletlib.c
parent4859ddcb20616718efbea12c6bf8b27c469b68de (diff)
parentaaf3d5ba74c5da97ff80b61f30cb8dd225d39096 (diff)
downloadbusybox-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.c23
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 */