Skip to content

Commit

Permalink
lib-index: Add macros to check if transaction log file version is new…
Browse files Browse the repository at this point in the history
… enough.

The version numbers are 8bit, so we can generate a single 16bit number out
of them.
  • Loading branch information
sirainen authored and GitLab committed Apr 2, 2017
1 parent 28be42b commit e0f4fbf
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/lib-index/mail-transaction-log-file.c
Expand Up @@ -529,7 +529,9 @@ mail_transaction_log_file_read_hdr(struct mail_transaction_log_file *file,
return 0;
}

if (file->hdr.minor_version >= 2 || file->hdr.major_version > 1) {
const unsigned int hdr_version =
MAIL_TRANSACTION_LOG_HDR_VERSION(&file->hdr);
if (MAIL_TRANSACTION_LOG_VERSION_HAVE(hdr_version, COMPAT_FLAGS)) {
/* we have compatibility flags */
enum mail_index_header_compat_flags compat_flags = 0;

Expand Down
10 changes: 10 additions & 0 deletions src/lib-index/mail-transaction-log.h
Expand Up @@ -9,6 +9,16 @@
#define MAIL_TRANSACTION_LOG_MINOR_VERSION 2
#define MAIL_TRANSACTION_LOG_HEADER_MIN_SIZE 24

#define MAIL_TRANSACTION_LOG_VERSION_FULL(major, minor) \
((major) << 8 | (minor))
#define MAIL_TRANSACTION_LOG_VERSION_HAVE(version, wanted_feature) \
((version) >= MAIL_TRANSACTION_LOG_VERSION_##wanted_feature)
#define MAIL_TRANSACTION_LOG_HDR_VERSION(hdr) \
MAIL_TRANSACTION_LOG_VERSION_FULL((hdr)->major_version, (hdr)->minor_version)

#define MAIL_TRANSACTION_LOG_VERSION_COMPAT_FLAGS \
MAIL_TRANSACTION_LOG_VERSION_FULL(1, 2)

struct mail_transaction_log_header {
uint8_t major_version;
uint8_t minor_version;
Expand Down

0 comments on commit e0f4fbf

Please sign in to comment.