[GRASS-dev] g.mlist as C implementation?
Glynn Clements
glynn at gclements.plus.com
Tue Sep 11 15:38:24 EDT 2007
Paul Kelly 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.
>
> What about the echo that is included with GRASS: $GISBASE/etc/echo?
That would work, but it could have a substantial performance hit, as
it can be executed twice per name ("echo" is normally a shell
built-in).
One solution would be to use "$echo", and set it to either "echo" or
"$GISBASE/etc/echo" depending upon whether the default echo command
understands the -n switch. Patch attached.
--
Glynn Clements <glynn at gclements.plus.com>
-------------- next part --------------
--- scripts/g.mlist/g.mlist~ 2007-09-11 16:19:42.000000000 +0100
+++ scripts/g.mlist/g.mlist 2007-09-11 20:34:45.000000000 +0100
@@ -55,6 +55,12 @@
#% required : no
#%end
+if [ "`echo -n foo | wc -l`" = 0 ] ; then
+ echo=echo
+else
+ echo="$GISBASE/etc/echo"
+fi
+
do_list() {
if [ ! "$search" ] ; then
search="."
@@ -80,11 +86,11 @@
if [ -z "$sep" ] ; then
echo
else
- echo -n "$sep"
+ "$echo" -n "$sep"
fi
fi
start=1
- echo -n "$i$MAPSET"
+ "$echo" -n "$i$MAPSET"
done
}
More information about the grass-dev
mailing list