aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2020-12-20 16:36:00 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2020-12-20 16:36:00 +0100
commitbb4e32befaf86f80a108d2b7a4b7c47ffcc64e9c (patch)
treec4d95c1e49de3b1df631250ecfd29c62411d1f8a
parentc8f6c1d7750156b1d7daf0dc37aa2b60626fc0c1 (diff)
downloadbusybox-w32-bb4e32befaf86f80a108d2b7a4b7c47ffcc64e9c.tar.gz
busybox-w32-bb4e32befaf86f80a108d2b7a4b7c47ffcc64e9c.tar.bz2
busybox-w32-bb4e32befaf86f80a108d2b7a4b7c47ffcc64e9c.zip
hush: remove one redundant getpid() on every startup
function old new delta hush_main 1151 1147 -4 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--shell/hush.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/shell/hush.c b/shell/hush.c
index 3ccc18146..f29c985ad 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -9988,6 +9988,7 @@ static int set_mode(int state, char mode, const char *o_opt)
9988int hush_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 9988int hush_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
9989int hush_main(int argc, char **argv) 9989int hush_main(int argc, char **argv)
9990{ 9990{
9991 pid_t cached_getpid;
9991 enum { 9992 enum {
9992 OPT_login = (1 << 0), 9993 OPT_login = (1 << 0),
9993 }; 9994 };
@@ -10016,6 +10017,10 @@ int hush_main(int argc, char **argv)
10016 G.argv0_for_re_execing = argv[0]; 10017 G.argv0_for_re_execing = argv[0];
10017#endif 10018#endif
10018 10019
10020 cached_getpid = getpid(); /* for tcsetpgrp() during init */
10021 G.root_pid = cached_getpid; /* for $PID (NOMMU can override via -$HEXPID:HEXPPID:...) */
10022 G.root_ppid = getppid(); /* for $$PPID (NOMMU can override) */
10023
10019 /* Deal with HUSH_VERSION */ 10024 /* Deal with HUSH_VERSION */
10020 debug_printf_env("unsetenv '%s'\n", "HUSH_VERSION"); 10025 debug_printf_env("unsetenv '%s'\n", "HUSH_VERSION");
10021 unsetenv("HUSH_VERSION"); /* in case it exists in initial env */ 10026 unsetenv("HUSH_VERSION"); /* in case it exists in initial env */
@@ -10103,8 +10108,6 @@ int hush_main(int argc, char **argv)
10103 char *script = get_script_content(-argc - 1); 10108 char *script = get_script_content(-argc - 1);
10104 G.global_argv = argv; 10109 G.global_argv = argv;
10105 G.global_argc = string_array_len(argv); 10110 G.global_argc = string_array_len(argv);
10106 G.root_pid = getpid();
10107 G.root_ppid = getppid();
10108 //install_special_sighandlers(); - needed? 10111 //install_special_sighandlers(); - needed?
10109 parse_and_run_string(script); 10112 parse_and_run_string(script);
10110 goto final_return; 10113 goto final_return;
@@ -10232,11 +10235,6 @@ int hush_main(int argc, char **argv)
10232 G.global_argv = argv + (optind - 1); 10235 G.global_argv = argv + (optind - 1);
10233 G.global_argv[0] = argv[0]; 10236 G.global_argv[0] = argv[0];
10234 10237
10235 if (!G.root_pid) {
10236 G.root_pid = getpid();
10237 G.root_ppid = getppid();
10238 }
10239
10240 /* If we are login shell... */ 10238 /* If we are login shell... */
10241 if (flags & OPT_login) { 10239 if (flags & OPT_login) {
10242 const char *hp = NULL; 10240 const char *hp = NULL;
@@ -10406,7 +10404,7 @@ int hush_main(int argc, char **argv)
10406 * (bash, too, does this only if ctty is available) */ 10404 * (bash, too, does this only if ctty is available) */
10407 bb_setpgrp(); /* is the same as setpgid(our_pid, our_pid); */ 10405 bb_setpgrp(); /* is the same as setpgid(our_pid, our_pid); */
10408 /* Grab control of the terminal */ 10406 /* Grab control of the terminal */
10409 tcsetpgrp(G_interactive_fd, getpid()); 10407 tcsetpgrp(G_interactive_fd, cached_getpid);
10410 } 10408 }
10411 enable_restore_tty_pgrp_on_exit(); 10409 enable_restore_tty_pgrp_on_exit();
10412 10410