2008-10-15 19:38:22 +04:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
"""
|
2008-10-15 19:56:32 +04:00
|
|
|
$Id$
|
2008-10-15 19:38:22 +04:00
|
|
|
|
|
|
|
This file is part of the sqlmap project, http://sqlmap.sourceforge.net.
|
|
|
|
|
2010-03-03 18:26:27 +03:00
|
|
|
Copyright (c) 2007-2010 Bernardo Damele A. G. <bernardo.damele@gmail.com>
|
2009-04-22 15:48:07 +04:00
|
|
|
Copyright (c) 2006 Daniele Bellucci <daniele.bellucci@gmail.com>
|
2008-10-15 19:38:22 +04:00
|
|
|
|
|
|
|
sqlmap is free software; you can redistribute it and/or modify it under
|
|
|
|
the terms of the GNU General Public License as published by the Free
|
|
|
|
Software Foundation version 2 of the License.
|
|
|
|
|
|
|
|
sqlmap is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
|
|
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
|
|
details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
|
|
with sqlmap; if not, write to the Free Software Foundation, Inc., 51
|
|
|
|
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
|
|
|
|
Based on IPython readline library (IPython/rlineimpl.py), imports and
|
|
|
|
provides the "correct" version of readline for the platform.
|
|
|
|
In addition to normal readline stuff, this module provides haveReadline
|
|
|
|
boolean and _outputfile variable used in genutils.
|
|
|
|
"""
|
|
|
|
|
|
|
|
import sys
|
|
|
|
|
|
|
|
from lib.core.data import logger
|
2009-06-11 19:01:48 +04:00
|
|
|
from lib.core.settings import IS_WIN
|
2009-04-22 15:48:07 +04:00
|
|
|
from lib.core.settings import PLATFORM
|
2008-10-15 19:38:22 +04:00
|
|
|
|
|
|
|
try:
|
|
|
|
from readline import *
|
|
|
|
import readline as _rl
|
|
|
|
|
|
|
|
haveReadline = True
|
|
|
|
except ImportError:
|
|
|
|
try:
|
|
|
|
from pyreadline import *
|
|
|
|
import pyreadline as _rl
|
|
|
|
|
|
|
|
haveReadline = True
|
|
|
|
except ImportError:
|
|
|
|
haveReadline = False
|
|
|
|
|
2010-01-02 05:02:12 +03:00
|
|
|
if IS_WIN and haveReadline:
|
2008-10-15 19:38:22 +04:00
|
|
|
try:
|
|
|
|
_outputfile=_rl.GetOutputFile()
|
|
|
|
except AttributeError:
|
|
|
|
debugMsg = "Failed GetOutputFile when using platform's "
|
|
|
|
debugMsg += "readline library"
|
|
|
|
logger.debug(debugMsg)
|
|
|
|
|
|
|
|
haveReadline = False
|
|
|
|
|
|
|
|
# Test to see if libedit is being used instead of GNU readline.
|
|
|
|
# Thanks to Boyd Waters for this patch.
|
|
|
|
uses_libedit = False
|
|
|
|
|
2009-04-22 15:48:07 +04:00
|
|
|
if PLATFORM == 'darwin' and haveReadline:
|
2008-10-15 19:38:22 +04:00
|
|
|
import commands
|
|
|
|
|
|
|
|
(status, result) = commands.getstatusoutput( "otool -L %s | grep libedit" % _rl.__file__ )
|
|
|
|
|
|
|
|
if status == 0 and len(result) > 0:
|
|
|
|
# We are bound to libedit - new in Leopard
|
|
|
|
_rl.parse_and_bind("bind ^I rl_complete")
|
|
|
|
|
|
|
|
debugMsg = "Leopard libedit detected when using platform's "
|
|
|
|
debugMsg += "readline library"
|
|
|
|
logger.debug(debugMsg)
|
|
|
|
|
|
|
|
uses_libedit = True
|
|
|
|
|
|
|
|
# the clear_history() function was only introduced in Python 2.4 and is
|
|
|
|
# actually optional in the readline API, so we must explicitly check for its
|
|
|
|
# existence. Some known platforms actually don't have it. This thread:
|
|
|
|
# http://mail.python.org/pipermail/python-dev/2003-August/037845.html
|
|
|
|
# has the original discussion.
|
|
|
|
if haveReadline:
|
|
|
|
try:
|
|
|
|
_rl.clear_history
|
|
|
|
except AttributeError:
|
|
|
|
def clear_history():
|
|
|
|
pass
|
|
|
|
|
|
|
|
_rl.clear_history = clear_history
|