[phobos] popen/pclose and bug 3157
Steve Schveighoffer
schveiguy at yahoo.com
Thu Sep 9 08:24:32 PDT 2010
The way we solve this is with a version that accepts the arguments as an array.
Then the arguments are passed to the shell after being properly quoted and
escaped.
-Steve
----- Original Message ----
From: Andrei Alexandrescu <andrei at erdani.com>
To: Discuss the phobos library for D <phobos at puremagic.com>
Sent: Thu, September 9, 2010 10:03:43 AM
Subject: Re: [phobos] popen/pclose and bug 3157
I think we need one more function - shellQuote. That would help people
quote their arguments properly to avoid trouble with filenames
containing spaces etc.
I suspect on Unix in general it suffices to prepend and append a single
quote ' and to replace any single quotes with '"'"'. Thus,
It's wonderful
becomes
'It'"'"'s wonderful'
Oh, and one more thing - shouldn't we template some functions on the
string type?
Andrei
On 9/9/10 6:43 CDT, Lars Tandle Kyllingstad wrote:
> On Thu, 2010-09-09 at 01:22 -0700, Brad Roberts wrote:
>> On 9/9/2010 12:59 AM, Lars Tandle Kyllingstad wrote:
>>> On Wed, 2010-09-08 at 13:52 -0700, Brad Roberts wrote:
>>>> On Wed, 8 Sep 2010, Lars Tandle Kyllingstad wrote:
>>>>> On Wed, 2010-09-08 at 02:14 -0700, Brad Roberts wrote:
>>>>>> I know that a major rework of std.process is a work in progress. What's
>>the
>>>>>> state of it? I have a need, right now, for being able to execute a command
>>>>>and
>>>>>> getting back both it's output and its exit code.. and it needs to work on
>>>all
>>>>>> platforms.
>>>>>
>>>>> The current status is that the POSIX version works, and has done so for
>>>>> a while. Its incorporation in Phobos, and development of the Windows
>>>>> implementation, has been blocked by a DMD bug which is now fixed in SVN.
>>>>>
>>>>> So I guess the next steps will be
>>>>> 1. Wait for next DMD release, which will contain aforementioned fix.
>>>>> 2. Finish up Windows version.
>>>>> 3. Code review and hopefully acceptance in time for following release.
>>>>> [ 4. Deprecation and subsequent death of File.popen(). ;) ]
>>>>>
>>>>> -Lars
>>>>
>>>> Would you point me to the docs for the new version?
>>>
>>>
>>> Sure:
>>>
>>> http://kyllingen.net/code/ltk/doc/process.html
>>>
>>> -Lars
>>>
>>
>> Thanks.. I like the looks of it. spawnProcess looks like exactly what I'd
>love
>> to have right now. :)
>>
>> I didn't read super closely, but some things that I noticed:
>>
>> In enum Redirect, you might want to change 'all' to 'allstd' or something.
>>Also,
>> you might want to generally comment about what's done with fd's NOT in the
>0..2
>> (inclusive) range.
>
> It is mentioned in the spawnProcess() docs -- see the 'Note' section.
>
>
>> You have such a rich set for spawnProcess that the omission of a form of
>> pipeProcess, pipeShell, execute, and shell that also takes an env array stands
>>out.
>
> I did consider it, but for completeness that would mean not just one,
> but two more forms of pipeProcess() and execute(). Example:
>
> // Already there:
> execute(command)
> execute(exe, args)
>
> // Add these?
> execute(command, env)
> execute(exe, args, env)
>
> It just seemed a bit too much for what I believed to be a rare need. If
> there is a real need for this, though, I don't have any problems with
> adding it.
>
> -Lars
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
_______________________________________________
phobos mailing list
phobos at puremagic.com
http://lists.puremagic.com/mailman/listinfo/phobos
More information about the phobos
mailing list