X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fpaths.c;h=ad42b5b7760858e7cd3ab6d7217d855e91b72f15;hp=1269dded35b73960c6b3d51c00efcd1b6e6aaafa;hb=ca11198f4034266b0f48b37e5871c44d1399aba6;hpb=2c6137dffb1518f5102170cf0eda26c83a31bc63 diff --git a/discover/paths.c b/discover/paths.c index 1269dde..ad42b5b 100644 --- a/discover/paths.c +++ b/discover/paths.c @@ -47,6 +47,7 @@ char *join_paths(void *alloc_ctx, const char *a, const char *b) return full_path; } +#ifndef PETITBOOT_TEST static char *local_name(void *ctx) { @@ -369,7 +370,8 @@ static void load_local(struct load_task *task) */ struct load_url_result *load_url_async(void *ctx, struct pb_url *url, - load_url_complete async_cb, void *async_data) + load_url_complete async_cb, void *async_data, + waiter_cb stdout_cb, void *stdout_data) { struct load_url_result *result; struct load_task *task; @@ -382,12 +384,21 @@ struct load_url_result *load_url_async(void *ctx, struct pb_url *url, task->async = async_cb != NULL; task->result = talloc_zero(ctx, struct load_url_result); task->result->task = task; + task->result->url = url; task->process = process_create(task); if (task->async) { task->async_cb = async_cb; task->async_data = async_data; task->process->exit_cb = load_url_process_exit; task->process->data = task; + task->process->stdout_cb = stdout_cb; + task->process->stdout_data = stdout_data; + } + + /* Make sure we save output for any task that has a custom handler */ + if (task->process->stdout_cb) { + task->process->add_stderr = true; + task->process->keep_stdout = true; } switch (url->scheme) { @@ -428,7 +439,7 @@ struct load_url_result *load_url_async(void *ctx, struct pb_url *url, struct load_url_result *load_url(void *ctx, struct pb_url *url) { - return load_url_async(ctx, url, NULL, NULL); + return load_url_async(ctx, url, NULL, NULL, NULL, NULL); } void load_url_async_cancel(struct load_url_result *res) @@ -449,3 +460,33 @@ void load_url_async_cancel(struct load_url_result *res) res->status = LOAD_CANCELLED; process_stop_async(task->process); } + +#else + +static void __attribute__((unused)) load_local( + struct load_task *task __attribute__((unused))) +{ +} +static void __attribute__((unused)) load_wget( + struct load_task *task __attribute__((unused)), + int flags __attribute__((unused))) +{ +} +static void __attribute__((unused)) load_tftp( + struct load_task *task __attribute__((unused))) +{ +} +static void __attribute__((unused)) load_sftp( + struct load_task *task __attribute__((unused))) +{ +} +static void __attribute__((unused)) load_nfs( + struct load_task *task __attribute__((unused))) +{ +} +static void __attribute__((unused)) load_url_process_exit( + struct process *process __attribute__((unused))) +{ +} + +#endif