summaryrefslogtreecommitdiff
path: root/scripts/Python/modules/readline/readline.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/Python/modules/readline/readline.cpp')
-rw-r--r--scripts/Python/modules/readline/readline.cpp87
1 files changed, 0 insertions, 87 deletions
diff --git a/scripts/Python/modules/readline/readline.cpp b/scripts/Python/modules/readline/readline.cpp
deleted file mode 100644
index b84dbb819f995..0000000000000
--- a/scripts/Python/modules/readline/readline.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-// NOTE: Since Python may define some pre-processor definitions which affect the
-// standard headers on some systems, you must include Python.h before any
-// standard headers are included.
-#include "Python.h"
-
-#include <stdio.h>
-
-#ifndef LLDB_DISABLE_LIBEDIT
-#include <editline/readline.h>
-#endif
-
-// Simple implementation of the Python readline module using libedit.
-// In the event that libedit is excluded from the build, this turns
-// back into a null implementation that blocks the module from pulling
-// in the GNU readline shared lib, which causes linkage confusion when
-// both readline and libedit's readline compatibility symbols collide.
-//
-// Currently it only installs a PyOS_ReadlineFunctionPointer, without
-// implementing any of the readline module methods. This is meant to
-// work around LLVM pr18841 to avoid seg faults in the stock Python
-// readline.so linked against GNU readline.
-
-#ifndef LLDB_DISABLE_LIBEDIT
-PyDoc_STRVAR(moduleDocumentation,
- "Simple readline module implementation based on libedit.");
-#else
-PyDoc_STRVAR(moduleDocumentation,
- "Stub module meant to avoid linking GNU readline.");
-#endif
-
-#if PY_MAJOR_VERSION >= 3
-static struct PyModuleDef readline_module = {
- PyModuleDef_HEAD_INIT, // m_base
- "readline", // m_name
- moduleDocumentation, // m_doc
- -1, // m_size
- nullptr, // m_methods
- nullptr, // m_reload
- nullptr, // m_traverse
- nullptr, // m_clear
- nullptr, // m_free
-};
-#else
-static struct PyMethodDef moduleMethods[] = {{nullptr, nullptr, 0, nullptr}};
-#endif
-
-#ifndef LLDB_DISABLE_LIBEDIT
-static char *
-#if PY_MAJOR_VERSION >= 3
-simple_readline(FILE *stdin, FILE *stdout, const char *prompt)
-#else
-simple_readline(FILE *stdin, FILE *stdout, char *prompt)
-#endif
-{
- rl_instream = stdin;
- rl_outstream = stdout;
- char *line = readline(prompt);
- if (!line) {
- char *ret = (char *)PyMem_Malloc(1);
- if (ret != NULL)
- *ret = '\0';
- return ret;
- }
- if (*line)
- add_history(line);
- int n = strlen(line);
- char *ret = (char *)PyMem_Malloc(n + 2);
- strncpy(ret, line, n);
- free(line);
- ret[n] = '\n';
- ret[n + 1] = '\0';
- return ret;
-}
-#endif
-
-PyMODINIT_FUNC initreadline(void) {
-#ifndef LLDB_DISABLE_LIBEDIT
- PyOS_ReadlineFunctionPointer = simple_readline;
-#endif
-
-#if PY_MAJOR_VERSION >= 3
- return PyModule_Create(&readline_module);
-#else
- Py_InitModule4("readline", moduleMethods, moduleDocumentation,
- static_cast<PyObject *>(NULL), PYTHON_API_VERSION);
-#endif
-}