diff options
| author | Roy Marples <roy@marples.name> | 2008-06-07 00:14:16 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2008-06-07 00:14:16 +0000 |
| commit | 7c45fb9338092de7ca988f6abbecd4b0d54d76cc (patch) | |
| tree | 9005a23a2bdb4c25dd0bb868acb1557d82f94565 /signals.c | |
| parent | 751e2f818d970ca55fc094647df3ab9345ad3166 (diff) | |
| download | dhcpcd-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.c | 15 |
1 files changed, 4 insertions, 11 deletions
@@ -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; } |
