@@ -315,6 +315,9 @@ void print_shell(struct Map_info *Map, const char *field_opt,
315
315
}
316
316
317
317
map_type = Vect_maptype (Map );
318
+ const char * maptype_str = Vect_maptype_info (Map );
319
+ char * finfo_lname = Vect_get_finfo_layer_name (Map );
320
+ const char * geom_type = Vect_get_finfo_geometry_type (Map );
318
321
319
322
char scale_tmp [18 ];
320
323
snprintf (scale_tmp , 18 , "1:%d" , Vect_get_scale (Map ));
@@ -381,30 +384,26 @@ void print_shell(struct Map_info *Map, const char *field_opt,
381
384
case PLAIN :
382
385
break ;
383
386
case SHELL :
384
- fprintf (stdout , "format=%s,%s\n" , Vect_maptype_info ( Map ) ,
387
+ fprintf (stdout , "format=%s,%s\n" , maptype_str ,
385
388
Vect_get_finfo_format_info (Map ));
386
- fprintf (stdout , "ogr_layer=%s\n" , Vect_get_finfo_layer_name ( Map ) );
389
+ fprintf (stdout , "ogr_layer=%s\n" , finfo_lname );
387
390
fprintf (stdout , "ogr_dsn=%s\n" , Vect_get_finfo_dsn_name (Map ));
388
- fprintf (stdout , "feature_type=%s\n" ,
389
- Vect_get_finfo_geometry_type (Map ));
391
+ fprintf (stdout , "feature_type=%s\n" , geom_type );
390
392
break ;
391
393
case JSON :
392
- json_object_set_string (root_object , "format" ,
393
- Vect_maptype_info (Map ));
394
+ json_object_set_string (root_object , "format" , maptype_str );
394
395
json_object_set_string (root_object , "format-detail" ,
395
396
Vect_get_finfo_format_info (Map ));
396
- json_object_set_string (root_object , "ogr_layer" ,
397
- Vect_get_finfo_layer_name (Map ));
397
+ json_object_set_string (root_object , "ogr_layer" , finfo_lname );
398
398
json_object_set_string (root_object , "ogr_dsn" ,
399
399
Vect_get_finfo_dsn_name (Map ));
400
- json_object_set_string (root_object , "feature_type" ,
401
- Vect_get_finfo_geometry_type (Map ));
400
+ json_object_set_string (root_object , "feature_type" , geom_type );
402
401
break ;
403
402
}
404
403
}
405
404
else if (map_type == GV_FORMAT_POSTGIS ) {
406
405
int topo_format ;
407
- char * toposchema_name , * topogeom_column ;
406
+ char * toposchema_name = NULL , * topogeom_column = NULL ;
408
407
const struct Format_info * finfo ;
409
408
410
409
finfo = Vect_get_finfo (Map );
@@ -413,27 +412,23 @@ void print_shell(struct Map_info *Map, const char *field_opt,
413
412
case PLAIN :
414
413
break ;
415
414
case SHELL :
416
- fprintf (stdout , "format=%s,%s\n" , Vect_maptype_info ( Map ) ,
415
+ fprintf (stdout , "format=%s,%s\n" , maptype_str ,
417
416
Vect_get_finfo_format_info (Map ));
418
- fprintf (stdout , "pg_table=%s\n" , Vect_get_finfo_layer_name ( Map ) );
417
+ fprintf (stdout , "pg_table=%s\n" , finfo_lname );
419
418
fprintf (stdout , "pg_dbname=%s\n" , Vect_get_finfo_dsn_name (Map ));
420
419
fprintf (stdout , "geometry_column=%s\n" , finfo -> pg .geom_column );
421
- fprintf (stdout , "feature_type=%s\n" ,
422
- Vect_get_finfo_geometry_type (Map ));
420
+ fprintf (stdout , "feature_type=%s\n" , geom_type );
423
421
break ;
424
422
case JSON :
425
- json_object_set_string (root_object , "format" ,
426
- Vect_maptype_info (Map ));
423
+ json_object_set_string (root_object , "format" , maptype_str );
427
424
json_object_set_string (root_object , "format-detail" ,
428
425
Vect_get_finfo_format_info (Map ));
429
- json_object_set_string (root_object , "pg_table" ,
430
- Vect_get_finfo_layer_name (Map ));
426
+ json_object_set_string (root_object , "pg_table" , finfo_lname );
431
427
json_object_set_string (root_object , "pg_dbname" ,
432
428
Vect_get_finfo_dsn_name (Map ));
433
429
json_object_set_string (root_object , "geometry_column" ,
434
430
finfo -> pg .geom_column );
435
- json_object_set_string (root_object , "feature_type" ,
436
- Vect_get_finfo_geometry_type (Map ));
431
+ json_object_set_string (root_object , "feature_type" , geom_type );
437
432
break ;
438
433
}
439
434
@@ -455,17 +450,18 @@ void print_shell(struct Map_info *Map, const char *field_opt,
455
450
break ;
456
451
}
457
452
}
453
+ G_free (topogeom_column );
454
+ G_free (toposchema_name );
458
455
}
459
456
else {
460
457
switch (format ) {
461
458
case PLAIN :
462
459
break ;
463
460
case SHELL :
464
- fprintf (stdout , "format=%s\n" , Vect_maptype_info ( Map ) );
461
+ fprintf (stdout , "format=%s\n" , maptype_str );
465
462
break ;
466
463
case JSON :
467
- json_object_set_string (root_object , "format" ,
468
- Vect_maptype_info (Map ));
464
+ json_object_set_string (root_object , "format" , maptype_str );
469
465
break ;
470
466
}
471
467
}
@@ -524,6 +520,7 @@ void print_shell(struct Map_info *Map, const char *field_opt,
524
520
break ;
525
521
}
526
522
}
523
+ Vect_destroy_field_info (fi );
527
524
}
528
525
}
529
526
@@ -549,6 +546,9 @@ void print_shell(struct Map_info *Map, const char *field_opt,
549
546
json_object_set_string (root_object , "comment" , Vect_get_comment (Map ));
550
547
break ;
551
548
}
549
+ G_free (finfo_lname );
550
+ G_free ((void * )maptype_str );
551
+ G_free ((void * )geom_type );
552
552
}
553
553
554
554
void print_info (struct Map_info * Map )
@@ -563,6 +563,9 @@ void print_info(struct Map_info *Map)
563
563
564
564
time_ok = first_time_ok = second_time_ok = FALSE;
565
565
map_type = Vect_maptype (Map );
566
+ const char * maptype_str = Vect_maptype_info (Map );
567
+ char * finfo_lname = Vect_get_finfo_layer_name (Map );
568
+ const char * geom_type = Vect_get_finfo_geometry_type (Map );
566
569
567
570
/* Check the Timestamp */
568
571
time_ok = G_read_vector_timestamp (Vect_get_name (Map ), NULL , "" , & ts );
@@ -612,37 +615,34 @@ void print_info(struct Map_info *Map)
612
615
divider ('|' );
613
616
614
617
if (map_type == GV_FORMAT_OGR || map_type == GV_FORMAT_OGR_DIRECT ) {
615
- G_saprintf (line , "%-17s%s (%s)" , _ ("Map format:" ),
616
- Vect_maptype_info ( Map ), Vect_get_finfo_format_info (Map ));
618
+ G_saprintf (line , "%-17s%s (%s)" , _ ("Map format:" ), maptype_str ,
619
+ Vect_get_finfo_format_info (Map ));
617
620
printline (line );
618
621
619
622
/* for OGR format print also datasource and layer */
620
- G_saprintf (line , "%-17s%s" , _ ("OGR layer:" ),
621
- Vect_get_finfo_layer_name (Map ));
623
+ G_saprintf (line , "%-17s%s" , _ ("OGR layer:" ), finfo_lname );
622
624
printline (line );
623
625
G_saprintf (line , "%-17s%s" , _ ("OGR datasource:" ),
624
626
Vect_get_finfo_dsn_name (Map ));
625
627
printline (line );
626
- G_saprintf (line , "%-17s%s" , _ ("Feature type:" ),
627
- Vect_get_finfo_geometry_type (Map ));
628
+ G_saprintf (line , "%-17s%s" , _ ("Feature type:" ), geom_type );
628
629
printline (line );
629
630
}
630
631
else if (map_type == GV_FORMAT_POSTGIS ) {
631
632
int topo_format ;
632
- char * toposchema_name , * topogeom_column ;
633
+ char * toposchema_name = NULL , * topogeom_column = NULL ;
633
634
int topo_geo_only ;
634
635
635
636
const struct Format_info * finfo ;
636
637
637
638
finfo = Vect_get_finfo (Map );
638
639
639
- G_saprintf (line , "%-17s%s (%s)" , _ ("Map format:" ),
640
- Vect_maptype_info ( Map ), Vect_get_finfo_format_info (Map ));
640
+ G_saprintf (line , "%-17s%s (%s)" , _ ("Map format:" ), maptype_str ,
641
+ Vect_get_finfo_format_info (Map ));
641
642
printline (line );
642
643
643
644
/* for PostGIS format print also datasource and layer */
644
- G_saprintf (line , "%-17s%s" , _ ("DB table:" ),
645
- Vect_get_finfo_layer_name (Map ));
645
+ G_saprintf (line , "%-17s%s" , _ ("DB table:" ), finfo_lname );
646
646
printline (line );
647
647
G_saprintf (line , "%-17s%s" , _ ("DB name:" ),
648
648
Vect_get_finfo_dsn_name (Map ));
@@ -652,8 +652,7 @@ void print_info(struct Map_info *Map)
652
652
finfo -> pg .geom_column );
653
653
printline (line );
654
654
655
- G_saprintf (line , "%-17s%s" , _ ("Feature type:" ),
656
- Vect_get_finfo_geometry_type (Map ));
655
+ G_saprintf (line , "%-17s%s" , _ ("Feature type:" ), geom_type );
657
656
printline (line );
658
657
659
658
topo_format = Vect_get_finfo_topology_info (
@@ -671,9 +670,11 @@ void print_info(struct Map_info *Map)
671
670
"pseudo (simple features)" );
672
671
673
672
printline (line );
673
+ G_free (toposchema_name );
674
+ G_free (topogeom_column );
674
675
}
675
676
else {
676
- G_saprintf (line , "%-17s%s" , _ ("Map format:" ), Vect_maptype_info ( Map ) );
677
+ G_saprintf (line , "%-17s%s" , _ ("Map format:" ), maptype_str );
677
678
printline (line );
678
679
}
679
680
@@ -770,6 +771,9 @@ void print_info(struct Map_info *Map)
770
771
printline (line );
771
772
divider ('+' );
772
773
fprintf (stdout , "\n" );
774
+ G_free ((void * )maptype_str );
775
+ G_free (finfo_lname );
776
+ G_free ((void * )geom_type );
773
777
}
774
778
775
779
/*!
0 commit comments