Bug report #736

Some GRASS commands broken

Added by Markus Neteler almost 17 years ago. Updated almost 17 years ago.

Status:Closed
Priority:Low
Assignee:nobody -
Category:GRASS
Affected QGIS version: Regression?:No
Operating System:Windows Easy fix?:No
Pull Request or Patch supplied: Resolution:invalid
Crashes QGIS or corrupts data: Copied to github as #:10795

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

History

#1 Updated by Markus Neteler almost 17 years ago

  • Resolution set to invalid
  • Status changed from Open to Closed

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.
" 

#2 Updated by Markus Neteler almost 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

#3 Updated by Markus Neteler almost 17 years ago

Additionally fixed:
- r.digit
- r.report
- r.transect

It seems that all raster commands are ok now.

Also available in: Atom PDF