chiark / gitweb /
logind: remove per-user runtime dir again if setup fails
[elogind.git] / src / import / import-job.h
index a9b58e6339ec6fe8e6cee222fbe33ebed5d7fac1..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;