chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
exec: also evaluate working_directory_missing_ok when not applying chroots
[elogind.git]
/
src
/
import
/
import-job.h
diff --git
a/src/import/import-job.h
b/src/import/import-job.h
index 843daa217cacb39f041f84b49287a2b57d836ce2..dcf89cb28c45314a92879b4df88ef546770e1405 100644
(file)
--- a/
src/import/import-job.h
+++ b/
src/import/import-job.h
@@
-23,6
+23,8
@@
#include <lzma.h>
#include <zlib.h>
#include <lzma.h>
#include <zlib.h>
+#include <bzlib.h>
+#include <gcrypt.h>
#include "macro.h"
#include "curl-util.h"
#include "macro.h"
#include "curl-util.h"
@@
-31,6
+33,8
@@
typedef struct ImportJob ImportJob;
typedef void (*ImportJobFinished)(ImportJob *job);
typedef int (*ImportJobOpenDisk)(ImportJob *job);
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,
typedef enum ImportJobState {
IMPORT_JOB_INIT,
@@
-42,10
+46,13
@@
typedef enum ImportJobState {
_IMPORT_JOB_STATE_INVALID = -1,
} ImportJobState;
_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,
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;
_IMPORT_JOB_COMPRESSION_MAX,
_IMPORT_JOB_COMPRESSION_INVALID = -1,
} ImportJobCompression;
@@
-59,6
+66,8
@@
struct ImportJob {
void *userdata;
ImportJobFinished on_finished;
ImportJobOpenDisk on_open_disk;
void *userdata;
ImportJobFinished on_finished;
ImportJobOpenDisk on_open_disk;
+ ImportJobHeader on_header;
+ ImportJobProgress on_progress;
CurlGlue *glue;
CURL *curl;
CurlGlue *glue;
CURL *curl;
@@
-66,6
+75,7
@@
struct ImportJob {
char *etag;
char **old_etags;
char *etag;
char **old_etags;
+ bool etag_exists;
uint64_t content_length;
uint64_t written_compressed;
uint64_t content_length;
uint64_t written_compressed;
@@
-85,12
+95,18
@@
struct ImportJob {
ImportJobCompression compressed;
lzma_stream xz;
z_stream gzip;
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;
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_new(ImportJob **job, const char *url, CurlGlue *glue, void *userdata);
@@
-99,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);
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);