Opened 17 years ago

Closed 17 years ago

Last modified 17 years ago

#736 closed defect (invalid)

Some GRASS commands broken

Reported by: neteler Owned by: nobody
Priority: major: does not work as expected Milestone:
Component: GRASS Version: 0.8.1
Keywords: Cc: neteler@…, feurbano@…
Must Fix for Release: No Platform: Windows
Platform Version: Awaiting user input: no

Description

Hi,

some GRASS commands are broken:

r.median base=CEA_cat@CEA_dati cover=CEA_aspect@CEA_dati output=aspect_median

Illegal filename. Character <'> not allowed.
Illegal filename. Character <'> not allowed.
Raster map ['CEA_aspect@CEA_dati'] not found
Illegal filename. Character <'> not allowed.
r.stats: ['CEA_aspect@CEA_dati] not found

Successfully finished

-> unclear why ' is present


r.mode base=delete cover=CEA_aspect output=del_aspetto

Illegal filename. Character <'> not allowed.
ERROR: r.stats: ['delete@CEA_dati] not found
Illegal filename. Character <'> not allowed.
Illegal filename. Character <'> not allowed.
ERROR: Raster map ['delete@CEA_dati'] not found

Same thing here.


But r.average with the same syntax works perfectly.


g.manual index
Starting browser 
<> for module index...

C:/Programmi/Quantum_GIS/grass/scripts/g.manual: ./: is a directory

this indicates that GRASS_HTML_BROWSER is undefined.

Regards, Markus

Change History (3)

comment:1 by neteler, 17 years ago

Resolution: invalid
Status: newclosed

Update: Shame on GRASS :-)

Glynn Clements found it:

http://grass.itc.it/pipermail/grass-dev/2007-July/032140.html

"r.median invokes r.stats via system(), using a single quote:

    strcpy (command, "r.stats -a '");
    strcat (command, G_fully_qualified_name (basemap, base_mapset));
    strcat (command, ",");
    strcat (command, G_fully_qualified_name (covermap, cover_mapset));
    strcat (command, "'");

/* strcpy (command,"cat /tmp/t"); */
    stats_fd = popen (command, "r");

    sprintf (command, "r.reclass i='%s' o='%s'",
        G_fully_qualified_name (basemap, base_mapset), outmap);

system() uses the platform's shell: /bin/sh on Unix, cmd.exe on
Windows NT/2K/XP, command.com on 95/98/ME. Single quotes won't work
with the Windows shells.

r.average doesn't quote the map names, and uses double quotes around
the output filename:

    sprintf (command, "%s -anC input=%s,%s fs=space > \"%s\"",
        STATS, basemap->answer, covermap->answer, tempfile1);

Using double quotes should suffice so long as the map name doesn't
contain $ or ` (a double quote would also be problematic, but isn't
legal in map names).

Ultimately, we need a Windows implementation of G_spawn_ex(), so that
we can avoid the shell altogether.
"

comment:2 by neteler, 17 years ago

I have fixed r.mode, r.median, and r.statistics in GRASS 6.3-CVS to use double quotes which are supported by MS-Windows.

Once QGIS take a new GRASS version, the problem should be cured.

Markus

comment:3 by neteler, 17 years ago

Additionally fixed:

  • r.digit
  • r.report
  • r.transect

It seems that all raster commands are ok now.

Note: See TracTickets for help on using tickets.