Perl has native `vstring' encoding for vector (or version)
strings, make use of it instead of relying on difficult-to-read
hex versions and integer shifts.
---
 lib/PublicInbox/SearchIdx.pm | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm
index 511dd4d6..496cea05 100644
--- a/lib/PublicInbox/SearchIdx.pm
+++ b/lib/PublicInbox/SearchIdx.pm
@@ -114,15 +114,15 @@ sub load_xapian_writable () {
        *sortable_serialise = $xap.'::sortable_serialise';
        $DB_CREATE_OR_OPEN = eval($xap.'::DB_CREATE_OR_OPEN()');
        $DB_OPEN = eval($xap.'::DB_OPEN()');
-       my $ver = (eval($xap.'::major_version()') << 16) |
-               (eval($xap.'::minor_version()') << 8) |
-               eval($xap.'::revision()');
-       if ($ver >= 0x10400) {
+       my $ver = eval 'v'.join('.', eval($xap.'::major_version()'),
+                               eval($xap.'::minor_version()'),
+                               eval($xap.'::revision()'));
+       if ($ver ge 1.4) { # new flags in Xapian 1.4
                $DB_NO_SYNC = 0x4;
                $DB_DANGEROUS = 0x10;
        }
        # Xapian v1.2.21..v1.2.24 were missing close-on-exec on OFD locks
-       $X->{CLOEXEC_UNSET} = 1 if $ver >= 0x010215 && $ver <= 0x010218;
+       $X->{CLOEXEC_UNSET} = 1 if $ver ge v1.2.21 && $ver le v1.2.24;
        1;
 }
 

Reply via email to