def readline(_size=-1, prompt='', float=True, priority=10): # The argument _size is unused, but is there for compatibility # with the existing readline global buffer_handle, prompt_handle, suggest_handle, eof, \ show_suggestions # XXX circular imports from pwnlib.term import term_mode if not term_mode: six.print_(prompt, end='', flush=True) return getattr(sys.stdin, 'buffer', sys.stdin).readline(_size).rstrip(b'\n') show_suggestions = False eof = False if prompt: prompt_handle = term.output(prompt, float=float, priority=priority) else: prompt_handle = None buffer_handle = term.output(float=float, priority=priority) suggest_handle = None clear() if startup_hook: startup_hook() try: while True: try: try: keymap.handle_input() except EOFError: if len(buffer_left + buffer_right) == 0: return b'' if eof: return b'' else: buffer = (buffer_left + buffer_right) if buffer: history.insert(0, buffer) return force_to_bytes(buffer) + b'\n' except KeyboardInterrupt: control_c() finally: line = buffer_left + buffer_right + '\n' buffer_handle.update(line) buffer_handle.freeze() buffer_handle = None if prompt_handle: prompt_handle.freeze() prompt_handle = None if suggest_handle: suggest_handle.freeze() suggest_handle = None if shutdown_hook: shutdown_hook()
def readline(_size = None, prompt = '', float = True, priority = 10): # The argument _size is unused, but is there for compatibility # with the existing readline global buffer_handle, prompt_handle, suggest_handle, eof, \ show_suggestions show_suggestions = False eof = False if prompt: prompt_handle = term.output(prompt, float = float, priority = priority) else: prompt_handle = None buffer_handle = term.output(float = float, priority = priority) suggest_handle = None clear() if startup_hook: startup_hook() try: while True: try: try: keymap.handle_input() except EOFError: if len(buffer_left + buffer_right) == 0: return '' if eof: return '' else: buffer = (buffer_left + buffer_right).encode('utf-8') if buffer: history.insert(0, buffer) return buffer + '\n' except KeyboardInterrupt: control_c() finally: line = buffer_left + buffer_right + '\n' buffer_handle.update(line) buffer_handle.freeze() buffer_handle = None if prompt_handle: prompt_handle.freeze() prompt_handle = None if suggest_handle: suggest_handle.freeze() suggest_handle = None if shutdown_hook: shutdown_hook()
def readline(_size=None, prompt='', float=True, priority=10): # The argument _size is unused, but is there for compatibility # with the existing readline global buffer_handle, prompt_handle, suggest_handle, eof, \ show_suggestions show_suggestions = False eof = False if prompt: prompt_handle = term.output(prompt, float=float, priority=priority) else: prompt_handle = None buffer_handle = term.output(float=float, priority=priority) suggest_handle = None clear() if startup_hook: startup_hook() try: while True: try: try: keymap.handle_input() except EOFError: if len(buffer_left + buffer_right) == 0: return '' if eof: return '' else: buffer = (buffer_left + buffer_right) if buffer: history.insert(0, buffer) return force_to_bytes(buffer) + '\n' except KeyboardInterrupt: control_c() finally: line = buffer_left + buffer_right + '\n' buffer_handle.update(line) buffer_handle.freeze() buffer_handle = None if prompt_handle: prompt_handle.freeze() prompt_handle = None if suggest_handle: suggest_handle.freeze() suggest_handle = None if shutdown_hook: shutdown_hook()
def redisplay(): global suggest_handle if buffer_handle: if show_suggestions and suggest_hook: suggestions = suggest_hook(buffer_left, buffer_right) if suggest_handle is None: h = prompt_handle or buffer_handle suggest_handle = term.output(before=h) s = fmt_suggestions(suggestions) suggest_handle.update(s) elif suggest_handle: suggest_handle.update('') if search_idx is None: s = None if buffer_right: s = buffer_left + cursor(buffer_right[0]) + buffer_right[1:] elif show_completion and complete_hook: ret = complete_hook(buffer_left, buffer_right) if ret: s = buffer_left + \ text.underline(cursor(ret[0])) + \ text.underline(ret[1:]) s = s or buffer_left + cursor(' ') buffer_handle.update(s) else: if search_results != []: idx, i, j = search_results[search_idx] buf = history[idx] a, b, c = buf[:i], buf[i:j], buf[j:] s = a + text.bold_green(b) + c else: s = text.white_on_red(buffer_left) buffer_handle.update('(search) ' + s)
def redisplay(): global suggest_handle if buffer_handle: if show_suggestions and suggest_hook: suggestions = suggest_hook(buffer_left, buffer_right) if suggest_handle is None: h = prompt_handle or buffer_handle suggest_handle = term.output(before = h) s = fmt_suggestions(suggestions) suggest_handle.update(s) elif suggest_handle: suggest_handle.update('') if search_idx is None: s = None if buffer_right: s = buffer_left + cursor(buffer_right[0]) + buffer_right[1:] elif show_completion and complete_hook: ret = complete_hook(buffer_left, buffer_right) if ret: s = buffer_left + \ text.underline(cursor(ret[0])) + \ text.underline(ret[1:]) s = s or buffer_left + cursor(' ') buffer_handle.update(s) else: if search_results != []: idx, i, j = search_results[search_idx] buf = history[idx] a, b, c = buf[:i], buf[i:j], buf[j:] s = a + text.bold_green(b) + c else: s = text.white_on_red(buffer_left) buffer_handle.update('(search) ' + s)