aboutsummaryrefslogtreecommitdiff
path: root/libbb/xfuncs.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-04-09 13:21:33 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-04-09 13:21:33 +0000
commit53d445aa7571c780b8f2410afb4f326e45f851e4 (patch)
tree6e07b3c0349e876a6c3aee11f6a64690307d2f0b /libbb/xfuncs.c
parent7e754f12d304704d44e10fd4d2fdb8710526656e (diff)
downloadbusybox-w32-53d445aa7571c780b8f2410afb4f326e45f851e4.tar.gz
busybox-w32-53d445aa7571c780b8f2410afb4f326e45f851e4.tar.bz2
busybox-w32-53d445aa7571c780b8f2410afb4f326e45f851e4.zip
wait4pid: if passed with pid < 0, do not set errno - it is already set by exec!
Diffstat (limited to 'libbb/xfuncs.c')
-rw-r--r--libbb/xfuncs.c33
1 files changed, 0 insertions, 33 deletions
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c
index c18a1d998..0cf2005ac 100644
--- a/libbb/xfuncs.c
+++ b/libbb/xfuncs.c
@@ -193,39 +193,6 @@ void xfflush_stdout(void)
193 } 193 }
194} 194}
195 195
196// Wait for the specified child PID to exit, returning child's error return.
197int wait4pid(int pid)
198{
199 int status;
200
201 if (pid <= 0) {
202 errno = ECHILD;
203 return -1;
204 }
205 if (waitpid(pid, &status, 0) == -1)
206 return -1;
207 if (WIFEXITED(status))
208 return WEXITSTATUS(status);
209 if (WIFSIGNALED(status))
210 return WTERMSIG(status) + 10000;
211 return 0;
212}
213
214int wait_nohang(int *wstat)
215{
216 return waitpid(-1, wstat, WNOHANG);
217}
218
219int wait_pid(int *wstat, int pid)
220{
221 int r;
222
223 do
224 r = waitpid(pid, wstat, 0);
225 while ((r == -1) && (errno == EINTR));
226 return r;
227}
228
229void sig_block(int sig) 196void sig_block(int sig)
230{ 197{
231 sigset_t ss; 198 sigset_t ss;