diff options
-rw-r--r-- | navit/maptool/boundaries.c | 5 | ||||
-rw-r--r-- | navit/maptool/coastline.c | 29 | ||||
-rw-r--r-- | navit/maptool/itembin.c | 2 | ||||
-rw-r--r-- | navit/maptool/maptool.c | 62 | ||||
-rw-r--r-- | navit/maptool/misc.c | 10 | ||||
-rw-r--r-- | navit/maptool/osm.c | 18 | ||||
-rw-r--r-- | navit/maptool/osm_xml.c | 9 | ||||
-rw-r--r-- | navit/maptool/tempfile.c | 2 | ||||
-rw-r--r-- | navit/maptool/tile.c | 8 | ||||
-rw-r--r-- | navit/maptool/zip.c | 6 |
10 files changed, 106 insertions, 45 deletions
diff --git a/navit/maptool/boundaries.c b/navit/maptool/boundaries.c index 85e484c55..033e81149 100644 --- a/navit/maptool/boundaries.c +++ b/navit/maptool/boundaries.c @@ -19,6 +19,9 @@ #include <stdio.h> #include <string.h> #include "maptool.h" +#ifdef _MSC_VER +#define strcasecmp _stricmp +#endif char * osm_tag_value(struct item_bin *ib, char *key) @@ -128,6 +131,7 @@ boundary_find_matches(GList *l, struct coord *c) return ret; } +#if 0 static void test(GList *boundaries_list) { @@ -172,6 +176,7 @@ boundary_bbox_compare(gconstpointer a, gconstpointer b) return -1; return 0; } +#endif static GList * process_boundaries_insert(GList *list, struct boundary *boundary) diff --git a/navit/maptool/coastline.c b/navit/maptool/coastline.c index 042fb2bfd..9765d2f11 100644 --- a/navit/maptool/coastline.c +++ b/navit/maptool/coastline.c @@ -354,7 +354,6 @@ ocean_tile(GHashTable *hash, char *tile, char c, osmid wayid, struct item_bin_si char *tile2=g_alloca(sizeof(char)*(len+1)); struct rect bbox; struct item_bin *ib; - struct coord co; struct coastline_tile *ct=g_new0(struct coastline_tile, 1); strcpy(tile2, tile); @@ -379,10 +378,14 @@ ocean_tile(GHashTable *hash, char *tile, char c, osmid wayid, struct item_bin_si item_bin_add_attr_string(ib, attr_debug, tile2); item_bin_write_to_sink(ib, out, NULL); #endif - co.x=(bbox.l.x+bbox.h.x)/2; - co.y=(bbox.l.y+bbox.h.y)/2; - //item_bin_write_debug_point_to_sink(out, &co, "%s 15",tile2); - +#if 0 + { + struct coord co; + co.x=(bbox.l.x+bbox.h.x)/2; + co.y=(bbox.l.y+bbox.h.y)/2; + item_bin_write_debug_point_to_sink(out, &co, "%s 15",tile2); + } +#endif } /* ba */ @@ -437,6 +440,7 @@ tile_sibling_edges(GHashTable *hash, char *tile, char c) return 15; } +#if 0 static void ocean_tile2(struct rect *r, int dx, int dy, int wf, int hf, struct item_bin_sink *out) { @@ -445,7 +449,6 @@ ocean_tile2(struct rect *r, int dx, int dy, int wf, int hf, struct item_bin_sink int h=r->h.y-r->l.y; char tile2[32]; struct rect bbox; - struct coord co; bbox.l.x=r->l.x+dx*w; bbox.l.y=r->l.y+dy*h; bbox.h.x=bbox.l.x+w*wf; @@ -461,10 +464,16 @@ ocean_tile2(struct rect *r, int dx, int dy, int wf, int hf, struct item_bin_sink item_bin_write_to_sink(ib, out, NULL); #endif tile(&bbox, NULL, tile2, 32, 0, NULL); - co.x=(bbox.l.x+bbox.h.x)/2; - co.y=(bbox.l.y+bbox.h.y)/2; - //item_bin_write_debug_point_to_sink(out, &co, "%s 15",tile2); +#if 0 + { + struct coord co; + co.x=(bbox.l.x+bbox.h.x)/2; + co.y=(bbox.l.y+bbox.h.y)/2; + item_bin_write_debug_point_to_sink(out, &co, "%s 15",tile2); + } +#endif } +#endif static void tile_collector_add_siblings2(char *tile, struct coastline_tile *ct, struct coastline_tile_data *data) @@ -473,11 +482,11 @@ tile_collector_add_siblings2(char *tile, struct coastline_tile *ct, struct coast int pedges=0; int debug=0; int len=strlen(tile); + struct coastline_tile *cn, *co; char *tile2=g_alloca(sizeof(char)*(len+1)); char t=tile[len-1]; strcpy(tile2, tile); tile2[len-1]='\0'; - struct coastline_tile *cn, *co; #if 0 if (!strncmp(tile,"bcacccaadbdcd",10)) debug=1; diff --git a/navit/maptool/itembin.c b/navit/maptool/itembin.c index f2dce72f0..2df467722 100644 --- a/navit/maptool/itembin.c +++ b/navit/maptool/itembin.c @@ -19,6 +19,7 @@ #include <string.h> #include <stdlib.h> +#include <assert.h> #include "maptool.h" #include "linguistics.h" #include "file.h" @@ -105,7 +106,6 @@ item_bin_copy_attr(struct item_bin *ib, struct item_bin *from, enum attr_type at struct attr_bin *ab=item_bin_get_attr_bin(from, attr, NULL); if (ab) item_bin_add_attr_data(ib, ab->type, (void *)(ab+1), (ab->len-1)*4); -#include <assert.h> assert(attr == attr_osm_wayid); assert(item_bin_get_wayid(ib) == item_bin_get_wayid(from)); } diff --git a/navit/maptool/maptool.c b/navit/maptool/maptool.c index 10201a2cd..a921b1cfc 100644 --- a/navit/maptool/maptool.c +++ b/navit/maptool/maptool.c @@ -28,11 +28,15 @@ #include <signal.h> #include <stdio.h> #include <math.h> -#include <getopt.h> +#ifdef _MSC_VER +#include "getopt_long.h" +#define atoll _atoi64 +#else #include <unistd.h> +#include <sys/time.h> +#endif #include <fcntl.h> #include <sys/stat.h> -#include <sys/time.h> #include <zlib.h> #include "file.h" #include "item.h" @@ -115,14 +119,17 @@ static struct plugins *plugins; static void add_plugin(char *path) { - struct attr **attrs; + struct attr pa_attr={attr_path}; + struct attr pl_attr={attr_plugins}; + struct attr *attrs[2]={&pa_attr,NULL}; if (! plugins) { file_init(); plugins=plugins_new(); } - attrs=(struct attr*[]){&(struct attr){attr_path,{path}},NULL}; - plugin_new(&(struct attr){attr_plugins,.u.plugins=plugins}, attrs); + pa_attr.u.str=path; + pl_attr.u.plugins=plugins; + plugin_new(&pl_attr,attrs); } static void @@ -141,11 +148,11 @@ usage(FILE *f) fprintf(f,"maptool - parse osm textfile and convert to Navit binfile format\n\n"); fprintf(f,"Usage (for OSM XML data):\n"); fprintf(f,"bzcat planet.osm.bz2 | maptool mymap.bin\n"); - fprintf(f,"Usage (for OSM Protobuf/PBF data):\n"); - fprintf(f,"maptool --protobuf -i planet.osm.pbf planet.bin\n"); + fprintf(f,"Usage (for OSM Protobuf/PBF data):\n"); + fprintf(f,"maptool --protobuf -i planet.osm.pbf planet.bin\n"); fprintf(f,"Available switches:\n"); fprintf(f,"-h (--help) : this screen\n"); - fprintf(f,"-5 (--md5) <file> : set file where to write md5 sum\n"); + fprintf(f,"-5 (--md5) <file> : set file where to write md5 sum\n"); fprintf(f,"-6 (--64bit) : set zip 64 bit compression\n"); fprintf(f,"-a (--attr-debug-level) <level> : control which data is included in the debug attribute\n"); fprintf(f,"-c (--dump-coordinates) : dump coordinates after phase 1\n"); @@ -160,20 +167,20 @@ usage(FILE *f) fprintf(f,"-N (--nodes-only) : process only nodes\n"); fprintf(f,"-o (--coverage) : map every street to item coverage\n"); fprintf(f,"-P (--protobuf) : input file is protobuf\n"); - fprintf(f,"-r (--rule-file) <file> : read mapping rules from specified file\n"); + fprintf(f,"-r (--rule-file) <file> : read mapping rules from specified file\n"); fprintf(f,"-s (--start) <phase> : start at specified phase\n"); fprintf(f,"-S (--slice-size) <size> : defines the amount of memory to use, in bytes. Default is 1GB\n"); fprintf(f,"-t (--timestamp) y-m-dTh:m:s : Set zip timestamp\n"); fprintf(f,"-w (--dedupe-ways) : ensure no duplicate ways or nodes. useful when using several input files\n"); fprintf(f,"-W (--ways-only) : process only ways\n"); fprintf(f,"-U (--unknown-country) : add objects with unknown country to index\n"); - fprintf(f,"-z (--compression-level) <level> : set the compression level\n"); - fprintf(f,"Internal options (undocumented):\n"); - fprintf(f,"-b (--binfile)\n"); - fprintf(f,"-B \n"); - fprintf(f,"-m (--map) \n"); - fprintf(f,"-O \n"); - fprintf(f,"-p (--plugin) \n"); + fprintf(f,"-z (--compression-level) <level> : set the compression level\n"); + fprintf(f,"Internal options (undocumented):\n"); + fprintf(f,"-b (--binfile)\n"); + fprintf(f,"-B \n"); + fprintf(f,"-m (--map) \n"); + fprintf(f,"-O \n"); + fprintf(f,"-p (--plugin) \n"); exit(1); } @@ -439,8 +446,14 @@ osm_collect_data(struct maptool_params *p, char *suffix) l=g_list_next(l); } } - else if (p->protobuf) + else if (p->protobuf) { +#ifdef _MSC_VER + fprintf(stderr,"Option -P not yet supported on MSVC\n"); + exit(1); +#else map_collect_data_osm_protobuf(p->input_file,&p->osm); +#endif + } else if (p->o5m) map_collect_data_osm_o5m(p->input_file,&p->osm); else @@ -772,10 +785,10 @@ int main(int argc, char **argv) int suffix_count=sizeof(suffixes)/sizeof(char *); int i; - main_init(argv[0]); int suffix_start=0; - int option_index = 0; - + int option_index=0; + main_init(argv[0]); + #ifndef HAVE_GLIB _g_slice_thread_init_nomessage(); #endif @@ -820,15 +833,20 @@ int main(int argc, char **argv) p.result=argv[optind]; - // initialize plugins and OSM mappings + // initialize plugins and OSM mappings maptool_init(p.rule_file); if (p.protobufdb_operation) { +#ifdef _MSC_VER + fprintf(stderr,"Option -O not yet supported on MSVC\n"); + exit(1); +#else osm_protobufdb_load(p.input_file, p.protobufdb); return 0; +#endif } phase=0; - // input from an OSM file + // input from an OSM file if (p.input == 0) { if (start_phase(&p, "collecting data")) { osm_collect_data(&p, suffix); diff --git a/navit/maptool/misc.c b/navit/maptool/misc.c index 5e6c39e74..e9ce88341 100644 --- a/navit/maptool/misc.c +++ b/navit/maptool/misc.c @@ -28,8 +28,10 @@ #include <signal.h> #include <stdio.h> #include <math.h> +#ifndef _MSC_VER #include <getopt.h> #include <unistd.h> +#endif #include <fcntl.h> #include <sys/stat.h> #include <zlib.h> @@ -43,6 +45,8 @@ #include "plugin.h" #include "maptool.h" +#define phase1_coord_max 16384 + struct rect world_bbox = { { -20000000, -20000000}, { 20000000, 20000000}, @@ -131,15 +135,15 @@ phase1_map(GList *maps, FILE *out_ways, FILE *out_nodes) { struct map_rect *mr; struct item *item; - int count,max=16384; - struct coord ca[max]; + int count; + struct coord ca[phase1_coord_max]; struct attr attr; struct item_bin *item_bin; while (maps) { mr=map_rect_new(maps->data, NULL); while ((item = map_rect_get_item(mr))) { - count=item_coord_get(item, ca, item->type < type_line ? 1: max); + count=item_coord_get(item, ca, item->type < type_line ? 1: phase1_coord_max); item_bin=init_item(item->type); item_bin_add_coord(item_bin, ca, count); while (item_attr_get(item, attr_any, &attr)) { diff --git a/navit/maptool/osm.c b/navit/maptool/osm.c index 090d209da..523d5bdd0 100644 --- a/navit/maptool/osm.c +++ b/navit/maptool/osm.c @@ -16,7 +16,12 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ +#ifdef _MSC_VER +#define strcasecmp _stricmp +#define snprintf _snprintf +#else #include <unistd.h> +#endif #include <string.h> #include <stdlib.h> #include <math.h> @@ -27,6 +32,11 @@ #include "file.h" #include "profile.h" +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#define M_PI_4 0.785398163397448309616 +#endif + extern int doway2poi; static int in_way, in_node, in_relation; @@ -1555,7 +1565,8 @@ relation_add_tag(char *k, char *v) strcpy(iso_code, v); } if (add_tag) { - char tag[strlen(k)+strlen(v)+2]; + char *tag; + tag=g_alloca(strlen(k)+strlen(v)+2); sprintf(tag,"%s=%s",k,v); item_bin_add_attr_string(item_bin, attr_osm_tag, tag); } @@ -1850,7 +1861,8 @@ void osm_process_towns(FILE *in, FILE *boundaries, FILE *ways) { struct item_bin *ib; - GList *bl=NULL; + GList *bl; + GHashTable *town_hash; struct attr attrs[11]; profile(0,NULL); @@ -1858,7 +1870,7 @@ osm_process_towns(FILE *in, FILE *boundaries, FILE *ways) profile(1,"processed boundraries\n"); - GHashTable *town_hash=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); + town_hash=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); while ((ib=read_item(in))) { if (!item_is_district(*ib)) { diff --git a/navit/maptool/osm_xml.c b/navit/maptool/osm_xml.c index 1aef43e08..3bc5a70d8 100644 --- a/navit/maptool/osm_xml.c +++ b/navit/maptool/osm_xml.c @@ -19,14 +19,19 @@ #include <string.h> #include <stdlib.h> #include <math.h> +#ifdef _MSC_VER +#define atoll _atoi64 +#else #include <unistd.h> +#endif #include "maptool.h" int osm_xml_get_attribute(char *xml, char *attribute, char *buffer, int buffer_size) { int len=strlen(attribute); - char *pos,*i,s,attr[len+2]; + char *pos,*i,s,*attr; + attr=g_alloca(len+2); strcpy(attr, attribute); strcpy(attr+len, "="); pos=strstr(xml, attr); @@ -186,7 +191,7 @@ int map_collect_data_osm(FILE *in, struct maptool_osm *osm) { int size=BUFFER_SIZE; - char buffer[size]; + char buffer[BUFFER_SIZE]; char *p; sig_alrm(0); if (!fgets(buffer, size, in) || !xml_declaration_in_line(buffer)){ diff --git a/navit/maptool/tempfile.c b/navit/maptool/tempfile.c index cf78028cf..41aef0cb5 100644 --- a/navit/maptool/tempfile.c +++ b/navit/maptool/tempfile.c @@ -16,7 +16,9 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ +#ifndef _MSC_VER #include <unistd.h> +#endif #include "maptool.h" #include "debug.h" diff --git a/navit/maptool/tile.c b/navit/maptool/tile.c index 1817ba6d5..9727bbf97 100644 --- a/navit/maptool/tile.c +++ b/navit/maptool/tile.c @@ -28,8 +28,10 @@ #include <signal.h> #include <stdio.h> #include <math.h> +#ifndef _MSC_VER #include <getopt.h> #include <unistd.h> +#endif #include <fcntl.h> #include <sys/stat.h> #include <zlib.h> @@ -464,9 +466,10 @@ load_tilesdir(FILE *in) { char tile[32],subtile[32],c; int size,zipnum=0; + struct tile_head **last; create_tile_hash(); tile_hash=g_hash_table_new(g_str_hash, g_str_equal); - struct tile_head **last=&tile_head_root; + last=&tile_head_root; while (fscanf(in,"%[^:]:%d",tile,&size) == 2) { struct tile_head *th=malloc(sizeof(struct tile_head)); if (!strcmp(tile,"index")) @@ -655,10 +658,11 @@ index_submap_add(struct tile_info *info, struct tile_head *th) { int tlen=tile_len(th->name); int len=tlen; - char index_tile[len+1+strlen(info->suffix)]; + char *index_tile; struct rect r; struct item_bin *item_bin; + index_tile=g_alloca(len+1+strlen(info->suffix)); strcpy(index_tile, th->name); if (len > 6) len=6; diff --git a/navit/maptool/zip.c b/navit/maptool/zip.c index 349bc0241..db41e0a20 100644 --- a/navit/maptool/zip.c +++ b/navit/maptool/zip.c @@ -149,7 +149,7 @@ write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, }; unsigned char salt[8], key[34], verify[2], mac[10]; #endif - char filename[filelen+1]; + char *filename; int crc=0,len,comp_size=data_size; uLongf destlen=data_size+data_size/500+12; char *compbuffer; @@ -214,6 +214,7 @@ write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, cd.zipcflg|=1; } #endif + filename=g_alloca(filelen+1); strcpy(filename, name); len=strlen(filename); while (len < filelen) { @@ -281,8 +282,9 @@ void zip_write_index(struct zip_info *info) { int size=ftell(info->index); - char buffer[size]; + char *buffer; + buffer=g_alloca(size); fseek(info->index, 0, SEEK_SET); fread(buffer, size, 1, info->index); write_zipmember(info, "index", strlen("index"), buffer, size); |