#!/usr/bin/perl ##################################################### # readov2 - Read OV2 files for Tom Tom Navigator # (C) 2007, Hugo van der Kooij ##################################################### use File::Basename; use Getopt::Std; use Switch; getopt('f'); # or die "\nFatal error!\nrequires -f option to write \n\n"; $file = $opt_f; open(FILE, "<$file"); binmode(FILE); $offset = 0; $done = 1; print "Opening $file .... \n"; while ($done != 0) { $type = ""; $done = read(FILE, $type, 1); # read(FILE, $type, 1, $offset); $offset++; switch ($type) { case "\0" { print "Deleted record\n"; $buffer = ""; read(FILE, $buffer, 4); $offset += 4; $length = unpack("L",$buffer); print "\tRecord length: $length"; $size = $length - 5; read(FILE, $buffer, $size); $offset += $size; } case "\1" { print "Skipper record [$offset]\n"; $buffer = ""; read(FILE, $buffer, 4); # read(FILE, $buffer, 4, $offset); $offset += 4; $length = unpack("L",$buffer); print "\tFile length: $length"; $buffer = ""; read(FILE, $buffer, 4); $offset += 4; $west = unpack("l",$buffer)/100000; print "\tWest side: $west"; $buffer = ""; read(FILE, $buffer, 4); $offset += 4; $south = unpack("l",$buffer)/100000; print "\tSouth side: $south"; $buffer = ""; read(FILE, $buffer, 4); $offset += 4; $east = unpack("l",$buffer)/100000; print "\tEast side: $east"; $buffer = ""; read(FILE, $buffer, 4); $offset += 4; $north = unpack("l",$buffer)/100000; print "\tNorth side: $north\n"; } case "\2" { print "Simple record [$offset]\n"; $buffer = ""; read(FILE, $buffer, 4); $offset += 4; $length = unpack("L",$buffer); print "\tRecord length: $length"; $buffer = ""; read(FILE, $buffer, 4); $offset += 4; $lon = unpack("l",$buffer)/100000; print "\tLongitude: $lon"; $buffer = ""; read(FILE, $buffer, 4); $offset += 4; $lat = unpack("l",$buffer)/100000; print "\tLatitude: $lat"; $size = $length - 13; read(FILE, $buffer, $size); $offset += $size; # $text = unpack("a",$buffer); print "\tContent: $buffer\n"; } case "\2" { print "Extended record\n"; } else { print "Als je me nou.\n"; $done = 0; } } } close(FILE);