use File::KDBX::Error;
use File::KDBX::IO::Crypt;
use File::KDBX::IO::HmacBlock;
-use File::KDBX::Util qw(:class :empty :load assert_64bit erase_scoped);
+use File::KDBX::Util qw(:class :empty :int :load erase_scoped);
use IO::Handle;
use Scalar::Util qw(looks_like_number);
use boolean qw(:all);
my $type = shift;
my $val = shift // '';
- $type = kdbx_header($type);
+ $type = to_header_constant($type);
if ($type == HEADER_END) {
# nothing
}
return VMAP_TYPE_BOOL;
}
elsif (looks_like_number($variant) && ($variant + 0) =~ /^\d+$/) {
- assert_64bit;
my $neg = $variant < 0;
- my @b = unpack('L>2', pack('Q>', $variant));
+ my @b = unpack('L>2', scalar reverse pack_Ql($variant));
return VMAP_TYPE_INT64 if $b[0] && $neg;
return VMAP_TYPE_UINT64 if $b[0];
return VMAP_TYPE_INT32 if $neg;
$val = pack('L<', $val);
}
elsif ($type == VMAP_TYPE_UINT64) {
- assert_64bit;
- $val = pack('Q<', $val);
+ $val = pack_Ql($val);
}
elsif ($type == VMAP_TYPE_BOOL) {
$val = pack('C', $val);
$val = pack('l', $val);
}
elsif ($type == VMAP_TYPE_INT64) {
- assert_64bit;
- $val = pack('q<', $val);
+ $val = pack_ql($val);
}
elsif ($type == VMAP_TYPE_STRING) {
$val = encode('UTF-8', $val);
my $buf = pack('C', $type);
$fh->print($buf) or throw 'Failed to write inner header type';
- $type = kdbx_inner_header($type);
-
+ $type = to_inner_header_constant($type);
if ($type == INNER_HEADER_END) {
# nothing
}
my $new_ref = 0;
my $written = $self->_binaries_written;
- my $entries = $kdbx->all_entries(history => true);
- for my $entry (@$entries) {
+ my $entries = $kdbx->entries(history => 1);
+ while (my $entry = $entries->next) {
for my $key (keys %{$entry->binaries}) {
my $binary = $entry->binaries->{$key};
if (defined $binary->{ref} && defined $kdbx->binaries->{$binary->{ref}}) {