Mercurial > cpython-lru_cache-weakref
annotate Python/import.c @ 1263:65a1e4e9cd54 legacy-trunk
* Fixed some subtleties with fastlocals. You can no longer access
f_fastlocals in a traceback object (this is a core dump hazard
if there are <nil> entries), but instead eval_code() merges the fast
locals back into the locals dictionary if it looks like the local
variables will be retained. Also, the merge routines save
exceptions since this is sometimes needed (alas!).
* Added id() to bltinmodule.c, which returns an object's address
(identity). Useful to walk arbitrary data structures containing
cycles.
* Added compile() to bltinmodule.c and compile_string() to
pythonrun.[ch]: support to exec/eval arbitrary code objects. The
code that defaults globals and locals is moved from run_node in
pythonrun.c (which is now identical to eval_node) to eval_code in
ceval.c. [XXX For elegance a clean-up session is necessary.]
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Tue, 30 Mar 1993 17:46:03 +0000 |
| parents | f820e6917f07 |
| children | 14369a5e6167 |
| rev | line source |
|---|---|
|
145
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
1 /*********************************************************** |
|
1198
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
926
diff
changeset
|
2 Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum, |
|
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
926
diff
changeset
|
3 Amsterdam, The Netherlands. |
|
145
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
4 |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
5 All Rights Reserved |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
6 |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
7 Permission to use, copy, modify, and distribute this software and its |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
8 documentation for any purpose and without fee is hereby granted, |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
9 provided that the above copyright notice appear in all copies and that |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
10 both that copyright notice and this permission notice appear in |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
11 supporting documentation, and that the names of Stichting Mathematisch |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
12 Centrum or CWI not be used in advertising or publicity pertaining to |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
13 distribution of the software without specific, written prior permission. |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
14 |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
15 STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
16 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
17 FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
18 FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
20 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
21 OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
22 |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
23 ******************************************************************/ |
|
853b736a6a9e
Added copyright notice.
Guido van Rossum <guido@python.org>
parents:
141
diff
changeset
|
24 |
| 6 | 25 /* Module definition and import implementation */ |
| 26 | |
| 86 | 27 #include "allobjects.h" |
| 6 | 28 |
| 29 #include "node.h" | |
| 30 #include "token.h" | |
| 31 #include "graminit.h" | |
| 32 #include "import.h" | |
| 33 #include "errcode.h" | |
| 34 #include "sysmodule.h" | |
| 86 | 35 #include "pythonrun.h" |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
36 #include "marshal.h" |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
37 #include "compile.h" |
| 926 | 38 #include "eval.h" |
|
675
5aff9f8fd299
Move SEP to osdefs.h. Use MAXPATHLEN from osdefs.h.
Guido van Rossum <guido@python.org>
parents:
630
diff
changeset
|
39 #include "osdefs.h" |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
40 |
|
727
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
41 extern int verbose; /* Defined in pythonmain.c */ |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
42 |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
43 #ifdef DEBUG |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
44 #define D(x) x |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
45 #else |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
46 #define D(x) |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
47 #endif |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
48 |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
49 #ifdef USE_DL |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
50 #include "dl.h" |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
51 |
|
630
04ed4765b17c
getbinaryname is now part of dl_loadmod.
Guido van Rossum <guido@python.org>
parents:
609
diff
changeset
|
52 extern char *argv0; |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
53 #endif |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
54 |
|
1257
1cabc2b6c970
* Changed all copyright messages to include 1993.
Guido van Rossum <guido@python.org>
parents:
1198
diff
changeset
|
55 /* Magic word to reject pre-0.9.9 .pyc files */ |
|
487
77b80a91d357
New magic word; and check it.
Guido van Rossum <guido@python.org>
parents:
340
diff
changeset
|
56 |
|
1262
f820e6917f07
Changes to speed up local variables enormously, by avoiding dictionary
Guido van Rossum <guido@python.org>
parents:
1257
diff
changeset
|
57 #define MAGIC 0x99BE3AL |
|
487
77b80a91d357
New magic word; and check it.
Guido van Rossum <guido@python.org>
parents:
340
diff
changeset
|
58 |
| 86 | 59 static object *modules; |
| 60 | |
|
166
28923e44254c
Added forward declaration (to satisfy Standard C).
Guido van Rossum <guido@python.org>
parents:
145
diff
changeset
|
61 /* Forward */ |
|
28923e44254c
Added forward declaration (to satisfy Standard C).
Guido van Rossum <guido@python.org>
parents:
145
diff
changeset
|
62 static int init_builtin PROTO((char *)); |
|
28923e44254c
Added forward declaration (to satisfy Standard C).
Guido van Rossum <guido@python.org>
parents:
145
diff
changeset
|
63 |
| 86 | 64 /* Initialization */ |
| 6 | 65 |
| 66 void | |
| 67 initimport() | |
| 68 { | |
| 86 | 69 if ((modules = newdictobject()) == NULL) |
| 70 fatal("no mem for dictionary of modules"); | |
| 6 | 71 } |
| 72 | |
| 73 object * | |
| 86 | 74 get_modules() |
| 6 | 75 { |
| 86 | 76 return modules; |
| 6 | 77 } |
| 78 | |
| 86 | 79 object * |
| 80 add_module(name) | |
|
40
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
81 char *name; |
|
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
82 { |
|
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
83 object *m; |
| 86 | 84 if ((m = dictlookup(modules, name)) != NULL && is_moduleobject(m)) |
| 85 return m; | |
| 86 m = newmoduleobject(name); | |
| 87 if (m == NULL) | |
| 6 | 88 return NULL; |
| 86 | 89 if (dictinsert(modules, name, m) != 0) { |
| 90 DECREF(m); | |
| 91 return NULL; | |
| 6 | 92 } |
| 86 | 93 DECREF(m); /* Yes, it still exists, in modules! */ |
| 94 return m; | |
| 6 | 95 } |
| 96 | |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
97 /* Suffixes used by open_module: */ |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
98 |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
99 #define PY_SUFFIX ".py" |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
100 #ifdef USE_DL |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
101 #define O_SUFFIX "module.o" |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
102 #endif |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
103 |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
104 /* Find and open a module file, using sys.path. |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
105 Return a NULL pointer if no module file is found. |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
106 When dynamic loading is enabled, the contents of namebuf |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
107 is important when NULL is returned: if namebuf[0] != '\0' |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
108 a dl-able object file was found and namebuf is its pathname. */ |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
109 |
| 6 | 110 static FILE * |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
111 open_module(name, namebuf) |
| 6 | 112 char *name; |
| 86 | 113 char *namebuf; /* XXX No buffer overflow checks! */ |
| 6 | 114 { |
| 115 object *path; | |
| 116 FILE *fp; | |
| 117 | |
| 118 path = sysget("path"); | |
| 119 if (path == NULL || !is_listobject(path)) { | |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
120 /* No path -- at least try current directory */ |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
121 #ifdef USE_DL |
| 6 | 122 strcpy(namebuf, name); |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
123 strcat(namebuf, O_SUFFIX); |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
124 if (getmtime(namebuf) > 0) |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
125 return NULL; |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
126 #endif |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
127 strcpy(namebuf, name); |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
128 strcat(namebuf, PY_SUFFIX); |
| 6 | 129 fp = fopen(namebuf, "r"); |
| 130 } | |
| 131 else { | |
| 132 int npath = getlistsize(path); | |
| 133 int i; | |
| 134 fp = NULL; | |
| 135 for (i = 0; i < npath; i++) { | |
| 136 object *v = getlistitem(path, i); | |
| 137 int len; | |
| 138 if (!is_stringobject(v)) | |
| 139 continue; | |
| 140 strcpy(namebuf, getstringvalue(v)); | |
| 141 len = getstringsize(v); | |
| 142 if (len > 0 && namebuf[len-1] != SEP) | |
| 143 namebuf[len++] = SEP; | |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
144 #ifdef USE_DL |
| 86 | 145 strcpy(namebuf+len, name); |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
146 strcat(namebuf, O_SUFFIX); |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
147 if (getmtime(namebuf) > 0) |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
148 return NULL; |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
149 #endif |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
150 strcpy(namebuf+len, name); |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
151 strcat(namebuf, PY_SUFFIX); |
| 6 | 152 fp = fopen(namebuf, "r"); |
| 153 if (fp != NULL) | |
| 154 break; | |
| 155 } | |
| 156 } | |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
157 if (fp == NULL) |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
158 namebuf[0] = '\0'; |
| 6 | 159 return fp; |
| 160 } | |
| 161 | |
| 162 static object * | |
| 86 | 163 get_module(m, name, m_ret) |
| 164 /*module*/object *m; | |
| 6 | 165 char *name; |
| 86 | 166 object **m_ret; |
| 6 | 167 { |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
168 codeobject *co = NULL; |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
169 object *v, *d; |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
170 FILE *fp, *fpc; |
|
40
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
171 node *n; |
| 6 | 172 int err; |
|
675
5aff9f8fd299
Move SEP to osdefs.h. Use MAXPATHLEN from osdefs.h.
Guido van Rossum <guido@python.org>
parents:
630
diff
changeset
|
173 char namebuf[MAXPATHLEN+1]; |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
174 int namelen; |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
175 long mtime; |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
176 extern long getmtime(); |
| 6 | 177 |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
178 fp = open_module(name, namebuf); |
| 86 | 179 if (fp == NULL) { |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
180 #ifdef USE_DL |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
181 if (namebuf[0] != '\0') { |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
182 char funcname[258]; |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
183 dl_funcptr p; |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
184 D(fprintf(stderr, "Found %s\n", namebuf)); |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
185 sprintf(funcname, "init%s", name); |
|
630
04ed4765b17c
getbinaryname is now part of dl_loadmod.
Guido van Rossum <guido@python.org>
parents:
609
diff
changeset
|
186 p = dl_loadmod(argv0, namebuf, funcname); |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
187 if (p == NULL) { |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
188 D(fprintf(stderr, "dl_loadmod failed\n")); |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
189 } |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
190 else { |
|
727
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
191 if (verbose) |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
192 fprintf(stderr, |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
193 "import %s # dynamically loaded from \"%s\"\n", |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
194 name, namebuf); |
|
609
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
195 (*p)(); |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
196 *m_ret = m = dictlookup(modules, name); |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
197 if (m == NULL) { |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
198 err_setstr(SystemError, |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
199 "dynamic module missing"); |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
200 return NULL; |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
201 } |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
202 else { |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
203 D(fprintf(stderr, |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
204 "module %s loaded!\n", name)); |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
205 INCREF(None); |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
206 return None; |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
207 } |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
208 } |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
209 } |
|
0ad5b35e3ad8
Support for dynamic loading added.
Guido van Rossum <guido@python.org>
parents:
510
diff
changeset
|
210 #endif |
|
510
cbcdfda05bc4
Use IOError and ImportError when import fails.
Guido van Rossum <guido@python.org>
parents:
497
diff
changeset
|
211 if (m == NULL) { |
|
cbcdfda05bc4
Use IOError and ImportError when import fails.
Guido van Rossum <guido@python.org>
parents:
497
diff
changeset
|
212 sprintf(namebuf, "no module named %.200s", name); |
|
cbcdfda05bc4
Use IOError and ImportError when import fails.
Guido van Rossum <guido@python.org>
parents:
497
diff
changeset
|
213 err_setstr(ImportError, namebuf); |
|
cbcdfda05bc4
Use IOError and ImportError when import fails.
Guido van Rossum <guido@python.org>
parents:
497
diff
changeset
|
214 } |
|
cbcdfda05bc4
Use IOError and ImportError when import fails.
Guido van Rossum <guido@python.org>
parents:
497
diff
changeset
|
215 else { |
|
cbcdfda05bc4
Use IOError and ImportError when import fails.
Guido van Rossum <guido@python.org>
parents:
497
diff
changeset
|
216 sprintf(namebuf, "no source for module %.200s", name); |
|
cbcdfda05bc4
Use IOError and ImportError when import fails.
Guido van Rossum <guido@python.org>
parents:
497
diff
changeset
|
217 err_setstr(ImportError, namebuf); |
|
cbcdfda05bc4
Use IOError and ImportError when import fails.
Guido van Rossum <guido@python.org>
parents:
497
diff
changeset
|
218 } |
| 6 | 219 return NULL; |
| 220 } | |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
221 /* Get mtime -- always useful */ |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
222 mtime = getmtime(namebuf); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
223 /* Check ".pyc" file first */ |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
224 namelen = strlen(namebuf); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
225 namebuf[namelen] = 'c'; |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
226 namebuf[namelen+1] = '\0'; |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
227 fpc = fopen(namebuf, "rb"); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
228 if (fpc != NULL) { |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
229 long pyc_mtime; |
|
487
77b80a91d357
New magic word; and check it.
Guido van Rossum <guido@python.org>
parents:
340
diff
changeset
|
230 long magic; |
|
77b80a91d357
New magic word; and check it.
Guido van Rossum <guido@python.org>
parents:
340
diff
changeset
|
231 magic = rd_long(fpc); |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
232 pyc_mtime = rd_long(fpc); |
|
487
77b80a91d357
New magic word; and check it.
Guido van Rossum <guido@python.org>
parents:
340
diff
changeset
|
233 if (magic == MAGIC && pyc_mtime == mtime && mtime != 0 && mtime != -1) { |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
234 v = rd_object(fpc); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
235 if (v == NULL || err_occurred() || !is_codeobject(v)) { |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
236 err_clear(); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
237 XDECREF(v); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
238 } |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
239 else |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
240 co = (codeobject *)v; |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
241 } |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
242 fclose(fpc); |
|
727
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
243 if (verbose) { |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
244 if (co != NULL) |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
245 fprintf(stderr, |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
246 "import %s # precompiled from \"%s\"\n", |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
247 name, namebuf); |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
248 else |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
249 fprintf(stderr, |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
250 "# invalid precompiled file \"%s\"\n", |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
251 namebuf); |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
252 } |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
253 } |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
254 namebuf[namelen] = '\0'; |
|
727
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
255 if (co == NULL) { |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
256 if (verbose) |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
257 fprintf(stderr, |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
258 "import %s # from \"%s\"\n", |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
259 name, namebuf); |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
260 err = parse_file(fp, namebuf, file_input, &n); |
|
727
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
261 } |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
262 else |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
263 err = E_DONE; |
| 6 | 264 fclose(fp); |
| 265 if (err != E_DONE) { | |
| 86 | 266 err_input(err); |
| 6 | 267 return NULL; |
| 268 } | |
| 86 | 269 if (m == NULL) { |
| 270 m = add_module(name); | |
| 271 if (m == NULL) { | |
| 272 freetree(n); | |
| 273 return NULL; | |
| 274 } | |
| 275 *m_ret = m; | |
| 276 } | |
| 277 d = getmoduledict(m); | |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
278 if (co == NULL) { |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
279 co = compile(n, namebuf); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
280 freetree(n); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
281 if (co == NULL) |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
282 return NULL; |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
283 /* Now write the code object to the ".pyc" file */ |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
284 namebuf[namelen] = 'c'; |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
285 namebuf[namelen+1] = '\0'; |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
286 fpc = fopen(namebuf, "wb"); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
287 if (fpc != NULL) { |
|
487
77b80a91d357
New magic word; and check it.
Guido van Rossum <guido@python.org>
parents:
340
diff
changeset
|
288 wr_long(MAGIC, fpc); |
|
263
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
289 /* First write a 0 for mtime */ |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
290 wr_long(0L, fpc); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
291 wr_object((object *)co, fpc); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
292 if (ferror(fpc)) { |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
293 /* Don't keep partial file */ |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
294 fclose(fpc); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
295 (void) unlink(namebuf); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
296 } |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
297 else { |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
298 /* Now write the true mtime */ |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
299 fseek(fpc, 4L, 0); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
300 wr_long(mtime, fpc); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
301 fflush(fpc); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
302 fclose(fpc); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
303 } |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
304 } |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
305 } |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
306 v = eval_code(co, d, d, (object *)NULL); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
307 DECREF(co); |
|
28f0ffd9facf
Support ".pyc" files: cached compilation results.
Guido van Rossum <guido@python.org>
parents:
228
diff
changeset
|
308 return v; |
| 86 | 309 } |
| 310 | |
| 311 static object * | |
| 312 load_module(name) | |
| 313 char *name; | |
| 314 { | |
| 315 object *m, *v; | |
| 316 v = get_module((object *)NULL, name, &m); | |
| 317 if (v == NULL) | |
| 6 | 318 return NULL; |
| 86 | 319 DECREF(v); |
| 6 | 320 return m; |
| 321 } | |
| 322 | |
| 323 object * | |
| 86 | 324 import_module(name) |
| 6 | 325 char *name; |
| 326 { | |
| 327 object *m; | |
|
141
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
328 if ((m = dictlookup(modules, name)) == NULL) { |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
329 if (init_builtin(name)) { |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
330 if ((m = dictlookup(modules, name)) == NULL) |
|
727
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
331 err_setstr(SystemError, |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
332 "builtin module missing"); |
|
141
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
333 } |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
334 else { |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
335 m = load_module(name); |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
336 } |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
337 } |
| 6 | 338 return m; |
| 339 } | |
|
40
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
340 |
|
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
341 object * |
| 86 | 342 reload_module(m) |
|
40
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
343 object *m; |
|
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
344 { |
|
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
345 if (m == NULL || !is_moduleobject(m)) { |
| 86 | 346 err_setstr(TypeError, "reload() argument must be module"); |
|
40
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
347 return NULL; |
|
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
348 } |
| 86 | 349 /* XXX Ought to check for builtin modules -- can't reload these... */ |
| 350 return get_module(m, getmodulename(m), (object **)NULL); | |
| 351 } | |
| 352 | |
| 353 static void | |
| 354 cleardict(d) | |
| 355 object *d; | |
| 356 { | |
| 357 int i; | |
| 358 for (i = getdictsize(d); --i >= 0; ) { | |
| 359 char *k; | |
| 360 k = getdictkey(d, i); | |
| 361 if (k != NULL) | |
| 362 (void) dictremove(d, k); | |
|
40
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
363 } |
|
f28ac7f621c7
Added reload() functionality.
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
364 } |
| 86 | 365 |
| 366 void | |
| 367 doneimport() | |
| 368 { | |
| 369 if (modules != NULL) { | |
| 370 int i; | |
| 371 /* Explicitly erase all modules; this is the safest way | |
| 372 to get rid of at least *some* circular dependencies */ | |
| 373 for (i = getdictsize(modules); --i >= 0; ) { | |
|
340
e3941efd7310
Use more dict2 functions./
Guido van Rossum <guido@python.org>
parents:
293
diff
changeset
|
374 object *k; |
|
e3941efd7310
Use more dict2 functions./
Guido van Rossum <guido@python.org>
parents:
293
diff
changeset
|
375 k = getdict2key(modules, i); |
| 86 | 376 if (k != NULL) { |
| 377 object *m; | |
|
340
e3941efd7310
Use more dict2 functions./
Guido van Rossum <guido@python.org>
parents:
293
diff
changeset
|
378 m = dict2lookup(modules, k); |
|
e3941efd7310
Use more dict2 functions./
Guido van Rossum <guido@python.org>
parents:
293
diff
changeset
|
379 if (m == NULL) |
|
e3941efd7310
Use more dict2 functions./
Guido van Rossum <guido@python.org>
parents:
293
diff
changeset
|
380 err_clear(); |
|
e3941efd7310
Use more dict2 functions./
Guido van Rossum <guido@python.org>
parents:
293
diff
changeset
|
381 else if (is_moduleobject(m)) { |
| 86 | 382 object *d; |
| 383 d = getmoduledict(m); | |
| 384 if (d != NULL && is_dictobject(d)) { | |
| 385 cleardict(d); | |
| 386 } | |
| 387 } | |
| 388 } | |
| 389 } | |
| 390 cleardict(modules); | |
| 391 } | |
| 392 DECREF(modules); | |
| 393 } | |
|
141
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
394 |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
395 |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
396 /* Initialize built-in modules when first imported */ |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
397 |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
398 static int |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
399 init_builtin(name) |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
400 char *name; |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
401 { |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
402 int i; |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
403 for (i = 0; inittab[i].name != NULL; i++) { |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
404 if (strcmp(name, inittab[i].name) == 0) { |
|
727
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
405 if (verbose) |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
406 fprintf(stderr, "import %s # builtin\n", |
|
9a754486ef0b
Print messages about where from modules are imported when -v is given.
Guido van Rossum <guido@python.org>
parents:
675
diff
changeset
|
407 name); |
|
141
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
408 (*inittab[i].initfunc)(); |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
409 return 1; |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
410 } |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
411 } |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
412 return 0; |
|
bf5a8539d8ba
Call the init function of a built-in module here.
Guido van Rossum <guido@python.org>
parents:
86
diff
changeset
|
413 } |
