summaryrefslogtreecommitdiff
path: root/pkgtools/pbulk/files/pbulk/pscan/jobs.c
diff options
context:
space:
mode:
Diffstat (limited to 'pkgtools/pbulk/files/pbulk/pscan/jobs.c')
-rw-r--r--pkgtools/pbulk/files/pbulk/pscan/jobs.c25
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;