chiark / gitweb /
bus-proxy: be more verbose if messages cannot be forwarded
[elogind.git] / src / import / import-job.h
index 9ccaaf2c041344203acff67d8378c75fe5562557..dcf89cb28c45314a92879b4df88ef546770e1405 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <lzma.h>
 #include <zlib.h>
+#include <bzlib.h>
 #include <gcrypt.h>
 
 #include "macro.h"
@@ -32,6 +33,8 @@ typedef struct ImportJob ImportJob;
 
 typedef void (*ImportJobFinished)(ImportJob *job);
 typedef int (*ImportJobOpenDisk)(ImportJob *job);
+typedef int (*ImportJobHeader)(ImportJob *job, const char *header, size_t sz);
+typedef void (*ImportJobProgress)(ImportJob *job);
 
 typedef enum ImportJobState {
         IMPORT_JOB_INIT,
@@ -49,6 +52,7 @@ 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;
@@ -62,6 +66,8 @@ struct ImportJob {
         void *userdata;
         ImportJobFinished on_finished;
         ImportJobOpenDisk on_open_disk;
+        ImportJobHeader on_header;
+        ImportJobProgress on_progress;
 
         CurlGlue *glue;
         CURL *curl;
@@ -89,6 +95,7 @@ struct ImportJob {
         ImportJobCompression compressed;
         lzma_stream xz;
         z_stream gzip;
+        bz_stream bzip2;
 
         unsigned progress_percent;
         usec_t start_usec;
@@ -96,10 +103,10 @@ struct ImportJob {
 
         bool allow_sparse;
 
-        bool calc_hash;
-        gcry_md_hd_t hash_context;
+        bool calc_checksum;
+        gcry_md_hd_t checksum_context;
 
-        char *sha256;
+        char *checksum;
 };
 
 int import_job_new(ImportJob **job, const char *url, CurlGlue *glue, void *userdata);
@@ -108,3 +115,5 @@ ImportJob* import_job_unref(ImportJob *job);
 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);