Blank sections of gpspoint parts in .vik files is OK, so don't report them.
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 ) )
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;
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 */