]> git.street.me.uk Git - andy/viking.git/commitdiff
Correct layer read definition + enable reporting of issues from gpspoint parts in...
authorRob Norris <rw_norris@hotmail.com>
Wed, 10 Oct 2012 21:40:49 +0000 (22:40 +0100)
committerRob Norris <rw_norris@hotmail.com>
Fri, 19 Oct 2012 21:29:42 +0000 (22:29 +0100)
Blank sections of gpspoint parts in .vik files is OK, so don't report them.

src/file.c
src/gpspoint.c
src/viklayer.h

index 1e9bf629be3d9a59e74e67f256e9f02c0daa8019..f185a4671b387593bc91765ec82abd32d6f0f91a 100644 (file)
@@ -392,9 +392,11 @@ static gboolean file_read ( VikAggregateLayer *top, FILE *f, VikViewport *vp )
       else if ( str_starts_with ( line, "LayerData", 9, FALSE ) )
       {
         if ( stack->data && vik_layer_get_interface(VIK_LAYER(stack->data)->type)->read_file_data )
-          vik_layer_get_interface(VIK_LAYER(stack->data)->type)->read_file_data ( VIK_LAYER(stack->data), f );
+        {
           /* must read until hits ~EndLayerData */
-
+          if ( ! vik_layer_get_interface(VIK_LAYER(stack->data)->type)->read_file_data ( VIK_LAYER(stack->data), f ) )
+            successful_read = FALSE;
+        }
         else
         { /* simply skip layer data over */
           while ( fgets ( buffer, 4096, f ) )
index 5ab5aa462f77bbeb6651ca054a5452fa9005c543..ab0537d6e74fa3cf70fe374fd32a4f31d1025d82 100644 (file)
@@ -170,8 +170,11 @@ gboolean a_gpspoint_read_file(VikTrwLayer *trw, FILE *f ) {
     line_buffer[strlen(line_buffer)-1] = '\0'; /* chop off newline */
 
     /* for gpspoint files wrapped inside */
-    if ( strlen(line_buffer) >= 13 && strncmp ( line_buffer, "~EndLayerData", 13 ) == 0 )
+    if ( strlen(line_buffer) >= 13 && strncmp ( line_buffer, "~EndLayerData", 13 ) == 0 ) {
+      // Even just a blank TRW is ok when in a .vik file
+      have_read_something = TRUE;
       break;
+    }
 
     /* each line: nullify stuff, make thing if nes, free name if ness */
     tag_start = line_buffer;
index cabf573cd4b4da5700f01e120fd2c2b7fb183efe..3f35cbbcf9dd7b63f0394e6f43f08c31f1806a03 100644 (file)
@@ -167,7 +167,7 @@ typedef gboolean      (*VikLayerFuncSetParam)              (VikLayer *, guint16,
 typedef VikLayerParamData
                       (*VikLayerFuncGetParam)              (VikLayer *, guint16, gboolean);
 
-typedef void          (*VikLayerFuncReadFileData)          (VikLayer *, FILE *);
+typedef gboolean      (*VikLayerFuncReadFileData)          (VikLayer *, FILE *); // Should report success or failure
 typedef void          (*VikLayerFuncWriteFileData)         (VikLayer *, FILE *);
 
 /* item manipulation */