[GRASS5] g.manual and getopts

Markus Neteler neteler at geog.uni-hannover.de
Tue Dec 12 08:19:57 EST 2000


On Tue, Dec 12, 2000 at 12:24:22PM +0900, GRASS wrote:
> From: Markus Neteler <neteler at geog.uni-hannover.de>
> > Hi all,
> > 
> > just found (probably) a solution for the problem of parameter/flag
> > positioning in GRASS scripts (especially tcltkgrass is affected, reported by
> > Andreas for g.manual):
> > 
> > getopts
> > http://orca.st.usm.edu/~seyfarth/unix/unix-6-11-17.html
> > 
> >                     * getopts gets shell scripts options 
> > 
> >                     * while getopts ivo: op
> >                       do
> >                          case $op in
> >                          i) invert=1 ;;
> >                          v) verbose=1 ;;
> >                          o) filename=$OPTARG ;;
> >                          esac
> >                       done
> >                       shift 'expr $OPTIND - 1'
> > 
> >                     * After the shift the remaining arguments are in $* 
> > 
> >                     * Script option syntax is flexible:
> >                       doit -i -v file1
> >                       doit -iv file1 -o file2 
> > 
> > 
> > This might be a way to allow flexible flag/parameters:
> > man getopts:
> > "getopts is used by shell procedures to parse  positional  parameters."
> > 
> > Maybe someone is willing to update g.manual script and we update other
> > scripts later while learning from the g.manual implementation.
> > 
> 
> Hi developers,
> 
> Actually it's another problem. getopts can not understand command line like
> the following:
> 
> 	doit this that -i -v file1		# BAD USAGE
> 
> getopts assumes that ALL options(like -?) are followed by another arguments.
> 
> 	doit -i -v file1 this that		# GOOD USAGE
> 
> And tcltkgrass may want bad usage :-)
> I think the latter is more standard. isn't it?
> 
> Anyway, I changed g.manual to use getopts. This can not work with current
> tcltkgrass.
> "g.manual entries=d.area -f" should be changed to "g.manual -f entries=d.area".
> In addition, -f flag is not implemented by original g.manual script author
> and i don't know what it is.
> 
> Now, g.manual allows some flexibility. However, each option in g.manual is
> exclusive to another. So this may be useless :-)

We need someone who reads/write tcl: In 
src/tcltkgrass/main/gui.tcl

the order of parameters is defined (where the command line is build).
Unfortunately I have no idea where to find that within this file.
Maybe a simple change in order would achive that tcltkgrass writes
in it's command line:
 <module> <flag(s)> <parameter>

Hope we find a tcl/tk professional to change that,

Markus

---------------------------------------- 
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo at geog.uni-hannover.de with
subject 'unsubscribe grass5'



More information about the grass-dev mailing list