[GRASS5] v.category - adding table name

Radim Blazek blazek at itc.it
Tue Mar 15 04:55:44 EST 2005


 > + 			    Fi = Vect_get_field (&In, field);
 > + 			    freps[fld]->table = G_store (Fi->table);

You must check if the connection exists, Vect_get_field can return NULL 
if the connection to database was not defined, then G_store (Fi->table) 
will crash.

Radim

Martin Landa wrote:
> Hi,
> 
> I have written a simple patch for v.category. I hope it would
> be useful for many GRASS users (?).
> 
> Original report: 
> 
> LAYER 1:
> type       count        min        max
> ...
> LAYER 2:
> type       count        min        max
> ...
> 
> Adding _table_name_:
> 
> LAYER/TABLE 1/test_obrazy_parcel:
> type       count        min        max
> ...
> LAYER/TABLE 2/test_parcely:
> type       count        min        max
> ...
> 
> Martin
> 
> ---
> Martin Landa <landa at gama.fsv.cvut.cz> * http://gama.fsv.cvut.cz/~landa *
> CTU Prague, Faculty of Civil Engineering, Czech Republic
> 
> 
> ------------------------------------------------------------------------
> 
> *** main.c.old	2005-03-13 13:47:05.000000000 +0100
> --- main.c	2005-03-13 13:56:29.000000000 +0100
> ***************
> *** 39,44 ****
> --- 39,45 ----
>   
>   typedef struct {
>       int field;
> +     char *table;
>       int count[FRTYPES];
>       int min[FRTYPES], max[FRTYPES];
>   } FREPORT;
> ***************
> *** 49,54 ****
> --- 50,56 ----
>   	struct Map_info In, Out;
>   	static struct line_pnts *Points;
>   	struct line_cats *Cats;
> + 	struct field_info *Fi;
>           int    i, j, ret, option, otype, type, with_z, step;
>   	int    n_areas, centr, new_centr;
>   	double x, y;
> ***************
> *** 326,331 ****
> --- 328,335 ----
>                               fld = nfreps - 1;
>                               freps[fld] = (FREPORT *) calloc ( 1, sizeof (FREPORT));
>                               freps[fld]->field = field;
> + 			    Fi = Vect_get_field (&In, field);
> + 			    freps[fld]->table = G_store (Fi->table);
>   			  }
>   			
>                           freps[fld]->count[rtype]++;
> ***************
> *** 370,376 ****
>   				    	freps[i]->count[FR_AREA], freps[i]->min[FR_AREA], 
>   					freps[i]->max[FR_AREA]);
>   		    } else {
> ! 			fprintf (stdout, "LAYER %d:\n", freps[i]->field);
>   			fprintf (stdout, "type       count        min        max\n");
>   			fprintf (stdout, "point    %7d %10d %10d\n", 
>   					freps[i]->count[FR_POINT],
> --- 374,380 ----
>   				    	freps[i]->count[FR_AREA], freps[i]->min[FR_AREA], 
>   					freps[i]->max[FR_AREA]);
>   		    } else {
> ! 			fprintf (stdout, "LAYER/TABLE %d/%s:\n", freps[i]->field, freps[i]->table);
>   			fprintf (stdout, "type       count        min        max\n");
>   			fprintf (stdout, "point    %7d %10d %10d\n", 
>   					freps[i]->count[FR_POINT],




More information about the grass-dev mailing list