3 # Name: dbinfo -- identify berkeley DB version used to create
6 # Author: Paul Marquess <Paul.Marquess@btinternet.com>
8 # Date 20th August 1999
10 # Copyright (c) 1998 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",
31 7 => "3.0.0 or greater",
38 1 => "Unknown (older than 1.71)",
41 4 => "2.0.0 -> 2.1.0",
42 5 => "2.2.6 -> 2.7.7",
43 6 => "3.0.0 or greater",
50 1 => "3.0.0 or greater",
55 die "Usage: dbinfo file\n" unless @ARGV == 1 ;
57 print "testing file $ARGV[0]...\n\n" ;
58 open (F, "<$ARGV[0]") or die "Cannot open file $ARGV[0]: $!\n" ;
63 my (@info) = unpack("NNNNN", $buff) ;
64 my (@info1) = unpack("VVVVV", $buff) ;
65 my ($magic, $version, $endian) ;
67 if ($Data{$info[0]}) # first try DB 1.x format
73 elsif ($Data{$info[3]}) # next DB 2.x big endian
77 $endian = "Big Endian" ;
79 elsif ($Data{$info1[3]}) # next DB 2.x little endian
82 $version = $info1[4] ;
83 $endian = "Little Endian" ;
86 { die "not a Berkeley DB database file.\n" }
88 my $type = $Data{$magic} ;
89 my $magic = sprintf "%06X", $magic ;
91 my $ver_string = "Unknown" ;
92 $ver_string = $type->{Versions}{$version}
93 if defined $type->{Versions}{$version} ;
96 File Type: Berkeley DB $type->{Type} file.
97 File Version ID: $version
98 Built with Berkeley DB: $ver_string