-#define _GNU_SOURCE
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
#include <assert.h>
#include <string.h>
static char *local_name(void *ctx)
{
- char *tmp, *ret;
+ char *ret, tmp[] = "/tmp/pb-XXXXXX";
+ int fd;
- tmp = tempnam(NULL, "pb-");
+ fd = mkstemp(tmp);
- if (!tmp)
+ if (fd < 0)
return NULL;
+ close(fd);
+
ret = talloc_strdup(ctx, tmp);
- free(tmp);
return ret;
}
if (result->status == LOAD_CANCELLED) {
load_url_result_cleanup_local(result);
- } else if (process->exit_status == 0) {
+ } else if (process_exit_ok(process)) {
result->status = LOAD_OK;
} else {
result->status = LOAD_ERROR;
task->result->status = rc ? LOAD_ERROR : LOAD_ASYNC;
} else {
rc = process_run_sync(task->process);
- task->result->status = rc ? LOAD_ERROR : LOAD_OK;
+ if (rc || !process_exit_ok(task->process))
+ task->result->status = LOAD_ERROR;
+ else
+ task->result->status = LOAD_OK;
process_release(task->process);
task->process = NULL;
}
process->path = pb_system_apps.tftp;
process->argv = argv;
process->keep_stdout = true;
+ process->add_stderr = true;
process_run_sync(process);
if (!process->stdout_buf || process->stdout_len == 0) {