From: Roy Marples Date: Mon, 3 Jul 2017 20:35:39 +0000 (+0100) Subject: Add a return value to deleteing events and timers so we know X-Git-Tag: v7.0.0-rc2~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d01dd285d1624fe6016ebd171ac52c0002262cec;p=thirdparty%2Fdhcpcd.git Add a return value to deleteing events and timers so we know if something was really affected. --- diff --git a/src/eloop.c b/src/eloop.c index 7e3937a1..3e007f09 100644 --- a/src/eloop.c +++ b/src/eloop.c @@ -436,7 +436,7 @@ eloop_event_add_w(struct eloop *eloop, int fd, return eloop_event_add_rw(eloop, fd, NULL,NULL, write_cb, write_cb_arg); } -void +int eloop_event_delete_write(struct eloop *eloop, int fd, int write_only) { struct eloop_event *e; @@ -450,11 +450,14 @@ eloop_event_delete_write(struct eloop *eloop, int fd, int write_only) if (fd > eloop->events_maxfd || (e = eloop->event_fds[fd]) == NULL) - return; + { + errno = ENOENT; + return -1; + } if (write_only) { if (e->write_cb == NULL) - return; + return 0; if (e->read_cb == NULL) goto remove; e->write_cb = NULL; @@ -471,7 +474,7 @@ eloop_event_delete_write(struct eloop *eloop, int fd, int write_only) epoll_ctl(eloop->poll_fd, EPOLL_CTL_MOD, fd, &epe); #endif eloop_event_setup_fds(eloop); - return; + return 1; } remove: @@ -495,6 +498,7 @@ remove: #endif eloop_event_setup_fds(eloop); + return 1; } int @@ -586,14 +590,16 @@ eloop_timeout_add_now(struct eloop *eloop, } #endif -void +int eloop_q_timeout_delete(struct eloop *eloop, int queue, void (*callback)(void *), void *arg) { struct eloop_timeout *t, *tt; + int n; assert(eloop != NULL); + n = 0; TAILQ_FOREACH_SAFE(t, &eloop->timeouts, next, tt) { if ((queue == 0 || t->queue == queue) && t->arg == arg && @@ -601,8 +607,10 @@ eloop_q_timeout_delete(struct eloop *eloop, int queue, { TAILQ_REMOVE(&eloop->timeouts, t, next); TAILQ_INSERT_TAIL(&eloop->free_timeouts, t, next); + n++; } } + return n; } void diff --git a/src/eloop.h b/src/eloop.h index 863fa0ac..5ee5ecd3 100644 --- a/src/eloop.h +++ b/src/eloop.h @@ -80,7 +80,7 @@ int eloop_event_add_w(struct eloop *, int, eloop_event_delete_write((eloop), (fd), 0) #define eloop_event_remove_writecb(eloop, fd) \ eloop_event_delete_write((eloop), (fd), 1) -void eloop_event_delete_write(struct eloop *, int, int); +int eloop_event_delete_write(struct eloop *, int, int); #define eloop_timeout_add_tv(eloop, tv, cb, ctx) \ eloop_q_timeout_add_tv((eloop), ELOOP_QUEUE, (tv), (cb), (ctx)) @@ -96,7 +96,7 @@ int eloop_q_timeout_add_sec(struct eloop *, int, time_t, void (*)(void *), void *); int eloop_q_timeout_add_msec(struct eloop *, int, long, void (*)(void *), void *); -void eloop_q_timeout_delete(struct eloop *, int, void (*)(void *), void *); +int eloop_q_timeout_delete(struct eloop *, int, void (*)(void *), void *); int eloop_signal_set_cb(struct eloop *, const int *, size_t, void (*)(int, void *), void *);