Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/bpython/intern/b_import.c')
-rw-r--r--source/blender/bpython/intern/b_import.c196
1 files changed, 0 insertions, 196 deletions
diff --git a/source/blender/bpython/intern/b_import.c b/source/blender/bpython/intern/b_import.c
deleted file mode 100644
index bc10dbd0a77..00000000000
--- a/source/blender/bpython/intern/b_import.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/* $Id$
- *
- * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
- *
- * 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. The Blender
- * Foundation also sells licenses for use in proprietary software under
- * the Blender License. See http://www.blender.org/BL/ for information
- * about this.
- *
- * 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.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
-
- Customized Blender import module, Sandbox model (TODO)
-
- TODO for Sandbox:
- - only allow builtin modules to be imported
- - only allow file read/write from certain directories
- - alternative: override file read/write with popup requester
-
- main routine:
- init_ourImport();
-
-*/
-
-#include "DNA_text_types.h"
-#include "Python.h"
-#include "import.h"
-#include "BKE_global.h"
-#include "BKE_main.h"
-#include "BKE_library.h"
-#include "BKE_text.h"
-#include "BLI_blenlib.h" // mallocs
-#include "BPY_macros.h"
-#include "BPY_main.h"
-#include "b_import.h"
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-/* ---------------------------------------------------------------------------- */
-
-PyObject *importText(char *name)
-{
- Text *text;
- char *txtname;
- char *buf = NULL;
- int namelen = strlen(name);
-
- txtname = malloc(namelen+3+1);
- if (!txtname) {
- return NULL;
- }
-
- memcpy(txtname, name, namelen);
- memcpy(&txtname[namelen], ".py", 4);
-
- text = (Text*) getGlobal()->main->text.first;
- while(text)
- {
- if (STREQ(getName(text), txtname))
- break;
- text = text->id.next;
- }
- if (!text) {
- free(txtname);
- return NULL;
- }
-
- if (!text->compiled) {
- buf = txt_to_buf(text);
- text->compiled = Py_CompileString(buf, getName(text), Py_file_input);
- MEM_freeN(buf);
- if (PyErr_Occurred())
- {
- PyErr_Print();
- BPY_free_compiled_text(text);
- free(txtname);
- return NULL;
- }
- }
- BPY_debug(("import from TextBuffer: %s\n", txtname));
- free(txtname);
- return PyImport_ExecCodeModule(name, text->compiled);
-}
-
-PyObject *blender_import(PyObject *self, PyObject *args)
-{
- PyObject *exception, *err, *tb;
- char *name;
- PyObject *globals = NULL, *locals = NULL, *fromlist = NULL;
- PyObject *m;
-#ifdef PY_SANDBOXTEST
- PyObject *l, *n;
-#endif
-
- if (!PyArg_ParseTuple(args, "s|OOO:bimport",
- &name, &globals, &locals, &fromlist))
- return NULL;
-
-#ifdef PY_SANDBOXTEST
- /* check for builtin modules */
- m = PyImport_AddModule("sys");
- l = PyObject_GetAttrString(m, "builtin_module_names");
- n = PyString_FromString(name);
-
- if (PySequence_Contains(l, n)) {
- Py_DECREF(l);
- m = PyImport_ImportModuleEx(name, globals, locals, fromlist);
- return m;
- } else {
- /* TODO check for external python toolbox modules */
-
- PyErr_Format(PyExc_ImportError,
- "Import of external Module %.40s not allowed.\n\
-Please disable security in the UserButtons", name);
- Py_DECREF(l);
- return NULL;
- }
-
-#else
- m = PyImport_ImportModuleEx(name, globals, locals, fromlist);
- if (m)
- return m;
- else
- PyErr_Fetch(&exception, &err, &tb); // restore exception for probable later use
-
- m = importText(name);
- if (m) { // found module, ignore above exception
- PyErr_Clear();
- Py_XDECREF(exception); Py_XDECREF(err); Py_XDECREF(tb);
- printf("imported from text buffer..\n");
- } else {
- PyErr_Restore(exception, err, tb);
- }
- return m;
-#endif
-}
-static PyMethodDef bimport[] = {
- { "blimport", blender_import, METH_VARARGS,
- "our own import"}
-};
-
-
-/*
-PyObject *override_method(PyObject *module, char *methname, PyMethodDef *newcfunc)
-{
- PyObject *d;
- PyObject *old;
- PyObject *pycfunc;
-
-
- d = PyModule_GetDict(module);
- old = PyDict_GetItemString(module, methname);
- if (!old)
- return NULL;
-
- pycfunc = PyCFunction_New(newcfunc, NULL);
- PyDict_SetItemString(d, methname, pycfunc);
-
- return old;
-}
-*/
-
-
-/* this overrides the built in __import__ function
-with our customized importer */
-void init_ourImport(void)
-{
- PyObject *m, *d;
- PyObject *import = PyCFunction_New(bimport, NULL);
-
- m = PyImport_AddModule("__builtin__");
- d = PyModule_GetDict(m);
- PyDict_SetItemString(d, "__import__", import);
-}
-