diff options
author | Werner Koch <[email protected]> | 2023-01-18 17:04:50 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2023-01-19 09:45:54 +0000 |
commit | 60963d98cfd8e60f88ee43c2d992f6dd3bbbd74c (patch) | |
tree | 766f37c0531a72f5d11e3920b87ba2e51ce23b46 /common/iobuf.h | |
parent | common: Replace all assert by log_assert. (diff) | |
download | gnupg-60963d98cfd8e60f88ee43c2d992f6dd3bbbd74c.tar.gz gnupg-60963d98cfd8e60f88ee43c2d992f6dd3bbbd74c.zip |
gpg: Detect already compressed data also when using a pipe.
* common/iobuf.c (file_filter_ctx_t): Add fields for the peek feature.
(file_filter): Implement peeking.
(iobuf_ioctl): Add new IOBUF_IOCTL_PEEK.
* common/iobuf.h (IOBUF_IOCTL_PEEK, IOBUFCTRL_PEEK): New.
* common/miscellaneous.c (is_file_compressed): Rewrite. Detect PDF.
* g10/encrypt.c (encrypt_simple): Peek before detecting compression.
(encrypt_crypt): Ditto.
* g10/sign.c (sign_file): Also detect already compressed data.
* g10/options.h (opt): Add explicit_compress_option.
* g10/gpg.c (main): Set opt.explicit_compress_option for -z.
--
Note that this patch also introduces a compression check for signing
which was never done in the past.
GnuPG-bug-id: 6332
Diffstat (limited to 'common/iobuf.h')
-rw-r--r-- | common/iobuf.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/common/iobuf.h b/common/iobuf.h index f527fbf16..c132c2f3c 100644 --- a/common/iobuf.h +++ b/common/iobuf.h @@ -106,6 +106,7 @@ enum IOBUFCTRL_FLUSH = 4, IOBUFCTRL_DESC = 5, IOBUFCTRL_CANCEL = 6, + IOBUFCTRL_PEEK = 7, IOBUFCTRL_USER = 16 }; @@ -116,7 +117,8 @@ typedef enum IOBUF_IOCTL_KEEP_OPEN = 1, /* Uses intval. */ IOBUF_IOCTL_INVALIDATE_CACHE = 2, /* Uses ptrval. */ IOBUF_IOCTL_NO_CACHE = 3, /* Uses intval. */ - IOBUF_IOCTL_FSYNC = 4 /* Uses ptrval. */ + IOBUF_IOCTL_FSYNC = 4, /* Uses ptrval. */ + IOBUF_IOCTL_PEEK = 5 /* Uses intval and ptrval. */ } iobuf_ioctl_t; enum iobuf_use |