=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/job.c,v retrieving revision 1.8 retrieving revision 1.9 diff -c -r1.8 -r1.9 *** src/usr.bin/tmux/job.c 2009/10/21 18:20:16 1.8 --- src/usr.bin/tmux/job.c 2009/11/01 23:20:37 1.9 *************** *** 1,4 **** ! /* $OpenBSD: job.c,v 1.8 2009/10/21 18:20:16 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: job.c,v 1.9 2009/11/01 23:20:37 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott *************** *** 73,79 **** /* Add a job. */ struct job * ! job_add(struct jobs *jobs, struct client *c, const char *cmd, void (*callbackfn)(struct job *), void (*freefn)(void *), void *data) { struct job *job; --- 73,79 ---- /* Add a job. */ struct job * ! job_add(struct jobs *jobs, int flags, struct client *c, const char *cmd, void (*callbackfn)(struct job *), void (*freefn)(void *), void *data) { struct job *job; *************** *** 81,86 **** --- 81,87 ---- job = xmalloc(sizeof *job); job->cmd = xstrdup(cmd); job->pid = -1; + job->status = 0; job->client = c; *************** *** 91,103 **** job->freefn = freefn; job->data = data; ! job->flags = JOB_DONE; if (jobs != NULL) RB_INSERT(jobs, jobs, job); SLIST_INSERT_HEAD(&all_jobs, job, lentry); ! return (job); } /* Kill and free an individual job. */ --- 92,113 ---- job->freefn = freefn; job->data = data; ! job->flags = flags|JOB_DONE; if (jobs != NULL) RB_INSERT(jobs, jobs, job); SLIST_INSERT_HEAD(&all_jobs, job, lentry); ! return (job); + } + + /* Remove job from tree and free. */ + void + job_remove(struct jobs *jobs, struct job *job) + { + if (jobs != NULL) + RB_REMOVE(jobs, jobs, job); + job_free(job); } /* Kill and free an individual job. */