blob: b4f7d3dfff34fd6e8b66befa78cefc8409316ff7 [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
Sjoerd Mullenderc4f169c1993-12-21 17:06:12 +0000302#ifdef USE_RGBIMG
303extern void initrgbimg();
304#endif
Guido van Rossum3a40ae41992-09-25 21:54:05 +0000305/* -- ADDMODULE MARKER 1 -- */
Guido van Rossum59e53a51991-02-19 12:22:24 +0000306
307struct {
308 char *name;
309 void (*initfunc)();
310} inittab[] = {
311
Guido van Rossum188f8321991-09-10 14:55:08 +0000312#ifdef USE_AL
313 {"al", inital},
314#endif
315
Guido van Rossum59e53a51991-02-19 12:22:24 +0000316#ifdef USE_AMOEBA
317 {"amoeba", initamoeba},
318#endif
319
Guido van Rossum97f02771992-09-03 20:49:55 +0000320#ifdef USE_AUDIO
321 {"audio", initaudio},
322#endif
323
Guido van Rossumc89705d1992-11-26 08:54:07 +0000324#ifdef USE_AUDIOOP
325 {"audioop", initaudioop},
326#endif
327
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000328#ifdef USE_CD
329 {"cd", initcd},
330#endif
331
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000332#ifdef USE_CL
333 {"cl", initcl},
334#endif
335
Guido van Rossum97f02771992-09-03 20:49:55 +0000336#ifdef USE_DBM
337 {"dbm", initdbm},
338#endif
339
340#ifdef USE_FCNTL
341 {"fcntl", initfcntl},
342#endif
343
Guido van Rossum3fecef71991-08-16 08:58:56 +0000344#ifdef USE_FL
345 {"fl", initfl},
346#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000347
348#ifdef USE_FM
349 {"fm", initfm},
Guido van Rossum2abc7a61991-04-03 19:01:18 +0000350#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000351
352#ifdef USE_GL
353 {"gl", initgl},
354#endif
355
Guido van Rossum97f02771992-09-03 20:49:55 +0000356#ifdef USE_GRP
357 {"grp", initgrp},
358#endif
359
360#ifdef USE_IMGFILE
361 {"imgfile", initimgfile},
362#endif
363
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000364#ifdef USE_JPEG
365 {"jpeg", initjpeg},
366#endif
367
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000368#ifdef USE_MAC
369 {"mac", initmac},
370#endif
371
Guido van Rossum97f02771992-09-03 20:49:55 +0000372#ifdef USE_MARSHAL
373 {"marshal", initmarshal},
374#endif
375
376#ifdef USE_MATH
377 {"math", initmath},
378#endif
379
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000380#ifdef USE_NIS
381 {"nis", initnis},
382#endif
383
Guido van Rossum59e53a51991-02-19 12:22:24 +0000384#ifdef USE_PANEL
385 {"pnl", initpanel},
386#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000387
Guido van Rossum97f02771992-09-03 20:49:55 +0000388#ifdef USE_POSIX
389 {"posix", initposix},
390#endif
391
392#ifdef USE_PWD
393 {"pwd", initpwd},
394#endif
395
Guido van Rossum38fbf521992-08-12 15:28:52 +0000396#ifdef USE_REGEX
397 {"regex", initregex},
398#endif
399
Guido van Rossum97f02771992-09-03 20:49:55 +0000400#ifdef USE_ROTOR
401 {"rotor", initrotor},
402#endif
403
404#ifdef USE_SELECT
405 {"select", initselect},
406#endif
407
408#ifdef USE_SGI
409 {"sgi", initsgi},
410#endif
411
412#ifdef USE_SOCKET
413 {"socket", initsocket},
414#endif
415
Guido van Rossum59e53a51991-02-19 12:22:24 +0000416#ifdef USE_STDWIN
Guido van Rossum5b02dbc1991-06-07 13:55:41 +0000417 {"stdwin", initstdwin},
Guido van Rossum59e53a51991-02-19 12:22:24 +0000418#endif
419
Guido van Rossumaee08791992-09-08 09:05:33 +0000420#ifdef USE_STROP
Guido van Rossum97f02771992-09-03 20:49:55 +0000421 {"strop", initstrop},
422#endif
423
424#ifdef USE_STRUCT
425 {"struct", initstruct},
426#endif
427
428#ifdef USE_SUNAUDIODEV
429 {"sunaudiodev", initsunaudiodev},
Guido van Rossum1984f1e1992-08-04 12:41:02 +0000430#endif
431
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000432#ifdef USE_SV
433 {"sv", initsv},
Guido van Rossum38fbf521992-08-12 15:28:52 +0000434#endif
435
Guido van Rossum97f02771992-09-03 20:49:55 +0000436#ifdef USE_THREAD
437 {"thread", initthread},
438#endif
439
440#ifdef USE_TIME
441 {"time", inittime},
442#endif
443
Guido van Rossum0317a471992-10-26 13:40:15 +0000444#ifdef USE_IMAGEOP
445 {"imageop", initimageop},
446#endif
447
Guido van Rossum8ed29411992-12-08 16:10:18 +0000448#ifdef USE_MPZ
449 {"mpz", initmpz},
450#endif
451
452#ifdef USE_MD5
453 {"md5", initmd5},
454#endif
455
Guido van Rossum778983b1993-02-19 15:55:02 +0000456#ifdef USE_ARRAY
457 {"array", initarray},
458#endif
459
Guido van Rossuma3309961993-07-28 09:05:47 +0000460#ifdef USE_XT
461 {"Xt", initXt},
462#endif
463
464#ifdef USE_XAW
465 {"Xaw", initXaw},
466#endif
467
468#ifdef USE_XM
469 {"Xm", initXm},
470#endif
471
472#ifdef USE_GLX
473 {"Glx", initGlx},
474#endif
475
476#ifdef USE_HTML
477 {"HTML", initHTML},
478#endif
479
Sjoerd Mullendera9c3c221993-10-11 12:54:31 +0000480#ifdef USE_XLIB
481 {"Xlib", initXlib},
482#endif
483
Guido van Rossum52f2c051993-11-10 12:53:24 +0000484#ifdef USE_PARSER
485 {"parser", initparser},
486#endif
487
Sjoerd Mullenderc4f169c1993-12-21 17:06:12 +0000488#ifdef USE_RGBIMG
489 {"rgbimg", initrgbimg},
490#endif
491
Guido van Rossum3a40ae41992-09-25 21:54:05 +0000492/* -- ADDMODULE MARKER 2 -- */
493
Guido van Rossum59e53a51991-02-19 12:22:24 +0000494 {0, 0} /* Sentinel */
495};
Guido van Rossumf56e3db1993-04-01 20:59:32 +0000496
497#ifdef USE_FROZEN
498#include "frozen.c"
499#else
500struct frozen {
501 char *name;
502 char *code;
503 int size;
504} frozen_modules[] = {
505 {0, 0, 0}
506};
507#endif