mirror of
				https://github.com/sqlmapproject/sqlmap.git
				synced 2025-11-04 09:57:38 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file.
 | 
						|
import atexit
 | 
						|
import contextlib
 | 
						|
import sys
 | 
						|
 | 
						|
from .ansitowin32 import AnsiToWin32
 | 
						|
 | 
						|
 | 
						|
orig_stdout = None
 | 
						|
orig_stderr = None
 | 
						|
 | 
						|
wrapped_stdout = None
 | 
						|
wrapped_stderr = None
 | 
						|
 | 
						|
atexit_done = False
 | 
						|
 | 
						|
 | 
						|
def reset_all():
 | 
						|
    if AnsiToWin32 is not None:    # Issue #74: objects might become None at exit
 | 
						|
        AnsiToWin32(orig_stdout).reset_all()
 | 
						|
 | 
						|
 | 
						|
def init(autoreset=False, convert=None, strip=None, wrap=True):
 | 
						|
    global wrapped_stdout, wrapped_stderr
 | 
						|
    global orig_stdout, orig_stderr
 | 
						|
 | 
						|
    if orig_stdout is not None:
 | 
						|
        return
 | 
						|
 | 
						|
    if not wrap and any([autoreset, convert, strip]):
 | 
						|
        raise ValueError('wrap=False conflicts with any other arg=True')
 | 
						|
 | 
						|
    orig_stdout = sys.stdout
 | 
						|
    orig_stderr = sys.stderr
 | 
						|
 | 
						|
    if sys.stdout is None:
 | 
						|
        wrapped_stdout = None
 | 
						|
    else:
 | 
						|
        sys.stdout = wrapped_stdout = \
 | 
						|
            wrap_stream(orig_stdout, convert, strip, autoreset, wrap)
 | 
						|
    if sys.stderr is None:
 | 
						|
        wrapped_stderr = None
 | 
						|
    else:
 | 
						|
        sys.stderr = wrapped_stderr = \
 | 
						|
            wrap_stream(orig_stderr, convert, strip, autoreset, wrap)
 | 
						|
 | 
						|
    global atexit_done
 | 
						|
    if not atexit_done:
 | 
						|
        atexit.register(reset_all)
 | 
						|
        atexit_done = True
 | 
						|
 | 
						|
 | 
						|
def deinit():
 | 
						|
    global orig_stdout
 | 
						|
    global orig_stderr
 | 
						|
 | 
						|
    if orig_stdout is not None:
 | 
						|
        sys.stdout = orig_stdout
 | 
						|
        orig_stdout = None
 | 
						|
    if orig_stderr is not None:
 | 
						|
        sys.stderr = orig_stderr
 | 
						|
        orig_stderr = None
 | 
						|
 | 
						|
 | 
						|
@contextlib.contextmanager
 | 
						|
def colorama_text(*args, **kwargs):
 | 
						|
    init(*args, **kwargs)
 | 
						|
    try:
 | 
						|
        yield
 | 
						|
    finally:
 | 
						|
        deinit()
 | 
						|
 | 
						|
 | 
						|
def reinit():
 | 
						|
    if wrapped_stdout is not None:
 | 
						|
        sys.stdout = wrapped_stdout
 | 
						|
    if wrapped_stderr is not None:
 | 
						|
        sys.stderr = wrapped_stderr
 | 
						|
 | 
						|
 | 
						|
def wrap_stream(stream, convert, strip, autoreset, wrap):
 | 
						|
    if wrap:
 | 
						|
        wrapper = AnsiToWin32(stream,
 | 
						|
            convert=convert, strip=strip, autoreset=autoreset)
 | 
						|
        if wrapper.should_wrap():
 | 
						|
            stream = wrapper.stream
 | 
						|
    return stream
 | 
						|
 | 
						|
 |