*p++ = local; /* 7 */
*p++ = NULL; /* 8 */
- result = pb_run_cmd(argv);
+ result = pb_run_cmd(argv, 1, 0);
talloc_free(opts);
static char *pb_load_sftp(void *ctx, struct pb_url __attribute__((unused)) *url)
{
int result;
- const char *argv[5];
+ const char *argv[4];
const char **p;
char *local;
return NULL;
p = argv;
- *p++ = pb_system_apps.sftp; /* 1 */
- *p++ = url->host; /* 2 */
- *p++ = url->path; /* 3 */
- *p++ = local; /* 4 */
- *p++ = NULL; /* 5 */
+ *p++ = pb_system_apps.sftp; /* 1 */
+ *p++ = talloc_asprintf(local, "%s:%s", url->host, url->path); /* 2 */
+ *p++ = local; /* 3 */
+ *p++ = NULL; /* 4 */
- result = pb_run_cmd(argv);
+ result = pb_run_cmd(argv, 1, 0);
if (result)
goto fail;
*p++ = url->port; /* 8 */
*p++ = NULL; /* 9 */
- result = pb_run_cmd(argv);
+ result = pb_run_cmd(argv, 1, 0);
if (!result)
return local;
*p++ = local; /* 9 */
*p++ = NULL; /* 10 */
- result = pb_run_cmd(argv);
+ result = pb_run_cmd(argv, 1, 0);
if (!result)
return local;
*p++ = "--no-check-certificate"; /* 6 */
*p++ = NULL; /* 7 */
- result = pb_run_cmd(argv);
+ result = pb_run_cmd(argv, 1, 0);
if (result)
goto fail;
/**
* pb_load_file - Loads a remote file and returns the local file path.
* @ctx: The talloc context to associate with the returned string.
+ * @remote: The remote file URL.
+ * @tempfile: An optional variable pointer to be set when a temporary local
+ * file is created.
*
* Returns the local file path in a talloc'ed character string on success,
* or NULL on error.
*/
-char *pb_load_file(void *ctx, const char *remote)
+char *pb_load_file(void *ctx, const char *remote, unsigned int *tempfile)
{
char *local;
struct pb_url *url = pb_url_parse(NULL, remote);
+ if (tempfile)
+ *tempfile = 0;
+
if (!url)
return NULL;
case pb_url_ftp:
case pb_url_http:
local = pb_load_wget(ctx, url, 0);
+ if (tempfile && local)
+ *tempfile = 1;
break;
case pb_url_https:
- local = pb_load_wget(ctx, url,
- wget_no_check_certificate);
+ local = pb_load_wget(ctx, url, wget_no_check_certificate);
+ if (tempfile && local)
+ *tempfile = 1;
break;
case pb_url_nfs:
local = pb_load_nfs(ctx, url);
+ if (tempfile && local)
+ *tempfile = 1;
break;
case pb_url_sftp:
local = pb_load_sftp(ctx, url);
+ if (tempfile && local)
+ *tempfile = 1;
break;
case pb_url_tftp:
local = pb_load_tftp(ctx, url);
+ if (tempfile && local)
+ *tempfile = 1;
break;
default:
local = talloc_strdup(ctx, url->full);