[GRASS-user] r.average with winGRASS

Paul Kelly paul-grass at stjohnspoint.co.uk
Fri Nov 3 05:28:21 EST 2006


On Fri, 3 Nov 2006, Eduardo Hdo. Izcara wrote:

> Hi all,
>
> I’m trying to run the command r.average with the Windows GRASS 6.3.x development version, nicely provided by Huidae Cho. I always obtain de message:
>
> “ERROR running r.stats command”
>
> No matter what the raster base and cover input are, the result is always the same.
>
> Does somebody know about some issue with the Windows versions of those commands? Of course, the Linux version works perfectly with the same arguments


Yes, it was an issue with the module calling other modules using 
G_system(). I expect there will be lots of issues like that with native 
Windows GRASS, but they can be fixed. The patch included below fixes it 
for now, but I don't want to apply it to CVS because (a) it isn't totally 
correct, and it should convert the tempfile pathnames to Windows directory 
separators - also it may depend on the shell being used - can you redirect 
standard input from a file with cmd.exe? Perhaps you can and this is OK... 
and (b) I'd rather find out why G_system() doesn't work than have to 
change it to system() everywhere. But we'll get it working eventually.

Paul

Index: main.c
===================================================================
RCS file: /home/grass/grassrepository/grass6/raster/r.average/main.c,v
retrieving revision 2.8
diff -u -r2.8 main.c
--- main.c      24 Sep 2006 17:44:00 -0000      2.8
+++ main.c      3 Nov 2006 10:20:05 -0000
@@ -89,9 +89,9 @@
      tempfile1 = G_tempfile();
      tempfile2 = G_tempfile();
      G_message("%s:",STATS);
-    sprintf (command, "%s -anC input='%s,%s' fs=space > %s",
+    sprintf (command, "%s -anC input=\"%s,%s\" fs=space > \"%s\"",
         STATS, basemap->answer, covermap->answer, tempfile1);
-    if ((stat = G_system(command)))
+    if ((stat = system(command)))
      {
         unlink(tempfile1);
         G_fatal_error(_("%s: ERROR running %s command"), G_program_name(), 
STATS
);
@@ -149,9 +149,9 @@
      fclose (fd1);
      fclose (fd2);
      G_message("%s:",RECODE);
-    sprintf (command, "%s input='%s' output='%s' < %s",
+    sprintf (command, "%s input=%s output=%s < \"%s\"",
         RECODE, basemap->answer, outputmap->answer, tempfile2);
-    stat = G_system(command);
+    stat = system(command);
      unlink (tempfile1);
      unlink (tempfile2);


More information about the grass-user mailing list