X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/f3cd9987f1724aae2d170f991dca5cd414453644..bfecd26e5a400e54bfb705112e6eb1ebf6084920:/src/babel.c?ds=sidebyside diff --git a/src/babel.c b/src/babel.c index 64332e74..e9d2f4e5 100644 --- a/src/babel.c +++ b/src/babel.c @@ -158,6 +158,10 @@ gboolean babel_general_convert_from( VikTrwLayer *vt, BabelStatusFunc cb, gchar g_error_free(error); ret = FALSE; } else { + /* No data required */ + if ( vt == NULL ) + return TRUE; + gchar line[512]; FILE *diag; diag = fdopen(babel_stdout, "r"); @@ -209,11 +213,16 @@ gboolean a_babel_convert_from( VikTrwLayer *vt, const char *babelargs, BabelStat if (unbuffer_loc) args[i++] = unbuffer_loc; args[i++] = gpsbabel_loc; - for (j = 0; sub_args[j]; j++) - args[i++] = sub_args[j]; + for (j = 0; sub_args[j]; j++) { + /* some version of gpsbabel can not take extra blank arg */ + if (sub_args[j][0] != '\0') + args[i++] = sub_args[j]; + } args[i++] = "-o"; args[i++] = "gpx"; - args[i++] = from; + args[i++] = "-f"; + args[i++] = (char *)from; + args[i++] = "-F"; args[i++] = name_dst; args[i] = NULL; @@ -221,13 +230,13 @@ gboolean a_babel_convert_from( VikTrwLayer *vt, const char *babelargs, BabelStat g_free ( unbuffer_loc ); g_strfreev(sub_args); - } + } else + g_warning("gpsbabel not found in PATH"); g_free(gpsbabel_loc); } g_remove(name_dst); g_free(name_dst); - /* FIXME: free babelargs ? */ return ret; } @@ -272,7 +281,7 @@ gboolean a_babel_convert_from_shellcommand ( VikTrwLayer *vt, const char *input_ gboolean a_babel_convert_from_url ( VikTrwLayer *vt, const char *url, const char *input_type, BabelStatusFunc cb, gpointer user_data ) { - static DownloadOptions options = {NULL, 0, a_check_html_file}; + static DownloadMapOptions options = { FALSE, FALSE, NULL, 0, a_check_kml_file}; gint fd_src; int fetch_ret; gboolean ret = FALSE; @@ -287,7 +296,7 @@ gboolean a_babel_convert_from_url ( VikTrwLayer *vt, const char *url, const char babelargs = g_strdup_printf(" -i %s", input_type); - fetch_ret = a_http_download_get_url(url, "", name_src, &options); + fetch_ret = a_http_download_get_url(url, "", name_src, &options, NULL); if (fetch_ret == 0) ret = a_babel_convert_from( vt, babelargs, NULL, name_src, NULL); @@ -431,21 +440,25 @@ gboolean a_babel_convert_to( VikTrwLayer *vt, const char *babelargs, BabelStatus args[i++] = "-i"; args[i++] = "gpx"; for (j = 0; sub_args[j]; j++) - args[i++] = sub_args[j]; + /* some version of gpsbabel can not take extra blank arg */ + if (sub_args[j][0] != '\0') + args[i++] = sub_args[j]; + args[i++] = "-f"; args[i++] = name_src; - args[i++] = to; + args[i++] = "-F"; + args[i++] = (char *)to; args[i] = NULL; ret = babel_general_convert_to ( vt, cb, args, name_src, user_data ); g_free ( unbuffer_loc ); g_strfreev(sub_args); - } + } else + g_warning("gpsbabel not found in PATH"); g_free(gpsbabel_loc); } g_remove(name_src); g_free(name_src); - /* FIXME: free babelargs ? */ return ret; }