[GRASS-dev] g.mlist as C implementation?
Michael Barton
michael.barton at asu.edu
Tue Sep 11 14:10:00 EDT 2007
Another reason to consider extending the functionality of g.list over
improvements to the g.mlist script is that a C-module would run in a Windows
environment and the script contains a lot of *nix-isms that could be
problematic even with Mysys.
Michael
On 9/10/07 7:20 PM, "Glynn Clements" <glynn at gclements.plus.com> wrote:
>
> Hamish wrote:
>
>> I noticed parts of the script may be a bit fragile/inefficient, which is
>> of concern for a module mainly intended as a scripting tool.
>>
>> - The script relies on "echo -n"; not portable?
>
> Nope. According to the official specification, echo doesn't accept any
> switches. OTOH, the GNU version doesn't support the \c sequence. IOW,
> there is no portable way to echo a string without appending a newline.
>
>> http://www.opengroup.org/onlinepubs/009695399/utilities/echo.html
>>
>>
>> + g.list type=$type mapset=$mapset \
>> + | grep -v '^-\+$' \
>> + | grep -v "files available" \
>> + | grep -vi "mapset" \
>> + | sed 's/ */\n/g' \
>> + | grep -v '^$' \
>> + | grep "$search" \
>> + | sort \
>> + | while read i
>>
>> - combine the groups of sequential greps into single calls with the \|
>> "OR" expr.
>
> The second and third can certainly be combined that way, provided that
> you can use (or not use) -i for both (which is probably the case). I'm
> not sure whether you can include the anchors (^ and $) within a
> branch.
>
> Hmm; this is wrong:
>
> grep -vi "mapset"
>
> Nothing (other than common sense) prevents you from creating a map
> named "mapset".
>
>> - The `grep -v "files available"` will fail when translated,
>> 'raster files available in mapset <PERMANENT>:'
>> I assume the `grep -vi "mapset"` is there as a poor workaround for that.
>> ("mapset" will not be as translated as often as "files available") :-/
>
> One more reason why we need a g.list which isn't quite so "hostile" to
> scripting.
>
>> Is there a standard C library fn we can call to get regex support?
>> Direct pattern searching in g.list would be preferable; I agree that
>> a DIY reimplementation is a lot more trouble than it is worth. (unless
>> some standard GPL code is copied verbatim into a new G_regex() libgis fn)?
>> things like r.out.mpeg have basic map-name matching capabilities already.
>
> For regular expressions, regcomp(), regexec(), regfree() and
> regerror() are specified by POSIX.1. For shell "glob" patterns,
> fnmatch() is specified by POSIX.2. None of these are specified by
> either version of ANSI C, so we would need additional libraries for
> Windows.
__________________________________________
Michael Barton, Professor of Anthropology
Director of Graduate Studies
School of Human Evolution & Social Change
Center for Social Dynamics and Complexity
Arizona State University
phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton
More information about the grass-dev
mailing list