]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Call the init function of a built-in module here.
authorGuido van Rossum <guido@python.org>
Tue, 19 Feb 1991 12:23:57 +0000 (12:23 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 19 Feb 1991 12:23:57 +0000 (12:23 +0000)
,

Python/import.c

index f4b4ca9a980651e97315fca6c1a9bb25fc80166b..93952a5ebc10185b82cb9f7234a88541b7c06ac4 100644 (file)
@@ -148,8 +148,15 @@ import_module(name)
        char *name;
 {
        object *m;
-       if ((m = dictlookup(modules, name)) == NULL)
-               m = load_module(name);
+       if ((m = dictlookup(modules, name)) == NULL) {
+               if (init_builtin(name)) {
+                       if ((m = dictlookup(modules, name)) == NULL)
+                               err_setstr(SystemError, "builtin module missing");
+               }
+               else {
+                       m = load_module(name);
+               }
+       }
        return m;
 }
 
@@ -204,3 +211,25 @@ doneimport()
        }
        DECREF(modules);
 }
+
+
+/* Initialize built-in modules when first imported */
+
+extern struct {
+       char *name;
+       void (*initfunc)();
+} inittab[];
+
+static int
+init_builtin(name)
+       char *name;
+{
+       int i;
+       for (i = 0; inittab[i].name != NULL; i++) {
+               if (strcmp(name, inittab[i].name) == 0) {
+                       (*inittab[i].initfunc)();
+                       return 1;
+               }
+       }
+       return 0;
+}