[前][次][番号順一覧][スレッド一覧]

ruby-changes:15741

From: nobu <ko1@a...>
Date: Sat, 8 May 2010 13:11:46 +0900 (JST)
Subject: [ruby-changes:15741] Ruby:r27669 (trunk): * lib/rubygems/user_interaction.rb (Gem::StreamUI#ask_for_password):

nobu	2010-05-08 13:11:30 +0900 (Sat, 08 May 2010)

  New Revision: 27669

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27669

  Log:
    * lib/rubygems/user_interaction.rb (Gem::StreamUI#ask_for_password):
      use io/console.

  Modified files:
    trunk/ChangeLog
    trunk/lib/rubygems/user_interaction.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 27668)
+++ ChangeLog	(revision 27669)
@@ -1,5 +1,8 @@
-Sat May  8 13:05:37 2010  Nobuyoshi Nakada  <nobu@r...>
+Sat May  8 13:11:28 2010  Nobuyoshi Nakada  <nobu@r...>
 
+	* lib/rubygems/user_interaction.rb (Gem::StreamUI#ask_for_password):
+	  use io/console.
+
 	* ext/io/console: imported.  [ruby-dev:40897]
 
 Sat May  8 12:25:15 2010  Nobuyoshi Nakada  <nobu@r...>
Index: lib/rubygems/user_interaction.rb
===================================================================
--- lib/rubygems/user_interaction.rb	(revision 27668)
+++ lib/rubygems/user_interaction.rb	(revision 27669)
@@ -224,41 +224,13 @@
   def ask_for_password(question)
     return nil if not @ins.tty?
 
+    require 'io/console'
+
     @outs.print(question + "  ")
     @outs.flush
 
-    Gem.win_platform? ? ask_for_password_on_windows : ask_for_password_on_unix
-  end
-
-  ##
-  # Asks for a password that works on windows. Ripped from the Heroku gem.
-
-  def ask_for_password_on_windows
-    require "Win32API"
-    char = nil
-    password = ''
-
-    while char = Win32API.new("crtdll", "_getch", [ ], "L").Call do
-      break if char == 10 || char == 13 # received carriage return or newline
-      if char == 127 || char == 8 # backspace and delete
-        password.slice!(-1, 1)
-      else
-        password << char.chr
-      end
-    end
-
-    puts
-    password
-  end
-
-  ##
-  # Asks for a password that works on unix
-
-  def ask_for_password_on_unix
-    system "stty -echo"
-    password = @ins.gets
+    password = @ins.noecho {@ins.gets}
     password.chomp! if password
-    system "stty echo"
     password
   end
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]