[GRASS-dev] making grass modules less verbose
Jachym Cepicky
jachym.cepicky at centrum.cz
Wed Sep 20 04:04:54 EDT 2006
Hi,
another idea: what about putting all grass messages (G_message,
G_warning, G_percent) to some GRASS_LOG
file, which would be grassdata/location/mapset/.grass.log by default?
The user could see, what's happening, regardless to how GRASS_VERBOSE is
set.
Jachym
On Wed, Sep 20, 2006 at 09:37:36AM +0200, Sören Gebbert wrote:
> Hi,
> i think this is a nice idea.
> Some modules are very verbose and with this approach a general
> way is provided to handle this verbosity.
>
> Best regards
> Soeren
>
>
> Jachym Cepicky schrieb:
> >Hallo,
> >
> >following patch makes GRASS modules able to use --verbose flag or set
> >GRASS_VERBOSE environment variable.
> >
> >In the code:
> >
> > if (module->verbose)
> > printf("Blah, blah, blah, blah\n");
> >
> >
> >or
> >
> > if (module->verbose)
> > G_percent(row, nrows, 2);
> >
> >I thing, that according to Eric Steven Raymond, if the program does
> >not have anything interesting to say, it should say nothing. This is
> >good for embeding GRASS in some web server application or for some scripts.
> >
> >But how to use it in old GRASS modules, so that the number of modules,
> >which must be corrected by hand, is as low as possible? Do you thing,
> >this is useful? Shall I put apply this to cvs?
> >
> >Example session:
> >
> >GRASS 6.3.cvs (spearfish60):~ > export GRASS_VERBOSE=0
> >GRASS 6.3.cvs (spearfish60):~ > r.example --help
> >
> >Description:
> > My first raster module
> >
> > Keywords:
> > keyword1, keyword2, keyword3
> >
> > Usage:
> > r.example [-q] input=name output=name [--overwrite] [--verbose]
> >
> > Flags:
> > -q Quiet
> > --o Force overwrite of output files
> > --v Verbose module output
> >
> >Parameters:
> > input Name of input raster map
> > output Name for output raster map
> >
> >GRASS 6.3.cvs (spearfish60):~ > r.example in=aspect out=aspect
> >GRASS 6.3.cvs (spearfish60):~ >
> >GRASS 6.3.cvs (spearfish60):~ > r.example in=aspect out=aspect --v
> >Blah, blah, blah, blah
> >93%
> >GRASS 6.3.cvs (spearfish60):~ >
> >GRASS 6.3.cvs (spearfish60):~ > export GRASS_VERBOSE=1
> >GRASS 6.3.cvs (spearfish60):~ > r.example in=aspect out=aspect
> >Blah, blah, blah, blah
> >93%
> >GRASS 6.3.cvs (spearfish60):~ >
> >
> >Looking forward to your comments
> >
> >Jachym
> >
> >
> >------------------------------------------------------------------------
> >
> >Index: include/gis.h
> >===================================================================
> >RCS file: /home/grass/grassrepository/grass6/include/gis.h,v
> >retrieving revision 1.33
> >diff -u -r1.33 gis.h
> >--- include/gis.h 19 Aug 2006 12:52:21 -0000 1.33
> >+++ include/gis.h 19 Sep 2006 14:43:42 -0000
> >@@ -570,6 +570,7 @@
> > char *keywords; /* Keywords describing module */
> > /* further items are possible: author(s), version */
> > int overwrite; /* overwrite old files */
> >+ int verbose; /* print all informations about progres and so on */
> > };
> >
> > struct TimeStamp
> >Index: lib/gis/parser.c
> >===================================================================
> >RCS file: /home/grass/grassrepository/grass6/lib/gis/parser.c,v
> >retrieving revision 1.85
> >diff -u -r1.85 parser.c
> >--- lib/gis/parser.c 17 Sep 2006 21:50:00 -0000 1.85
> >+++ lib/gis/parser.c 19 Sep 2006 14:43:43 -0000
> >@@ -136,6 +136,7 @@
> > static int n_opts = 0 ;
> > static int n_flags = 0 ;
> > static int overwrite = 0 ;
> >+static int verbose = 0 ;
> >
> > static struct Flag first_flag; /* First flag in a linked list */
> > static struct Flag *current_flag; /* Pointer for traversing list */
> >@@ -171,6 +172,7 @@
> > static int split_opts();
> > static int check_multiple_opts();
> > static int check_overwrite();
> >+static int check_verbose();
> > static int interactive( char *);
> > static int interactive_flag( struct Flag *);
> > static int interactive_option( struct Option *);
> >@@ -728,6 +730,12 @@
> > overwrite = 1;
> > }
> >
> >+ /* Verbose option */
> >+ else if ( strcmp(ptr,"--v") == 0 ||
> >strcmp(ptr,"--verbose") == 0 )
> >+ {
> >+ module_info.verbose = 1;
> >+ }
> >+
> > /* Force gui to come up */
> > else if ( strcmp(ptr,"--ui") == 0 )
> > {
> >@@ -794,6 +802,9 @@
> > if ( check_overwrite () )
> > return -1;
> >
> >+ if (check_verbose ())
> >+ module_info.verbose = 1;
> >+
> > return(0) ;
> > }
> >
> >@@ -932,6 +943,10 @@
> > len=show(item,len);
> > }
> >
> >+ strcpy (item, " [--verbose]");
> >+ len=show(item,len);
> >+
> >+
> > fprintf (stderr, "\n");
> >
> > /* Print help info for flags */
> >@@ -960,8 +975,9 @@
> > }
> >
> > if (new_prompt)
> >- fprintf(stderr," --o %s\n", _("Force overwrite of output
> >files")) ;
> >-
> >+ fprintf(stderr," --o %s\n", _("Force overwrite of output
> >files")) ;
> >+
> >+ fprintf(stderr," --v %s\n", _("Verbose module output")) ;
> >
> > /* Print help info for options */
> >
> >@@ -1334,9 +1350,10 @@
> > }
> > }
> > if (new_prompt)
> >- {
> > fprintf(stdout, " [--<b>overwrite</b>] ");
> >- }
> >+
> >+ fprintf(stdout, " [--<b>verbose</b>] ");
> >+
> > fprintf(stdout, "\n");
> >
> >
> >@@ -1371,6 +1388,10 @@
> > fprintf(stdout, "<DT><b>--overwrite</b></DT>\n");
> > fprintf(stdout, "<DD>Force overwrite of output
> > files</DD>");
> > }
> >+
> >+ fprintf(stdout, "<DT><b>--verbose</b></DT>\n");
> >+ fprintf(stdout, "<DD>Verbose module output</DD>");
> >+
> > fprintf(stdout, "</DL>\n");
> > }
> >
> >@@ -2144,6 +2165,34 @@
> > }
> >
> > return(error) ;
> >+}
> >+
> >+/* Check verbose */
> >+static int check_verbose (void)
> >+{
> >+ char *verstr;
> >+ int verb;
> >+
> >+ verb = 0;
> >+ /* Check the GRASS VERBOSE variable */
> >+ if ( (verstr = G__getenv ( "VERBOSE" )) ) {
> >+ verb = atoi ( verstr );
> >+ }
> >+
> >+ /* Check the GRASS_OVERWRITE environment variable */
> >+ if ( (verstr = getenv ( "GRASS_VERBOSE" )) ) {
> >+ if (atoi ( verstr ))
> >+ verb = 1;
> >+ }
> >+
> >+ if ( verb ) {
> >+ module_info.verbose = 1;
> >+ /* Set the environment so that programs run in a script also
> >obey --o */
> >+ putenv("GRASS_OVERWRITE=1");
> >+ /* No need to check options for existing files if overwrite is
> >true */
> >+ }
> >+
> >+ return(verb) ;
> > }
> >
> > static int interactive( char *command)
> >
> >
> >------------------------------------------------------------------------
> >
> >_______________________________________________
> >grass-dev mailing list
> >grass-dev at grass.itc.it
> >http://grass.itc.it/mailman/listinfo/grass-dev
--
Jachym Cepicky
e-mail: jachym.cepicky at centrum.cz
URL: http://les-ejk.cz
GPG: http://les-ejk.cz/gnupg_public_key/jachym_cepicky-gpg_public_key.asc
-----------------------------------------
OFFICE:
GDF-Hannover
Mengendamm 16d
30177 Hannover
Germany
e-mail: cepicky at gdf-hannover.de
URL: http://gdf-hannover.de
Tel.: +49 511-39088507
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 191 bytes
Desc: Digital signature
Url : http://lists.osgeo.org/pipermail/grass-dev/attachments/20060920/6eb1722b/attachment.bin
More information about the grass-dev
mailing list