- static gchar *viking_dir = NULL;
-
- // TODO: use g_get_user_config_dir ?
-
- if (!viking_dir) {
- const gchar *home = g_getenv("HOME");
- if (!home || g_access(home, W_OK))
- home = g_get_home_dir ();
-#ifdef HAVE_MKDTEMP
- if (!home || g_access(home, W_OK))
- {
- static gchar temp[] = {"/tmp/vikXXXXXX"};
- home = mkdtemp(temp);
+ FILE *f = g_fopen ( filename, "w" );
+ if ( f )
+ {
+ if ( trk ) {
+ switch ( file_type ) {
+ case FILE_TYPE_GPX:
+ a_gpx_write_track_file ( trk, f );
+ break;
+ default:
+ g_critical("Houston, we've had a problem. file_type=%d", file_type);
+ }
+ } else {
+ switch ( file_type ) {
+ case FILE_TYPE_GPSMAPPER:
+ a_gpsmapper_write_file ( vtl, f );
+ break;
+ case FILE_TYPE_GPX:
+ a_gpx_write_file ( vtl, f );
+ break;
+ case FILE_TYPE_GPSPOINT:
+ a_gpspoint_write_file ( vtl, f );
+ break;
+ case FILE_TYPE_KML:
+ fclose ( f );
+ f = NULL;
+ switch ( a_vik_get_kml_export_units () ) {
+ case VIK_KML_EXPORT_UNITS_STATUTE:
+ return a_babel_convert_to ( vtl, "-o kml", filename, NULL, NULL );
+ break;
+ case VIK_KML_EXPORT_UNITS_NAUTICAL:
+ return a_babel_convert_to ( vtl, "-o kml,units=n", filename, NULL, NULL );
+ break;
+ default:
+ // VIK_KML_EXPORT_UNITS_METRIC:
+ return a_babel_convert_to ( vtl, "-o kml,units=m", filename, NULL, NULL );
+ break;
+ }
+ break;
+ default:
+ g_critical("Houston, we've had a problem. file_type=%d", file_type);
+ }