diff options
Diffstat (limited to 'src/_mailman.c')
| -rw-r--r-- | src/_mailman.c | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/src/_mailman.c b/src/_mailman.c deleted file mode 100644 index 0185c6b88..000000000 --- a/src/_mailman.c +++ /dev/null @@ -1,87 +0,0 @@ -/* _mailman.c --- Extension module for improved performance - * - * Copyright (C) 2000 by the Free Software Foundation, Inc. - * - * This program 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; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/* Python 2.1 will include a neat new function called sys._getframe() which - * can be used to get the stack frame of the caller of a function. From - * there, we get that function's locals and globals and use it to craft a - * dictionary for string interpolation (after i18n translation). - * - * Until Python 2.1 is released, this extension module provides the same - * functionality. It is distributed under Distutils so it should be - * relatively easy to install. It is optional though, and if not found, - * Mailman falls back to a slower, but tried-and-true method. - */ - -#include "Python.h" -#include "compile.h" -#include "frameobject.h" - - -static char getframe_doc[] = -"_getframe([depth]) -> frameobject\n\ -\n\ -Return a frame object from the call stack. If optional integer depth is\n\ -given, return the frame object that many calls below the top of the stack.\n\ -If that is deeper than the call stack, ValueError is raised. The default\n\ -for depth is zero, returning the frame at the top of the call stack.\n\ -\n\ -This function should be used for internal and specialized\n\ -purposes only."; - -static PyObject * -getframe(PyObject *self, PyObject *args) -{ - PyFrameObject *f = PyThreadState_Get()->frame; - int depth = -1; - - if (!PyArg_ParseTuple(args, "|i:_getframe", &depth)) - return NULL; - - while (depth > 0 && f != NULL) { - f = f->f_back; - --depth; - } - if (f == NULL) { - PyErr_SetString(PyExc_ValueError, - "call stack is not deep enough"); - return NULL; - } - Py_INCREF(f); - return (PyObject*)f; -} - - -static PyMethodDef methods[] = { - {"_getframe", getframe, METH_VARARGS, getframe_doc}, - {NULL, NULL} /* sentinel */ -}; - - -void init_mailman(void) -{ - (void)Py_InitModule("_mailman", methods); -} - - - -/* - * Local Variables: - * c-file-style: "python" - * End: - */ |
