summaryrefslogtreecommitdiffstats
path: root/signals.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-06-07 00:14:16 +0000
committerRoy Marples <roy@marples.name>2008-06-07 00:14:16 +0000
commit7c45fb9338092de7ca988f6abbecd4b0d54d76cc (patch)
tree9005a23a2bdb4c25dd0bb868acb1557d82f94565 /signals.c
parent751e2f818d970ca55fc094647df3ab9345ad3166 (diff)
downloaddhcpcd-7c45fb9338092de7ca988f6abbecd4b0d54d76cc.tar.xz
We should test a specific fd instead of index 0 in a structure.
Diffstat (limited to 'signals.c')
-rw-r--r--signals.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/signals.c b/signals.c
index 4559749c..3d7f63cd 100644
--- a/signals.c
+++ b/signals.c
@@ -73,9 +73,9 @@ signal_fd(void)
/* Check if we have a signal or not */
int
-signal_exists(const struct pollfd *fd)
+signal_exists(int fd)
{
- if (signals[0] || (fd && fd->revents & POLLIN))
+ if (signals[0] || fd_hasdata(fd) == 1)
return 0;
return -1;
}
@@ -84,7 +84,7 @@ signal_exists(const struct pollfd *fd)
* no signal, -1 on error (and sets errno appropriately), and
* your signal on success */
int
-signal_read(struct pollfd *fd)
+signal_read(int fd)
{
int sig = -1;
unsigned int i = 0;
@@ -101,19 +101,12 @@ signal_read(struct pollfd *fd)
}
}
- if (fd && fd->revents & POLLIN) {
+ if (fd_hasdata(fd) == 1) {
memset(buf, 0, sizeof(buf));
bytes = read(signal_pipe[0], buf, sizeof(buf));
-
if (bytes >= sizeof(sig))
memcpy(&sig, buf, sizeof(sig));
-
- /* We need to clear us from rset if nothing left in the buffer
- * in case we are called many times */
- if (bytes == sizeof(sig))
- fd->revents = 0;
}
-
return sig;
}