head 1.3; access; symbols pkgsrc-2019Q2:1.2.0.68 pkgsrc-2019Q2-base:1.2 pkgsrc-2019Q1:1.2.0.66 pkgsrc-2019Q1-base:1.2 pkgsrc-2018Q4:1.2.0.64 pkgsrc-2018Q4-base:1.2 pkgsrc-2018Q3:1.2.0.62 pkgsrc-2018Q3-base:1.2 pkgsrc-2018Q2:1.2.0.60 pkgsrc-2018Q2-base:1.2 pkgsrc-2018Q1:1.2.0.58 pkgsrc-2018Q1-base:1.2 pkgsrc-2017Q4:1.2.0.56 pkgsrc-2017Q4-base:1.2 pkgsrc-2017Q3:1.2.0.54 pkgsrc-2017Q3-base:1.2 pkgsrc-2017Q2:1.2.0.50 pkgsrc-2017Q2-base:1.2 pkgsrc-2017Q1:1.2.0.48 pkgsrc-2017Q1-base:1.2 pkgsrc-2016Q4:1.2.0.46 pkgsrc-2016Q4-base:1.2 pkgsrc-2016Q3:1.2.0.44 pkgsrc-2016Q3-base:1.2 pkgsrc-2016Q2:1.2.0.42 pkgsrc-2016Q2-base:1.2 pkgsrc-2016Q1:1.2.0.40 pkgsrc-2016Q1-base:1.2 pkgsrc-2015Q4:1.2.0.38 pkgsrc-2015Q4-base:1.2 pkgsrc-2015Q3:1.2.0.36 pkgsrc-2015Q3-base:1.2 pkgsrc-2015Q2:1.2.0.34 pkgsrc-2015Q2-base:1.2 pkgsrc-2015Q1:1.2.0.32 pkgsrc-2015Q1-base:1.2 pkgsrc-2014Q4:1.2.0.30 pkgsrc-2014Q4-base:1.2 pkgsrc-2014Q3:1.2.0.28 pkgsrc-2014Q3-base:1.2 pkgsrc-2014Q2:1.2.0.26 pkgsrc-2014Q2-base:1.2 pkgsrc-2014Q1:1.2.0.24 pkgsrc-2014Q1-base:1.2 pkgsrc-2013Q4:1.2.0.22 pkgsrc-2013Q4-base:1.2 pkgsrc-2013Q3:1.2.0.20 pkgsrc-2013Q3-base:1.2 pkgsrc-2013Q2:1.2.0.18 pkgsrc-2013Q2-base:1.2 pkgsrc-2013Q1:1.2.0.16 pkgsrc-2013Q1-base:1.2 pkgsrc-2012Q4:1.2.0.14 pkgsrc-2012Q4-base:1.2 pkgsrc-2012Q3:1.2.0.12 pkgsrc-2012Q3-base:1.2 pkgsrc-2012Q2:1.2.0.10 pkgsrc-2012Q2-base:1.2 pkgsrc-2012Q1:1.2.0.8 pkgsrc-2012Q1-base:1.2 pkgsrc-2011Q4:1.2.0.6 pkgsrc-2011Q4-base:1.2 pkgsrc-2011Q3:1.2.0.4 pkgsrc-2011Q3-base:1.2 pkgsrc-2011Q2:1.2.0.2 pkgsrc-2011Q2-base:1.2 pkgsrc-2011Q1:1.1.1.1.0.58 pkgsrc-2011Q1-base:1.1.1.1 pkgsrc-2010Q4:1.1.1.1.0.56 pkgsrc-2010Q4-base:1.1.1.1 pkgsrc-2010Q3:1.1.1.1.0.54 pkgsrc-2010Q3-base:1.1.1.1 pkgsrc-2010Q2:1.1.1.1.0.52 pkgsrc-2010Q2-base:1.1.1.1 pkgsrc-2010Q1:1.1.1.1.0.50 pkgsrc-2010Q1-base:1.1.1.1 pkgsrc-2009Q4:1.1.1.1.0.48 pkgsrc-2009Q4-base:1.1.1.1 pkgsrc-2009Q3:1.1.1.1.0.46 pkgsrc-2009Q3-base:1.1.1.1 pkgsrc-2009Q2:1.1.1.1.0.44 pkgsrc-2009Q2-base:1.1.1.1 pkgsrc-2009Q1:1.1.1.1.0.42 pkgsrc-2009Q1-base:1.1.1.1 pkgsrc-2008Q4:1.1.1.1.0.40 pkgsrc-2008Q4-base:1.1.1.1 pkgsrc-2008Q3:1.1.1.1.0.38 pkgsrc-2008Q3-base:1.1.1.1 cube-native-xorg:1.1.1.1.0.36 cube-native-xorg-base:1.1.1.1 pkgsrc-2008Q2:1.1.1.1.0.34 pkgsrc-2008Q2-base:1.1.1.1 cwrapper:1.1.1.1.0.32 pkgsrc-2008Q1:1.1.1.1.0.30 pkgsrc-2008Q1-base:1.1.1.1 pkgsrc-2007Q4:1.1.1.1.0.28 pkgsrc-2007Q4-base:1.1.1.1 pkgsrc-2007Q3:1.1.1.1.0.26 pkgsrc-2007Q3-base:1.1.1.1 pkgsrc-2007Q2:1.1.1.1.0.24 pkgsrc-2007Q2-base:1.1.1.1 pkgsrc-2007Q1:1.1.1.1.0.22 pkgsrc-2007Q1-base:1.1.1.1 pkgsrc-2006Q4:1.1.1.1.0.20 pkgsrc-2006Q4-base:1.1.1.1 pkgsrc-2006Q3:1.1.1.1.0.18 pkgsrc-2006Q3-base:1.1.1.1 pkgsrc-2006Q2:1.1.1.1.0.16 pkgsrc-2006Q2-base:1.1.1.1 pkgsrc-2006Q1:1.1.1.1.0.14 pkgsrc-2006Q1-base:1.1.1.1 pkgsrc-2005Q4:1.1.1.1.0.12 pkgsrc-2005Q4-base:1.1.1.1 pkgsrc-2005Q3:1.1.1.1.0.10 pkgsrc-2005Q3-base:1.1.1.1 pkgsrc-2005Q2:1.1.1.1.0.8 pkgsrc-2005Q2-base:1.1.1.1 pkgsrc-2005Q1:1.1.1.1.0.6 pkgsrc-2005Q1-base:1.1.1.1 pkgsrc-2004Q4:1.1.1.1.0.4 pkgsrc-2004Q4-base:1.1.1.1 pkgsrc-2004Q3:1.1.1.1.0.2 pkgsrc-2004Q3-base:1.1.1.1 pkgsrc-base:1.1.1.1 TNF:1.1.1; locks; strict; comment @# @; 1.3 date 2019.07.21.10.34.52; author wiz; state dead; branches; next 1.2; commitid 714SadchRqVILTvB; 1.2 date 2011.07.03.21.42.24; author jym; state Exp; branches; next 1.1; 1.1 date 2004.07.26.23.33.35; author wiz; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2004.07.26.23.33.35; author wiz; state Exp; branches; next ; desc @@ 1.3 log @gdk-pixbuf: remove The software hasn't been updated since 2002 and is probably full of security problems. Two packages were using it. (gpsdrive has a newer version in wip.) @ text @$NetBSD: patch-ac,v 1.2 2011/07/03 21:42:24 jym Exp $ --- src/gpsfetchmap.pl.orig 2002-11-24 16:04:38.000000000 +0000 +++ src/gpsfetchmap.pl @@@@ -9,38 +9,71 @@@@ my $VERSION =< modified (Sept 06, 2002) by Sven Fichtner modified (Sept 18, 2002) by Sven Fichtner -modified (Nov 21, 2002) by Magnus Månsson -Version 1.04 +modified (Nov 21, 2002) by Magnus MÃ¥nsson +modified (Dec 24, 2002) by Drew Einhorn +Version 1.05 EOP use strict; use Getopt::Long; use Pod::Usage; - -# Setup possible scales -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); +use POSIX qw(floor ceil); +use File::Temp qw/ tempfile tempdir /; # Set defaults and get options from command line Getopt::Long::Configure('no_ignore_case'); -my ($lat,$lon,$slat,$endlat,$slon,$endlon,$waypoint,$area,$unit,$mapdir,$debug,$force,$version,$man,$help); -my $failcount = 0; +my (@@SCALES,$lat,$lon,$slat,$endlat,$slon,$endlon,$waypoint,$area,$unit,$debug,$force,$version,$man,$help); + +my $failcount; +my $writecount; +my $cachecount; my $polite = 'no'; my $scale = '50000'; 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 $KOORD_FILE = 'map_koord.txt'; # Should we allow config of this? my $FILEPREFIX = 'map_'; my $mapserver = 'mapblast'; +my $replace = '0'; +my $mapdir = ""; GetOptions ('lat=f' => \$lat, 'lon=f' => \$lon, 'start-lat=f' => \$slat, 'end-lat=f' => \$endlat, 'start-lon=f' => \$slon, 'end-lon=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, - 'FORCE' => \$force, 'debug' => \$debug, 'MAN' => \$man, 'help|x' => \$help, 'version' => \$version) + 'FORCE' => \$force, 'debug' => \$debug, 'MAN' => \$man, 'help|x' => \$help, 'version' => \$version, 'replace' => \$replace) or pod2usage(1); +if ($mapdir eq "") { + $mapdir = $CONFIG_DIR; +} else { + $mapdir = $CONFIG_DIR/$mapdir; +} +my $LOCK_SH = 1; +my $LOCK_EX = 2; +my $LOCK_NB = 4; +my $LOCK_UN = 8; + +my $KOORD_FILE = "$mapdir/map_koord.txt"; # Should we allow config of this? +open(KOORD,">>$KOORD_FILE") || die "Can't open: $KOORD_FILE"; + +# Setup possible scales +my %ts1; +if ($mapserver eq "terraserver") { + my ($s, $ts); + + @@SCALES = (); + $s = 2757; + for ($ts = 10; $ts <= 16; $ts++) { + @@SCALES = (@@SCALES, $s); + $ts1{$s} = $ts; + $s *= 2; + } +} else { + @@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); +} + pod2usage(1) if $help; pod2usage(-verbose=>2) if $man; @@@@ -55,7 +88,6 @@@@ pod2usage(1) if (&error_check); # Setup up some constants -my $EXPEDIAFACT = 1378.6; my $DIFF = 0.0000028; my $RADIUS_KM = 6371.01; my $LAT_DIST_KM = 110.87; @@@@ -64,7 +96,7 @@@@ my $KM2MILES = 0.62137119; # Get the list of scales we need my $SCALES_TO_GET_ref = get_scales(\$scale); -print "Scale to download: ", join(",",sort {$a <=> $b} @@{$SCALES_TO_GET_ref}), "\n" if ($debug); +print "Scales to download: ", join(",",sort {$a <=> $b} @@{$SCALES_TO_GET_ref}), "\n" if ($debug); # Get the center waypoint if they want one if ($waypoint) { @@@@ -82,7 +114,7 @@@@ $mapdir = &get_mapdir unless ($mapdir); unless ($slat && $slon && $endlat && $endlon) { ($slat,$slon,$endlat,$endlon) = get_coords(\$lat,\$lon,\$area,\$unit); } -print "Upper left: $slat $slon, Lower Right: $endlat, $endlon\n" if ($debug); +print "Lower left: $slat $slon, Upper Right: $endlat, $endlon\n" if ($debug); unless ($force) { my $count = file_count(\($slat,$slon,$endlat,$endlon)); @@@@ -93,61 +125,12 @@@@ unless ($force) { print "\nDownloading files:\n"; -# Change into the gpsdrive maps directory -chdir($CONFIG_DIR); -chdir($mapdir); - # Ok start getting the maps foreach my $scale (@@{$SCALES_TO_GET_ref}) { - # Setup k - my $k = $DIFF * $scale; - my $lati = $slat; - while ($lati < $endlat) { - my $long = $slon; - while ($long < $endlon) { - my $filename = "$FILEPREFIX$scale-$lati-$long.gif"; - if (! -s $filename) { - LOOP: { - if ($mapserver eq 'expedia') { - next LOOP if ($scale <=1000); - my $expediascale= sprintf("%d",$scale / $EXPEDIAFACT); - my $where; - if ($lon < -30) { - $where = 'USA0409'; - } else { - $where = 'EUR0809'; - } - print "http://msrvmaps.mappoint.net/isapi/MSMap.dll?ID=3XNsF.\&C=$lati,$long\&L=$where\&CV=1\&A=$expediascale\&S=1280,1024\&O=0.000000,0.000000\&MS=0\&P=\n" - if ($debug); - `wget -nd -q -O tmpmap.gif "http://msrvmaps.mappoint.net/isapi/MSMap.dll?ID=3XNsF.\&C=$lati,$long\&L=$where\&CV=1\&A=$expediascale\&S=1280,1024\&O=0.000000,0.000000\&MS=0\&P="`; - $scale = $expediascale * $EXPEDIAFACT; - } elsif ($mapserver eq 'mapblast') { - print "http://www.mapblast.com/myblastd/MakeMap.d?\&CT=$lati:$long:$scale\&IC=\&W=1280\&H=1024\&LB=\n" - if ($debug); - `wget -nd -q -O tmpmap.gif "http://www.mapblast.com/myblastd/MakeMap.d?\&CT=$lati:$long:$scale\&IC=\&W=1280\&H=1024\&LB="`; - } - if (-s 'tmpmap.gif') { - open(KOORD,">>$KOORD_FILE") || die "Can't open: $KOORD_FILE"; - print KOORD "$filename $lati $long $scale\n"; - rename('tmpmap.gif',$filename); - print "."; - print "\nWrote $filename\n" if ($debug); - } else { - $failcount++; - print ","; - } - } - # sleep if polite is turned on to be nice to the webserver of the mapserver - sleep($polite) if ($polite =~ /\d+/); - sleep(1) if (!$polite); - } - $long += $k; - } - $lati += $k; - } -} -print "Failcount: $failcount\n"; -print "\n"; + # Setup k + my $k = sprintf("%.4f", $DIFF * $scale); + getmaps($scale, $slat, $endlat, $slon, $endlon, $k); +} ################################################################################ # @@@@ -155,6 +138,124 @@@@ print "\n"; # ################################################################################ +sub getmaps { + my ($scale, $slat, $endlat, $slon, $endlon, $k) = @@_; + + print "Getting maps for scale: $scale\n"; + + my $l = floor($slat / $k); + my $lati = $k * $l; + + $l = ceil($endlat / $k); + my $elat = $k * $l; + + while ($lati <= $elat) { + $l = floor($slon / $k); + my $long = $k * $l; + + $l = ceil($endlon / $k); + my $elon = $k * $l; + + while ($long <= $elon) { + getmap($scale, $lati, $long); + $long += $k; + } + $lati += $k; + } + print "\n"; + print "Failcount: $failcount\n"; + print "Cachecount: $cachecount\n"; + print "Writecount: $writecount\n"; +} + +sub lock { + flock KOORD, $LOCK_EX; + # Move past addtions by other processes + seek KOORD, 0, 2; +} + +sub unlock { + flock KOORD, $LOCK_UN; +} + +sub getmap { + my ($scale, $lati, $long) = @@_; + my $filename; + my $url; + my $la; + my $lo; + + $la = sprintf("%.4f", $lati); + $lo = sprintf("%.4f", $long); + + my $EXPEDIAFACT = 1378.6; + $filename = mapfilename("$FILEPREFIX", $scale, $la, $lo); + $url = ""; + if (! $replace && -e "$mapdir/$filename") { + $cachecount++; + print "="; + print "\nCached $filename\n" if ($debug); + } else { + if ($mapserver eq 'expedia' && $scale > 1000) { + my $expediascale= sprintf("%d",$scale / $EXPEDIAFACT); + my $where; + if ($lon < -30) { + $where = 'USA0409'; + } else { + $where = 'EUR0809'; + } + $url = "http://msrvmaps.mappoint.net/isapi/MSMap.dll?ID=3XNsF.\\&C=$la,$lo\\&L=$where\\&CV=1\\&A=$expediascale\\&S=1280,1024\\&O=0.000000,0.000000\\&MS=0\\&P="; + } elsif ($mapserver eq 'mapblast') { + $url = "http://www.mapblast.com/myblastd/MakeMap.d?\\&CT=$la:$lo:$scale\\&IC=\\&W=1280\\&H=1024\\&LB="; + } elsif ($mapserver eq 'terraserver') { + my $sc = $ts1{$scale}; + $url = "http://terraservice.net/GetImageArea.ashx?t=1\\&lat=$la\\&lon=$lo\\&s=$sc\\&w=1280\\&h=1024"; + } elsif ($mapserver eq 'tiger') { + my $s = $scale / 300000.0; + $url = "http://tiger.census.gov/cgi-bin/mapper/map.gif?lat=$la\\&lon=$lo\\&wid=0.001\\&ht=$s\\&iwd=1280\\&iht=1024\\&on=majroads\\&on=places\\&on=shorelin\\&on=streets\\&on=interstate\\&on=statehwy\\&on=ushwy\\&on=water\\&tlevel=-\\&tvar=-\\&tmeth=i"; + } + if ($url ne "") { + my $p = "--wait=$polite --random-wait" if (!$polite); + my ($fh, $tempfile) = tempfile( "temp_XXXXXX", DIR => "$mapdir" ); + + `wget $p -nd -q -O $tempfile $url`; + print $url if ($debug); + + if (-s $tempfile) { + lock(); + print KOORD "$filename $la $lo $scale\n"; + unlock(); + rename($tempfile, "$mapdir/$filename"); + print "."; + print "\nWrote $filename\n" if ($debug); + $writecount++; + } else { + $failcount++; + print "\nFailed $filename\n"; + } + # NEED convert to greyscale + # and draw grid lines? + # using ImageMaqick? + } + } +} + +sub mapfilename { + my ($prefix, $scale, $lati, $long) = @@_; + my $pathname; + my $filename; + + if ($mapserver eq 'terraserver') { + $scale = $ts1{$scale}; + } + $pathname=sprintf("%s/%s/%03d/%08.4f/%d/", $mapserver, $scale, $lati, $lati, $long); + `mkdir -p "$mapdir/$pathname"`; + # I know there's a builtin mkdir, but last time I fussed with it + # there was no -p, and using it was tedious + $filename = sprintf("%s%d-%08.4f-%09.4f.gif", $prefix, $scale, $lati, $long); + return "$pathname$filename"; +} + sub error_check { my $status; @ 1.2 log @Remove the part from patch-ac that modifies interpreter path. Not needed. @ text @d1 1 a1 1 $NetBSD$ @ 1.1 log @Initial revision @ text @d1 1 a1 1 $NetBSD: patch-ac,v 1.1 2003/01/08 17:29:06 tsarna Exp $ d3 3 a5 13 Drew Einhorn's gpsfetchmap.pl enhancements from: http://s2.selwerd.nl/~dirk-jan/gpsdrive/archive/msg01772.html --- src/gpsfetchmap.pl.orig Sun Nov 24 11:04:38 2002 +++ src/gpsfetchmap.pl Wed Jan 8 12:13:17 2003 @@@@ -1,4 +1,4 @@@@ -#!/usr/bin/perl +#!/usr/bin/env perl # gpsfetchmap # @@@@ -9,38 +9,71 @@@@ d88 1 a88 1 @@@@ -55,7 +88,6 @@@@ d96 1 a96 1 @@@@ -64,7 +96,7 @@@@ d105 1 a105 1 @@@@ -82,7 +114,7 @@@@ d114 1 a114 1 @@@@ -93,67 +125,136 @@@@ d180 1 a180 1 # Subroutines d183 1 a183 1 + d301 1 a301 1 d304 1 @ 1.1.1.1 log @Reimport misc/gpsdrive as geography/gpsdrive. @ text @@