X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/c017be3c0b41865d049c8f09d09b7026fd848f13..9552af08b0de8cf0de6b8d253d5a77173f35259b:/src/download.c diff --git a/src/download.c b/src/download.c index 65c6d4b5..05a525a0 100644 --- a/src/download.c +++ b/src/download.c @@ -2,6 +2,7 @@ * viking -- GPS Data and Topo Analyzer, Explorer, and Manager * * Copyright (C) 2003-2005, Evan Battaglia + * Copyright (C) 2007, Guilhem Bonnefille * * 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 @@ -104,7 +105,7 @@ static GMutex *file_list_mutex = NULL; /* spin button scales */ VikLayerParamScale params_scales[] = { - {1, 86400*7, 10, 0}, /* download_tile_age */ + {1, 86400*7, 60, 0}, /* download_tile_age */ }; static VikLayerParam prefs[] = { @@ -173,12 +174,16 @@ static int download( const char *hostname, const char *uri, const char *fn, Down } if (options->use_etag) { gchar *etag_filename = g_strdup_printf("%s.etag", fn); - gsize etag_length; + gsize etag_length = 0; g_file_get_contents (etag_filename, &(file_options.etag), &etag_length, NULL); + g_free (etag_filename); + etag_filename = NULL; /* check if etag is short enough */ - if (etag_length > 100) + if (etag_length > 100) { g_free(file_options.etag); + file_options.etag = NULL; + } /* TODO: should check that etag is a valid string */ } @@ -194,12 +199,16 @@ static int download( const char *hostname, const char *uri, const char *fn, Down { g_debug("%s: Couldn't take lock on temporary file \"%s\"\n", __FUNCTION__, tmpfilename); g_free ( tmpfilename ); + if (options->use_etag) + g_free ( file_options.etag ); return -4; } f = g_fopen ( tmpfilename, "w+b" ); /* truncate file and open it */ if ( ! f ) { g_warning("Couldn't open temporary file \"%s\": %s", tmpfilename, g_strerror(errno)); g_free ( tmpfilename ); + if (options->use_etag) + g_free ( file_options.etag ); return -4; } @@ -229,7 +238,6 @@ static int download( const char *hostname, const char *uri, const char *fn, Down g_free ( file_options.etag ); g_free ( file_options.new_etag ); } - g_remove ( fn ); /* couldn't create temporary. delete 0-byte file. */ return -1; } @@ -238,6 +246,8 @@ static int download( const char *hostname, const char *uri, const char *fn, Down /* server returned an etag value */ gchar *etag_filename = g_strdup_printf("%s.etag", fn); g_file_set_contents (etag_filename, file_options.new_etag, -1, NULL); + g_free (etag_filename); + etag_filename = NULL; } }