3
# Name: dbinfo -- identify berkeley DB version used to create
6
# Author: Paul Marquess <Paul.Marquess@btinternet.com>
8
# Date 17th September 2000
10
# Copyright (c) 1998-2001 Paul Marquess. All rights reserved.
11
# This program is free software; you can redistribute it and/or
12
# modify it under the same terms as Perl itself.
14
# Todo: Print more stats on a db file, e.g. no of records
15
# add log/txn/lock files
25
1 => "Unknown (older than 1.71)",
26
2 => "Unknown (older than 1.71)",
27
3 => "1.71 -> 1.85, 1.86",
29
5 => "2.0.0 -> 2.3.0",
30
6 => "2.3.1 -> 2.7.7",
32
8 => "3.1.x or greater",
39
1 => "Unknown (older than 1.71)",
42
4 => "2.0.0 -> 2.1.0",
43
5 => "2.2.6 -> 2.7.7",
45
7 => "3.1.x or greater",
54
3 => "3.2.x or greater",
59
die "Usage: dbinfo file\n" unless @ARGV == 1 ;
61
print "testing file $ARGV[0]...\n\n" ;
62
open (F, "<$ARGV[0]") or die "Cannot open file $ARGV[0]: $!\n" ;
67
my (@info) = unpack("NNNNN", $buff) ;
68
my (@info1) = unpack("VVVVV", $buff) ;
69
my ($magic, $version, $endian) ;
71
if ($Data{$info[0]}) # first try DB 1.x format
77
elsif ($Data{$info[3]}) # next DB 2.x big endian
81
$endian = "Big Endian" ;
83
elsif ($Data{$info1[3]}) # next DB 2.x little endian
86
$version = $info1[4] ;
87
$endian = "Little Endian" ;
90
{ die "not a Berkeley DB database file.\n" }
92
my $type = $Data{$magic} ;
93
$magic = sprintf "%06X", $magic ;
95
my $ver_string = "Unknown" ;
96
$ver_string = $type->{Versions}{$version}
97
if defined $type->{Versions}{$version} ;
100
File Type: Berkeley DB $type->{Type} file.
101
File Version ID: $version
102
Built with Berkeley DB: $ver_string