]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Add a return value to deleteing events and timers so we know
authorRoy Marples <roy@marples.name>
Mon, 3 Jul 2017 20:35:39 +0000 (21:35 +0100)
committerRoy Marples <roy@marples.name>
Mon, 3 Jul 2017 20:35:39 +0000 (21:35 +0100)
if something was really affected.

src/eloop.c
src/eloop.h

index 7e3937a1d01ff6b65090ffaac80dc529d43f3460..3e007f09b5a319306db9391a002354ad01b09ca4 100644 (file)
@@ -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
index 863fa0ac92f0489bd27b50a6d8641229c33bc6bf..5ee5ecd353ebc427d63a3b598b737a018e75913d 100644 (file)
@@ -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 *);