Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam
2015-08-28 14:01:11 +01:00
16 changed files with 118 additions and 129 deletions

View File

@ -38,6 +38,7 @@
void format_job_callback(struct job *);
const char *format_job_get(struct format_tree *, const char *);
void format_job_timer(int, short, void *);
int format_replace(struct format_tree *, const char *, size_t, char **,
size_t *, size_t *);
@ -64,6 +65,7 @@ struct format_job {
};
/* Format job tree. */
struct event format_job_event;
int format_job_cmp(struct format_job *, struct format_job *);
RB_HEAD(format_job_tree, format_job) format_jobs = RB_INITIALIZER();
RB_PROTOTYPE(format_job_tree, format_job, entry, format_job_cmp);
@ -192,6 +194,8 @@ format_job_callback(struct job *job)
server_status_client(c);
fj->status = 0;
}
log_debug("%s: %s: %s", __func__, fj->cmd, fj->out);
}
/* Find a job. */
@ -227,10 +231,11 @@ format_job_get(struct format_tree *ft, const char *cmd)
/* Remove old jobs. */
void
format_clean(void)
format_job_timer(unused int fd, unused short events, unused void *arg)
{
struct format_job *fj, *fj1;
time_t now;
struct timeval tv = { .tv_sec = 60 };
now = time(NULL);
RB_FOREACH_SAFE(fj, format_job_tree, &format_jobs, fj1) {
@ -238,14 +243,19 @@ format_clean(void)
continue;
RB_REMOVE(format_job_tree, &format_jobs, fj);
log_debug("%s: %s", __func__, fj->cmd);
if (fj->job != NULL)
job_free(fj->job);
free((void*)fj->cmd);
free((void *)fj->cmd);
free(fj->out);
free(fj);
}
evtimer_del(&format_job_event);
evtimer_add(&format_job_event, &tv);
}
/* Create a new tree. */
@ -262,6 +272,11 @@ format_create_status(int status)
struct format_tree *ft;
char host[HOST_NAME_MAX + 1], *ptr;
if (!event_initialized(&format_job_event)) {
evtimer_set(&format_job_event, format_job_timer, NULL);
format_job_timer(-1, 0, NULL);
}
ft = xcalloc(1, sizeof *ft);
RB_INIT(&ft->tree);
ft->status = status;