278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
|
# File 'lib/fuzz/fuzz.rb', line 278
def self.update_file_object(fo)
if File.writable?(fo.fullpath)
log_verbose(%Q{Updating #{fo}...})
ftmp = Tempfile.new(fo.name)
log_verbose(%Q{+ Writing temp file #{ftmp.path}...})
fo.lines.each { |ln| ftmp.print ln }
ftmp.close(false) log_verbose(%Q{+ Replacing #{fo} with #{ftmp.path}})
ftmp2 = Tempfile.new(fo.name)
ftmp2_name = ftmp2.path.dup
ftmp2.close(true)
mv(fo.fullpath, ftmp2_name)
begin
mv(ftmp.path, fo.fullpath)
chmod(File.lstat(ftmp2_name).mode, fo.fullpath)
rescue
log_error(%Q{FAILED updating #{fo}: #{$!}})
mv(ftmp2_name, fo.fullpath)
raise
end
File.unlink(ftmp2_name)
log_verbose(%Q{Finished updating #{fo}.})
return true
else
log_error(%Q{NO_ACCESS - cannot update #{fo}})
return false
end
end
|