summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkeiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-01-14 14:17:18 +0000
committerkeiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-01-14 14:17:18 +0000
commit9deb82b1d9457997c34ebca25f2f985778c6c8fd (patch)
treec1333646153d456287182567dcc4da28d9b1f449
parent7dd52f895f8271be242ff549668d825295f12ccf (diff)
* lib/irb/ext/save-history.rb: outputs its history to
owner-only-readable file and change the permission of a file that already exists [Bug #7694]. Thanks Nobuhiro IMAI for bug reports. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38813 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--lib/irb/ext/save-history.rb13
2 files changed, 18 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 313ad9e89b..9b1030c56e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Jan 14 23:06:41 2013 Keiju Ishitsuka <keiju@ishitsuka.com>
+
+ * lib/irb/ext/save-history.rb: outputs its history to
+ owner-only-readable file and change the permission of a file that
+ already exists [Bug #7694]. Thanks Nobuhiro IMAI for bug reports.
+
Mon Jan 14 17:12:48 2013 Shugo Maeda <shugo@ruby-lang.org>
* enumerator.c (lazy_flat_map_func): flat_map should call each only
diff --git a/lib/irb/ext/save-history.rb b/lib/irb/ext/save-history.rb
index 3e0740d6fa..90beefbc6c 100644
--- a/lib/irb/ext/save-history.rb
+++ b/lib/irb/ext/save-history.rb
@@ -92,7 +92,18 @@ module IRB
history_file = File.expand_path(history_file)
end
history_file = IRB.rc_file("_history") unless history_file
- open(history_file, 'w' ) do |f|
+
+ # Change the permission of a file that already exists[BUG #7694]
+ begin
+ if File.stat(history_file).mode & 066
+ File.chmod(0600, history_file)
+ end
+ rescue Errno::ENOENT
+ rescue
+ raise
+ end
+
+ open(history_file, 'w', 0600 ) do |f|
hist = HISTORY.to_a
f.puts(hist[-num..-1] || hist)
end