[GRASS5] SG3d and g.parser

Glynn Clements glynn.clements at virgin.net
Wed Feb 19 18:03:43 EST 2003

John Gillette wrote:

> g.parser appears to be one of those programs not on the CMD/list
> so it wasn't compiled on my system.  When I compile, I get an 
> undefined symbol reference (setenv) in main.o

Sorry, setenv() is a BSD-ism. Try the attached patch.

> Let me ask a few more questions.
> As an example:
> my_script map=f00
> my_script will define all the required parameters for the parser
> in the top portion (as in test.sh) similar to a C program.
> my_script will have on the command line none, some, or all of 
> the required parameters.  The parser will get the command line
> parameters and ask for any missing parameters.  Is this
> correct?

g.parser is a basically just a wrapper around G_parser() etc, so it
should have identical behaviour.

If you run the script with no arguments, G_parser() should use an
interactive question-and-answer session to obtain the values. If you
provide any arguments, then no interaction is performed; if any
required options were omitted, an error message will be printed and
the g.parser will terminate without running the script.

Glynn Clements <glynn.clements at virgin.net>

-------------- next part --------------
Index: src/general/g.parser/main.c
RCS file: /grassrepository/grass/src/general/g.parser/main.c,v
retrieving revision 1.3
diff -u -r1.3 main.c
--- src/general/g.parser/main.c	15 May 2002 11:38:27 -0000	1.3
+++ src/general/g.parser/main.c	19 Feb 2003 23:00:18 -0000
@@ -283,15 +283,15 @@
     for (flag = ctx.first_flag; flag; flag = flag->next_flag)
 	char buff[12];
-	sprintf(buff, "GIS_FLAG_%c", flag->key);
-	setenv(buff, flag->answer ? "1" : "0", 1);
+	sprintf(buff, "GIS_FLAG_%c=%d", flag->key, flag->answer ? 1 : 0);
+	putenv(G_store(buff));
     for (option = ctx.first_option; option; option = option->next_opt)
 	char buff[1024];
-	sprintf(buff, "GIS_OPT_%s", option->key);
-	setenv(buff, option->answer, 1);
+	sprintf(buff, "GIS_OPT_%s=%s", option->key, option->answer);
+	putenv(G_store(buff));
     execl(filename, filename, "@ARGS_PARSED@", NULL);

More information about the grass-dev mailing list