(separating this from locale-related email exchange)
With winGRASS is installed in "Program Files", g.gui wxpython
bails out with this error:
GRASS 6.4.0svn (demolocation)> g.gui wxpython
wxgui: can't open file 'C:/Program': [Errno 2] No such file or directory
Comments:
On Thu, Jan 14, 2010 at 1:22 AM, Glynn Clements
<glynn@gclements.plus.com> wrote:
Glynn Clements wrote:
> > Even if we continue to use _spawn*, the quoting code can be taken from
> > 7.0; see escaped() in lib/gis/spawn.c. The code is actually quite
> > tricky, due to the bizarre quoting rules:
> >
> > http://msdn.microsoft.com/en-us/library/17w5ykft.aspx
>
> Would it be possible for you to suggest a patch?I'll look into it.
Copying spawn.c from 7.0 seems to work fine. But it's a significant
change, so it should be tested as thoroughly as possible.
Could a developer who has the compile train running, please test this?
Also, fixing
G_spawn() doesn't help with modules which use system() or popen(); I
quite recently replaced most of those in 7.0.BTW: in looking for test cases, I noticed that neither "g.list -f" nor
"g.mlist -f" work on Windows. E.g.:sprintf(lister, "%s/etc/lister/%s", G_gisbase(),
list[n].element[0]);if (access(lister, 1) == 0) { /* execute permission? */
G_spawn(lister, lister, opt.mapset->answer, NULL);
continue;
}Because the path lacks the .exe suffix, the access() call fails.
G_spawn() itself doesn't need the .exe suffix, but it never gets that
far.
On Thu, Jan 14, 2010 at 7:41 AM, Glynn Clements
<glynn@gclements.plus.com> wrote:
Markus Neteler wrote:
> Because the path lacks the .exe suffix, the access() call fails.
> G_spawn() itself doesn't need the .exe suffix, but it never gets that
> far.Would this be hell?
#ifndef __MINGW32__
sprintf(lister, "%s/etc/lister/%s", G_gisbase(),
#else
sprintf(lister, "%s/etc/lister.exe/%s", G_gisbase(),
#endifThe .exe goes on the end:
#ifndef __MINGW32__
sprintf(lister, "%s/etc/lister/%s", G_gisbase(),
#else
sprintf(lister, "%s/etc/lister/%s.exe", G_gisbase(),
#endifExcept ... this requires that the lister is an executable; there's no
fundamental reason why it couldn't be a script, other than the
access() check (well: that, and the fact that G_spawn() etc don't use
the shell currently).
Is that a +/-0 or a -1 for the second patch?
Markus