return r;
}
+// A helper function to create va_list
+static int __pakfire_xfer_create_simple(
+ struct pakfire_xfer** xfer, struct pakfire_ctx* ctx, const char* url, ...) {
+ va_list args;
+ int r;
+
+ va_start(args, url);
+
+ // Create a new xfer
+ r = pakfire_xfer_create(xfer, ctx, url, args);
+
+ va_end(args);
+
+ return r;
+}
+
+int pakfire_xfer_create_simple(
+ struct pakfire_xfer** xfer, struct pakfire_ctx* ctx, const char* url) {
+ return __pakfire_xfer_create_simple(xfer, ctx, "%s", url);
+}
+
int pakfire_xfer_create(struct pakfire_xfer** xfer,
struct pakfire_ctx* ctx, const char* url, va_list args) {
struct pakfire_xfer* x = NULL;
int r = EXIT_FAILURE;
// Create a new transfer
- ASSERT_SUCCESS(pakfire_xfer_create(&xfer, t->ctx, t->httpclient, DOWNLOAD_URL));
+ ASSERT_SUCCESS(pakfire_xfer_create_simple(&xfer, t->ctx, DOWNLOAD_URL));
// Set output buffer
ASSERT_SUCCESS(pakfire_xfer_set_output_buffer(xfer, &buffer, &length));
}
static int __test_create_transfer(const struct test* t, struct pakfire_xfer** xfer,
- const char* url, char** buffer, size_t* length) {
+ char** buffer, size_t* length, const char* url, ...) {
+ va_list args;
int r;
+ va_start(args, url);
+
// Create a new transfer
- r = pakfire_xfer_create(xfer, t->ctx, t->httpclient, url);
+ r = pakfire_xfer_create(xfer, t->ctx, url, args);
if (r)
- return r;
+ goto ERROR;
// Set the output buffer
r = pakfire_xfer_set_output_buffer(*xfer, buffer, length);
if (r)
- return r;
+ goto ERROR;
// Enqueue the transfer
r = pakfire_httpclient_enqueue_xfer(t->httpclient, *xfer);
if (r)
- return r;
+ goto ERROR;
+
+ERROR:
+ va_end(args);
- return 0;
+ return r;
}
static int test_multiple(const struct test* t) {
size_t length4 = 0;
int r = EXIT_FAILURE;
- ASSERT_SUCCESS(__test_create_transfer(t, &xfer1, DOWNLOAD_URL, &buffer1, &length1));
- ASSERT_SUCCESS(__test_create_transfer(t, &xfer2, DOWNLOAD_URL, &buffer2, &length2));
- ASSERT_SUCCESS(__test_create_transfer(t, &xfer3, DOWNLOAD_URL, &buffer3, &length3));
- ASSERT_SUCCESS(__test_create_transfer(t, &xfer4, DOWNLOAD_URL, &buffer4, &length4));
+ ASSERT_SUCCESS(__test_create_transfer(t, &xfer1, &buffer1, &length1, "%s", DOWNLOAD_URL));
+ ASSERT_SUCCESS(__test_create_transfer(t, &xfer2, &buffer2, &length2, "%s", DOWNLOAD_URL));
+ ASSERT_SUCCESS(__test_create_transfer(t, &xfer3, &buffer3, &length3, "%s", DOWNLOAD_URL));
+ ASSERT_SUCCESS(__test_create_transfer(t, &xfer4, &buffer4, &length4, "%s", DOWNLOAD_URL));
// Run it!
ASSERT_SUCCESS(pakfire_httpclient_run(t->httpclient, "Downloading..."));