#!/usr/bin/perl
#
# Copyright 2005-2006 Jonathan McDowell <noodles@earth.li>
# 
# Released under the GPLv2.
#
# (Seems pointless for such a small hack of course)
#
# v0.1 - Original release
# v0.2 - Add patch from Stefan de Konink <skinkie@xs4all.nl> for negative
#        elevation/no fix.
#        Output "Unrecognized log entry" error to STDERR.
#        Cope with negative lon/lats.
#

use Date::Parse;
use POSIX qw(strftime);

print "<gpx version=\"1.0\" creator=\"A quick Perl hack\" ", 
	"xmlns=\"http://www.topografix.com/GPX/1/0\">\n";
print "<trk>\n";
print "<trkseg>\n";

$lastlon = $lastlat = 0;

while (<>) {
	chomp;
	if (/^\s*(\-?\d+\.\d+)\s+(\-?\d+\.\d+)\s+(\-?\d+)\s+(.*)$/) {
		if (($1 ne $lastlat || $2 ne $lastlon) &&
				(($1 ne "1001.000000") ||
				($2 ne "1001.000000"))) {
			print "<trkpt lat=\"$1\" lon=\"$2\">\n";
			print "<ele>$3</ele>\n";
			print "<time>",
				strftime("%FT%H:%M:%SZ", gmtime(str2time($4))),
				"</time>\n";
			
			print "</trkpt>\n";

			$lastlat = $1;
			$lastlon = $2;
		}
	} else {
		print STDERR "Unrecognised log entry: $_\n";
	}
}
print "</trkseg>\n";
print "</trk>\n";
print "</gpx>\n";
