blob: b8fc15f07c627222d8e5036e4ae4d5a49959ee7e [file] [log] [blame]
Guido van Rossumf70e43a1991-02-19 12:39:46 +00001/***********************************************************
Guido van Rossume35399e1993-01-10 18:33:56 +00002Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
3Amsterdam, The Netherlands.
Guido van Rossumf70e43a1991-02-19 12:39:46 +00004
5 All Rights Reserved
6
7Permission to use, copy, modify, and distribute this software and its
8documentation for any purpose and without fee is hereby granted,
9provided that the above copyright notice appear in all copies and that
10both that copyright notice and this permission notice appear in
11supporting documentation, and that the names of Stichting Mathematisch
12Centrum or CWI not be used in advertising or publicity pertaining to
13distribution of the software without specific, written prior permission.
14
15STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
16THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
17FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
18FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
21OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22
23******************************************************************/
24
Guido van Rossum28a83ab1991-01-18 15:32:01 +000025/* Configurable Python configuration file */
Guido van Rossumaec78551990-12-20 23:03:58 +000026
Guido van Rossum97f02771992-09-03 20:49:55 +000027/* These modules are normally always included, but *may* be taken out */
Guido van Rossum97f02771992-09-03 20:49:55 +000028#define USE_MARSHAL 1 /* This is linked anyway */
Guido van Rossumaee08791992-09-08 09:05:33 +000029#define USE_MATH 1
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000030#define USE_STRUCT 1
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000031#define USE_TIME 1
32
33#ifdef macintosh
34#define USE_AUDIOOP 1
35#define USE_IMAGEOP 1
36#define USE_MAC 1
37#define USE_REGEX 1
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000038#define USE_STDWIN 1 /* You may turn this off */
Guido van Rossum34679b71993-01-26 13:33:44 +000039#define USE_STROP
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000040#endif
41
42#ifdef unix
43#define USE_GRP 1 /* Use together with pwd */
Guido van Rossum97f02771992-09-03 20:49:55 +000044#define USE_POSIX 1
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000045#define USE_PWD 1 /* Use together with grp */
Guido van Rossum97f02771992-09-03 20:49:55 +000046#define USE_SELECT 1
47#define USE_SOCKET 1
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000048#endif
49
Guido van Rossum34679b71993-01-26 13:33:44 +000050#ifdef MSDOS
51#define USE_POSIX 1 /* Subset defined in posixmodule.c */
52#define USE_REGEX 1
53#define USE_STROP 1
54#define USE_PC 1
55#endif
56
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000057#include <stdio.h>
Guido van Rossum97f02771992-09-03 20:49:55 +000058
Guido van Rossumc888bf71992-06-03 17:05:13 +000059#include "PROTO.h"
Guido van Rossumb001f7a1992-08-19 16:44:41 +000060#include "mymalloc.h"
Guido van Rossum34679b71993-01-26 13:33:44 +000061#include "osdefs.h"
Guido van Rossumc888bf71992-06-03 17:05:13 +000062
Guido van Rossum9b4e1b31991-12-30 01:43:49 +000063#include "patchlevel.h"
64
Guido van Rossume77a7571993-11-03 15:01:26 +000065#define VERSION "0.9.%d++ (%s)"
Guido van Rossumaa011411991-12-16 13:05:20 +000066
67#ifdef __DATE__
68#define DATE __DATE__
69#else
Guido van Rossume77a7571993-11-03 15:01:26 +000070#define DATE ">= 3 Nov 1993"
Guido van Rossumaa011411991-12-16 13:05:20 +000071#endif
Guido van Rossum9f462af1991-12-10 13:54:12 +000072
Guido van Rossumaa011411991-12-16 13:05:20 +000073char version[80];
74
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000075char *argv0; /* For dynamic loading in import.c */
Guido van Rossum450ed491992-01-19 16:27:42 +000076
Guido van Rossumf56e3db1993-04-01 20:59:32 +000077extern char verbose;
78
Guido van Rossumaec78551990-12-20 23:03:58 +000079/*ARGSUSED*/
80void
81initargs(p_argc, p_argv)
82 int *p_argc;
83 char ***p_argv;
84{
Guido van Rossum9b4e1b31991-12-30 01:43:49 +000085 sprintf(version, VERSION, PATCHLEVEL, DATE);
Guido van Rossumaa011411991-12-16 13:05:20 +000086
Guido van Rossum450ed491992-01-19 16:27:42 +000087 argv0 = **p_argv;
88
Guido van Rossumf56e3db1993-04-01 20:59:32 +000089#ifdef USE_FROZEN
90 if (verbose)
91#else
92 if (verbose || *p_argc < 2 && isatty(0) && isatty(1))
93#endif
Guido van Rossum9f462af1991-12-10 13:54:12 +000094 {
95 printf("Python %s.\n", version);
Guido van Rossumaa011411991-12-16 13:05:20 +000096 printf(
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000097"Copyright 1990, 1991, 1992, 1993 Stichting Mathematisch Centrum, Amsterdam\n");
Guido van Rossum9f462af1991-12-10 13:54:12 +000098 }
Guido van Rossumaec78551990-12-20 23:03:58 +000099}
100
101void
102initcalls()
103{
Guido van Rossumaec78551990-12-20 23:03:58 +0000104}
105
106void
107donecalls()
108{
Guido van Rossumaec78551990-12-20 23:03:58 +0000109#ifdef USE_AUDIO
110 asa_done();
111#endif
112}
113
114#ifndef PYTHONPATH
Guido van Rossum34679b71993-01-26 13:33:44 +0000115
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000116#ifdef macintosh
117/* On the Mac, the search path is a space-separated list of directories */
118#define PYTHONPATH ": :lib :demo"
Guido van Rossum34679b71993-01-26 13:33:44 +0000119#endif /* macintosh */
120
121#ifdef unix
Guido van Rossum97f02771992-09-03 20:49:55 +0000122#define PYTHONPATH ".:/usr/local/lib/python"
Guido van Rossum34679b71993-01-26 13:33:44 +0000123#endif /* unix */
124
125#ifdef MSDOS
126/* In MS-DOS, the delimiter is a semicolon */
Guido van Rossume22e6441993-07-09 10:51:31 +0000127#define PYTHONPATH ".;..\\lib;\\python\\lib"
Guido van Rossum34679b71993-01-26 13:33:44 +0000128#endif /* MSDOS */
129
130#ifndef PYTHONPATH
131ERROR; ERROR; On what kind of system are you?;
132#endif
133
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000134#endif /* !PYTHONPATH */
Guido van Rossumaec78551990-12-20 23:03:58 +0000135
136extern char *getenv();
137
138char *
139getpythonpath()
140{
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000141#ifdef macintosh
142 return PYTHONPATH;
143#else /* !macintosh */
Guido van Rossumaec78551990-12-20 23:03:58 +0000144 char *path = getenv("PYTHONPATH");
Guido van Rossumc888bf71992-06-03 17:05:13 +0000145 char *defpath = PYTHONPATH;
146 char *buf;
Guido van Rossum34679b71993-01-26 13:33:44 +0000147 char *p;
Guido van Rossumc888bf71992-06-03 17:05:13 +0000148 int n;
149
150 if (path == 0 || *path == '\0')
151 return defpath;
152 n = strlen(path) + strlen(defpath) + 2;
153 buf = malloc(n);
154 if (buf == NULL)
155 return path; /* XXX too bad -- but not likely */
156 strcpy(buf, path);
Guido van Rossum34679b71993-01-26 13:33:44 +0000157 p = buf + strlen(buf);
158 *p++ = DELIM;
159 strcpy(p, defpath);
Guido van Rossumc888bf71992-06-03 17:05:13 +0000160 return buf;
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000161#endif /* !macintosh */
Guido van Rossumaec78551990-12-20 23:03:58 +0000162}
Guido van Rossum59e53a51991-02-19 12:22:24 +0000163
164
165/* Table of built-in modules.
166 These are initialized when first imported. */
167
168/* Standard modules */
Guido van Rossum6f7b9591991-06-04 19:47:46 +0000169
Guido van Rossum188f8321991-09-10 14:55:08 +0000170#ifdef USE_AL
171extern void inital();
172#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000173#ifdef USE_AMOEBA
174extern void initamoeba();
175#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000176#ifdef USE_AUDIO
177extern void initaudio();
178#endif
Guido van Rossumc89705d1992-11-26 08:54:07 +0000179#ifdef USE_AUDIOOP
180extern void initaudioop();
181#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000182#ifdef USE_CD
183extern void initcd();
184#endif
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000185#ifdef USE_CL
186extern void initcl();
187#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000188#ifdef USE_DBM
189extern void initdbm();
190#endif
191#ifdef USE_FCNTL
192extern void initfcntl();
193#endif
Guido van Rossum3fecef71991-08-16 08:58:56 +0000194#ifdef USE_FL
195extern void initfl();
196#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000197#ifdef USE_FM
198extern void initfm();
199#endif
200#ifdef USE_GL
201extern void initgl();
202#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000203#ifdef USE_GRP
204extern void initgrp();
205#endif
206#ifdef USE_IMGFILE
207extern void initimgfile();
208#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000209#ifdef USE_JPEG
210extern void initjpeg();
211#endif
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000212#ifdef USE_MAC
213extern void initmac();
214#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000215#ifdef USE_MARSHAL
216extern void initmarshal();
217#endif
218#ifdef USE_MATH
219extern void initmath();
220#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000221#ifdef USE_NIS
222extern void initnis();
Guido van Rossum2abc7a61991-04-03 19:01:18 +0000223#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000224#ifdef USE_PANEL
225extern void initpanel();
226#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000227#ifdef USE_POSIX
228extern void initposix();
229#endif
230#ifdef USE_PWD
231extern void initpwd();
232#endif
Guido van Rossum38fbf521992-08-12 15:28:52 +0000233#ifdef USE_REGEX
234extern void initregex();
235#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000236#ifdef USE_ROTOR
237extern void initrotor();
238#endif
239#ifdef USE_SELECT
240extern void initselect();
241#endif
242#ifdef USE_SGI
243extern void initsgi();
244#endif
245#ifdef USE_SOCKET
246extern void initsocket();
247#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000248#ifdef USE_STDWIN
Guido van Rossum5b02dbc1991-06-07 13:55:41 +0000249extern void initstdwin();
Guido van Rossum59e53a51991-02-19 12:22:24 +0000250#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000251#ifdef USE_STROP
252extern void initstrop();
253#endif
254#ifdef USE_STRUCT
255extern void initstruct();
256#endif
257#ifdef USE_SUNAUDIODEV
258extern void initsunaudiodev();
259#endif
Guido van Rossum1984f1e1992-08-04 12:41:02 +0000260#ifdef USE_THREAD
261extern void initthread();
262#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000263#ifdef USE_SV
264extern void initsv();
Guido van Rossum38fbf521992-08-12 15:28:52 +0000265#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000266#ifdef USE_TIME
267extern void inittime();
268#endif
Guido van Rossum0317a471992-10-26 13:40:15 +0000269#ifdef USE_IMAGEOP
270extern void initimageop();
271#endif
Guido van Rossum8ed29411992-12-08 16:10:18 +0000272#ifdef USE_MPZ
273extern void initmpz();
274#endif
275#ifdef USE_MD5
276extern void initmd5();
277#endif
Guido van Rossum778983b1993-02-19 15:55:02 +0000278#ifdef USE_ARRAY
279extern void initarray();
280#endif
Guido van Rossuma3309961993-07-28 09:05:47 +0000281#ifdef USE_XT
282extern void initXt();
283#endif
284#ifdef USE_XAW
285extern void initXaw();
286#endif
287#ifdef USE_XM
288extern void initXm();
289#endif
290#ifdef USE_GLX
291extern void initGlx();
292#endif
293#ifdef USE_HTML
294extern void initHTML();
295#endif
Sjoerd Mullendera9c3c221993-10-11 12:54:31 +0000296#ifdef USE_XLIB
297extern void initXlib();
298#endif
Guido van Rossum52f2c051993-11-10 12:53:24 +0000299#ifdef USE_PARSER
300extern void initparser();
301#endif
Guido van Rossum3a40ae41992-09-25 21:54:05 +0000302/* -- ADDMODULE MARKER 1 -- */
Guido van Rossum59e53a51991-02-19 12:22:24 +0000303
304struct {
305 char *name;
306 void (*initfunc)();
307} inittab[] = {
308
Guido van Rossum188f8321991-09-10 14:55:08 +0000309#ifdef USE_AL
310 {"al", inital},
311#endif
312
Guido van Rossum59e53a51991-02-19 12:22:24 +0000313#ifdef USE_AMOEBA
314 {"amoeba", initamoeba},
315#endif
316
Guido van Rossum97f02771992-09-03 20:49:55 +0000317#ifdef USE_AUDIO
318 {"audio", initaudio},
319#endif
320
Guido van Rossumc89705d1992-11-26 08:54:07 +0000321#ifdef USE_AUDIOOP
322 {"audioop", initaudioop},
323#endif
324
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000325#ifdef USE_CD
326 {"cd", initcd},
327#endif
328
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000329#ifdef USE_CL
330 {"cl", initcl},
331#endif
332
Guido van Rossum97f02771992-09-03 20:49:55 +0000333#ifdef USE_DBM
334 {"dbm", initdbm},
335#endif
336
337#ifdef USE_FCNTL
338 {"fcntl", initfcntl},
339#endif
340
Guido van Rossum3fecef71991-08-16 08:58:56 +0000341#ifdef USE_FL
342 {"fl", initfl},
343#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000344
345#ifdef USE_FM
346 {"fm", initfm},
Guido van Rossum2abc7a61991-04-03 19:01:18 +0000347#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000348
349#ifdef USE_GL
350 {"gl", initgl},
351#endif
352
Guido van Rossum97f02771992-09-03 20:49:55 +0000353#ifdef USE_GRP
354 {"grp", initgrp},
355#endif
356
357#ifdef USE_IMGFILE
358 {"imgfile", initimgfile},
359#endif
360
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000361#ifdef USE_JPEG
362 {"jpeg", initjpeg},
363#endif
364
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000365#ifdef USE_MAC
366 {"mac", initmac},
367#endif
368
Guido van Rossum97f02771992-09-03 20:49:55 +0000369#ifdef USE_MARSHAL
370 {"marshal", initmarshal},
371#endif
372
373#ifdef USE_MATH
374 {"math", initmath},
375#endif
376
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000377#ifdef USE_NIS
378 {"nis", initnis},
379#endif
380
Guido van Rossum59e53a51991-02-19 12:22:24 +0000381#ifdef USE_PANEL
382 {"pnl", initpanel},
383#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000384
Guido van Rossum97f02771992-09-03 20:49:55 +0000385#ifdef USE_POSIX
386 {"posix", initposix},
387#endif
388
389#ifdef USE_PWD
390 {"pwd", initpwd},
391#endif
392
Guido van Rossum38fbf521992-08-12 15:28:52 +0000393#ifdef USE_REGEX
394 {"regex", initregex},
395#endif
396
Guido van Rossum97f02771992-09-03 20:49:55 +0000397#ifdef USE_ROTOR
398 {"rotor", initrotor},
399#endif
400
401#ifdef USE_SELECT
402 {"select", initselect},
403#endif
404
405#ifdef USE_SGI
406 {"sgi", initsgi},
407#endif
408
409#ifdef USE_SOCKET
410 {"socket", initsocket},
411#endif
412
Guido van Rossum59e53a51991-02-19 12:22:24 +0000413#ifdef USE_STDWIN
Guido van Rossum5b02dbc1991-06-07 13:55:41 +0000414 {"stdwin", initstdwin},
Guido van Rossum59e53a51991-02-19 12:22:24 +0000415#endif
416
Guido van Rossumaee08791992-09-08 09:05:33 +0000417#ifdef USE_STROP
Guido van Rossum97f02771992-09-03 20:49:55 +0000418 {"strop", initstrop},
419#endif
420
421#ifdef USE_STRUCT
422 {"struct", initstruct},
423#endif
424
425#ifdef USE_SUNAUDIODEV
426 {"sunaudiodev", initsunaudiodev},
Guido van Rossum1984f1e1992-08-04 12:41:02 +0000427#endif
428
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000429#ifdef USE_SV
430 {"sv", initsv},
Guido van Rossum38fbf521992-08-12 15:28:52 +0000431#endif
432
Guido van Rossum97f02771992-09-03 20:49:55 +0000433#ifdef USE_THREAD
434 {"thread", initthread},
435#endif
436
437#ifdef USE_TIME
438 {"time", inittime},
439#endif
440
Guido van Rossum0317a471992-10-26 13:40:15 +0000441#ifdef USE_IMAGEOP
442 {"imageop", initimageop},
443#endif
444
Guido van Rossum8ed29411992-12-08 16:10:18 +0000445#ifdef USE_MPZ
446 {"mpz", initmpz},
447#endif
448
449#ifdef USE_MD5
450 {"md5", initmd5},
451#endif
452
Guido van Rossum778983b1993-02-19 15:55:02 +0000453#ifdef USE_ARRAY
454 {"array", initarray},
455#endif
456
Guido van Rossuma3309961993-07-28 09:05:47 +0000457#ifdef USE_XT
458 {"Xt", initXt},
459#endif
460
461#ifdef USE_XAW
462 {"Xaw", initXaw},
463#endif
464
465#ifdef USE_XM
466 {"Xm", initXm},
467#endif
468
469#ifdef USE_GLX
470 {"Glx", initGlx},
471#endif
472
473#ifdef USE_HTML
474 {"HTML", initHTML},
475#endif
476
Sjoerd Mullendera9c3c221993-10-11 12:54:31 +0000477#ifdef USE_XLIB
478 {"Xlib", initXlib},
479#endif
480
Guido van Rossum52f2c051993-11-10 12:53:24 +0000481#ifdef USE_PARSER
482 {"parser", initparser},
483#endif
484
Guido van Rossum3a40ae41992-09-25 21:54:05 +0000485/* -- ADDMODULE MARKER 2 -- */
486
Guido van Rossum59e53a51991-02-19 12:22:24 +0000487 {0, 0} /* Sentinel */
488};
Guido van Rossumf56e3db1993-04-01 20:59:32 +0000489
490#ifdef USE_FROZEN
491#include "frozen.c"
492#else
493struct frozen {
494 char *name;
495 char *code;
496 int size;
497} frozen_modules[] = {
498 {0, 0, 0}
499};
500#endif