[GRASS-dev] erratic behavior of v.in.ascii with WinGRASS
Moritz Lennert
mlennert at club.worldonline.be
Wed Feb 6 12:05:28 EST 2008
On 06/02/08 19:03, Glynn Clements wrote:
> Moritz Lennert wrote:
>
>>>> I would rather guess that depending on how the command line was
>>>> formulated, i.e. where the fs=| is placed, the command runs correctly
>>>> with the default values (i.e. '|' as seperator) or doesn't.
>>>>
>>> Not in the case of my Mac gui crash. Exact same command argument order
>>> (in gui):
>>>
>>> fs=| + different number of fields in different records (i.e., data
>>> file format bad) = crash TclTk
>>> fs=| + same number of fields in all records (i.e., data file format
>>> good) = OK
>>> fs="|" + different number of fields in different records (i.e., data
>>> file format bad) = OK
>>> fs=, + different number of fields in different records (i.e., data
>>> file format bad) = OK
>>>
>> As Glynn said:
>>> The Tcl/Tk GUI doesn't use the shell to execute commands, so it
>>> shouldn't be an issue there.
>> So, since all the above are done via the gui my guess seems to be
>> totally off anyhow...
>
> If you use quotes in the GUI, the quotes will get passed onto the
> command, i.e.
>
> strcmp(argv[1], "fs=\"|\"") == 0
>
> This will cause both " and | to be treated as field separators.
>
> Note that Tcl "exec" and "open |..." only recognise | as a pipeline
> command separator if it is a separate argument. They won't split fs=|
> into fs= and | the way that the shell will.
>
>> IIRC, you said that you cannot reproduce this behaviour on the command
>> line, i.e. even the first case works on the command line ?
>
> fs=| will never work on the command line; the shell will always parse
> the | as the pipeline command separator.
Sorry, yes, obviously. I meant the second part of that case, i.e.
"different number of fields in different records".
Moritz
More information about the grass-dev
mailing list