This class implements standard input using readline against standard input. It supports tab completion.
Initializes the readline-aware Input instance for text.
# File lib/rex/ui/text/input/readline.rb, line 20 def initialize(tab_complete_proc = nil) if(not Object.const_defined?('Readline')) begin require 'readline' rescue ::LoadError require 'readline_compatible' end end self.extend(::Readline) if (tab_complete_proc) ::Readline.basic_word_break_characters = "\x00" ::Readline.completion_proc = tab_complete_proc @rl_saved_proc = tab_complete_proc end end
Returns the output pipe handle
# File lib/rex/ui/text/input/readline.rb, line 101 def fd $stdin end
Read a line from stdin
# File lib/rex/ui/text/input/readline.rb, line 67 def gets() begin self.fd.gets() rescue ::Errno::EINTR retry end end
Indicates that this input medium as a shell builtin, no need to extend.
# File lib/rex/ui/text/input/readline.rb, line 109 def intrinsic_shell? true end
Stick readline into a low-priority thread so that the scheduler doesn't slow down other background threads. This is important when there are many active background jobs, such as when the user is running Karmetasploit
# File lib/rex/ui/text/input/readline.rb, line 80 def pgets() line = nil orig = Thread.current.priority begin Thread.current.priority = -20 output.prompting line = ::Readline.readline(prompt, true) ::Readline::HISTORY.pop if (line and line.empty?) ensure Thread.current.priority = orig || 0 end line end
Reattach the original completion proc
# File lib/rex/ui/text/input/readline.rb, line 41 def reset_tab_completion(tab_complete_proc = nil) ::Readline.basic_word_break_characters = "\x00" ::Readline.completion_proc = tab_complete_proc || @rl_saved_proc end
Generated with the Darkfish Rdoc Generator 2.