[GRASS5] ticket 1175 - longer grassfile names

there is a bug report #1175 about a problem with longer grass filenames.
I am not sure whether this has been addressed (I haven't found anything
related)
but I have observed some strange behavior of r.mapcalc related to this
recently:

Case 1
The command gives segmentation fault when it is trying to write into
history file (the resulting map is correct but the history file is
missing the expression)
The exactly same expression runs fine in interactive mode

GRASS> r.mapcalc
tdif98lidrtk.5m="(tlid98.5site-tlid98srtkdec02.5m)*mask.testrtk"
100%
Segmentation fault

GRASS:> r.mapcalc
Enter expressions, "end" when done.
mapcalc> tdif98lidrtk.5m=(tlid98.5site-tlid98srtkdec02.5m)*mask.testrtk
mapcalc> end

100%

Case 2
The expression with the same length runs OK or gives syntax error,
depending
on the length(?) of the name of the resulting reaster map

GRASS:~/lresults/lcoast/baldh > r.mapcalc
tdiflid98=(tlid98srtkdec02.5m-lid98srtkdec02.5m)*mask.testrtk2
100%
GRASS:~/lresults/lcoast/baldh > r.mapcalc
tdif98lidrtk.5m=(tlid98.5site-tlid98srtkdec02.5m)*mask.testrtk
bash: syntax error near unexpected token `('

There were some other cases where r.mapcalc had problems and shortening
the file name fixed them

I am not sure that this should be considered a bug but it may be useful
to document this behavior in the manual page.

Helena

Helena wrote:

there is a bug report #1175 about a problem with longer grass filenames.
I am not sure whether this has been addressed (I haven't found anything
related)
but I have observed some strange behavior of r.mapcalc related to this
recently:

Case 1
The command gives segmentation fault when it is trying to write into
history file (the resulting map is correct but the history file is
missing the expression)
The exactly same expression runs fine in interactive mode

GRASS> r.mapcalc
tdif98lidrtk.5m="(tlid98.5site-tlid98srtkdec02.5m)*mask.testrtk"
100%
Segmentation fault

Markus reported a similar problem to me earlier today, which I'm
looking into.

GRASS:> r.mapcalc
Enter expressions, "end" when done.
mapcalc> tdif98lidrtk.5m=(tlid98.5site-tlid98srtkdec02.5m)*mask.testrtk
mapcalc> end

100%

So it works if you enter the expression interactively instead of on
the command line?

Case 2
The expression with the same length runs OK or gives syntax error,
depending
on the length(?) of the name of the resulting reaster map

GRASS:~/lresults/lcoast/baldh > r.mapcalc
tdiflid98=(tlid98srtkdec02.5m-lid98srtkdec02.5m)*mask.testrtk2
100%
GRASS:~/lresults/lcoast/baldh > r.mapcalc
tdif98lidrtk.5m=(tlid98.5site-tlid98srtkdec02.5m)*mask.testrtk
bash: syntax error near unexpected token `('

This is a shell issue; parentheses are shell syntax, and should be
quoted:

bash 1.14.7:
  $ echo foo=(bar)
  bash: syntax error near unexpected token `foo=(b'

bash 2.03.8:
  $ echo foo=(bar)
  foo=(bar)

ash 0.2:
  $ echo foo=(bar)
  Syntax error: "(" unexpected

As a general rule, always enclose the the entire expression in single
quotes (unless you are writing a script and want to use shell
variables; in that case, use double quotes). The same applies to '*'.

There were some other cases where r.mapcalc had problems and shortening
the file name fixed them

In case 2, it may have something to do with the dot in the filename.

--
Glynn Clements <glynn.clements@virgin.net>