From 7f133ed0732d216e00eda8456911f08a10bbc493 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 19 Feb 1991 12:23:57 +0000 Subject: [PATCH] Call the init function of a built-in module here. , --- Python/import.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/Python/import.c b/Python/import.c index f4b4ca9a980..93952a5ebc1 100644 --- a/Python/import.c +++ b/Python/import.c @@ -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; +}