+
+ @@safe_save_dir = nil
+ def Utils.set_safe_save_dir(str)
+ @@safe_save_dir = str.dup
+ end
+
+ def Utils.safe_save(file)
+ raise 'No safe save directory defined!' if @@safe_save_dir.nil?
+ basename = File.basename(file)
+ temp = Tempfile.new(basename,@@safe_save_dir)
+ temp.binmode
+ yield temp if block_given?
+ temp.close
+ File.rename(temp.path, file)
+ end
+
+