# make sure that modules are searched in the order local then perl
+our $root;
+
BEGIN {
# root of directory tree for this system
$root = "/spider";
use strict;
-use SysVar;
+use DXVars;
use DXUser;
-use DXUtil;
use JSON;
use Data::Structure::Util qw(unbless);
use Time::HiRes qw(gettimeofday tv_interval);
my ($key, $val, $action, $count, $err) = ('','',0,0,0);
my $ta = [gettimeofday];
my $ofh = IO::File->new(">$ofn") or die "cannot open $ofn ($!)\n";
-
+ my $oldfn = localdata("users.v$convert");
+
my %oldu;
LogDbg('',"Converting the User File from V$convert to $fn.v4 ");
LogDbg('',"This will take a while, maybe as much as 10 secs");
- my $odbm = tie (%oldu, 'DB_File', localdata("users.v$convert"), O_RDONLY, 0666, $DB_BTREE) or confess "can't open user file: $fn.v$convert ($!) [rebuild it from user_asc?]";
+ my $odbm = tie (%oldu, 'DB_File', $oldfn, O_RDONLY, 0666, $DB_BTREE) or confess "can't open user file: $oldfn ($!) [rebuild it from user_asc?]";
for ($action = R_FIRST; !$odbm->seq($key, $val, $action); $action = R_NEXT) {
my $ref;
if ($convert == 3) {
undef $odbm;
untie %oldu;
my $t = _diffms($ta);
- LogDbg('',"Conversion from users.v$convert to $ofn completed $count records $err errors $t mS");
+ LogDbg('',"Conversion from $oldfn to $ofn completed $count records $err errors $t mS");
$ofh->close;
}
{
say shift;
}
+
+# find the correct local_data directory
+# basically, if there is a local_data directory with this filename and it is younger than the
+# equivalent one in the (system) data directory then return that name rather than the system one
+sub localdata
+{
+ my $ifn = shift;
+ my $ofn = "$root/local_data/$ifn";
+ my $tfn;
+
+ if (-e "$root/local_data") {
+ $tfn = "$main::data/$ifn";
+ if ((-e $tfn) && (-e $ofn)) {
+ $ofn = $tfn if -M $ofn < -M $tfn;
+ }
+ else {
+ $ofn = $tfn if -e $tfn;
+ }
+ }
+
+ return $ofn;
+}
+# measure the time taken for something to happen; use Time::HiRes qw(gettimeofday tv_interval);
+sub _diffms
+{
+ my $ta = shift;
+ my $tb = shift || [gettimeofday];
+ my $a = int($ta->[0] * 1000) + int($ta->[1] / 1000);
+ my $b = int($tb->[0] * 1000) + int($tb->[1] / 1000);
+ return $b - $a;
+}
+