[GRASS-dev] [GRASS GIS] #2314: output r.out.xyz
GRASS GIS
trac at osgeo.org
Sun Jun 1 06:05:09 PDT 2014
#2314: output r.out.xyz
-------------------------------------------------+--------------------------
Reporter: pvanbosgeo | Owner: grass-dev@…
Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: Default | Version: svn-trunk
Keywords: separator, pipe, r.out.xyz, r.stats | Platform: MSWindows 7
Cpu: All |
-------------------------------------------------+--------------------------
Comment(by hcho):
Replying to [comment:25 glynn]:
> Replying to [comment:18 annakrat]:
>
> > > If a command is executed via e.g. grass.run_command(), Python's
subprocess.Popen() provides the necessary quoting.
> >
> > Apparently not.
>
> Er, sort of. It quotes it, but the shell interprets | (and < and >) even
when quoted.
>
Quoting didn't help. I had to escape special characters with {{{^^^}}} in
r60634. It looks like subprocess.Popen(shell=True) calls cmd.exe twice, so
double escaping was needed. E.g., to escape {{{|}}}, {{{^^^|}}}} needs to
be fed into cmd.exe, but since cmd.exe is called twice, three {{{^}}}
becomes six {{{^}}} and {{{|}}} becomes {{{^|}}}. So we need
{{{^^^^^^^|}}}. I tested r60634 on Windows 7 with trunk and it worked.
Now back to G_OPT_F_SEP, since we fixed {{{|}}}, showing {{{|}}} or pipe
as default is a preference only.
Regarding the backtick issue, it was not exactly an issue because cmd.exe
does not support backticks anyway. I talked about g.mlist output=, which
was implemented recently. There was no way to support backticks, so we had
to implement output=.
--
Ticket URL: <http://trac.osgeo.org/grass/ticket/2314#comment:26>
GRASS GIS <http://grass.osgeo.org>
More information about the grass-dev
mailing list