]> git.street.me.uk Git - andy/viking.git/blobdiff - src/babel.c
Add copyright for files vikgoto.h & vikgotoxmltool.h
[andy/viking.git] / src / babel.c
index 64332e7436f93c218dabb75e261cae506631507c..e9d2f4e56d66e5df22720f17413078cbdcfa62e1 100644 (file)
@@ -158,6 +158,10 @@ gboolean babel_general_convert_from( VikTrwLayer *vt, BabelStatusFunc cb, gchar
     g_error_free(error);
     ret = FALSE;
   } else {
     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");
     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;
       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++] = "-o";
       args[i++] = "gpx";
-      args[i++] = from;
+      args[i++] = "-f";
+      args[i++] = (char *)from;
+      args[i++] = "-F";
       args[i++] = name_dst;
       args[i] = NULL;
 
       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);
 
       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);
     g_free(gpsbabel_loc);
   }
 
   g_remove(name_dst);
   g_free(name_dst);
-  /* FIXME: free babelargs ? */
   return ret;
 }
 
   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 )
 {
 
 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;
   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);
 
 
     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);
  
     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++] = "-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++] = 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);
       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);
     g_free(gpsbabel_loc);
   }
 
   g_remove(name_src);
   g_free(name_src);
-  /* FIXME: free babelargs ? */
   return ret;
 }
   return ret;
 }