gchar *bargs = g_strconcat(babelargs, " -i gpx", NULL);
if ((fd_src = g_file_open_tmp("tmp-viking.XXXXXX", &name_src, NULL)) >= 0) {
+ g_debug ("%s: temporary file: %s", __FUNCTION__, name_src);
f = fdopen(fd_src, "w");
- a_gpx_write_file(vt, f);
+ a_gpx_write_file(vt, f, NULL);
fclose(f);
f = NULL;
ret = a_babel_convert_from ( vt, bargs, name_src, cb, user_data );
gchar *args[64];
if ((fd_dst = g_file_open_tmp("tmp-viking.XXXXXX", &name_dst, NULL)) >= 0) {
+ g_debug ("%s: temporary file: %s", __FUNCTION__, name_dst);
close(fd_dst);
if (gpsbabel_loc ) {
gchar **args;
if ((fd_dst = g_file_open_tmp("tmp-viking.XXXXXX", &name_dst, NULL)) >= 0) {
+ g_debug ("%s: temporary file: %s", __FUNCTION__, name_dst);
gchar *shell_command;
if ( input_file_type )
shell_command = g_strdup_printf("%s | %s -i %s -f - -o gpx -F %s",
gboolean a_babel_convert_from_url ( VikTrwLayer *vt, const char *url, const char *input_type, BabelStatusFunc cb, gpointer user_data )
{
- static DownloadMapOptions options = { FALSE, FALSE, NULL, 0, a_check_kml_file};
+ static DownloadMapOptions options = { FALSE, FALSE, NULL, 0, NULL};
gint fd_src;
int fetch_ret;
gboolean ret = FALSE;
g_debug("%s: input_type=%s url=%s", __FUNCTION__, input_type, url);
if ((fd_src = g_file_open_tmp("tmp-viking.XXXXXX", &name_src, NULL)) >= 0) {
+ g_debug ("%s: temporary file: %s", __FUNCTION__, name_src);
close(fd_src);
g_remove(name_src);
return ret;
}
-static gboolean babel_general_convert_to( VikTrwLayer *vt, BabelStatusFunc cb, gchar **args, const gchar *name_src, gpointer user_data )
+static gboolean babel_general_convert_to( VikTrwLayer *vt, VikTrack *trk, BabelStatusFunc cb, gchar **args, const gchar *name_src, gpointer user_data )
{
- if (!a_file_export(vt, name_src, FILE_TYPE_GPX, NULL)) {
+ // Now strips out invisible tracks and waypoints
+ if (!a_file_export(vt, name_src, FILE_TYPE_GPX, trk, FALSE)) {
g_critical("Error exporting to %s", name_src);
return FALSE;
}
return babel_general_convert (cb, args, user_data);
}
-gboolean a_babel_convert_to( VikTrwLayer *vt, const char *babelargs, const char *to, BabelStatusFunc cb, gpointer user_data )
+/**
+ * a_babel_convert_to:
+ * @vt The TRW layer from which data is taken.
+ * @track Operate on the individual track if specified. Use NULL when operating on a TRW layer
+ * @babelargs A string containing gpsbabel command line options. In addition to any filters, this string
+ * must include the input file type (-i) option.
+ * @to Filename or device the data is written to.
+ * @cb Optional callback function. Same usage as in a_babel_convert.
+ *
+ * Exports data using gpsbabel. This routine is synchronous;
+ * that is, it will block the calling program until the conversion is done. To avoid blocking, call
+ * this routine from a worker thread.
+ *
+ * Returns: %TRUE on successful invocation of GPSBabel command
+ */
+gboolean a_babel_convert_to( VikTrwLayer *vt, VikTrack *track, const char *babelargs, const char *to, BabelStatusFunc cb, gpointer user_data )
{
int i,j;
int fd_src;
gchar *args[64];
if ((fd_src = g_file_open_tmp("tmp-viking.XXXXXX", &name_src, NULL)) >= 0) {
+ g_debug ("%s: temporary file: %s", __FUNCTION__, name_src);
close(fd_src);
if (gpsbabel_loc ) {
args[i++] = (char *)to;
args[i] = NULL;
- ret = babel_general_convert_to ( vt, cb, args, name_src, user_data );
+ ret = babel_general_convert_to ( vt, track, cb, args, name_src, user_data );
g_strfreev(sub_args);
} else
BabelDevice *device = g_malloc ( sizeof (BabelDevice) );
set_mode (device->mode, tokens[1]);
device->name = g_strdup (tokens[2]);
- device->label = g_strdup (tokens[4]);
+ device->label = g_strndup (tokens[4], 50); // Limit really long label text
a_babel_device_list = g_list_append (a_babel_device_list, device);
g_debug ("New gpsbabel device: %s", device->name);
} else {