version 1.13, 2009/11/26 21:37:13 |
version 1.14, 2009/12/03 22:50:10 |
|
|
void (*callbackfn)(struct job *), void (*freefn)(void *), void *data) |
void (*callbackfn)(struct job *), void (*freefn)(void *), void *data) |
{ |
{ |
struct job *job; |
struct job *job; |
|
|
job = xmalloc(sizeof *job); |
job = xmalloc(sizeof *job); |
job->cmd = xstrdup(cmd); |
job->cmd = xstrdup(cmd); |
job->pid = -1; |
job->pid = -1; |
|
|
|
|
if (job->event != NULL) |
if (job->event != NULL) |
bufferevent_free(job->event); |
bufferevent_free(job->event); |
job->event = |
job->event = |
bufferevent_new(job->fd, NULL, NULL, job_callback, job); |
bufferevent_new(job->fd, NULL, NULL, job_callback, job); |
bufferevent_enable(job->event, EV_READ); |
bufferevent_enable(job->event, EV_READ); |
|
|
|
|
{ |
{ |
job->status = status; |
job->status = status; |
job->pid = -1; |
job->pid = -1; |
|
|
if (job->fd == -1) { |
if (job->fd == -1) { |
if (job->callbackfn != NULL) |
if (job->callbackfn != NULL) |
job->callbackfn(job); |
job->callbackfn(job); |