#include <lzma.h>
#include <zlib.h>
+#include <bzlib.h>
+#include <gcrypt.h>
#include "macro.h"
#include "curl-util.h"
_IMPORT_JOB_STATE_INVALID = -1,
} ImportJobState;
+#define IMPORT_JOB_STATE_IS_COMPLETE(j) (IN_SET((j)->state, IMPORT_JOB_DONE, IMPORT_JOB_FAILED))
+
typedef enum ImportJobCompression {
IMPORT_JOB_UNCOMPRESSED,
IMPORT_JOB_XZ,
IMPORT_JOB_GZIP,
+ IMPORT_JOB_BZIP2,
_IMPORT_JOB_COMPRESSION_MAX,
_IMPORT_JOB_COMPRESSION_INVALID = -1,
} ImportJobCompression;
char *etag;
char **old_etags;
+ bool etag_exists;
uint64_t content_length;
uint64_t written_compressed;
ImportJobCompression compressed;
lzma_stream xz;
z_stream gzip;
+ bz_stream bzip2;
unsigned progress_percent;
usec_t start_usec;
usec_t last_status_usec;
bool allow_sparse;
+
+ bool calc_checksum;
+ gcry_md_hd_t checksum_context;
+
+ char *checksum;
};
int import_job_new(ImportJob **job, const char *url, CurlGlue *glue, void *userdata);
int import_job_begin(ImportJob *j);
void import_job_curl_on_finished(CurlGlue *g, CURL *curl, CURLcode result);
+
+DEFINE_TRIVIAL_CLEANUP_FUNC(ImportJob*, import_job_unref);