// Temporary file
char tempfile[PATH_MAX];
- FILE* f;
+
+ // File handles for streams
+ FILE* fin;
+ FILE* fout;
// Crypto Stuff
EVP_MD_CTX* evp;
if (*transfer->tempfile)
unlink(transfer->tempfile);
- // Close temporary file
- if (transfer->f)
- fclose(transfer->f);
+ // Close any streams
+ if (transfer->fin)
+ fclose(transfer->fin);
// Free OpenSSL EVP context
if (transfer->evp)
static size_t pakfire_downloader_transfer_read(char* data, size_t size, size_t nmemb, void* p) {
struct pakfire_transfer* transfer = p;
- return fread(data, size, nmemb, transfer->f);
+ return fread(data, size, nmemb, transfer->fout);
}
static int pakfire_downloader_transfer_seek(void* p, curl_off_t offset, int origin) {
int r;
// Perform the seek
- r = fseek(transfer->f, (long)offset, origin);
+ r = fseek(transfer->fout, (long)offset, origin);
if (r < 0)
return CURL_SEEKFUNC_CANTSEEK;
}
// Write everything to the allocated file descriptor
- return fwrite(data, size, nmemb, transfer->f);
+ return fwrite(data, size, nmemb, transfer->fin);
}
static int pakfire_downloader_transfer_setup(
}
int pakfire_downloader_transfer_set_output(struct pakfire_transfer* transfer, FILE* f) {
- transfer->f = f;
+ transfer->fin = f;
return 0;
}
transfer->direction = PAKFIRE_TRANSFER_UPLOAD;
// Store the file handle
- transfer->f = f;
+ transfer->fout = f;
// Try to find the upload size
if (fd > 0) {
int r;
// Flush any buffered data out to disk
- if (transfer->f)
- fflush(transfer->f);
+ if (transfer->fin)
+ fflush(transfer->fin);
// Nothing to do if path isn't set
if (!*transfer->path)
CTX_DEBUG(downloader->ctx, "Transfer failed\n");
// Get file descriptor
- int fd = fileno(transfer->f);
+ int fd = fileno(transfer->fin);
// Truncate downloaded data
r = ftruncate(fd, 0);
}
// If we do not have an output file, we will create a temporary file
- if (!transfer->f) {
+ if (!transfer->fout && !transfer->fin) {
r = pakfire_downloader_transfer_prepare_tmpfile(transfer);
if (r) {
CTX_ERROR(downloader->ctx, "Could not open a temporary file: %s\n", strerror(-r));