changed ::pwsafe3 note id generation

This commit is contained in:
git@daemon.de
2015-02-24 10:35:20 +01:00
parent 64e7948b55
commit fe6b076da0
5 changed files with 23 additions and 28 deletions

View File

@@ -1,3 +1,10 @@
1.3.21:
Changed note id generation in NOTEDB::pwsafe3::_uuid(), again.
Instead of crc checksums and the loop to avoid duplicates, I just
use a counter and sort the entries by ctime, so that older entries
keep their note id. Also this should fix a rare bug, where the
code hangs because of said loop.
================================================================================
1.3.20:
fixed bug in NOTEDB::pwsafe3::_retrieve(), it iterated over the
records unsorted which resulted in different note ids each time

View File

@@ -10,7 +10,7 @@ package NOTEDB;
use Exporter ();
use vars qw(@ISA @EXPORT $crypt_supported);
$NOTEDB::VERSION = "1.41";
$NOTEDB::VERSION = "1.42";
BEGIN {
# make sure, it works, otherwise encryption

View File

@@ -3,8 +3,7 @@
package NOTEDB::pwsafe3;
$NOTEDB::pwsafe3::VERSION = "1.06";
use lib qw(/home/scip/D/github/Crypt--PWSafe3/blib/lib);
$NOTEDB::pwsafe3::VERSION = "1.07";
use strict;
use Data::Dumper;
use Time::Local;
@@ -324,7 +323,7 @@ sub _retrieve {
my @records = $vault->getrecords();
foreach my $record (sort { $a->uuid cmp $b->uuid } @records) {
foreach my $record (sort { $a->ctime <=> $b->ctime } @records) {
my $num = $this->_uuid( $record->uuid );
my %entry = (
uuid => $record->uuid,
@@ -450,34 +449,23 @@ sub _notetopwsafe3 {
}
sub _uuid {
#
# Convert a given pwsafe3 uuid to a number
# and store them for recursive access
my ($this, $uuid) = @_;
if (exists $this->{uuidnum}->{$uuid}) {
return $this->{uuidnum}->{$uuid};
}
my $intuuid = $uuid;
$intuuid =~ s/[\-]//g;
$intuuid = unpack('h32', $intuuid);
my $cuid = $intuuid;
my $checksum;
while () {
$checksum = unpack("%16C*", $cuid) - 1600;
while ($checksum < 0) {
$checksum++; # avoid negative numbers
}
if (! exists $this->{numuuid}->{$checksum}) {
$this->{uuidnum}->{$uuid} = $checksum;
$this->{numuuid}->{$checksum} = $uuid;
last;
}
else {
$cuid .= $.;
}
my $max = 0;
if (exists $this->{numuuid}) {
$max = (sort { $b <=> $a } keys %{$this->{numuuid}})[0];
}
return $checksum;
my $num = $max + 1;
$this->{uuidnum}->{$uuid} = $num;
$this->{numuuid}->{$num} = $uuid;
return $num;
}
sub _getuuid {

View File

@@ -1 +1 @@
1.3.20
1.3.21

View File

@@ -144,7 +144,7 @@ $CONF = File::Spec->catfile($ENV{HOME}, ".noterc");
$USER = getlogin || getpwuid($<);
chomp $USER;
$TOPIC = 1;
$version = "1.3.20";
$version = "1.3.21";
$CurDepth = 1; # the current depth inside the topic "directory" structure...
$maxlen = "auto";
$timelen = 22;