[DebianGIS-dev] r1168 - in packages/gpsdrive/trunk/debian: . man scripts

nd-guest at alioth.debian.org nd-guest at alioth.debian.org
Fri Oct 5 11:45:49 UTC 2007


Author: nd-guest
Date: 2007-10-05 11:45:49 +0000 (Fri, 05 Oct 2007)
New Revision: 1168

Added:
   packages/gpsdrive/trunk/debian/man/
   packages/gpsdrive/trunk/debian/man/gpsfetchmap.1
   packages/gpsdrive/trunk/debian/scripts/
   packages/gpsdrive/trunk/debian/scripts/gpsfetchmap.pl
Modified:
   packages/gpsdrive/trunk/debian/changelog
   packages/gpsdrive/trunk/debian/copyright
   packages/gpsdrive/trunk/debian/gpsdrive-scripts.install
   packages/gpsdrive/trunk/debian/gpsdrive-scripts.manpages
   packages/gpsdrive/trunk/debian/rules
Log:
- Replace non-free gpsfetchmap.pl with the new version that
  has been re-licensed under GPL.
- Created updated manpage with pod2man.  


Modified: packages/gpsdrive/trunk/debian/changelog
===================================================================
--- packages/gpsdrive/trunk/debian/changelog	2007-10-05 11:29:01 UTC (rev 1167)
+++ packages/gpsdrive/trunk/debian/changelog	2007-10-05 11:45:49 UTC (rev 1168)
@@ -16,8 +16,11 @@
   * Removed 04_missing_includes.dpatch - package builds fine with gcc-4.3.
   * Removed 05_start_gpsd.dpatch - feature has been removed.
   * Removed debian/man dir.
+  * Removed gpsfetchmap.pl from upstream tarball due to license issues.
+    A new version has been released under GPL which will be installed from 
+    debian/scripts/gpsfetchmap.pl now. Updated the manpage for that reason.
 
- -- Andreas Putzo <andreas at putzo.net>  Wed, 03 Oct 2007 15:52:52 +0000
+ -- Andreas Putzo <andreas at putzo.net>  Fri, 05 Oct 2007 11:34:41 +0000
 
 gpsdrive (2.10~pre2-2) unstable; urgency=low
 

Modified: packages/gpsdrive/trunk/debian/copyright
===================================================================
--- packages/gpsdrive/trunk/debian/copyright	2007-10-05 11:29:01 UTC (rev 1167)
+++ packages/gpsdrive/trunk/debian/copyright	2007-10-05 11:45:49 UTC (rev 1168)
@@ -5,6 +5,9 @@
 
 It was downloaded from http://gpsdrive.de/packages/gpsdrive-2.10pre4.tar.gz
 The debian/ dir has been removed from the tarball.
+The file scripts/gpsfetchmap.pl has been removed from the tarball because of a
+non-free license. The license has been changed upstream to GPL. This version will be
+installed instead.
 
 Upstream Authors: 
 
@@ -102,5 +105,6 @@
     scripts/osm/perl_lib/Geo/OSM/APIClientV5.pm
 are Copyright (C) 2007 Martijn van Oosterhout <kleptog at svana.org> 
 and are licensed under the GNU Lesser General Public License.
+
 On Debian systems, the complete text of the GNU Lesser General
 Public License can be found in `/usr/share/common-licenses/LGPL'

Modified: packages/gpsdrive/trunk/debian/gpsdrive-scripts.install
===================================================================
--- packages/gpsdrive/trunk/debian/gpsdrive-scripts.install	2007-10-05 11:29:01 UTC (rev 1167)
+++ packages/gpsdrive/trunk/debian/gpsdrive-scripts.install	2007-10-05 11:45:49 UTC (rev 1168)
@@ -3,7 +3,6 @@
 usr/bin/geo-nearest
 usr/bin/geocache2way
 usr/bin/geoinfo.pl
-usr/bin/gpsfetchmap.pl
 usr/bin/gpspoint2gpsdrive.pl
 usr/bin/gpsreplay
 usr/bin/poi-manager.pl

Modified: packages/gpsdrive/trunk/debian/gpsdrive-scripts.manpages
===================================================================
--- packages/gpsdrive/trunk/debian/gpsdrive-scripts.manpages	2007-10-05 11:29:01 UTC (rev 1167)
+++ packages/gpsdrive/trunk/debian/gpsdrive-scripts.manpages	2007-10-05 11:45:49 UTC (rev 1168)
@@ -2,6 +2,6 @@
 man/geo-code.1
 man/geo-nearest.1
 man/geoinfo.pl.1
-man/gpsfetchmap.pl.1
+debian/man/gpsfetchmap.1
 man/gpspoint2gpsdrive.pl.1
 man/poi-manager.pl.1

Added: packages/gpsdrive/trunk/debian/man/gpsfetchmap.1
===================================================================
--- packages/gpsdrive/trunk/debian/man/gpsfetchmap.1	                        (rev 0)
+++ packages/gpsdrive/trunk/debian/man/gpsfetchmap.1	2007-10-05 11:45:49 UTC (rev 1168)
@@ -0,0 +1,327 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.\"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "GPSFETCHMAP 1"
+.TH GPSFETCHMAP 1 "2007-10-04" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+\&\fBgpsfetchmap\fR Version 1.04
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBgpsfetchmap\fR is a program to download maps from a mapserver for use with gpsdrive. 
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBCommon usages:\fR
+.PP
+gpsfetchmap \-w <\s-1WAYPOINT\s0 \s-1NAME\s0> \-sc <\s-1SCALE\s0> \-a <#> \-p
+.PP
+gpsfetchmap \-la <latitude \s-1MM\s0.DDDD> \-lo <latitude \s-1MM\s0.DDDD> \-sc <\s-1SCALE\s0> \-a <#> \-p
+.PP
+gpsfetchmap \-sla <start latitude \s-1MM\s0.DDDD> \-endla <end latitude \s-1MM\s0.DDDD> \-slo <start longitude \s-1MM\s0.DDDD> \-endlo <end longitude \s-1MM\s0.DDDD> \-sc <\s-1SCALE\s0> \-a <#> \-p
+.PP
+gpsfetchmap \-sc <\s-1SCALE\s0> \-a <#> \-r <\s-1WAYPOINT\s0 1> <\s-1WAYPOINT\s0 2> ... <\s-1WAYPOINT\s0 n> \-p
+.PP
+\&\fBAll options:\fR
+.PP
+gpsfetchmap [\-w <\s-1WAYPOINT\s0 \s-1NAME\s0>]
+            [\-la <latitude \s-1DD\s0.MMMM>] [\-lo <longitude \s-1DD\s0.MMMM>] 
+            [\-sla <start latitude \s-1DD\s0.MMMM>] [\-endla <end latitude \s-1DD\s0.MMMM>]
+            [\-slo <start longitude \s-1DD\s0.MMMM>] [\-endlo <end longitude \s-1DD\s0.MMMM>]
+            [\-sc <\s-1SCALE\s0>] [\-a <#>] [\-p] [\-m <\s-1MAPSERVER\s0>]
+            [\-u <\s-1UNIT\s0>] [\-md <\s-1DIR\s0>] [\-W <\s-1FILE\s0>] [\-t <\s-1FILE\s0>] [\-r]
+            [\-C <\s-1FILE\s0>] [\-P <\s-1PREFIX\s0>] [\-F] [\-d] [\-v] [\-h] [\-M] [\-n] [\-U] [\-c]
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-w, \-\-waypoint <\s-1WAYPOINT\s0 \s-1NAME\s0\fR>" 8
+.IX Item "-w, --waypoint <WAYPOINT NAME>"
+Takes a waypoint name and uses the latitude and longitude for that waypoint as
+the centerpoint of the area to be covered. Waypoints are read from 'way.txt', 
+or file defined by '\-W'. 
+the special name gpsd asks your local gpsd where your gps thinks you are and uses 
+this point as center.
+This, '\-la' and '\-lo', '\-sla', '\-ela', '\-slo' and '\-elo' or '\-a' is required. 
+A special name is gpsd this waypoint asks your gps where you currently are.
+.IP "\fB\-la,  \-\-lat <latitude \s-1DD\s0.MMMM\fR>" 8
+.IX Item "-la,  --lat <latitude DD.MMMM>"
+Takes a latitude in format \s-1DD\s0.MMMM and uses that as the latitude for the centerpoint of the area
+to be covered. Will be overriden by the latitude of waypoint if '\-w' is used. This and '\-lo', '\-w' or '\-sla', '\-ela', '\-slo', '\-elo' is required.
+.IP "\fB\-lo, \-\-lon <longitude \s-1DD\s0.MMMM\fR>" 8
+.IX Item "-lo, --lon <longitude DD.MMMM>"
+Takes a longitude in format \s-1DD\s0.MMMM and uses that as the longitude for the centerpoint of the area
+to be covered. Will be overriden by the longitude of waypoint if '\-w' is used. This and '\-la', '\-w' or '\-sla', '\-ela', '\-slo', '\-elo' is required.
+.IP "\fB\-sla \-\-start\-lat <start latitude \s-1DD\s0.MMMM\fR>" 8
+.IX Item "-sla --start-lat <start latitude DD.MMMM>"
+Takes a latitude in format \s-1DD\s0.MMMM and uses that as the start latitude for the area to be covered. Will override '\-la' and '\-lo' but will be overriden by '\-w'. This, '\-ela', '\-slo' and '\-elo' or '\-w' or '\-la' and '\-lo' is required.
+.IP "\fB\-ela \-\-end\-lat <end latitude \s-1DD\s0.MMMM\fR>" 8
+.IX Item "-ela --end-lat <end latitude DD.MMMM>"
+Takes a latitude in format \s-1DD\s0.MMMM and uses that as the end latitude for the area to be covered. Will override '\-la' and '\-lo' but will be overriden by '\-w'. 
+This, '\-sla', '\-slo' and '\-elo' or '\-w' or '\-la' and '\-lo' is required.
+.IP "\fB\-slo \-\-start\-lon <start longitude \s-1DD\s0.MMMM\fR>" 8
+.IX Item "-slo --start-lon <start longitude DD.MMMM>"
+Takes a longitude in format \s-1DD\s0.MMMM and uses that as the start longitude for the area to be covered. Will override '\-la' and '\-lo' but will be overriden by '\-w'. This, '\-sla', '\-ela' and '\-elo' or '\-w' or '\-la' and '\-lo' is required.
+.IP "\fB\-elo \-\-end\-lon <end longitude \s-1DD\s0.MMMM\fR>" 8
+.IX Item "-elo --end-lon <end longitude DD.MMMM>"
+Takes a longitude in format \s-1DD\s0.MMMM and uses that as the end longitude for the area to be covered. Will override '\-la' and '\-lo' but will be overriden by '\-w'. This, '\-sla', '\-ela' and '\-slo' or '\-w' or '\-la' and '\-lo' is required.
+.IP "\fB\-sc, \-\-scale <\s-1SCALE\s0\fR>" 8
+.IX Item "-sc, --scale <SCALE>"
+Scales of map(s) to download. Default: 50000.
+.Sp
+Formats:
+.Sp
+.Vb 2
+\&   \(aq####\(aq
+\&   \- Just this scale.
+.Ve
+.Sp
+.Vb 2
+\&   \(aq####,####,####\(aq  
+\&   \- All scales in the list. May be combined with other formats.
+.Ve
+.Sp
+.Vb 2
+\&   \(aq>####\(aq          
+\&   \- All scales above and including the number given.
+.Ve
+.Sp
+.Vb 2
+\&   \(aq<####\(aq           
+\&   \- All scales below and including the number given.
+.Ve
+.Sp
+.Vb 2
+\&   \(aq####\-####\(aq       
+\&   \- All scales from first to last number given.
+.Ve
+.IP "\fB\-a, \-\-area <#\fR>" 8
+.IX Item "-a, --area <#>"
+Area to cover. # of 'units' size square around the centerpoint. You can use a single number
+for square area. Or you can use '#x#' to do a rectangle, where the first number is distance
+latitude and the second number is distance of longitude. 'units' is read from the configuration 
+file (\-C) or as defined by (\-u).
+.IP "\fB\-p, \-\-polite\fR" 8
+.IX Item "-p, --polite"
+This causes the program to sleep one second between downloads to be polite to the mapserver. 
+Takes an optional value of number of seconds to sleep.
+.IP "\fB\-\-mapserver <\s-1MAPSERVER\s0\fR>" 8
+.IX Item "--mapserver <MAPSERVER>"
+Mapserver to download from. Default: 'landsat'.
+Currently can use: landsat
+.Sp
+geoscience, gov_au, incrementp and eniro have download stubs, 
+but they are !!!NOT!!!! in the right scale.
+.Sp
+geoscience
+.Sp
+landsat covers the whole world with satelite Photos
+.Sp
+gov_au is for Australia
+.Sp
+incrementp for japanese Maps
+.Sp
+eniro covers:
+ eniro_se Sweden
+ eniro_dk Denmark
+ eniro_no Norway 
+ eniro_fi Finnland
+.Sp
+Overview of Area covered by eniro_fi:
+ http://maps.eniro.com/servlets/fi_MapImageLocator?profile=Main&center=26.;62.&zoomlevel=1&size=800x600
+.IP "\fB\-u, \-\-unit <\s-1UNIT\s0\fR>" 8
+.IX Item "-u, --unit <UNIT>"
+The measurement system to use. Default is read from configuration file <\-C>. Possibles are: 
+miles, nautical, kilometers.
+.IP "\fB\-\-mapdir <\s-1DIR\s0\fR>" 8
+.IX Item "--mapdir <DIR>"
+Override the configfiles mapdir with this value.
+.IP "\fB\-W, \-\-WAYPOINT <\s-1FILE\s0\fR>" 8
+.IX Item "-W, --WAYPOINT <FILE>"
+File to read waypoints from. Default: '~/.gpsdrive/way.txt'. 
+.IP "\fB\-t, \-\-track <\s-1FILE\s0\fR>" 8
+.IX Item "-t, --track <FILE>"
+Download maps that are along a saved track. File is a standard track filed saved from GpsDrive.
+.IP "\fB\-r, \-\-route\fR" 8
+.IX Item "-r, --route"
+Download maps that are along a route defined by waypoints. You must give a list of waypoints as parameters separated with space.
+.IP "\fB\-C, \-\-CONFIG\fR" 8
+.IX Item "-C, --CONFIG"
+File to read for GPSDrive configuration information. Default: '~/.gpsdrive/gpsdriverc'.
+.IP "\fB\-P, \-\-PREFIX <\s-1PREFIX\s0\fR>" 8
+.IX Item "-P, --PREFIX <PREFIX>"
+Takes a prefix string to be used as the start of all saved map files. Default: \*(L"map_\*(R".
+.IP "\fB\-F, \-\-FORCE\fR" 8
+.IX Item "-F, --FORCE"
+Force program to download maps without asking you to confirm the download.
+.IP "\fB\-n\fR" 8
+.IX Item "-n"
+Dont download anything only tell which maps are missing
+.IP "\fB\-U\fR" 8
+.IX Item "-U"
+read map_koord.txt file at Start. Then also check for not downloaded map_*.gif Files 
+if they need to be appended to map_koords.txt. 
+.IP "\fB\-\-check\-koordfile\fR" 8
+.IX Item "--check-koordfile"
+Update map_koord.txt: search map Tree if map_*.gif file exist, but cannot
+be found in map_koords.txt file. This option first reads the 
+map_koord.txt file and checks every Map in the filesystem if it also is 
+found in the map_koord.txt file.
+If not found it is appended into the map_koord.txt file.
+.Sp
+Check map_koord.txt File. This option checks, if every Map also exist
+If any Map-File is missing, a file map_koord.txt.new will be created. 
+This file can be copied to the original file if checked.
+.IP "\fB\-\-check\-coverage\fR" 8
+.IX Item "--check-coverage"
+See which areas the maps cover.
+Output is simple \s-1ASCII\s0 Art
+.IP "\fB\-\-PROXY\fR" 8
+.IX Item "--PROXY"
+Set proxy for mirroring image Files
+.IP "\fB\-d, \-\-debug\fR" 8
+.IX Item "-d, --debug"
+Prints debugging information.
+.IP "\fB\-v, \-\-version\fR" 8
+.IX Item "-v, --version"
+Prints version information and exits.
+.IP "\fB\-\-help \-h \-x\fR" 8
+.IX Item "--help -h -x"
+Prints the usage page and exits.
+.IP "\fB\-\-MAN \-M\fR" 8
+.IX Item "--MAN -M"
+Prints the manual page and exits.
+.IP "\fBDownload\fR" 8
+.IX Item "Download"
+When downloading Maps the output reads as folows:
+.Sp
+.Vb 5
+\& _ Map already exists in Filesystem
+\& E Error while downloading Map
+\& + Map got downloaded 
+\& u updated map_koords.txt File
+\& S Simulate only
+.Ve

Modified: packages/gpsdrive/trunk/debian/rules
===================================================================
--- packages/gpsdrive/trunk/debian/rules	2007-10-05 11:29:01 UTC (rev 1167)
+++ packages/gpsdrive/trunk/debian/rules	2007-10-05 11:45:49 UTC (rev 1168)
@@ -29,6 +29,8 @@
 	tar xzf ../tarballs/gpsdrive-${UPSTREAM_VERSION}.tar.gz -C ../tarballs/
 	echo Removing upstream debian/ dir
 	rm -rf ../tarballs/gpsdrive-${UPSTREAM_VERSION}/debian/
+	echo Remove gpsfetchmap.pl script. 
+	rm -f ../tarballs/gpsdrive-${UPSTREAM_VERSION}/scripts/gpsfetchmap.pl
 	echo Building tarball
 	tar czf ../tarballs/gpsdrive_${DEB_UPSTREAM_VERSION}.orig.tar.gz -C ../tarballs gpsdrive-${UPSTREAM_VERSION}
 	echo Cleaning up
@@ -94,9 +96,10 @@
 	mv -f $(CURDIR)/debian/gpsdrive-scripts/usr/bin/convert-waypoints.pl $(CURDIR)/debian/gpsdrive-scripts/usr/bin/convert-waypoints
 	mv -f $(CURDIR)/debian/gpsdrive-scripts/usr/bin/geoinfo.pl $(CURDIR)/debian/gpsdrive-scripts/usr/bin/geoinfo
 	mv -f $(CURDIR)/debian/gpsdrive-scripts/usr/bin/gpsdrive_mapnik_gentiles.py $(CURDIR)/debian/gpsdrive-scripts/usr/bin/gpsdrive_mapnik_gentiles
-	mv -f $(CURDIR)/debian/gpsdrive-scripts/usr/bin/gpsfetchmap.pl $(CURDIR)/debian/gpsdrive-scripts/usr/bin/gpsfetchmap
 	mv -f $(CURDIR)/debian/gpsdrive-scripts/usr/bin/gpspoint2gpsdrive.pl $(CURDIR)/debian/gpsdrive-scripts/usr/bin/gpspoint2gpsdrive
 	mv -f $(CURDIR)/debian/gpsdrive-scripts/usr/bin/poi-manager.pl $(CURDIR)/debian/gpsdrive-scripts/usr/bin/poi-manager
+	# install gpsfetchmap from debian/scripts
+	cp -f $(CURDIR)/debian/scripts/gpsfetchmap.pl $(CURDIR)/debian/gpsdrive-scripts/usr/bin/gpsfetchmap
 	dh_shlibdeps
 	dh_perl
 	dh_gencontrol

Added: packages/gpsdrive/trunk/debian/scripts/gpsfetchmap.pl
===================================================================
--- packages/gpsdrive/trunk/debian/scripts/gpsfetchmap.pl	                        (rev 0)
+++ packages/gpsdrive/trunk/debian/scripts/gpsfetchmap.pl	2007-10-05 11:45:49 UTC (rev 1168)
@@ -0,0 +1,1975 @@
+#!/usr/bin/perl
+#
+# gpsfetchmap
+# Copyright (C) 2002-2007 Gpsdrive Development Team <gpsdrive at gpsdrivers.org>
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ 
+
+BEGIN {
+    my $dir = $0;
+    $dir =~s,[^/]+/[^/]+$,,;
+    unshift(@INC,"$dir/perl_lib");
+
+    # For Debug Purpose in the build Directory
+    unshift(@INC,"./perl_lib");
+    unshift(@INC,"./scripts/perl_lib");
+    unshift(@INC,"../scripts/perl_lib");
+
+    # For DSL
+    unshift(@INC,"/opt/gpsdrive/share/perl5");
+    unshift(@INC,"/opt/gpsdrive"); # For DSL
+};
+
+my $Version = '$Revision: 1743 $'; 
+$Version =~ s/\$Revision:\s*(\d+)\s*\$/$1/; 
+
+my $VERSION ="gpsfetchmap (c) 2002 Kevin Stephens <gps\@suburbialost.com>
+modified (Sep 2002) by Sven Fichtner <sven.fichtner\@flugfunk.de>
+modified (Nov 2002) by Magnus Månsson <ganja\@0x63.nu>
+modified (Nov 2003) by camel <camel\@insecure.at>
+modified (Feb 2004) by Robin Cornelius <robin\@cornelius.demon.co.uk>
+modified (Jan 2005) by Joerg Ostertag <gpsdrive\@ostertag.name>
+modified (May 2005) by Olli Salonen <olli\@cabbala.net>
+modified (Jul 2005) by Jaroslaw Zachwieja <grok\@filippa.org.uk>
+modified (Dec 2005) by David Pollard <david dot pollard\@optusnet.com.au>
+modified (Jul 2007) by Maciek Kaliszewski <mkalkal\@interia.pl>
+modified (Oct 2007) by Andreas Putzo <andreas\@putzo.net>
+Version svn-$Version
+";
+
+sub redirect_ok { return 1; }
+
+
+use IO::Socket;
+use Data::Dumper;
+use strict;
+use warnings;
+use LWP::UserAgent;
+use LWP::Debug qw(- -conns -trace);
+#use LWP::Debug qw(+ +conns +trace);
+use HTTP::Request;
+use HTTP::Request::Common;
+use HTML::Parser;
+use Getopt::Long;
+use Pod::Usage;
+use File::Basename;
+use File::Path;
+use File::Copy;
+use IO::File;
+use Switch;
+use POSIX qw(ceil floor);
+use Image::Magick;
+
+my $long_sleep_time=600;
+
+my @SCALES = (1000,1500,2000,3000,5000,7500,10000,15000,20000,30000,50000,75000,
+              100000,150000,200000,300000,500000,750000,1000000,1500000,2000000,3000000,
+              5000000,7500000,10000000,15000000,20000000,30000000,50000000,75000000);
+
+
+# Translates Scale to zoom factor used by Mapserver
+# This Variable also is used to see if the required mapserver
+# is a valid Mapserver source
+my $Scale2Zoom = { 
+    eniro    => {
+	18000000 => 1, # 480     Km
+	3200000  => 2, #  80     Km
+	400000   => 3, #  10     Km
+	200000   => 4, #   4     Km
+	100000   => 5, #   1.1   Km
+	20000    => 6, #     400 m
+	5000     => 7, #     160 m
+    },
+    gov_au => {
+	10000000000 => 1, # 
+	5000000000  => 2, # 
+	1000000000  => 3, # 
+	500000000   => 4, # 
+	100000000   => 5, # 
+	50000000    => 6, #
+	10000000    => 7, # 
+	5000000     => 8, # 
+	1000000     => 9, # 
+	500000      => 10, # 
+	100000      => 11, # 
+	50000       => 12, #  
+	10000       => 13, #  
+	5000        => 14, # 
+	1000        => 15, # 
+    },
+
+    incrementp => {
+	3200000 => 0,  # 500     Km
+	2400000 => 1,  # 250     Km
+	1600000 => 2,  # 100     Km
+	800000  => 3,  #  50     Km
+	400000  => 4,  #  25     Km
+	200000  => 5,  #  10     Km
+	100000  => 6,  #   5     Km
+	50000   => 7,  #   2.5   Km 
+	25000   => 8,  #   1.0   Km
+	2500    => 9,  #     500 m
+	6250    => 10, #     250 m
+	3125    => 11, #     100 m
+	1562    => 12, #      50 m
+    },
+    geoscience => {
+   	383000*8 => 8,   # DP Still not correct but closer
+   	383000*4 => 4,
+   	383000*2 => 2,
+   	383000*1 => 1,
+    },
+    landsat => {
+   	  2000 =>    2*6.4,
+   	  5000 =>    5*6.4,	
+   	 10000 =>   10*6.4,
+   	 50000 =>   50*6.4, 
+   	100000 =>  100*6.4,
+   	500000 =>  500*6.4,   
+       1000000 => 1000*6.4,
+       5000000 => 5000*6.4,
+      10000000 =>10000*6.4,
+      50000000 =>50000*6.4,
+    }
+};
+
+$Scale2Zoom->{eniro_se} = $Scale2Zoom->{eniro};
+$Scale2Zoom->{eniro_dk} = $Scale2Zoom->{eniro};
+$Scale2Zoom->{eniro_no} = $Scale2Zoom->{eniro};
+$Scale2Zoom->{eniro_fi} = $Scale2Zoom->{eniro};
+
+
+# Set defaults and get options from command line
+Getopt::Long::Configure('no_ignore_case');
+my ($lat,$lon);
+my ($slat,$endlat,$slon,$endlon);
+my ($waypoint,$area,$unit,$mapdir);
+my ($debug,$force,$version,$man,$help);
+my $cover_route;
+my $failcount           = 0;
+my $newcount            = 0;
+my $existcount          = 0;
+my $polite              = 10;
+my $MIN_MAP_BYTES       = 4000;   # Minimum Bytes for a map to be accepted as downloaded
+my $scale;
+my $CONFIG_DIR          = "$ENV{'HOME'}/.gpsdrive"; # Should we allow config of this?
+my $CONFIG_FILE         = "$CONFIG_DIR/gpsdriverc";
+my $WAYPT_FILE          = "$CONFIG_DIR/way.txt";
+my $GPSTOOL_MAP_FILE    = "$ENV{'HOME'}/.gpsmap/maps.txt";
+my $FILEPREFIX          = 'map_';
+my $mapserver           = 'landsat';
+my $simulate_only       = 0;
+my $check_koord_file    = 0;
+my $update_koord        = 0;
+my $check_coverage      = 0;
+my $TRACK_FILE          = "";
+our $MAP_KOORDS         = {};
+our $MAP_FILES          = {};
+our $GPSTOOL_MAP_KOORDS = {};
+our $GPSTOOL_MAP_FILES  = {};
+my $PROXY=$ENV{'http_proxy'};
+
+GetOptions ( 'lat=f'     => \$lat,        'lon=f'       => \$lon, 
+	     'start-lat=f'    => \$slat,       'end-lat=f'   => \$endlat, 
+	     'start-lon=f'    => \$slon,       'end-lon=f'   => \$endlon, 
+	     'sla=f'          => \$slat,       'ela=f'       => \$endlat, 
+	     'slo=f'          => \$slon,       'elo=f'       => \$endlon, 
+	     'scale=s'        => \$scale,      'mapserver=s' => \$mapserver, 
+	     'waypoint=s'     => \$waypoint,   'area=s'      => \$area, 
+	     'unit=s'         => \$unit,       'mapdir=s'    => \$mapdir, 
+	     'polite:i'       => \$polite,
+	     'WAYPOINT=s'     => \$WAYPT_FILE, 'CONFIG=s'    => \$CONFIG_FILE, 
+	     'PREFIX=s'       => \$FILEPREFIX,
+	     'n'              => \$simulate_only,
+	     'track=s'        => \$TRACK_FILE,
+	     'route'          => \$cover_route,
+	     'check-koordfile'=> \$check_koord_file,
+	     'check-coverage' => \$check_coverage,
+	     'U'              => \$update_koord,
+	     'FORCE'          => \$force,     
+	     'PROXY=s'        => \$PROXY,
+	     'debug+'          => \$debug,      'MAN' => \$man, 
+	     'help|x'         => \$help,       'version' => \$version
+	     )
+    or pod2usage(1);
+
+# don't allow polite smaller than one second
+if ( ($polite =~ /\d+/) && ($polite < 1) ) {
+    print "A polite value below one second is not supported.\n";
+    print "Setting polite to default (one second)!\n";
+    $polite=1;
+}
+
+
+
+if ( $mapserver eq 'geoscience' )
+{
+    $scale ||= join(",",keys %{$Scale2Zoom->{'geoscience'}});
+} else {
+    $scale ||= '100000-5000000';
+}
+
+if ( ! defined ( $Scale2Zoom->{$mapserver} ) ){
+    print "Invalid Mapserver: $mapserver\n";
+    print "Valid Mapserver: ".join(",",keys %{$Scale2Zoom} )."\n";
+    exit;
+}
+
+if ( $mapserver eq 'landsat') {
+    $FILEPREFIX          = 'top_';
+    $FILEPREFIX          = 'map_';
+}
+
+ at SCALES = sort  {$a <=> $b} keys %{$Scale2Zoom->{$mapserver}};
+
+pod2usage(1) if $help;
+pod2usage(-verbose=>2) if $man;
+
+sub append_koords($$$$);   # {}
+sub check_coverage($);     # {}
+sub check_koord_file($);   # {}
+sub debug($);              # {}
+sub geoscience_url($$$);   # {}
+sub landsat_url($$$);   # {}
+sub resize($$); #{}
+sub file_count($);         # {}
+sub get_coords_for_route;  # {}
+sub get_coords_for_track($); # {}
+sub get_waypoint($);       # {}
+sub is_map_file($);        # {}
+sub read_gpstool_map_file(); # {}
+sub read_koord_file($);    # {}
+sub update_gpsdrive_map_koord_file(); # {}
+sub wget_map($$$);         # {}
+sub get_gpsd_position();       # {}
+
+STDERR->autoflush(1);
+STDOUT->autoflush(1);
+
+# Setup up some constants
+my $DIFF          = 0.0000028;
+my $RADIUS_KM     = 6371.01;
+my $LAT_DIST_KM   = 110.87;
+my $KM2NAUTICAL   = 0.54;
+my $KM2MILES      = 0.62137119;
+
+
+my $CFG = read_config();
+# Get unit from config file, unless they override with command line
+$unit ||= $CFG->{units};
+
+# Get mapdir from config file, unless they override with command line
+$mapdir ||= $CFG->{mapdir};
+$mapdir ||= "$CONFIG_DIR/maps";
+
+my $KOORD_FILE  = "$mapdir/map_koord.txt";
+
+
+debug( $VERSION);
+#############################################################################
+# LPW::UserAgent initialisieren
+my $ua = LWP::UserAgent->new;
+if ( $PROXY ) {
+    $PROXY =~ s,^(http|ftp)://,,;
+    $PROXY =~ s,/$,,;
+    $PROXY = "http://$PROXY/";
+    debug("Using Proxy '$PROXY'");
+    $ua->proxy(['http','ftp'],$PROXY);
+}
+#$ua->level("+trace") if $debug;
+
+
+# Print version
+if ($version) {
+    print $VERSION, "\n";
+    exit();
+}
+
+
+# Verify that we have the options that we need 
+pod2usage(1) if (&error_check);
+
+# Change into the gpsdrive maps directory 
+chdir($mapdir);
+
+############################################
+if ( $check_koord_file ) {
+    check_koord_file($KOORD_FILE); # This also memoizes the filenames
+    update_gpsdrive_map_koord_file();
+    exit();
+}
+
+if ( $check_coverage ) {
+    check_coverage($KOORD_FILE); 
+    exit();
+}
+
+#############################################################################
+# Get the list of scales we need
+my $SCALES_TO_GET_ref = get_scales(\$scale);
+debug( "Scale to download: ". join(",",sort {$a <=> $b} @{$SCALES_TO_GET_ref}));
+
+# Get the center waypoint if they want one
+if ( $waypoint ) {
+    if ( $waypoint eq "gpsd" ) {
+	($lat,$lon) = get_gpsd_position();
+    } else {
+	($lat,$lon) = get_waypoint($waypoint);
+    }
+    debug("Centerpoint: $lat,$lon");
+}
+
+
+my $desired_locations = {};
+
+if ($TRACK_FILE) { # download maps along a saved track
+    my ($number, $i);
+    print "Downloading maps along a saved track $TRACK_FILE.\n" if $debug;
+    my ($latsref, $lonsref) = get_coords_for_track($TRACK_FILE);
+    my ($sla, $slo, $ela, $elo);
+    $area ||= 1;
+    $number = @{$latsref};
+    print "Inserting $number points to the list.\n" if $debug;
+    for ($i = 0; $i < $number; $i++) {
+	($sla,$slo,$ela,$elo) = get_coords($latsref->[$i],$lonsref->[$i],$area,$unit);
+	debug("");
+	desired_locations($desired_locations,$sla,$slo,$ela,$elo);
+    }
+} elsif ($cover_route) { # download maps between a set of waypoints
+    print "Downloading maps along the following route:\n" if $debug;
+    my ($latsref, $lonsref) = get_coords_for_route;
+    my ($sla, $slo, $ela, $elo, $number, $i);
+    $area ||= 1;
+    $number = @{$latsref};
+    print "Inserting $number points to the list.\n" if $debug;
+    for ($i = 0; $i < $number; $i++) {
+	($sla,$slo,$ela,$elo) = get_coords($latsref->[$i],$lonsref->[$i],$area,$unit);
+	desired_locations($desired_locations,$sla,$slo,$ela,$elo);
+    }
+} else { # we are not downloading maps a saved track or between waypoints
+    # Now get the start and end coordinates
+    unless ($slat && $slon && $endlat && $endlon) {
+        ($slat,$slon,$endlat,$endlon) = get_coords($lat,$lon,$area,$unit); 
+    }
+    print "Upper left:  $slat, $slon\n" if $debug;
+    print "Lower right: $endlat, $endlon\n" if ($debug);
+
+    desired_locations($desired_locations,$slat,$slon,$endlat,$endlon);
+}
+
+my ($existing,$wanted) = file_count($desired_locations);
+print "You are about to download $wanted (".($existing+$wanted).") file(s).\n";
+
+if ( $mapserver eq 'geoscience' ){
+    print "+-----------------------------------------------------------+\n";
+    print "| Geoscience Maps are Copyright, Commonwealth of Australia  |\n";
+    print "| They are free for non commercial use.                     |\n";
+    print "| Full Copyright information can be found at                |\n";
+    print "| http://www.ga.gov.au/about/copyright.jsp                  |\n";
+    print "+-----------------------------------------------------------+\n";
+}elsif ( $mapserver eq 'landsat' ){
+    print "+-----------------------------------------------------------+\n";
+    print "| Landsat Maps are Copyright, .....   |\n";
+    print "| They are free for non commercial use.                     |\n";
+} elsif ( ! $force) {
+    print "You may violating the map servers terms of use!\n";
+    print "Please use their service responsible!\n";
+    print "Are you sure you want to continue? [y|n] ";
+    my $answer = <STDIN>;
+    exit if ($answer !~ /^[yY]/);
+}
+
+if ( $update_koord  ) {
+    read_gpstool_map_file();
+    read_koord_file($KOORD_FILE);
+}
+
+print "\nDownloading files:\n";
+
+# Ok start getting the maps
+for my $scale ( sort {$b <=> $a} keys %{$desired_locations} ) {
+    print "Scale: $scale\n";
+    for my $lati ( sort {$a <=> $b} keys %{$desired_locations->{$scale}} ) {
+	printf "   %5.2f: ",$lati;
+	my @longs = sort  {$a <=> $b} keys %{$desired_locations->{$scale}->{$lati}};
+	print "(". scalar( @longs ) . ")\t";
+	#print ":". join(" ", @longs ) . "\t";
+	for my $long ( @longs ) {
+	    print wget_map($scale,$lati,$long);
+	}
+	print "\n";
+    }
+#print "\n";
+}
+
+
+print "\n";
+
+print "Fail:  $failcount\n";
+print "Exist: $existcount\n";
+print "New:   $newcount\n";
+
+################################################################################
+#
+# Subroutines
+#
+################################################################################
+
+#############################################################################
+sub slurp($){
+    my $fh=IO::File->new(shift);
+    return "" unless $fh;
+    return join("",$fh->getlines());
+}
+
+#############################################################################
+sub get_gpsd_position(){
+    # Connect to local gpsd
+    my $GPSD = "localhost:2947";
+    my $gpsd = IO::Socket::INET->new($GPSD);
+    my ($lat,$lon) =(0,0);
+    if ( !$gpsd ) {
+	warn "No local gpsd found at $GPSD: $!\n";
+    } else {
+	# Tell gpsd we want position, altitude, date, and status.
+	$gpsd->print("pads\n");
+	$gpsd->print("p\n");
+	while ( my $line = <$gpsd> ) {
+	    debug("GPSD Line: $line");
+	    if ( $line =~ m/P=(-?\d+\.\d+)\s+(-?\d+\.\d+)/){
+		($lat,$lon) =($1,$2);
+		debug("gpsd reports: lat/lon ($lat,$lon)");
+		return ($lat,$lon);
+	    } else {
+		print "GPSD Line: $line";
+		$gpsd->print("pads\n");
+		sleep 1;
+	    }
+	}
+    }
+    $gpsd->close();
+}
+
+#############################################################################
+# get File with lwp-mirror
+#############################################################################
+sub mirror_file($$){
+    my $url            = shift;
+    my $local_filename = shift;
+
+    my $file_existed = -s $local_filename;
+
+    my $exist_string = $file_existed?"exists":"getting";
+    debug("mirror_file($url --> $local_filename) $exist_string");
+
+    my $ok=1;
+
+    my $dir =  dirname($local_filename);
+    unless ( -s $dir || -l $dir ) {
+	debug("Create Directory '$dir'");
+	mkpath($dir)
+	    or warn "Could not create '$dir':$!\n";;
+    }
+
+    my $response = $ua->mirror($url,$local_filename);
+#    debug(sprintf("success = %d <%s>",$response->is_success,$response->status_line));
+    
+    if ( ! $response->is_success ) {
+	if ( $response->status_line =~ /^304/ ) {
+	    print "$url --> $local_filename\tNOT MOD" if $debug ;
+	} else {
+	    print sprintf("ERROR: %s\n",$response->message)
+		if $debug;
+	    print sprintf("STATUS LINE: %s\n",$response->status_line)
+		if $debug;
+	    print "COULD NOT GET\t$url\n\t\tfor --> $local_filename\n";
+	    unlink $local_filename unless $file_existed;
+	    $ok=0;
+	}
+    }    
+    debug("mirror_file($url --> $local_filename) error ")
+	unless $ok;
+    return $ok;
+}
+
+######################################################################
+# Check if $filename is a valid map image
+# for now we only check the size and existance
+######################################################################
+sub is_map_file($){
+    my $filename = shift;
+    my $full_filename = $filename;
+    $full_filename = "$mapdir/$filename" unless $filename =~ m,^/,;
+    if (  $debug ) {
+#	printf "is_map_file($full_filename) -> %d Bytes\n",-s $full_filename;
+    }
+
+    return 1 if ( -s $full_filename || 0  ) > $MIN_MAP_BYTES ;
+
+    return 0 if -s $full_filename;
+
+    # Search in System 
+    $full_filename = "/usr/local/share/gpsdrive/maps/$filename" unless $filename =~ m,^/,;
+    return 1 if ( -s $full_filename || 0  ) > $MIN_MAP_BYTES ;
+
+    $full_filename = "/usr/share/gpsdrive/maps/$filename" unless $filename =~ m,^/,;
+    return 1 if ( -s $full_filename || 0  ) > $MIN_MAP_BYTES ;
+    
+    return 0;
+}
+
+
+######################################################################
+# get a single map
+# Args:
+#     $url
+#     $local_filename
+# Returns:
+#     1 : Success
+#     0 : Failure
+######################################################################
+sub mirror_map($$){
+    my $url = shift;
+    my $filename = shift;
+
+    my $content = slurp($filename);
+    if ( $content =~ m,<title>403 Forbidden</title>,){
+	unlink "$filename";
+	sleep 10; # Yes this is on purpose. SInce you cannot download for the next hours anyway
+	debug($content);
+	die ("Access to the Site $url is denied\n");
+    };
+    my $ok = mirror_file($url,$filename);
+    if ( ! is_map_file($filename) ) {
+	# unlink($filename) if -s $filename;
+	#warn "no map downloaded ($filename)\n";
+	$ok=0;
+    }
+
+    $content = slurp($filename);
+    if ( $content =~ m,<title>(403 .*)</title>,){
+	my $message = $1;
+	$content =~ s,.*<blockquote>,,s;
+	$content =~ s,</blockquote>.*,,s;
+	warn "Found $filename $message Message\n";
+	warn $content;
+	warn "Sleeping very long $long_sleep_time seconds\n";
+	sleep $long_sleep_time;
+	$long_sleep_time*=2;
+    };
+
+    # sleep if polite is turned on to be nice to the webserver of the mapserver
+    sleep($polite) if ($polite =~ /\d+/);
+
+    return $ok;
+}
+
+######################################################################
+# get a single map (Old Version with wget)
+# Args:
+#     $url
+#     $local_filename
+# Returns:
+#     1 : Success
+#     0 : Failure
+######################################################################
+sub mirror2_map($$){
+    my $url = shift;
+    my $filename = shift;
+
+    # sleep if polite is turned on to be nice to the webserver of the mapserver
+    sleep($polite) if ($polite =~ /\d+/);
+    sleep(1) if (!$polite);
+
+    unlink('tmpmap.gif') if -f 'tmpmap.gif';
+    `wget -nd -q -O tmpmap.gif "$url"`;
+    if ( is_map_file('tmpmap.gif') ) {
+	rename('tmpmap.gif',$filename);
+	return 1;
+    }
+    return 0;
+}
+
+
+######################################################################
+# returns the map filename for given $scale,$lati,$long
+######################################################################
+sub map_filename($$$){
+    my ($scale,$lati,$long) = @_;
+    
+    my $filename = "$mapserver/$scale"
+	."/".int($lati)
+#	."/".sprintf("%3.1f",$lati)
+	."/".int($long)
+	."/$FILEPREFIX$scale-$lati-$long.gif";
+    printf("Filename(%.0f,%.5f,%.5f): $filename\n",$scale,$lati,$long)
+	if $debug;
+    return $filename;
+}
+
+######################################################################
+# get a single map at defined position
+######################################################################
+sub wget_map($$$){
+    my ($scale,$lati,$long) = @_;
+
+    my ($url,$mapscale);
+    my $result="?";
+
+#    my $plain_filename = "$FILEPREFIX$scale-$lati-$long.gif";
+    # mapblast/1000/047/047.0232/9/map_1000-047.0232-0009.8140.gif 47.02320 9.81400 1000
+    #my $filename = "$mapserver/$scale/".int($lati)."/".sprintf("%3.1f",$lati).
+    #"/".int($long)."/$FILEPREFIX$scale-$lati-$long.gif";
+    my $filename = map_filename($scale,$lati,$long);
+    
+    if ( $mapserver =~ m/^eniro_(se|dk|no|fi)$/) 
+    {
+	($url,$mapscale)=eniro_url($lati,$long,$scale);
+    } 
+    elsif ( $mapserver eq 'incrementp') 
+    {
+	($url,$mapscale)=incrementp_url($lati,$long,$scale);
+    } 
+    elsif ( $mapserver eq 'gov_au') 
+    {
+	($url,$mapscale)=gov_au_url($lati,$long,$scale);
+    }
+    elsif ( $mapserver eq 'geoscience') 
+    {
+	($url,$mapscale)=geoscience_url($lati,$long,$scale);
+    } 
+    elsif ( $mapserver eq 'landsat') 
+    {
+	($url,$mapscale)=landsat_url($lati,$long,$scale);
+    } 
+    else 
+    {
+	print "Unknown map server :", $mapserver, "\n"; 
+	return "E";
+    }
+    
+    return "E" unless $url;
+
+    my $mirror_filename=$filename;
+    if ( $mapserver eq 'geoscience'){
+	$mirror_filename="MIRROR/$filename";
+	debug("mirror_filename=$mirror_filename");
+    };
+    
+    # create directories if not existent
+    for my $file ( ($filename , $mirror_filename ) ) {
+	my $dir = dirname("$mapdir$file");
+	unless ( -s $dir || -l $dir ) {
+	    debug("Create Directory '$dir'");
+	    mkpath($dir)
+		or warn "Could not create $dir:$!\n";;
+	}
+    }
+
+    
+    if ( is_map_file( $filename ) ) {
+	$result= "_";
+	if ( $update_koord
+	     && !defined $MAP_FILES->{$filename} ) {
+	    append_koords($filename, $lati, $long, $mapscale);
+	    $result= "u";
+	};
+	$existcount++;
+    } else {
+	if ( $simulate_only ) {
+	    $result="S";
+	    $newcount++;
+	} else {
+	    debug("mirror $url");	    
+	    if ( $mapserver eq 'gov_au') {
+		    if ( mirror_map($url,$filename) ) {
+		        $result = gov_au_resize($lati,$long,$scale,5,4,"$mapdir$filename");
+		        append_koords($filename, $lati, $long, $mapscale);
+    		    $result= "+";
+	    	    print "\nWrote $filename\n" if $debug;
+		        $newcount++;
+    		}
+	    } elsif ( mirror_map($url,$mirror_filename) ) {
+		if ( $mapserver eq 'geoscience'){
+		    $result = resize($mapdir.$mirror_filename,$mapdir.$filename);
+		} 
+		append_koords($filename, $lati, $long, $mapscale);
+		$result= "+";
+		print "\nWrote $filename\n" if $debug;
+		$newcount++;
+	    }
+	    else 
+	    {
+		$failcount++;
+		$result= "E";
+	    }
+	}
+   }
+    
+   return $result;
+}
+
+######################################################################
+sub error_check {
+    my $status;
+
+    return 0 if $check_koord_file;
+    return 0 if $check_coverage;
+    return 0 if $TRACK_FILE;
+    if ($cover_route) {
+	my $num = @ARGV;
+	if ($num < 2) {
+	    print "ERROR: You must supply at least two waypoints\n\n";
+	    return 1;
+	} else {
+	    return 0;
+	}
+    }
+
+    # Check for a centerpoint
+    unless (($waypoint) || ($lat && $lon) || ($slat && $endlat && $slon && $endlon)) {
+	print "ERROR: You must supply a waypoint, latitude and longitude coordinates or starting and ending coordinates for both latitude and longitude\n\n";
+	$status++;
+    }
+    
+    # Check for area
+    unless ($area || ($slat && $endlat && $slon && $endlon)) {
+	print "ERROR: You must define an area to cover or starting and ending coordinates for both latitude and longitude\n\n";
+	$status++;
+    }
+    
+    return $status;
+}
+
+######################################################################
+sub get_scales {
+    my ($scale_ref) = @_;
+    # OK lets figure out what scales they want
+    #
+    # '####'  - just that scale
+    # '>####' - scales above and including the number given
+    # '<####' - scales below and including the number given
+    # '####,####,####' - a list of scales to download
+    # '####-####' - scales from first to last
+    # 
+    my @scales_to_get;
+    for my $temp_scale (split /,/, $$scale_ref) {
+	if ($temp_scale =~ /^\d+$/) {
+	    unless (grep (/$temp_scale/, @SCALES)){
+		print STDERR "\n";
+		print STDERR "Wrong scale $temp_scale\n";
+		print STDERR "Allowed scales: ".join(", ", at SCALES)."\n";
+		print STDERR "\n";
+		pod2usage(1);
+	    }
+	    push(@scales_to_get,$temp_scale);
+	} elsif ($temp_scale =~ /^>\d+$/) {
+	    $temp_scale =~ s/>//;
+	    push(@scales_to_get, grep ($_ >= $temp_scale, @SCALES)); 
+	} elsif ($temp_scale =~ /^<\d+$/) {
+	    $temp_scale =~ s/<//;
+	    push(@scales_to_get, grep ($_ <= $temp_scale, @SCALES)); 
+	} elsif ($temp_scale =~  /-/) {
+	    my(@NUMS) = split(/-/,$temp_scale);
+	    @NUMS = sort {$a <=> $b} @NUMS;
+	    push(@scales_to_get, grep (($_ >= $NUMS[0]) && ($_ <= $NUMS[1]), @SCALES));
+	} else {
+	    pod2usage(1);
+	}
+    }
+    return \@scales_to_get;
+} #End get_scales
+
+#############################################################################
+sub eniro_url($$$){
+    my $lati = shift;
+    my $long = shift;
+    my $scale = shift;
+
+    my $mapscale = $scale;
+
+    
+    my $zoom = undef;
+    my $url='';
+
+    my %factor = ( 1 => 18000000, # 480     Km
+		   2 => 3200000,  #  80     Km
+		   3 => 400000,   #  10     Km
+		   4 => 200000,   #   4     Km
+		   5 => 100000,   #   1.1   Km
+		   6 => 20000,    #     400 m
+		   7 => 5000,     #     160 m
+		   );
+    for my $f ( sort keys %factor ) {
+	my $test_scale =  $factor{$f};
+	if ( $debug) {
+#	    print "testing $f: against	$test_scale\n";
+	}
+	if ( $test_scale <= $scale ) {
+	    $zoom = $f;
+	    $mapscale = $test_scale;
+	    last;
+	}
+    }
+    unless ( $zoom ) {
+	print "Error calculating Zommlevel for Scale: $scale\n";
+	return (undef,undef);
+    }
+
+    if ($debug) {
+	printf "Eniro : lat: %.4f lon: %.4f\t",$lati,$long;
+	print "using zoom ", $zoom, " for requested scale ", $scale, ":1 actual scale ", $mapscale, ":1\n";
+    }
+    
+    my ( $eniro_country ) = ($mapserver =~ m/^eniro_(se|dk|no|fi)$/);
+
+
+    if ( $eniro_country eq "dk"
+	 || # Add real restriction for Denmark
+	  ( $lati > 54.67694 ) && ( $lati < 56.71874 ) &&
+	  ( $long >  7.77864 ) && ( $long < 13.40111 )
+	  ) {
+	print "Daenmark ($lati,$long)\n" if $debug;
+	$url  = "http://maps.eniro.$eniro_country/servlets/${eniro_country}_MapImageLocator?profile=Main";
+	$url .= sprintf("&center=%10.4f;%10.4f",($lati*10000),($long*10000));
+	$url .= "&zoomlevel=$zoom";
+	$url .= "&size=1280x1024";
+	$url .= "&symbols=";
+    } else { # Add here restriction for Norway
+	print "Norway ($lati,$long)\n" if $debug;
+	$url  = "http://maps.eniro.$eniro_country/servlets/${eniro_country}_MapImageLocator?profile=Main";
+	$url .= sprintf("&center=%.4f;%.4f",$long,$lati);
+	$url .= "&zoomlevel=$zoom";
+	$url .= "&size=1280x1024";
+	$url .= "&symbols";
+    } 
+    
+    return ($url,$mapscale);
+}
+
+#############################################################################
+sub incrementp_url($$$){
+    my $lati = shift;
+    my $long = shift;
+    my $scale = shift;
+
+    my $mapscale = $scale;
+
+    my $zoom = undef;
+    my $url='';
+    for my $s ( sort keys %{$Scale2Zoom->{incrementp}} ) {
+	next unless $s > $scale;
+	$zoom = $Scale2Zoom->{incrementp}->{$s};
+	$mapscale = $s;
+	last;
+    }
+
+    unless ( $zoom ) {
+	print "Error calculating Zoomlevel for Scale: $scale\n";
+	return (undef,undef);
+    }
+
+    if ($debug) {
+	printf "Incrementp : lat: %.4f lon: %.4f\t",$lati,$long;
+	print "using zoom ", $zoom, " for requested scale ", $scale, ":1 actual scale ", $mapscale, ":1\n";
+    }
+    
+    $url  = "http://mapserv.incrementp.co.jp/cgi-bin/map/mapserv.cgi?";
+
+{
+    my $lat1 = ($lati>0 ? "E" :"W" );
+    $lat1 .= int($lati);
+    $lat1 .= sprintf(".%.0f",($lati-int($lati))/60);
+    
+    my $lon1 = ($lati>0 ? "N" :"S" );
+    $lon1 .= int($long);
+    $lon1 .= sprintf(".%.0f",($long-int($long))/60);
+    #                    MAP=E127.48.26.8N26.19.49.3
+    $url .= sprintf("MAP=%s%s",$lat1,$lon1);
+}
+
+$url .= "&OPT=e0000011";
+$url .= "&ZM=$zoom";
+$url .= "&SZ=1200,1200";
+$url .= "&COL=1";
+
+return ($url,$mapscale);
+}
+
+#############################################################################
+sub gov_au_url($$$){
+    my $lati = shift;
+    my $long = shift;
+    my $scale = shift;
+
+    my $mapscale = $scale;
+    my $zoom     = undef;
+    my $url      = '';
+    for my $s ( sort keys %{$Scale2Zoom->{incrementp}} ) {
+	next unless $s > $scale;
+	$zoom = $Scale2Zoom->{incrementp}->{$s};
+	$mapscale = $s;
+	last;
+    }
+    unless ( $zoom ) {
+	print "Error calculating Zommlevel for Scale: $scale\n";
+	return (undef,undef);
+    }
+
+    $url = "http://www.ga.gov.au/bin/mapserv36?".
+	"map=/public/http/www/docs/map/globalmap/global_36.map".
+	"\&mode=map".
+	"\&layer=outline".
+	"\&layer=waterbodies".
+	"\&layer=capitals".
+	"\&layer=permanentriverslargescale".
+	"\&layer=fluctuatingrivers".
+	"\&layer=dualcarriage".
+	"\&layer=PrimaryPavedRoad".
+	"\&layer=roadsecpav".
+	"\&layer=roadotherpav".
+	"\&mapsize=1000+800";
+
+    # OK I'm too lazy to calculate the real start and end
+    my $fac = 1000000000;
+    my $scale_fac =  ($scale/$fac);
+    my $lat1= $lati - $scale_fac;
+    my $lat2= $lati + $scale_fac;
+    my $lon1= $long - $scale_fac;
+    my $lon2= $long + $scale_fac;
+    $url .= "\&mapext=$lon1+$lat2+$lon2+$lat1";
+	
+	if ($debug) {
+	    printf "Gov_Au : lat: %.4f lon: %.4f\t",$lati,$long;
+	    print "using zoom $zoom for requested scale $scale\n";
+	    print "actual scale $mapscale with scalefac: $scale_fac\n";
+	    print "URL: \n$url\n";
+	};
+    
+    return ($url,$mapscale);
+}
+
+#############################################################################
+sub landsat_url($$$){
+    my $lat   = shift;
+    my $lon   = shift;
+    my $scale = shift;
+ 
+    my $factor = $Scale2Zoom->{'landsat'}->{$scale};
+
+    my $deltalat = 0.0005;
+    my $deltalon = 0.001;   # Gives ratio 1.2 in meter
+
+    my $lon1 = $lon-$deltalon*$factor/2;
+    my $lat1 = $lat-$deltalat*$factor/2;
+    my $lon2 = $lon+$deltalon*$factor/2;
+    my $lat2 = $lat+$deltalat*$factor/2;
+
+    debug( "landsat_url(LAT=$lat,LON=$lon,SCALE=$scale,FACTOR=$factor)");
+
+    debug( "Calculated Lat1  $lat1");
+    debug( "Calculated Lat2  $lat2");
+    debug( "Calculated Lon1 $lon1");
+    debug( "Calculated Lon2 $lon2");
+
+    # Build the URL
+    my $url='';
+    $url .= "http://onearth.jpl.nasa.gov/wms.cgi";
+    $url .= '?request=GetMap';
+    $url .= '&width=1280';
+    $url .= '&height=1024';
+    $url .= '&layers=global_mosaic';
+    $url .= '&styles=';
+    $url .= '&srs=EPSG:4326';
+#    $url .= '&format=image/gif';
+    $url .= '&format=image/jpeg';
+
+    # Add the 4 Coordinates.
+    $url .= '&bbox='; # '15.3,58.35,15.5,58.45';
+    $url .= "$lon1,$lat1,$lon2,$lat2";
+#    $url .= sprintf("%.5f",$lon1).",";
+#    $url .= sprintf("%.5f",$lat1).",";
+#    $url .= sprintf("%.5f",$lon2).",";
+#    $url .= sprintf("%.5f",$lat2);
+
+    return ($url,$scale);
+}
+
+
+#############################################################################
+sub geoscience_url($$$){
+    my $gs_lati = shift;
+    my $gs_long = shift;
+    my $gs_scale = shift;
+ 
+    debug( "geoscience_url(LATI=$gs_lati,LONG=$gs_long,SCALE=$gs_scale)");
+
+    my $url='';
+    my $factor = $Scale2Zoom->{'geoscience'}->{$gs_scale};
+    my $latioffset = 0.6*$factor;
+    my $longoffset = 0.8*$factor;
+    my $lati1 = $gs_lati + $latioffset;
+    my $lati2 = $gs_lati - $latioffset;
+    my $long1 = $gs_long - $longoffset;
+    my $long2 = $gs_long + $longoffset;
+    debug( "Calculated Lat1  $lati1");
+    debug( "Calculated Lat2  $lati2");
+    debug( "Calculated Long1 $long1");
+    debug( "Calculated Long2 $long2");
+
+    # Build the URL
+    $url = "http://www.ga.gov.au/bin/mapserv36"
+	."?map=/public/http/www/docs/map/globalmap/global_36.map";
+    $url .= '&mode=map';
+    # Add the 4 Coordinates.
+    $url .= '&mapext=';
+    $url .= sprintf("%.5f",$long1)."+";
+    $url .= sprintf("%.5f",$lati1)."+";
+    $url .= sprintf("%.5f",$long2)."+";
+    $url .= sprintf("%.5f",$lati2);
+
+    # Add all the different layers
+    $url .= '&layer=outline';
+    $url .= '&layer=waterbodies';
+    $url .= '&layer=capitals';
+    $url .= '&layer=statenames';
+    $url .= '&layer=permanentriverslargescale';
+    $url .= '&layer=fluctuatingrivers';
+    $url .= '&layer=streams';
+    $url .= '&layer=builtup';
+    $url .= '&layer=dualcarriage';
+    $url .= '&layer=PrimaryPavedRoad';
+    $url .= '&layer=PrimaryUnpavedRoad' unless $scale >665924;
+    $url .= '&layer=roadsecpav'         unless $scale >665924;
+    $url .= '&layer=roadsecnotpav'      unless $scale >665924;
+    $url .= '&layer=roadotherpav'       unless $scale >665924;
+    $url .= '&layer=roadothernotpav'    unless $scale >665924;
+    $url .= '&layer=bridge'             unless $scale >665924;
+    $url .= '&layer=railways';
+    $url .= '&layer=railyard'           unless $scale >665924;
+    $url .= '&layer=airports';
+    $url .= '&layer=localities';
+    $url .= '&layer=index250k'          if $debug;       # 250K MapSheet Outlines
+    # Add the map size
+    $url .= "\&mapsize=1000+800";	
+#    $url .= "\&mapsize=1024+820";	
+
+    return ($url,$gs_scale);
+}
+#############################################################################
+# Note: The resize will only work if the image you want to resize has
+# the same aspect ratio as 1280x1024 
+# i.e. 1280/1024=1.25
+#      1000/800=1.25
+#############################################################################
+sub resize($$){
+    my $src_filename = shift;
+    my $dst_filename = shift;
+
+    my $x='';
+    my $image='';
+    
+    debug( "resize( $src_filename --> $dst_filename)" );
+
+    $image = Image::Magick->new;
+    $x = $image->Read($src_filename);
+    if( $x ) {
+        undef $image;
+        warn "\npic_resize($src_filename,$dst_filename) open: $x\n" ;
+        return 0;
+    }
+    $x = $image->Sample(geometry => "1280x1024+10+10");
+    if( $x ) {
+        undef $image;
+        warn "\npic_resize($src_filename,$dst_filename) _resize: $x\n" ;
+        return 0;
+    }
+    $x = $image->Write($dst_filename);
+    if( $x ) {
+        undef $image;
+        warn "\npic_resize($src_filename,$dst_filename)_write: $x\n" ;
+        return 0;
+  }
+  undef $image;
+}
+
+#############################################################################
+# This function only once calculates
+# which lat/lon/scale Combinations are desired to download
+# Args:
+#    $slat,$slon : Start latitude /longitude
+#    $elat,$elon : End   latitude /longitude
+# Returns:
+#     $desired_locations->{$scale}->{$lati}->{$long}='?';
+#############################################################################
+sub desired_locations {
+    my $desired_locations = shift;
+    my ($slat,$slon,$elat,$elon) = @_;
+    my $count;   
+
+    my $local_debug = 0 && $debug;
+
+    my $min_lat=-90;
+    my $max_lat= 90;
+    my $min_lon=-180;
+    my $max_lon= 180;
+    if ( $slat < $min_lat ) { warn ("Starting Latitude  ($slat) set to $min_lat\n"); $slat=$min_lat; };
+    if ( $elat > $max_lat ) { warn ("End      Latitude  ($elat) set to $max_lat\n"); $elat=$max_lat; };
+    if ( $slon < $min_lon ) { warn ("Starting Longitude ($slon) set to $min_lon\n"); $slon=$min_lon; };
+    if ( $elon > $max_lon ) { warn ("End      Longitude ($elon) set to $max_lon\n"); $elon=$max_lon; };
+
+    foreach my $scale ( sort  {$b <=> $a} @{$SCALES_TO_GET_ref} ) {
+	# Setup k
+	my $k = $DIFF * $scale;
+	my $delta_lat = $k - ($k / 2); ### FIX BY CAMEL
+	my $delta_lon = $k - ($k / 6); ### FIX BY CAMEL
+	#TODO: $delta_lon sollte von lat abhaengen
+
+	# make the starting points for the loop $slat and $slon 
+	# snap into a grid with a Size depending on the scale.
+	# The result is $snapped_start_lat and $snapped_start_lon
+	# The grid allows maps in each direction to 
+	# overlapp by 1/$overlap of the size of one map
+	# With snap to grid we would have to download the exact same maps
+	# for slightly different starting points. This way we can 
+	# circumvent downloads of almost completely overlaping maps
+	my $overlap = 1;
+	my $flat =  $delta_lat / $overlap;
+	my $snapped_start_lat = int ( $slat / $flat  ) * $flat;
+	my $flon = $delta_lon / $overlap;
+	my $snapped_start_lon = int ( $slon / $flon ) * $flon;
+
+	print "Scale: $scale\t";
+	printf "  lati: %6.5f(%6.5f) +=%5.5f ... %6.5f\n",
+	$snapped_start_lat,$slat,$delta_lat,$elat;
+
+	my $lati = $snapped_start_lat;
+
+	while (($lati <= $elat) || (!$count)) {
+	    my $long = $snapped_start_lon;
+	    if ( $local_debug ) {
+		printf "        %5.5f:",$lati;
+		printf "\tlong: %6.4f(%6.4f) +=%5.4f ... %6.4f"
+		    ,$snapped_start_lon,$slon,$delta_lon,$elon;
+		printf "\t\t";	
+	    }
+	    while (($long <= $elon) || (!$count)) {
+		$desired_locations->{$scale}->{$lati}->{$long} ||='?';
+
+		if ( $local_debug ) {
+		    my $filename = map_filename($scale,$lati,$long);
+		    my $exist = ( is_map_file($filename) ) ? " ":"+";
+
+		    printf " %6.3f %1s",$long,$exist;
+		}
+		$long += $delta_lon; ### FIX BY CAMEL
+		$count++;
+	    }
+	    print "\n" if $local_debug;
+	    $lati += $delta_lat; ### FIX BY CAMEL
+	    $long = $slon; ### FIX BY CAMEL
+	}
+    }
+}
+
+######################################################################
+# Count the Number of Files to be retrieved
+# Returns: ($existing,$wanted)
+#    $existing : Number of existing maps
+#    $wanted   : Number of maps to be retrieved
+######################################################################
+sub file_count($){
+    my $desired_locations = shift;
+    my $existing=0;
+    my $wanted=0;
+    for my $scale ( keys %{$desired_locations} ) {
+	for my $lat ( keys %{$desired_locations->{$scale}} ) {
+	    for my $lon ( keys %{$desired_locations->{$scale}->{$lat}} ) {
+		my $filename = map_filename($scale,$lat,$lon);
+		if ( is_map_file($filename) ) {
+		    $existing++;
+		} else{
+		    $wanted++;
+		}
+	    }
+	}
+    }
+    return($existing,$wanted);
+} #end file_count
+
+######################################################################
+sub get_waypoint($) {
+    my $waypoint = shift;
+    
+    # If they give just a filename, we should assume they meant the CONFIG_DIR
+    $WAYPT_FILE = "$CONFIG_DIR/$WAYPT_FILE" unless ($WAYPT_FILE =~ /\//);
+    
+    open(WAYPT,"$WAYPT_FILE") || die "ERROR: get_waypoint Can't open: $WAYPT_FILE: $!\n";
+    my ($name,$lat,$lon);
+    while (<WAYPT>) {
+	chomp;
+	next unless (/$waypoint/);
+	($name,$lat,$lon) = split(/\s+/);
+    }
+    close(WAYPT);
+    unless (($lat) && ($lon)) {
+	print "Unable to find waypoint '$waypoint' in '$WAYPT_FILE'\n";
+	exit;
+    }
+    return($lat,$lon);
+} #End get_waypoint
+
+
+######################################################################
+# Read the config File (~/.gpsdrive/gpsdriverc) 
+# and return all Config Keys as a Hash reference
+sub read_config {
+    # If they give just a filename, we should assume they meant the CONFIG_DIR
+    $CONFIG_FILE = "$CONFIG_DIR/$CONFIG_FILE" unless ($CONFIG_FILE =~ /\//);
+    
+    # If not specified on the command line, we read from the config file
+    open(CONFIG,"$CONFIG_FILE") || die "ERROR: get_unit Can't open $CONFIG_FILE: $!\n";
+
+    my $cfg =  {};
+    while (my $line = <CONFIG>) {
+	chomp $line;
+	my ($key,$val) = split(/\s*=\s*/,$line);
+	$cfg->{lc($key)} = $val
+	    if $key;
+    }   
+    close(CONFIG);
+    return $cfg;
+} #End read_config
+
+######################################################################
+sub get_coords {
+    my ($lat,$lon,$area,$unit) = @_;
+    
+    # Figure out if we are doing square area or a rectangle
+    my ($lat_dist,$lon_dist);
+    if ($area =~ /x/i) {
+	($lat_dist,$lon_dist) = split(/x/i,$area);
+    } else {
+	$lat_dist = $area;
+	$lon_dist = $area;
+    }
+    print "Latitude distance: $lat_dist, Longitude distance: $lon_dist\n" if ($debug); 
+    
+    my $lon_dist_km = calc_lon_dist($lat);
+    my $lat_offset  = calc_offset($unit,$lat_dist,\$LAT_DIST_KM);
+    my $lon_offset  = calc_offset($unit,$lon_dist,\$lon_dist_km);   
+    
+#    print "LAT_OFFSET = $$lat_offset LON_OFFSET = $$lon_offset \n" if ($debug);
+    
+    # Ok subtract the offset for the start point
+    my $slat = $lat - $lat_offset;
+    my $slon = $lon - $lon_offset;
+
+    # Ok add the offset for the start point
+    my $elat = $lat + $lat_offset;   
+    my $elon = $lon + $lon_offset;   
+    
+    return ($slat,$slon,$elat,$elon);
+} #End get_coords
+
+######################################################################
+sub calc_offset {
+    my($unit,$area,$dist_per_degree) = @_;
+    # Adjust the dist_per_degree for the unit chosen by the user
+    if ($unit =~ /miles/) {
+	$$dist_per_degree *= $KM2MILES;   
+    } elsif ($unit =~ /nautic/) {
+	$$dist_per_degree *= $KM2NAUTICAL;
+    }
+    
+    # The offset for the coordinate is the distance to travel divided by 
+    # the dist per degree   
+    my $offset = sprintf("%.7f", ($area / 2) / $$dist_per_degree);
+    
+    #print "-\n".Dumper($area,\$dist_per_degree,$offset);
+    return($offset);
+} #End calc_offset
+
+######################################################################
+# Opens a track file and returns two identically sized arrays,
+# one that contains the latitudes and other that contains the
+# longitudes.
+######################################################################
+sub get_coords_for_track($) {
+    my $filename = shift;
+
+    my @lats;
+    my @lons;
+    print "Opening Track file: $filename\n" if $debug;
+    my $fh = IO::File->new("<$filename");
+    $fh or die("Error: $!");
+
+    my ($la, $lo, $oldla, $oldlo, $line, $delta_la, $delta_lo, $rest);
+    my ($step_la, $step_lo, $ste_la, $ste_lo);
+
+    my $max_lat= 180;
+    my $max_lon= 90;
+
+    $oldla = 0;
+    $oldlo = 0;
+    $step_la = ($DIFF * $scale) - ($DIFF * $scale) / 2;
+    $step_lo = ($DIFF * $scale) - ($DIFF * $scale) / 1.5;
+
+    # loop through each line of the track file
+    while ($line = $fh->getline()) {
+        $line =~ s/^\s+//;
+	chomp $line;
+        ($la,$lo,$rest) = split(/\s+/, $line, 3);
+
+		# Disallow blank lines, as gpsreplay uses them. Also disallow
+		# blank (undefined) fields in case of other possible
+		# wierdnesses.
+
+		next if (!defined($lo));
+		next if (!defined($la));
+
+		debug("pre-regex:  ($la|$lo|$rest)");
+		# Now a regex (applied to both lat & long) to drop cruft like
+		# leading text or trailing commas. Skip over anything that is
+		# not a digit, minus sign or decimal point. Then extract
+		# either an optional minus sign, one or more digits, a decimal
+		# point, 0 or more digits, or an optional minus sign, a
+		# decimal point and one or more digits. Ignore the rest.
+		$la =~ s/([^\d\-\.]*)(\-?\d+\.?\d*|-?\.\d+)(.*)/$2/o;
+		$lo =~ s/([^\d\-\.]*)(\-?\d+\.?\d*|-?\.\d+)(.*)/$2/o;
+		debug("post-regex: ($la|$lo|$rest)");
+		next if ( $la == 1001 ) && ( $lo == 1001) ;
+		if ((($la != $oldla) || ($lo != $oldlo)) && ($la < $max_lat) && ($lo < $max_lon)) {
+			$delta_la = abs($la - $oldla);
+			$delta_lo = abs($lo - $oldlo);
+			if (($delta_la > $step_la) || ($delta_lo > $step_lo)) {
+				push(@lats, $la);
+				push(@lons, $lo);
+				$oldla = $la;
+				$oldlo = $lo;
+			}
+		}
+	}
+
+    # Close the file and release lock or die.
+    $fh->close() or die("Error: $!");    
+    return (\@lats, \@lons);
+} # end get_coords_for_track
+
+######################################################################
+# Creates a track between given waypoints. Returns two identically 
+# sized arrays, one that contains the latitudes and other that 
+# contains the longitudes.
+######################################################################
+sub get_coords_for_route {
+    my @lats;
+    my @lons;
+    my @waypoints = @ARGV;
+    foreach $waypoint (@waypoints) {
+        # check if all given waypoints exist
+        &get_waypoint($waypoint);
+    }    
+
+    my (@start, @end, @delta, @steps);
+    my ($la, $lo, $i, $j);
+
+    my $step_la = ($DIFF * $scale) - ($DIFF * $scale) / 2;
+    my $step_lo = ($DIFF * $scale) - ($DIFF * $scale) / 1.5;
+
+    while (@waypoints > 1) {
+        # download maps for each etap
+        print("$waypoints[0] - $waypoints[1]\n");
+        @start = &get_waypoint($waypoints[0]);
+        @end = &get_waypoint($waypoints[1]);
+        shift(@waypoints);
+
+        $delta[0] = $start[0] - $end[0];
+        $delta[1] = $start[1] - $end[1];
+        $steps[0] = $delta[0] / $step_la;
+        $steps[1] = $delta[1] / $step_lo;
+        if ($steps[0] > $steps[1]) {
+            $i = abs(ceil($steps[0]));
+        } else {
+            $i = abs(ceil($steps[1]));
+        }
+        for ($j=1; $j<=$i; $j++) {
+            $la = $start[0] - ($delta[0] / $i)*$j;
+            $lo = $start[1] - ($delta[1] / $i)*$j;
+	    push(@lats, $la);
+	    push(@lons, $lo);
+        }
+    }
+    return (\@lats, \@lons);
+} #End get_coords_for_track
+
+
+######################################################################
+# Return KM/degree for this latitude
+######################################################################
+sub calc_lon_dist {
+    my $lat = shift;
+
+    my $PI  = 3.141592654;
+    my $dr = $PI / 180;
+    
+    # calculate the circumference of the small circle at latitude 
+    my $cos = cos($lat * $dr); # convert degrees to radians
+    my $circ_km = sprintf("%.2f",($PI * 2 * $RADIUS_KM * $cos));
+    
+    # divide that by 360 and you have kilometers per degree
+    my $km_deg = sprintf("%.2f",($circ_km / 360));
+    
+    return ($km_deg);
+} #End calc_longitude_dist
+
+######################################################################
+# Check if Map-image is valid and append one Entry to the map_koord File
+# Returns:
+#  A for Appended
+#  E for Error
+######################################################################
+sub append_koords($$$$) {
+    my $filename = shift;
+    my $lati     = shift;
+    my $long     = shift;
+    my $mapscale = shift;
+
+    # eliminate map_Directory prefix
+    $filename =~ s,^$mapdir,,;
+
+    die "Missing Params to append_koords($filename,$lati,$long,$mapscale)\n"
+	unless $filename && defined($lati) && defined($long) && $mapscale;
+
+
+    if ( is_map_file($filename) ) {
+	# print "$filename $lati $long $mapscale\n";
+    } elsif ( ! -s "$mapdir/$filename" ) {
+	print "Fehler $filename leer/existiert nicht\n";
+	return 'E';
+    } else {
+	print "Fehler $filename ist kein mapfile\n";
+	return 'E';
+    }
+
+    if ( ! defined $MAP_FILES->{$filename} ) {
+	debug("Appending $filename,$lati, $long, $mapscale to $KOORD_FILE");
+	open(KOORD,">>$KOORD_FILE") || die "ERROR: append_koords can't open: $KOORD_FILE: $!\n"; 
+	printf KOORD "$filename %17.13f %17.13f %17d\n",$lati, $long, $mapscale;
+	close KOORD;
+	$MAP_FILES->{$filename} = "$lati, $long, $mapscale";
+	$MAP_KOORDS->{$mapscale}->{$lati}->{$long} = 1;
+    }
+
+    if ( -s $GPSTOOL_MAP_FILE ) {
+	if ( ! defined $GPSTOOL_MAP_FILES->{$filename} ) {
+	    open(KOORD,">>$GPSTOOL_MAP_FILE") || 
+		die "ERROR: append_koords can't open: $GPSTOOL_MAP_FILE: $!\n"; 
+	    printf KOORD "$mapdir/$filename %17.13f %17.13f %4d 1280 1024\n",$lati, $long, $mapscale;
+	    close KOORD;
+	    $GPSTOOL_MAP_FILES->{$filename} = "$lati, $long, $mapscale";
+	    $GPSTOOL_MAP_KOORDS->{$mapscale}->{$lati}->{$long} = 1;
+	}
+    }
+    
+    return 'A';
+} # End  append_koords
+
+
+#############################################################################
+# Read actual Koordinate File and memorize in $MAP_KOORDS and $MAP_FILES
+sub read_koord_file($) {
+    my $koord_file = shift;
+
+    $MAP_FILES={};
+
+    my $s_time=time();
+    unless ( -s $koord_file ) {
+	warn "ERROR: read_koord_file sees empty file '$koord_file'\n";
+	return;
+    };
+    print "reading $koord_file\n";
+    open(KOORD,"<$koord_file") || die "ERROR: read_kooord_file can't open: $koord_file: $!\n"; 
+    my $anz_files = 0;
+    while ( my $line = <KOORD> ) {
+	my ($filename ,$lati, $long, $mapscale);
+	($filename ,$lati, $long, $mapscale) = split( /\s+/ , $line );
+	if ( is_map_file( $filename ) ) {
+	    $MAP_KOORDS->{$mapscale}->{$lati}->{$long} = 1;
+	    $MAP_FILES->{$filename} = "$lati, $long, $mapscale";
+	    $anz_files ++;
+	} else {
+	    warn "ERROR: read_koord_file is missing File $filename\n";
+	};
+    }
+    close KOORD;
+    my $r_time = time()-$s_time;
+    print "$koord_file read $anz_files in $r_time sec.\n";
+    
+}
+
+#############################################################################
+# Read actual Koordinate File and memorize in $GPSTOOL_MAP_KOORDS and $GPSTOOL_MAP_FILES
+sub read_gpstool_map_file() {
+    my $koord_file = $GPSTOOL_MAP_FILE;
+    my $s_time=time();
+    return unless -s $koord_file;
+    print "reading $koord_file\n";
+    open(KOORD,"<$koord_file") || die "ERROR: read_gpstool_map_file can't open: $koord_file: $!\n"; 
+    my $anz_files = 0;
+    while ( my $line = <KOORD> ) {
+	my ($filename ,$lati, $long, $mapscale);
+	($filename ,$lati, $long, $mapscale) = split( /\s+/ , $line );
+	if ( is_map_file( $filename) ) {
+	    $GPSTOOL_MAP_KOORDS->{$mapscale}->{$lati}->{$long} = 1;
+	    $GPSTOOL_MAP_FILES->{$filename} = "$lati, $long, $mapscale";
+	    $anz_files ++;
+	}
+    }
+    close KOORD;
+    my $r_time = time()-$s_time;
+    print "$koord_file read $anz_files in $r_time sec.\n";
+    
+}
+
+#############################################################################
+# Read actual Koordinate File (gpstool)
+# and check if all Files it references are existing
+sub check_koord_file($) {
+    my $koord_file = shift;
+    # Change into the gpsdrive maps directory 
+
+    print "Checking all entries in $koord_file\n" if $debug;
+    $MAP_FILES={};
+    my $anz_files = 0;
+    my $missing_files =0;
+    if ( -s $koord_file ) {
+	open(KOORD,"<$koord_file") || die "ERROR: check_koord_file can't open: $koord_file: $!\n";
+	while ( my $line = <KOORD> ) {
+	    my ($filename ,$lati, $long, $mapscale);
+	    ($filename ,$lati, $long, $mapscale) = split( /\s+/ , $line );
+	    my $full_filename = "$CONFIG_DIR/maps/$filename";
+
+#	debug("Checking ($filename ,$lati, $long, $mapscale)");
+
+	    if ( !is_map_file( $full_filename ) ) {
+		print "ERROR: File $full_filename not found\n";
+		$missing_files ++;
+	    } else {
+		debug("OK:    File $full_filename found");
+		$MAP_KOORDS->{$mapscale}->{$lati}->{$long} = 1;
+		if ( $MAP_FILES->{$filename} ) {
+		    print "ERROR: Duplicate File $full_filename found\n";
+		};
+		$MAP_FILES->{$filename} = "$lati, $long, $mapscale";
+		$anz_files ++;
+	    }
+	}
+	close KOORD;
+	print "Good files: $anz_files\n";
+    }
+    if ( $missing_files ) {
+	print "Missing Files: $missing_files\n";
+	open(KOORD,">$koord_file.new") || die "Can't open: $koord_file.new: $!\n"; 
+	foreach my $map_filename ( keys  %$MAP_FILES )  {
+	    printf KOORD "$map_filename	%s\n", $MAP_FILES->{$map_filename};
+	}
+	close KOORD;
+	print "wrote $koord_file.new\n";
+    }
+}
+
+
+###########################################################################
+# Update Maps found in Filesystem which cannot be found in map_koords.txt
+###########################################################################
+use File::Find;
+sub update_file_in_map_koords(); # {} 
+sub update_gpsdrive_map_koord_file(){
+    print "\n";
+    print "\n";
+    print "Check, if Files in Filesystem can be added to map_koord.txt\n";
+
+    debug("Searching for Files in '$mapdir'");
+    find(
+     { wanted       => \&update_file_in_map_koords,
+       follow_skip  => 2,
+       follow       => 1 
+       },
+	 $mapdir, );
+}
+
+sub update_file_in_map_koords(){
+    my $filename = $File::Find::name;
+    return if -d $filename;
+    return unless  $filename =~ m/\.gif$/;
+    my $short_filename = $filename;
+    $short_filename =~ s,$mapdir,,;
+#    debug("Check File: $short_filename");
+    if ( $MAP_FILES->{$filename} ||
+	 $MAP_FILES->{$short_filename} ) {
+#	print "OK       $filename\n";
+    }
+    else {
+	#mapblast/1000/047/047.0232/9/map_1000-047.0232-0009.8140.gif 47.02320 9.81400 1000
+	if ( $filename =~ m/map_(\d+)-(\d+\.\d+)-(\d+\.\d+)\.gif/ ) {
+	    my $scale=$1;
+	    my $lati=$2;
+	    my $long=$3;
+#	    my ($url,$mapscale)=expedia_url($lati,$long,$scale);
+        for my $s (sort keys %{$Scale2Zoom->{$mapserver}} ) {
+            next unless $s == $scale;
+            $scale = $s;
+            last;
+        }
+#	    print "Appending File: $filename\n";
+	    append_koords($short_filename, $lati, $long, $scale);
+	    debug("File:$filename lat:$lati lon:$long");
+	}
+
+    }
+}
+
+
+######################################################################
+# See which area the maps cover
+######################################################################
+sub check_coverage($){
+    my $koord_file = shift;
+    read_koord_file($koord_file);
+    my @scales= sort  {$b <=> $a} keys %{$MAP_KOORDS};
+
+    for my $scale ( @scales ) {
+	print "$scale:\n";;
+	
+	my @all_lons;
+	my %all_lons;
+	my @lats = sort {$a <=> $b} keys %{$MAP_KOORDS->{$scale}};
+	for my $lat ( @lats ) {
+	    my @lons = keys %{$MAP_KOORDS->{$scale}->{$lat}};
+	    for my $lon ( @lons ) {
+		push (@all_lons, $lon)
+		    unless $all_lons{$lon}++;
+	    }
+	}
+
+	my $first_lon = $all_lons[0];
+	my $last_lon = $all_lons[-1];
+
+	print "lon: ($first_lon - $last_lon))\n";
+	print "lat: (desiredDistance, minDistance - maxDistance) Km\n";
+
+	for my $lat ( @lats ) {
+	    printf "   %7.4f: ", $lat;
+	    my @lons = sort {$a <=> $b} keys %{$MAP_KOORDS->{$scale}->{$lat}};
+	    my %lons;
+	    map { $lons{$_}++ }  @lons;
+
+
+	    # Find out which is the desired Distance
+	    my $lon_dist_km = calc_lon_dist($lat);
+	    my $k = $DIFF * $scale;    
+	    my $delta_lat = $k - ($k / 2); my $dlat = $delta_lat * $LAT_DIST_KM;
+	    my $delta_lon = $k - ($k / 6); my $dlon = $delta_lon * $lon_dist_km;
+	    
+	    # Find Min and Max Distance between 2 Maps
+	    my $min_dist= $RADIUS_KM;
+	    my $max_dist=0;
+	    my $count_overlaps=0;
+	    my $prev_lon;
+	    my %gap;
+	    my %overlap;
+	    for my $lon (  sort {$a <=> $b} @all_lons ) {
+		if ( defined $prev_lon ) {
+		    my $dist = abs($lon - $prev_lon) * $lon_dist_km;
+		    if(  $dist < ($dlon * 0.9)) {
+			$overlap{$lon}++;
+			$count_overlaps++;
+		    }
+
+		    $gap{$lon}=$dist /$dlon if $dist > ($dlon * 1.2);
+		    $min_dist = $dist if $dist < $min_dist;
+		    $max_dist = $dist if $dist > $max_dist;
+		}
+		#print "Dist: ( $min_dist - $max_dist) Km ($prev_lon => $lon = ".($prev_lon -$lon).")\n";
+		$prev_lon = $lon;
+	    };
+	    
+	    printf " (%.2f,%.2f - %.2f) Km\t",$dlon,$min_dist,$max_dist;
+	    printf " %d Overlaps\t",$count_overlaps if $count_overlaps;
+	    #*= $LAT_DIST_KM;
+	    
+
+
+	    # Print +/- for existing/non-existing Map
+	    for my $lon ( @all_lons ) {
+#		printf "%7.4f ", $lon;
+		# Print Number of Tiles missing(gap) between last(left) map and this one
+		printf " -%.0f ",$gap{$lon} if $gap{$lon};
+
+		if ( $lons{$lon} ) {
+		    if ( $overlap{$lon} ) {
+			print "o";
+		    } else {
+			print "+";
+		    }
+		} else {
+		    print "-";
+		}
+	    }
+	    print "\n";
+	}
+	print "\n";
+    }
+    print "\n";
+}
+
+#############################################################################
+# Debug
+#############################################################################
+sub debug($){
+    my $msg = shift;
+    return unless $debug;
+    print STDERR "DEBUG: $msg\n";
+}
+
+#################################################################################
+
+__END__
+
+=head1 NAME
+
+B<gpsfetchmap> Version 1.04
+
+=head1 DESCRIPTION
+
+B<gpsfetchmap> is a program to download maps from a mapserver for use with gpsdrive. 
+
+=head1 SYNOPSIS
+
+B<Common usages:>
+
+gpsfetchmap -w <WAYPOINT NAME> -sc <SCALE> -a <#> -p
+
+gpsfetchmap -la <latitude MM.DDDD> -lo <latitude MM.DDDD> -sc <SCALE> -a <#> -p
+
+gpsfetchmap -sla <start latitude MM.DDDD> -endla <end latitude MM.DDDD> -slo <start longitude MM.DDDD> -endlo <end longitude MM.DDDD> -sc <SCALE> -a <#> -p
+
+gpsfetchmap -sc <SCALE> -a <#> -r <WAYPOINT 1> <WAYPOINT 2> ... <WAYPOINT n> -p
+
+B<All options:>
+
+gpsfetchmap [-w <WAYPOINT NAME>]
+            [-la <latitude DD.MMMM>] [-lo <longitude DD.MMMM>] 
+            [-sla <start latitude DD.MMMM>] [-endla <end latitude DD.MMMM>]
+            [-slo <start longitude DD.MMMM>] [-endlo <end longitude DD.MMMM>]
+            [-sc <SCALE>] [-a <#>] [-p] [-m <MAPSERVER>]
+            [-u <UNIT>] [-md <DIR>] [-W <FILE>] [-t <FILE>] [-r]
+            [-C <FILE>] [-P <PREFIX>] [-F] [-d] [-v] [-h] [-M] [-n] [-U] [-c]
+
+=head1 OPTIONS
+
+=over 8
+
+=item B<-w, --waypoint <WAYPOINT NAME>>
+   
+Takes a waypoint name and uses the latitude and longitude for that waypoint as
+the centerpoint of the area to be covered. Waypoints are read from 'way.txt', 
+or file defined by '-W'. 
+the special name gpsd asks your local gpsd where your gps thinks you are and uses 
+this point as center.
+This, '-la' and '-lo', '-sla', '-ela', '-slo' and '-elo' or '-a' is required. 
+A special name is gpsd this waypoint asks your gps where you currently are.
+
+=item B<-la,  --lat <latitude DD.MMMM>>
+
+Takes a latitude in format DD.MMMM and uses that as the latitude for the centerpoint of the area
+to be covered. Will be overriden by the latitude of waypoint if '-w' is used. This and '-lo', '-w' or '-sla', '-ela', '-slo', '-elo' is required.
+
+=item B<-lo, --lon <longitude DD.MMMM>>
+
+Takes a longitude in format DD.MMMM and uses that as the longitude for the centerpoint of the area
+to be covered. Will be overriden by the longitude of waypoint if '-w' is used. This and '-la', '-w' or '-sla', '-ela', '-slo', '-elo' is required.
+
+=item B<-sla --start-lat <start latitude DD.MMMM>>
+
+Takes a latitude in format DD.MMMM and uses that as the start latitude for the area to be covered. Will override '-la' and '-lo' but will be overriden by '-w'. This, '-ela', '-slo' and '-elo' or '-w' or '-la' and '-lo' is required.
+
+=item B<-ela --end-lat <end latitude DD.MMMM>>
+
+Takes a latitude in format DD.MMMM and uses that as the end latitude for the area to be covered. Will override '-la' and '-lo' but will be overriden by '-w'. 
+This, '-sla', '-slo' and '-elo' or '-w' or '-la' and '-lo' is required.
+
+=item B<-slo --start-lon <start longitude DD.MMMM>>
+
+Takes a longitude in format DD.MMMM and uses that as the start longitude for the area to be covered. Will override '-la' and '-lo' but will be overriden by '-w'. This, '-sla', '-ela' and '-elo' or '-w' or '-la' and '-lo' is required.
+
+=item B<-elo --end-lon <end longitude DD.MMMM>>
+
+Takes a longitude in format DD.MMMM and uses that as the end longitude for the area to be covered. Will override '-la' and '-lo' but will be overriden by '-w'. This, '-sla', '-ela' and '-slo' or '-w' or '-la' and '-lo' is required.
+
+=item B<-sc, --scale <SCALE>>
+
+Scales of map(s) to download. Default: 50000.
+
+Formats:
+
+   '####'
+   - Just this scale.   
+
+   '####,####,####'  
+   - All scales in the list. May be combined with other formats.
+
+   '>####'          
+   - All scales above and including the number given.
+
+   '<####'           
+   - All scales below and including the number given.
+
+   '####-####'       
+   - All scales from first to last number given.
+
+=item B<-a, --area <#>>
+
+Area to cover. # of 'units' size square around the centerpoint. You can use a single number
+for square area. Or you can use '#x#' to do a rectangle, where the first number is distance
+latitude and the second number is distance of longitude. 'units' is read from the configuration 
+file (-C) or as defined by (-u).
+
+=item B<-p, --polite>
+
+This causes the program to sleep one second between downloads to be polite to the mapserver. 
+Takes an optional value of number of seconds to sleep.
+
+=item B<--mapserver <MAPSERVER>>
+
+Mapserver to download from. Default: 'landsat'.
+Currently can use: landsat
+
+geoscience, gov_au, incrementp and eniro have download stubs, 
+but they are !!!NOT!!!! in the right scale.
+
+
+geoscience
+
+landsat covers the whole world with satelite Photos
+
+gov_au is for Australia
+
+incrementp for japanese Maps
+
+eniro covers:
+ eniro_se Sweden
+ eniro_dk Denmark
+ eniro_no Norway 
+ eniro_fi Finnland
+
+Overview of Area covered by eniro_fi:
+ http://maps.eniro.com/servlets/fi_MapImageLocator?profile=Main&center=26.;62.&zoomlevel=1&size=800x600
+
+
+=item B<-u, --unit <UNIT>>
+
+The measurement system to use. Default is read from configuration file <-C>. Possibles are: 
+miles, nautical, kilometers.
+
+=item B<--mapdir <DIR>>
+
+Override the configfiles mapdir with this value.
+
+=item B<-W, --WAYPOINT <FILE>>
+
+File to read waypoints from. Default: '~/.gpsdrive/way.txt'. 
+
+=item B<-t, --track <FILE>>
+
+Download maps that are along a saved track. File is a standard track filed saved from GpsDrive.
+
+=item B<-r, --route>
+
+Download maps that are along a route defined by waypoints. You must give a list of waypoints as parameters separated with space.
+
+=item B<-C, --CONFIG>
+
+File to read for GPSDrive configuration information. Default: '~/.gpsdrive/gpsdriverc'.
+
+=item B<-P, --PREFIX <PREFIX>>
+
+Takes a prefix string to be used as the start of all saved map files. Default: "map_".
+
+=item B<-F, --FORCE>
+
+Force program to download maps without asking you to confirm the download.
+
+=item B<-n>
+
+Dont download anything only tell which maps are missing
+
+=item B<-U>
+
+read map_koord.txt file at Start. Then also check for not downloaded map_*.gif Files 
+if they need to be appended to map_koords.txt. 
+
+=item B<--check-koordfile>
+
+Update map_koord.txt: search map Tree if map_*.gif file exist, but cannot
+be found in map_koords.txt file. This option first reads the 
+map_koord.txt file and checks every Map in the filesystem if it also is 
+found in the map_koord.txt file.
+If not found it is appended into the map_koord.txt file.
+
+Check map_koord.txt File. This option checks, if every Map also exist
+If any Map-File is missing, a file map_koord.txt.new will be created. 
+This file can be copied to the original file if checked.
+
+=item B<--check-coverage>
+
+See which areas the maps cover.
+Output is simple ASCII Art
+
+=item B<--PROXY>
+
+Set proxy for mirroring image Files
+
+=item B<-d, --debug>
+
+Prints debugging information.
+
+=item B<-v, --version>
+
+Prints version information and exits.
+
+=item B<--help -h -x>
+
+Prints the usage page and exits.
+
+=item B<--MAN -M>
+
+Prints the manual page and exits.
+
+=item B<Download>
+
+When downloading Maps the output reads as folows:
+
+
+ _ Map already exists in Filesystem
+ E Error while downloading Map
+ + Map got downloaded 
+ u updated map_koords.txt File
+ S Simulate only 
+
+=back
+
+=cut
+


Property changes on: packages/gpsdrive/trunk/debian/scripts/gpsfetchmap.pl
___________________________________________________________________
Name: svn:executable
   + *




More information about the Pkg-grass-devel mailing list