diff options
author | Pascal Bellard <pascal.bellard@ads-lu.com> | 2010-07-04 15:32:38 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-07-04 15:32:38 +0200 |
commit | 926031b7640bf5aad2ffcd54b096911743a47d97 (patch) | |
tree | 093e0e1bab2c905a97c5880e4942e2000ada7e72 /libbb | |
parent | 243d1757d798a0cd43f51eb1db75cc1e81c65732 (diff) | |
download | busybox-w32-926031b7640bf5aad2ffcd54b096911743a47d97.tar.gz busybox-w32-926031b7640bf5aad2ffcd54b096911743a47d97.tar.bz2 busybox-w32-926031b7640bf5aad2ffcd54b096911743a47d97.zip |
*: introduce and use xfork() and xvfork()
function old new delta
launch_helper 170 169 -1
setup_heredoc 312 302 -10
handle_dir_common 367 354 -13
expand_vars_to_list 2456 2443 -13
open_transformer 89 74 -15
data_extract_to_command 439 423 -16
do_ipaddr 1406 1389 -17
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/7 up/down: 0/-85) Total: -85 bytes
Signed-off-by: Pascal Bellard <pascal.bellard@ads-lu.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/vfork_daemon_rexec.c | 16 | ||||
-rw-r--r-- | libbb/xfuncs_printf.c | 11 |
2 files changed, 12 insertions, 15 deletions
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c index 8102ea2dc..5c2c529c9 100644 --- a/libbb/vfork_daemon_rexec.c +++ b/libbb/vfork_daemon_rexec.c | |||
@@ -224,26 +224,12 @@ pid_t FAST_FUNC fork_or_rexec(char **argv) | |||
224 | /* Maybe we are already re-execed and come here again? */ | 224 | /* Maybe we are already re-execed and come here again? */ |
225 | if (re_execed) | 225 | if (re_execed) |
226 | return 0; | 226 | return 0; |
227 | pid = vfork(); | 227 | pid = xvfork(); |
228 | if (pid < 0) /* wtf? */ | ||
229 | bb_perror_msg_and_die("vfork"); | ||
230 | if (pid) /* parent */ | 228 | if (pid) /* parent */ |
231 | return pid; | 229 | return pid; |
232 | /* child - re-exec ourself */ | 230 | /* child - re-exec ourself */ |
233 | re_exec(argv); | 231 | re_exec(argv); |
234 | } | 232 | } |
235 | #else | ||
236 | /* Dance around (void)...*/ | ||
237 | #undef fork_or_rexec | ||
238 | pid_t FAST_FUNC fork_or_rexec(void) | ||
239 | { | ||
240 | pid_t pid; | ||
241 | pid = fork(); | ||
242 | if (pid < 0) /* wtf? */ | ||
243 | bb_perror_msg_and_die("fork"); | ||
244 | return pid; | ||
245 | } | ||
246 | #define fork_or_rexec(argv) fork_or_rexec() | ||
247 | #endif | 233 | #endif |
248 | 234 | ||
249 | /* Due to a #define in libbb.h on MMU systems we actually have 1 argument - | 235 | /* Due to a #define in libbb.h on MMU systems we actually have 1 argument - |
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index f021493b1..7069a7c8e 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c | |||
@@ -589,3 +589,14 @@ void FAST_FUNC generate_uuid(uint8_t *buf) | |||
589 | /* variant = 10x */ | 589 | /* variant = 10x */ |
590 | buf[4 + 2 + 2] = (buf[4 + 2 + 2] & 0x3f) | 0x80; | 590 | buf[4 + 2 + 2] = (buf[4 + 2 + 2] & 0x3f) | 0x80; |
591 | } | 591 | } |
592 | |||
593 | #if BB_MMU | ||
594 | pid_t FAST_FUNC xfork(void) | ||
595 | { | ||
596 | pid_t pid; | ||
597 | pid = fork(); | ||
598 | if (pid < 0) /* wtf? */ | ||
599 | bb_perror_msg_and_die("vfork"+1); | ||
600 | return pid; | ||
601 | } | ||
602 | #endif | ||