diff options
author | Denis Vlasenko | 2008-07-01 11:11:24 +0000 |
---|---|---|
committer | Denis Vlasenko | 2008-07-01 11:11:24 +0000 |
commit | 58d60c3333b988feb72eb867332d9ad773957810 (patch) | |
tree | 1c6d46f7642c863462198e144cd49ca051c8458f /libbb | |
parent | 49b5c516b5f5cb72ba05d5584e574b4a48cee7c1 (diff) | |
download | busybox-58d60c3333b988feb72eb867332d9ad773957810.zip busybox-58d60c3333b988feb72eb867332d9ad773957810.tar.gz |
*: introduce and use xfork()
function old new delta
xfork - 20 +20
msh_main 1377 1380 +3
mod_process 455 446 -9
forkexit_or_rexec 30 17 -13
expand_variables 1434 1421 -13
open_transformer 91 76 -15
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/4 up/down: 23/-50) Total: -27 bytes
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/vfork_daemon_rexec.c | 4 | ||||
-rw-r--r-- | libbb/xvfork.c | 10 |
2 files changed, 11 insertions, 3 deletions
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c index 9baa813..989e9b8 100644 --- a/libbb/vfork_daemon_rexec.c +++ b/libbb/vfork_daemon_rexec.c @@ -238,9 +238,7 @@ void FAST_FUNC forkexit_or_rexec(char **argv) void FAST_FUNC forkexit_or_rexec(void) { pid_t pid; - pid = fork(); - if (pid < 0) /* wtf? */ - bb_perror_msg_and_die("fork"); + pid = xfork(); if (pid) /* parent */ exit(EXIT_SUCCESS); /* child */ diff --git a/libbb/xvfork.c b/libbb/xvfork.c index a74b49f..3fbd0c1 100644 --- a/libbb/xvfork.c +++ b/libbb/xvfork.c @@ -16,3 +16,13 @@ pid_t FAST_FUNC xvfork(void) bb_perror_msg_and_die("vfork"); return pid; } + +#if BB_MMU +pid_t FAST_FUNC xfork(void) +{ + pid_t pid = fork(); + if (pid < 0) + bb_perror_msg_and_die("vfork" + 1); + return pid; +} +#endif |