Hi,
we have a small problem with grass.core.percent; which we use
in a "for" loop. Unfortunately, calling the classical g.message,
the percent() function issues with each output a newline.
Since we work with very big map (around 350.000.000 cells),
getting that number of newlines is, say, unfortunate.
I wonder if we need some "no newline" magic in g.message for this
(ne flag?) or if we can clone percent() in lib/python/core.py to not write
out a new line but to go just to the beginning of the line instead as
it is done for the topology creation progress.
Markus
Markus Neteler wrote:
we have a small problem with grass.core.percent; which we use
in a "for" loop. Unfortunately, calling the classical g.message,
the percent() function issues with each output a newline.
Since we work with very big map (around 350.000.000 cells),
getting that number of newlines is, say, unfortunate.
I wonder if we need some "no newline" magic in g.message for this
(ne flag?) or if we can clone percent() in lib/python/core.py to not write
out a new line but to go just to the beginning of the line instead as
it is done for the topology creation progress.
general/g.message/main.c:
else if (percent->answer) {
int i, n, s;
i = n = s = -1;
sscanf(message->answer, "%d %d %d", &i, &n, &s);
if (s == -1)
G_fatal_error(_("Unable to parse input message"));
G_percent(i, n, s);
fprintf(stderr, "\n");
}
I really don't think that fprintf() belongs there; it should just call
G_percent(), without adding any "enhancements" of its own.
--
Glynn Clements <glynn@gclements.plus.com>
On Fri, Oct 22, 2010 at 4:55 AM, Glynn Clements
<glynn@gclements.plus.com> wrote:
Markus Neteler wrote:
we have a small problem with grass.core.percent; which we use
in a "for" loop. Unfortunately, calling the classical g.message,
the percent() function issues with each output a newline.
Since we work with very big map (around 350.000.000 cells),
getting that number of newlines is, say, unfortunate.
I wonder if we need some "no newline" magic in g.message for this
(ne flag?) or if we can clone percent() in lib/python/core.py to not write
out a new line but to go just to the beginning of the line instead as
it is done for the topology creation progress.
general/g.message/main.c:
else if (percent->answer) {
int i, n, s;
i = n = s = -1;
sscanf(message->answer, "%d %d %d", &i, &n, &s);
if (s == -1)
G_fatal_error(_("Unable to parse input message"));
G_percent(i, n, s);
fprintf(stderr, "\n");
}
I really don't think that fprintf() belongs there; it should just call
G_percent(), without adding any "enhancements" of its own.
Ah, I missed to check main.c for this. Since nothing is using "g.percent -p"
in the scripts section, I have taken out fprintf()..
Old behaviour:
GRASS 6.4.1svn (nc_spm_08):~ > g.message -p "1 1 1"
100%
GRASS 6.4.1svn (nc_spm_08):~ >
New behaviour:
GRASS 6.4.1svn (nc_spm_08):~ > g.message -p "1 1 1"
100%
GRASS 6.4.1svn (nc_spm_08):~ >
Markus