Luke Kanies <[email protected]> writes:

> AFAIK the file shouldn't stay past the existence of the process itself - it
> just needs to persist after the user is done editing it.

Really?  I though the purpose of 'ralsh --edit' was to let me modify the file
and use the content later.  If not, then Tempfile alone is absolutely the
right answer.

> We can certainly use Tempfile or whatever instead.  Keep in mind that ralsh
> has seen very few updates since its first days as a proof of concept.

*nod*  There were a few places that looked like they had been best-practice
when written, but now looked a bit old, that I touched.  I don't think this
is a terrible shortfall of the authors or anything.

        Daniel

> On Apr 8, 2010, at 7:38 AM, Markus Roberts wrote:
>
>> I'm unsure of the use-case here, but a non-TOCTOU way of replacing
>> extant files (while assuring that they aren't symlinks) would, if
>> possible, maintain the old semantics more closely.  Conversely, if we
>> don't need persistence past this run, or external access, a tempfile
>> might be better.  Does anyone know _why_ we want these to linger?  Or
>> even if?
>>
>> On Thu, Apr 8, 2010 at 7:06 AM, Daniel Pittman <[email protected]> wrote:
>>> ralsh in edit mode generates a highly predictable filename; since we
>>> actually
>>> want it to linger at the end of the process, we only take care that the
>>> file
>>> didn't exist before we tried to create it.
>>> ---
>>>  lib/puppet/application/ralsh.rb |    3 ++-
>>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/lib/puppet/application/ralsh.rb b/lib/puppet/
>>> application/ralsh.rb
>>> index b9f7a58..51c3daa 100644
>>> --- a/lib/puppet/application/ralsh.rb
>>> +++ b/lib/puppet/application/ralsh.rb
>>> @@ -1,6 +1,7 @@
>>>  require 'puppet'
>>>  require 'puppet/application'
>>>  require 'facter'
>>> +require 'tempfile'
>>>
>>>  Puppet::Application.new(:ralsh) do
>>>
>>> @@ -121,7 +122,7 @@ Puppet::Application.new(:ralsh) do
>>>         if options[:edit]
>>>             file = "/tmp/x2puppet-#{Process.pid}.pp"
>>>             begin
>>> -                File.open(file, "w") do |f|
>>> +                File.open(file, File::WRONLY|File::CREAT|
>>> File::EXCL) do |f|
>>>                     f.puts text
>>>                 end
>>>                 ENV["EDITOR"] ||= "vi"
>>> --
>>> 1.7.0.4
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Puppet Developers" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/puppet-dev?hl=en
>>> .
>>>
>>>
>>
>>
>>
>> --
>> -----------------------------------------------------------
>> The power of accurate observation is
>> commonly called cynicism by those
>> who have not got it.  ~George Bernard Shaw
>> ------------------------------------------------------------
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Puppet Developers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/puppet-dev?hl=en
>> .
>>
>
>
> --
> You don't learn anything the second time you're kicked by a mule.
>     -- Anonymous Texan
> ---------------------------------------------------------------------
> Luke Kanies  -|-   http://puppetlabs.com   -|-   +1(615)594-8199

-- 
✣ Daniel Pittman            ✉ [email protected]            ☎ +61 401 155 707
               ♽ made with 100 percent post-consumer electrons

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to