X-Git-Url: https://git.llucax.com/software/ev.d.git/blobdiff_plain/d8fd9451ac3bec3c28cd17d29fb319b8b0f3e4e7..refs/heads/master:/ev/c.d?ds=sidebyside diff --git a/ev/c.d b/ev/c.d index 3efcb67..aa31a03 100644 --- a/ev/c.d +++ b/ev/c.d @@ -160,6 +160,7 @@ struct ev_signal struct ev_child { mixin EV_WATCHER_LIST!(ev_child); + int flags; // private int pid; // ro int rpid; // rw, holds the received pid int rstatus; // rw, holds the exit status, use the @@ -261,7 +262,7 @@ void ev_set_allocator(void* function(void* ptr, int size)); // set the callback function to call on a // retryable syscall error // (such as failed select, poll, epoll_wait) -void ev_set_syserr_cb(void* function(char* msg)); +void ev_set_syserr_cb(void function(char* msg)); extern ev_loop_t* ev_default_loop_ptr; @@ -348,17 +349,17 @@ version (EV_EMBED_ENABLE) bool ev_is_pending(TYPE)(TYPE* w) { - return w.pending; + return cast (bool) w.pending; } bool ev_is_active(TYPE)(TYPE* w) { - return w.active; + return cast (bool) w.active; } int ev_priority(TYPE)(TYPE* w) { - return w.priority; + return cast (bool) w.priority; } void function(ev_loop_t*, TYPE*, int) ev_cb(TYPE)(TYPE* w) @@ -411,9 +412,10 @@ void ev_signal_set(ev_signal* w, int signum) w.signum = signum; } -void ev_child_set(ev_child* w, int pid) +void ev_child_set(ev_child* w, int pid, int trace) { w.pid = pid; + w.flags = !!trace; } void ev_stat_set(ev_stat* w, char* path, ev_tstamp interval) @@ -475,10 +477,10 @@ void ev_signal_init(ev_signal* w, void function(ev_loop_t*, ev_signal*, int) cb, } void ev_child_init(ev_child* w, void function(ev_loop_t*, ev_child*, int) cb, - int pid) + int pid, int trace) { ev_init(w, cb); - ev_child_set(w, pid); + ev_child_set(w, pid, trace); } void ev_stat_init(ev_stat* w, void function(ev_loop_t*, ev_stat*, int) cb, @@ -887,7 +889,7 @@ unittest wsignal.data = &epipe[1]; // write fd ev_signal_start(loop, &wsignal); - ev_child_init(&wchild, &cbchild, 0 /* trace any PID */); + ev_child_init(&wchild, &cbchild, 0 /* trace any PID */, 0 /* death */); ev_child_start(loop, &wchild); ev_stat_init(&wstat, &cbstat, str.toStringz(STAT_FILE), 0 /* auto */);