diff options
-rw-r--r-- | navit/maptool/buffer.c | 43 | ||||
-rw-r--r-- | navit/maptool/ch.c | 17 | ||||
-rw-r--r-- | navit/maptool/maptool.c | 27 | ||||
-rw-r--r-- | navit/maptool/maptool.h | 4 | ||||
-rw-r--r-- | navit/maptool/tile.c | 20 | ||||
-rw-r--r-- | navit/maptool/zip.c | 15 |
6 files changed, 97 insertions, 29 deletions
diff --git a/navit/maptool/buffer.c b/navit/maptool/buffer.c index 2907b0670..e6f8beea0 100644 --- a/navit/maptool/buffer.c +++ b/navit/maptool/buffer.c @@ -1,6 +1,6 @@ /** * Navit, a modular navigation system. - * Copyright (C) 2005-2011 Navit Team + * Copyright (C) 2005-2018 Navit Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -21,6 +21,15 @@ #include "maptool.h" #include "debug.h" +/** + * @brief Saves a buffer to a file + * + * This function saves a buffer to a file. + * + * @param filename The name of the while to where the buffer is saved to. + * @param b Buffer which is saved to file. + * @param offset + */ void save_buffer(char *filename, struct buffer *b, long long offset) { @@ -34,8 +43,17 @@ save_buffer(char *filename, struct buffer *b, long long offset) dbg_assert(fwrite(b->base, b->size, 1, f)==1); fclose(f); } - -void +/** + * @brief Loads a buffer from a file + * + * This function loads a buffer from a file. + * + * @param filename The name of the while to where the buffer is loaded from. + * @param b Buffer in which file is loaded. + * @param offset + * @return indicator if operation suceeded + */ +int load_buffer(char *filename, struct buffer *b, long long offset, long long size) { FILE *f; @@ -54,16 +72,25 @@ load_buffer(char *filename, struct buffer *b, long long offset, long long size) } b->size=b->malloced=size; dbg_assert(b->size>0); -#if 0 - fprintf(stderr,"reading "LONGLONG_FMT" bytes from %s of "LONGLONG_FMT" bytes at "LONGLONG_FMT"\n", b->size, filename, len, offset); -#endif + fseeko(f, offset, SEEK_SET); b->base=malloc(b->size); dbg_assert(b->base != NULL); - fread(b->base, b->size, 1, f); + if (fread(b->base, b->size, 1, f) == 0){ + dbg(lvl_warning, "fread failed"); + return 0; + } fclose(f); + return 1; } - +/** + * @brief Determines size of buffer for file + * + * This function determines the size of the buffer required to read a file. + * + * @param filename Name of file for which the required size of the buffer is determined + * @return required size of buffer + */ long long sizeof_buffer(char *filename) { diff --git a/navit/maptool/ch.c b/navit/maptool/ch.c index b1b0b1bf6..b1f7d9d01 100644 --- a/navit/maptool/ch.c +++ b/navit/maptool/ch.c @@ -204,7 +204,11 @@ ch_generate_ddsg(FILE *in, FILE *ref, FILE *idx, FILE *ddsg) int n1,n2,speed=road_speed(ib->type); struct item_id road_id; double l; - fread(&road_id, sizeof(road_id), 1, ref); + + if (fread(&road_id, sizeof(road_id), 1, ref) == 0){ + dbg(lvl_warning, "fread failed"); + continue; + } if (speed) { struct edge_hash_item *hi=g_slice_new(struct edge_hash_item); struct item_id *id=g_slice_new(struct item_id); @@ -229,12 +233,19 @@ ch_generate_sgr(char *suffix) { #ifndef HAVE_API_WIN32_CE char command[1024]; + int system_result; sprintf(command,"./contraction-hierarchies-20080621/main -s -p -f ddsg_%s.tmp -o hcn_%s.tmp -l hcn_log_%s.tmp -x 190 -y 1 -e 600 -p 1000 -k 1,3.3,2,10,3,10,5",suffix,suffix,suffix); printf("%s\n",command); - system(command); + system_result = system(command); + if (system_result == -1){ + dbg(lvl_warning, "Running main failed"); + } sprintf(command,"./contraction-hierarchies-20080621/main -c -f ddsg_%s.tmp -h hcn_%s.tmp -k 1,3.3,2,10,3,10,5 -C ch_%s.tmp -O 1 -z sgr_%s.tmp",suffix,suffix,suffix,suffix); printf("%s\n",command); - system(command); + system_result = system(command); + if (system_result == -1){ + dbg(lvl_warning, "Running main failed"); + } #endif } diff --git a/navit/maptool/maptool.c b/navit/maptool/maptool.c index b1db65eeb..21cd42e35 100644 --- a/navit/maptool/maptool.c +++ b/navit/maptool/maptool.c @@ -26,6 +26,7 @@ #include <signal.h> #include <stdio.h> #include <math.h> +#include <errno.h> #ifdef _MSC_VER #include "getopt_long.h" #define atoll _atoi64 @@ -141,7 +142,9 @@ progress_time(void) seconds%=60; pos+=assafe_strcp2buf(seconds>9?":":":0", buflen-pos, buf+pos); pos+=assafe_lltoa(seconds, buflen-pos, buf+pos); - write(2,buf,pos); + if (write(2,buf,pos) == -1){ + dbg(lvl_warning, "Writing progress time failed. Error-Code: %d" , errno); + } } static void @@ -152,10 +155,14 @@ progress_memory(void) const int buflen=20; char buf[buflen]; int pos=1; + int write_result; buf[0]=' '; pos+=assafe_lltoa(mem/1024/1024, buflen-pos, buf+pos); pos+=assafe_strcp2buf(" MB", buflen-pos, buf+pos); - write(2,buf,pos); + write_result = write(2,buf,pos); + if (write_result == -1){ + dbg(lvl_warning, "Writing progress memory failed. Error-Code: %d" , errno); + } #endif } @@ -165,6 +172,7 @@ sig_alrm_do(int sig) const int buflen=1024; char buf[buflen]; int pos=0; + int write_result; #ifndef _WIN32 signal(SIGALRM, sig_alrm_do); alarm(30); @@ -182,13 +190,22 @@ sig_alrm_do(int sig) pos+=assafe_strcp2buf(" relations ", buflen-pos, buf+pos); pos+=assafe_lltoa(processed_tiles, buflen-pos, buf+pos); pos+=assafe_strcp2buf(" tiles", buflen-pos, buf+pos); - write(2,buf,pos); + write_result = write(2,buf,pos); + if (write_result == -1){ + dbg(lvl_warning, "Writing sig alrm ailed. Error-Code: %d" , errno); + } progress_time(); progress_memory(); #ifndef _WIN32 - write(2,"\r\n",2); + write_result = write(2,"\r\n",2); + if (write_result == -1){ + dbg(lvl_warning, "Writing new line in sig alrm ailed. Error-Code: %d" , errno); + } #else - write(2,"\n",1); + write_result = write(2,"\n",1); + if (write_result == -1){ + dbg(lvl_warning, "Writing new line in sig alrm ailed. Error-Code: %d" , errno); + } #endif } diff --git a/navit/maptool/maptool.h b/navit/maptool/maptool.h index ce147b1a4..edb2a77ef 100644 --- a/navit/maptool/maptool.h +++ b/navit/maptool/maptool.h @@ -177,7 +177,7 @@ struct buffer { }; void save_buffer(char *filename, struct buffer *b, long long offset); -void load_buffer(char *filename, struct buffer *b, long long offset, long long size); +int load_buffer(char *filename, struct buffer *b, long long offset, long long size); long long sizeof_buffer(char *filename); /* ch.c */ @@ -398,7 +398,7 @@ void index_submap_add(struct tile_info *info, struct tile_head *th); /* zip.c */ void write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, int data_size); -void zip_write_index(struct zip_info *info); +int zip_write_index(struct zip_info *info); int zip_write_directory(struct zip_info *info); struct zip_info *zip_new(void); void zip_set_zip64(struct zip_info *info, int on); diff --git a/navit/maptool/tile.c b/navit/maptool/tile.c index 9d9f94145..76469376c 100644 --- a/navit/maptool/tile.c +++ b/navit/maptool/tile.c @@ -405,13 +405,19 @@ write_aux_tiles(struct zip_info *zip_info) assert(buffer != NULL); f=fopen(at->filename,"rb"); assert(f != NULL); - fread(buffer, at->size, 1, f); - fclose(f); - write_zipmember(zip_info, at->name, zip_get_maxnamelen(zip_info), buffer, at->size); - free(buffer); - count++; - l=g_list_next(l); - zip_add_member(zip_info); + + if (fread(buffer, at->size, 1, f) == 0){ + dbg(lvl_warning, "fread failed"); + fclose(f); + } + else{ + fclose(f); + write_zipmember(zip_info, at->name, zip_get_maxnamelen(zip_info), buffer, at->size); + free(buffer); + count++; + l=g_list_next(l); + zip_add_member(zip_info); + } } return count; } diff --git a/navit/maptool/zip.c b/navit/maptool/zip.c index a4e040974..ff9438786 100644 --- a/navit/maptool/zip.c +++ b/navit/maptool/zip.c @@ -182,17 +182,24 @@ write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, free(compbuffer); } -void +int zip_write_index(struct zip_info *info) { int size=ftell(info->index); 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); + + if (fread(buffer, size, 1, info->index) == 0){ + dbg(lvl_warning, "fread failed"); + return 1; + } + else{ + write_zipmember(info, "index", strlen("index"), buffer, size); + } info->zipnum++; + return 0; } static void |