summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/adb_comp.c6
-rw-r--r--src/app_adbsign.c5
-rw-r--r--src/app_extract.c2
-rw-r--r--src/app_mkpkg.c2
4 files changed, 9 insertions, 6 deletions
diff --git a/src/adb_comp.c b/src/adb_comp.c
index 8aed95d..d1f5bb2 100644
--- a/src/adb_comp.c
+++ b/src/adb_comp.c
@@ -11,7 +11,7 @@
struct apk_istream *adb_decompress(struct apk_istream *is, adb_comp_t *compression)
{
- adb_comp_t c = ADB_COMP_NONE;
+ adb_comp_t c = -1;
if (IS_ERR_OR_NULL(is)) return is;
@@ -22,9 +22,11 @@ struct apk_istream *adb_decompress(struct apk_istream *is, adb_comp_t *compressi
break;
case 'd':
c = ADB_COMP_DEFLATE;
+ apk_istream_get(is, 4);
is = apk_istream_deflate(is);
break;
- default:
+ }
+ if (c == -1) {
apk_istream_close(is);
return ERR_PTR(-APKE_ADB_COMPRESSION);
}
diff --git a/src/app_adbsign.c b/src/app_adbsign.c
index 2992d76..23bcc8b 100644
--- a/src/app_adbsign.c
+++ b/src/app_adbsign.c
@@ -66,13 +66,14 @@ static int adbsign_main(void *pctx, struct apk_ctx *ac, struct apk_string_array
{
struct apk_out *out = &ac->out;
struct sign_ctx *ctx = pctx;
+ adb_comp_t comp;
char **arg;
int r;
ctx->ac = ac;
foreach_array_item(arg, args) {
- ctx->xfrm.is = apk_istream_from_file(AT_FDCWD, *arg);
- ctx->xfrm.os = apk_ostream_to_file(AT_FDCWD, *arg, 0644);
+ ctx->xfrm.is = adb_decompress(apk_istream_from_file(AT_FDCWD, *arg), &comp);
+ ctx->xfrm.os = adb_compress(apk_ostream_to_file(AT_FDCWD, *arg, 0644), comp);
adb_c_xfrm(&ctx->xfrm, update_signatures);
apk_istream_close(ctx->xfrm.is);
r = apk_ostream_close(ctx->xfrm.os);
diff --git a/src/app_extract.c b/src/app_extract.c
index 90f2d8e..a68cfbf 100644
--- a/src/app_extract.c
+++ b/src/app_extract.c
@@ -320,7 +320,7 @@ static int apk_extract_pkg(struct extract_ctx *ctx, const char *fn)
int r;
r = adb_m_stream(&ctx->db,
- apk_istream_gunzip(apk_istream_from_fd_url(AT_FDCWD, fn, apk_ctx_since(ac, 0))),
+ adb_decompress(apk_istream_from_fd_url(AT_FDCWD, fn, apk_ctx_since(ac, 0)), 0),
ADB_SCHEMA_PACKAGE, trust, apk_extract_data_block);
if (r == 0) {
r = apk_extract_next_file(ctx);
diff --git a/src/app_mkpkg.c b/src/app_mkpkg.c
index 3191639..00f467c 100644
--- a/src/app_mkpkg.c
+++ b/src/app_mkpkg.c
@@ -264,7 +264,7 @@ static int mkpkg_main(void *pctx, struct apk_ctx *ac, struct apk_string_array *a
// construct package with ADB as header, and the file data in
// concatenated data blocks
- os = apk_ostream_gzip(apk_ostream_to_file(AT_FDCWD, ctx->output, 0644));
+ os = adb_compress(apk_ostream_to_file(AT_FDCWD, ctx->output, 0644), ADB_COMP_DEFLATE);
adb_c_adb(os, &ctx->db, trust);
int files_fd = openat(AT_FDCWD, ctx->files_dir, O_RDONLY);
for (i = ADBI_FIRST; i <= adb_ra_num(&ctx->paths); i++) {