X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fimport%2Fimport-job.h;h=dcf89cb28c45314a92879b4df88ef546770e1405;hb=b381de4197157748ed96e469fcc372c23f842ae1;hp=9ccaaf2c041344203acff67d8378c75fe5562557;hpb=85dbc41dc67ff49fd8a843dbac5b8b5cb0b61155;p=elogind.git diff --git a/src/import/import-job.h b/src/import/import-job.h index 9ccaaf2c0..dcf89cb28 100644 --- a/src/import/import-job.h +++ b/src/import/import-job.h @@ -23,6 +23,7 @@ #include #include +#include #include #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);