diff options
Diffstat (limited to 'pkgtools/pbulk/files/pbulk/pscan/jobs.c')
-rw-r--r-- | pkgtools/pbulk/files/pbulk/pscan/jobs.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/pkgtools/pbulk/files/pbulk/pscan/jobs.c b/pkgtools/pbulk/files/pbulk/pscan/jobs.c index 1ae250e2d9c..fa6284e6ead 100644 --- a/pkgtools/pbulk/files/pbulk/pscan/jobs.c +++ b/pkgtools/pbulk/files/pbulk/pscan/jobs.c @@ -1,4 +1,4 @@ -/* $NetBSD: jobs.c,v 1.8 2015/11/03 19:06:48 joerg Exp $ */ +/* $NetBSD: jobs.c,v 1.9 2016/06/20 17:54:43 joerg Exp $ */ /*- * Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>. @@ -342,11 +342,32 @@ get_job(void) return NULL; } +static void +parse_full_tree(char *data) { + char *eol; + + while (*data) { + eol = strchr(data, '\n'); + if (eol == NULL) + err(1, "Incomplete line in full tree list"); + if (data == eol) + continue; + *eol = '\0'; + add_job_full(data); + data = eol + 1; + } +} + void process_job(struct scan_job *job, enum job_state state) { job->state = state; + if (state == JOB_DONE && + strcmp(job->pkg_location, "find_full_tree") == 0) { + parse_full_tree(job->scan_output); + } + for (; first_undone_job < len_jobs; ++first_undone_job) { if (jobs[first_undone_job].state != JOB_DONE) break; @@ -511,6 +532,8 @@ write_jobs(const char *output_file) warnx("%s was not processed", jobs[i].pkg_location); continue; } + if (strcmp(jobs[i].pkg_location, "find_full_tree") == 0) + continue; if (jobs[i].scan_output == NULL) { warnx("Scan failed for %s", jobs[i].pkg_location); continue; |