[GRASS-user] Setting GRASS environment variable in a C program

Dear all,
i'm trying to access to my grass data without launching an active grass session with a c program. I'm encoutering issues with the GRASS environment variables definitions.
Here my C script

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

extern "C" {

#include <grass/config.h>
#include <grass/gis.h>
#include <grass/Vect.h>
#include <grass/glocale.h>
#include <grass/dbmi.h>
}

int main(int argc, char *argv)
{
    char name[GNAME_MAX],gisdbase[GNAME_MAX],location[GNAME_MAX],mapset[GNAME_MAX];
    struct Map_info In;
       // Setting the grass environment
    G__setenv("GISDBASE","/home/rabotin/grassdata");
    G__setenv("LOCATION_NAME","Roujan");
    G__setenv("MAPSET","PERMANENT");
    G__setenv("MAPSET","simon9");

      G_gisinit(argv[0]);
    std::cout << G_getenv(G_gisdbase()) << std::endl;
    std::cout << G_getenv(G_location()) << std::endl;
    std::cout << G_getenv(G_mapset()) << std::endl;
}

When launshing this script in command terminal (outside an active grass session), I've got a segmentation fault.

Does anybody try to access grassdata with C program without launching a grass session ? And does anybody can share with me the solutions he found to solve same issues ?

Thanks in advance

Michael Rabotin

--
*********************************

Michaël Rabotin
Ingénieur d'étude en géomatique

Laboratoire d'étude des Interactions Sol, Agrosystème et Hydrosystème
UMR LISAH SupAgro-INRA-IRD
Bat. 24
2 place Viala
34060 Montpellier cedex 1 FRANCE

Téléphone : 33 (0)4 99 61 23 85
Secrétariat : 33 (0)4 99 61 22 61
Fax : 33 (0)4 67 63 26 14
E-mail : rabotin@supagro.inra.fr

*********************************

rabotin wrote:

i'm trying to access to my grass data without launching an active grass
session with a c program. I'm encoutering issues with the GRASS
environment variables definitions.

    // Setting the grass environment
    G__setenv("GISDBASE","/home/rabotin/grassdata");
    G__setenv("LOCATION_NAME","Roujan");
    G__setenv("MAPSET","PERMANENT");
    G__setenv("MAPSET","simon9");

    G_gisinit(argv[0]);
    std::cout << G_getenv(G_gisdbase()) << std::endl;
    std::cout << G_getenv(G_location()) << std::endl;
    std::cout << G_getenv(G_mapset()) << std::endl;
}

When launshing this script in command terminal (outside an active grass
session), I've got a segmentation fault.

You need to set the GISRC environment variable before you can access
GRASS settings with G_getenv() or G_setenv(). You will also need to
set GISBASE to the root directory of the GRASS installation so that
data files can be located.

There is a list of environment variables used by GRASS in the file
$GISBASE/docs/html/variables.html.

--
Glynn Clements <glynn@gclements.plus.com>