aboutsummaryrefslogtreecommitdiff
path: root/libbb/xfuncs.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-04-01 01:18:20 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-04-01 01:18:20 +0000
commit2856dab4770e521a87c18b04ae8ebc209a9b95f9 (patch)
treed4f6495339702c0b6d79816d0bb07ba4b6679ce8 /libbb/xfuncs.c
parentf443bffd3c24c4b7fcbc0472c75e747e26c24fef (diff)
downloadbusybox-w32-2856dab4770e521a87c18b04ae8ebc209a9b95f9.tar.gz
busybox-w32-2856dab4770e521a87c18b04ae8ebc209a9b95f9.tar.bz2
busybox-w32-2856dab4770e521a87c18b04ae8ebc209a9b95f9.zip
tcpsvd: new applet
It's a GPL-ed 'clone' of Dan Bernstein's tcpserver. Author: Gerrit Pape <pape@smarden.org> http://smarden.sunsite.dk/ipsvd/ size tcpsvd.o text data bss dec hex filename 2571 4 16 2591 a1f tcpsvd.o
Diffstat (limited to 'libbb/xfuncs.c')
-rw-r--r--libbb/xfuncs.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c
index 68ad3dec4..b08f92d81 100644
--- a/libbb/xfuncs.c
+++ b/libbb/xfuncs.c
@@ -205,6 +205,63 @@ int wait4pid(int pid)
205 return 0; 205 return 0;
206} 206}
207 207
208int wait_nohang(int *wstat)
209{
210 return waitpid(-1, wstat, WNOHANG);
211}
212
213int wait_pid(int *wstat, int pid)
214{
215 int r;
216
217 do
218 r = waitpid(pid, wstat, 0);
219 while ((r == -1) && (errno == EINTR));
220 return r;
221}
222
223void sig_block(int sig)
224{
225 sigset_t ss;
226 sigemptyset(&ss);
227 sigaddset(&ss, sig);
228 sigprocmask(SIG_BLOCK, &ss, NULL);
229}
230
231void sig_unblock(int sig)
232{
233 sigset_t ss;
234 sigemptyset(&ss);
235 sigaddset(&ss, sig);
236 sigprocmask(SIG_UNBLOCK, &ss, NULL);
237}
238
239#if 0
240void sig_blocknone(void)
241{
242 sigset_t ss;
243 sigemptyset(&ss);
244 sigprocmask(SIG_SETMASK, &ss, NULL);
245}
246#endif
247
248void sig_catch(int sig, void (*f)(int))
249{
250 struct sigaction sa;
251 sa.sa_handler = f;
252 sa.sa_flags = 0;
253 sigemptyset(&sa.sa_mask);
254 sigaction(sig, &sa, NULL);
255}
256
257void sig_pause(void)
258{
259 sigset_t ss;
260 sigemptyset(&ss);
261 sigsuspend(&ss);
262}
263
264
208void xsetenv(const char *key, const char *value) 265void xsetenv(const char *key, const char *value)
209{ 266{
210 if (setenv(key, value, 1)) 267 if (setenv(key, value, 1))