diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-02-16 13:20:56 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-02-16 13:20:56 +0000 |
commit | 3718832a1542f7bf786a1678741b8566ad3a35c6 (patch) | |
tree | ac5851de53237fb3a0c77c9cead27acd279897f0 /networking/udhcp | |
parent | 1e18f1bab3400246129756a35bb5752ba98f4c90 (diff) | |
download | busybox-w32-3718832a1542f7bf786a1678741b8566ad3a35c6.tar.gz busybox-w32-3718832a1542f7bf786a1678741b8566ad3a35c6.tar.bz2 busybox-w32-3718832a1542f7bf786a1678741b8566ad3a35c6.zip |
*: more readable handling of pipe fds. No code changes.
Diffstat (limited to 'networking/udhcp')
-rw-r--r-- | networking/udhcp/signalpipe.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/networking/udhcp/signalpipe.c b/networking/udhcp/signalpipe.c index 845aa3a9a..918abd02d 100644 --- a/networking/udhcp/signalpipe.c +++ b/networking/udhcp/signalpipe.c | |||
@@ -23,12 +23,12 @@ | |||
23 | #include "common.h" | 23 | #include "common.h" |
24 | 24 | ||
25 | 25 | ||
26 | static int signal_pipe[2]; | 26 | static struct fd_pair signal_pipe; |
27 | 27 | ||
28 | static void signal_handler(int sig) | 28 | static void signal_handler(int sig) |
29 | { | 29 | { |
30 | unsigned char ch = sig; /* use char, avoid dealing with partial writes */ | 30 | unsigned char ch = sig; /* use char, avoid dealing with partial writes */ |
31 | if (write(signal_pipe[1], &ch, 1) != 1) | 31 | if (write(signal_pipe.wr, &ch, 1) != 1) |
32 | bb_perror_msg("cannot send signal"); | 32 | bb_perror_msg("cannot send signal"); |
33 | } | 33 | } |
34 | 34 | ||
@@ -38,10 +38,10 @@ static void signal_handler(int sig) | |||
38 | void udhcp_sp_setup(void) | 38 | void udhcp_sp_setup(void) |
39 | { | 39 | { |
40 | /* was socketpair, but it needs AF_UNIX in kernel */ | 40 | /* was socketpair, but it needs AF_UNIX in kernel */ |
41 | xpipe(signal_pipe); | 41 | xpiped_pair(signal_pipe); |
42 | close_on_exec_on(signal_pipe[0]); | 42 | close_on_exec_on(signal_pipe.rd); |
43 | close_on_exec_on(signal_pipe[1]); | 43 | close_on_exec_on(signal_pipe.wr); |
44 | ndelay_on(signal_pipe[1]); | 44 | ndelay_on(signal_pipe.wr); |
45 | signal(SIGUSR1, signal_handler); | 45 | signal(SIGUSR1, signal_handler); |
46 | signal(SIGUSR2, signal_handler); | 46 | signal(SIGUSR2, signal_handler); |
47 | signal(SIGTERM, signal_handler); | 47 | signal(SIGTERM, signal_handler); |
@@ -54,12 +54,12 @@ void udhcp_sp_setup(void) | |||
54 | int udhcp_sp_fd_set(fd_set *rfds, int extra_fd) | 54 | int udhcp_sp_fd_set(fd_set *rfds, int extra_fd) |
55 | { | 55 | { |
56 | FD_ZERO(rfds); | 56 | FD_ZERO(rfds); |
57 | FD_SET(signal_pipe[0], rfds); | 57 | FD_SET(signal_pipe.rd, rfds); |
58 | if (extra_fd >= 0) { | 58 | if (extra_fd >= 0) { |
59 | close_on_exec_on(extra_fd); | 59 | close_on_exec_on(extra_fd); |
60 | FD_SET(extra_fd, rfds); | 60 | FD_SET(extra_fd, rfds); |
61 | } | 61 | } |
62 | return signal_pipe[0] > extra_fd ? signal_pipe[0] : extra_fd; | 62 | return signal_pipe.rd > extra_fd ? signal_pipe.rd : extra_fd; |
63 | } | 63 | } |
64 | 64 | ||
65 | 65 | ||
@@ -70,10 +70,10 @@ int udhcp_sp_read(const fd_set *rfds) | |||
70 | { | 70 | { |
71 | unsigned char sig; | 71 | unsigned char sig; |
72 | 72 | ||
73 | if (!FD_ISSET(signal_pipe[0], rfds)) | 73 | if (!FD_ISSET(signal_pipe.rd, rfds)) |
74 | return 0; | 74 | return 0; |
75 | 75 | ||
76 | if (read(signal_pipe[0], &sig, 1) != 1) | 76 | if (safe_read(signal_pipe.rd, &sig, 1) != 1) |
77 | return -1; | 77 | return -1; |
78 | 78 | ||
79 | return sig; | 79 | return sig; |