blob: 484381ec4ea582a1fe00926f855007e89bc70a29 [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 Rossume9066061993-07-29 13:14:32 +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 Rossume9066061993-07-29 13:14:32 +000070#define DATE ">= 29 Jul 1993"
Guido van Rossumaa011411991-12-16 13:05:20 +000071#endif
Guido van Rossum9f462af1991-12-10 13:54:12 +000072
Guido van Rossum28a83ab1991-01-18 15:32:01 +000073#ifdef USE_STDWIN
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000074#ifdef macintosh
Guido van Rossume9066061993-07-29 13:14:32 +000075#include ":::stdwin:H:stdwin.h"
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000076#else /* !macintosh */
77#include "stdwin.h"
78#endif /* !macintosh */
79#endif /* USE_STDWIN */
Guido van Rossumaec78551990-12-20 23:03:58 +000080
Guido van Rossumaa011411991-12-16 13:05:20 +000081char version[80];
82
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000083char *argv0; /* For dynamic loading in import.c */
Guido van Rossum450ed491992-01-19 16:27:42 +000084
Guido van Rossumf56e3db1993-04-01 20:59:32 +000085extern char verbose;
86
Guido van Rossumaec78551990-12-20 23:03:58 +000087/*ARGSUSED*/
88void
89initargs(p_argc, p_argv)
90 int *p_argc;
91 char ***p_argv;
92{
Guido van Rossum9b4e1b31991-12-30 01:43:49 +000093 sprintf(version, VERSION, PATCHLEVEL, DATE);
Guido van Rossumaa011411991-12-16 13:05:20 +000094
Guido van Rossum450ed491992-01-19 16:27:42 +000095 argv0 = **p_argv;
96
Guido van Rossum28a83ab1991-01-18 15:32:01 +000097#ifdef USE_STDWIN
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000098#ifdef THINK_C_3_0
99 wsetstdio(1);
Guido van Rossum28a83ab1991-01-18 15:32:01 +0000100#endif
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000101 wargs(p_argc, p_argv);
102#endif /* USE_STDWIN */
Guido van Rossumf56e3db1993-04-01 20:59:32 +0000103#ifdef USE_FROZEN
104 if (verbose)
105#else
106 if (verbose || *p_argc < 2 && isatty(0) && isatty(1))
107#endif
Guido van Rossum9f462af1991-12-10 13:54:12 +0000108 {
109 printf("Python %s.\n", version);
Guido van Rossumaa011411991-12-16 13:05:20 +0000110 printf(
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000111"Copyright 1990, 1991, 1992, 1993 Stichting Mathematisch Centrum, Amsterdam\n");
Guido van Rossum9f462af1991-12-10 13:54:12 +0000112 }
Guido van Rossumaec78551990-12-20 23:03:58 +0000113}
114
115void
116initcalls()
117{
Guido van Rossumaec78551990-12-20 23:03:58 +0000118}
119
120void
121donecalls()
122{
Guido van Rossum28a83ab1991-01-18 15:32:01 +0000123#ifdef USE_STDWIN
Guido van Rossum5b02dbc1991-06-07 13:55:41 +0000124 wdone();
Guido van Rossum28a83ab1991-01-18 15:32:01 +0000125#endif
Guido van Rossumaec78551990-12-20 23:03:58 +0000126#ifdef USE_AUDIO
127 asa_done();
128#endif
129}
130
131#ifndef PYTHONPATH
Guido van Rossum34679b71993-01-26 13:33:44 +0000132
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000133#ifdef macintosh
134/* On the Mac, the search path is a space-separated list of directories */
135#define PYTHONPATH ": :lib :demo"
Guido van Rossum34679b71993-01-26 13:33:44 +0000136#endif /* macintosh */
137
138#ifdef unix
Guido van Rossum97f02771992-09-03 20:49:55 +0000139#define PYTHONPATH ".:/usr/local/lib/python"
Guido van Rossum34679b71993-01-26 13:33:44 +0000140#endif /* unix */
141
142#ifdef MSDOS
143/* In MS-DOS, the delimiter is a semicolon */
Guido van Rossume22e6441993-07-09 10:51:31 +0000144#define PYTHONPATH ".;..\\lib;\\python\\lib"
Guido van Rossum34679b71993-01-26 13:33:44 +0000145#endif /* MSDOS */
146
147#ifndef PYTHONPATH
148ERROR; ERROR; On what kind of system are you?;
149#endif
150
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000151#endif /* !PYTHONPATH */
Guido van Rossumaec78551990-12-20 23:03:58 +0000152
153extern char *getenv();
154
155char *
156getpythonpath()
157{
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000158#ifdef macintosh
159 return PYTHONPATH;
160#else /* !macintosh */
Guido van Rossumaec78551990-12-20 23:03:58 +0000161 char *path = getenv("PYTHONPATH");
Guido van Rossumc888bf71992-06-03 17:05:13 +0000162 char *defpath = PYTHONPATH;
163 char *buf;
Guido van Rossum34679b71993-01-26 13:33:44 +0000164 char *p;
Guido van Rossumc888bf71992-06-03 17:05:13 +0000165 int n;
166
167 if (path == 0 || *path == '\0')
168 return defpath;
169 n = strlen(path) + strlen(defpath) + 2;
170 buf = malloc(n);
171 if (buf == NULL)
172 return path; /* XXX too bad -- but not likely */
173 strcpy(buf, path);
Guido van Rossum34679b71993-01-26 13:33:44 +0000174 p = buf + strlen(buf);
175 *p++ = DELIM;
176 strcpy(p, defpath);
Guido van Rossumc888bf71992-06-03 17:05:13 +0000177 return buf;
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000178#endif /* !macintosh */
Guido van Rossumaec78551990-12-20 23:03:58 +0000179}
Guido van Rossum59e53a51991-02-19 12:22:24 +0000180
181
182/* Table of built-in modules.
183 These are initialized when first imported. */
184
185/* Standard modules */
Guido van Rossum6f7b9591991-06-04 19:47:46 +0000186
Guido van Rossum188f8321991-09-10 14:55:08 +0000187#ifdef USE_AL
188extern void inital();
189#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000190#ifdef USE_AMOEBA
191extern void initamoeba();
192#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000193#ifdef USE_AUDIO
194extern void initaudio();
195#endif
Guido van Rossumc89705d1992-11-26 08:54:07 +0000196#ifdef USE_AUDIOOP
197extern void initaudioop();
198#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000199#ifdef USE_CD
200extern void initcd();
201#endif
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000202#ifdef USE_CL
203extern void initcl();
204#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000205#ifdef USE_DBM
206extern void initdbm();
207#endif
208#ifdef USE_FCNTL
209extern void initfcntl();
210#endif
Guido van Rossum3fecef71991-08-16 08:58:56 +0000211#ifdef USE_FL
212extern void initfl();
213#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000214#ifdef USE_FM
215extern void initfm();
216#endif
217#ifdef USE_GL
218extern void initgl();
219#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000220#ifdef USE_GRP
221extern void initgrp();
222#endif
223#ifdef USE_IMGFILE
224extern void initimgfile();
225#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000226#ifdef USE_JPEG
227extern void initjpeg();
228#endif
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000229#ifdef USE_MAC
230extern void initmac();
231#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000232#ifdef USE_MARSHAL
233extern void initmarshal();
234#endif
235#ifdef USE_MATH
236extern void initmath();
237#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000238#ifdef USE_NIS
239extern void initnis();
Guido van Rossum2abc7a61991-04-03 19:01:18 +0000240#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000241#ifdef USE_PANEL
242extern void initpanel();
243#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000244#ifdef USE_POSIX
245extern void initposix();
246#endif
247#ifdef USE_PWD
248extern void initpwd();
249#endif
Guido van Rossum38fbf521992-08-12 15:28:52 +0000250#ifdef USE_REGEX
251extern void initregex();
252#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000253#ifdef USE_ROTOR
254extern void initrotor();
255#endif
256#ifdef USE_SELECT
257extern void initselect();
258#endif
259#ifdef USE_SGI
260extern void initsgi();
261#endif
262#ifdef USE_SOCKET
263extern void initsocket();
264#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000265#ifdef USE_STDWIN
Guido van Rossum5b02dbc1991-06-07 13:55:41 +0000266extern void initstdwin();
Guido van Rossum59e53a51991-02-19 12:22:24 +0000267#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000268#ifdef USE_STROP
269extern void initstrop();
270#endif
271#ifdef USE_STRUCT
272extern void initstruct();
273#endif
274#ifdef USE_SUNAUDIODEV
275extern void initsunaudiodev();
276#endif
Guido van Rossum1984f1e1992-08-04 12:41:02 +0000277#ifdef USE_THREAD
278extern void initthread();
279#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000280#ifdef USE_SV
281extern void initsv();
Guido van Rossum38fbf521992-08-12 15:28:52 +0000282#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000283#ifdef USE_TIME
284extern void inittime();
285#endif
Guido van Rossum0317a471992-10-26 13:40:15 +0000286#ifdef USE_IMAGEOP
287extern void initimageop();
288#endif
Guido van Rossum8ed29411992-12-08 16:10:18 +0000289#ifdef USE_MPZ
290extern void initmpz();
291#endif
292#ifdef USE_MD5
293extern void initmd5();
294#endif
Guido van Rossum778983b1993-02-19 15:55:02 +0000295#ifdef USE_ARRAY
296extern void initarray();
297#endif
Guido van Rossuma3309961993-07-28 09:05:47 +0000298#ifdef USE_XT
299extern void initXt();
300#endif
301#ifdef USE_XAW
302extern void initXaw();
303#endif
304#ifdef USE_XM
305extern void initXm();
306#endif
307#ifdef USE_GLX
308extern void initGlx();
309#endif
310#ifdef USE_HTML
311extern void initHTML();
312#endif
Guido van Rossum3a40ae41992-09-25 21:54:05 +0000313/* -- ADDMODULE MARKER 1 -- */
Guido van Rossum59e53a51991-02-19 12:22:24 +0000314
315struct {
316 char *name;
317 void (*initfunc)();
318} inittab[] = {
319
Guido van Rossum188f8321991-09-10 14:55:08 +0000320#ifdef USE_AL
321 {"al", inital},
322#endif
323
Guido van Rossum59e53a51991-02-19 12:22:24 +0000324#ifdef USE_AMOEBA
325 {"amoeba", initamoeba},
326#endif
327
Guido van Rossum97f02771992-09-03 20:49:55 +0000328#ifdef USE_AUDIO
329 {"audio", initaudio},
330#endif
331
Guido van Rossumc89705d1992-11-26 08:54:07 +0000332#ifdef USE_AUDIOOP
333 {"audioop", initaudioop},
334#endif
335
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000336#ifdef USE_CD
337 {"cd", initcd},
338#endif
339
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000340#ifdef USE_CL
341 {"cl", initcl},
342#endif
343
Guido van Rossum97f02771992-09-03 20:49:55 +0000344#ifdef USE_DBM
345 {"dbm", initdbm},
346#endif
347
348#ifdef USE_FCNTL
349 {"fcntl", initfcntl},
350#endif
351
Guido van Rossum3fecef71991-08-16 08:58:56 +0000352#ifdef USE_FL
353 {"fl", initfl},
354#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000355
356#ifdef USE_FM
357 {"fm", initfm},
Guido van Rossum2abc7a61991-04-03 19:01:18 +0000358#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000359
360#ifdef USE_GL
361 {"gl", initgl},
362#endif
363
Guido van Rossum97f02771992-09-03 20:49:55 +0000364#ifdef USE_GRP
365 {"grp", initgrp},
366#endif
367
368#ifdef USE_IMGFILE
369 {"imgfile", initimgfile},
370#endif
371
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000372#ifdef USE_JPEG
373 {"jpeg", initjpeg},
374#endif
375
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000376#ifdef USE_MAC
377 {"mac", initmac},
378#endif
379
Guido van Rossum97f02771992-09-03 20:49:55 +0000380#ifdef USE_MARSHAL
381 {"marshal", initmarshal},
382#endif
383
384#ifdef USE_MATH
385 {"math", initmath},
386#endif
387
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000388#ifdef USE_NIS
389 {"nis", initnis},
390#endif
391
Guido van Rossum59e53a51991-02-19 12:22:24 +0000392#ifdef USE_PANEL
393 {"pnl", initpanel},
394#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000395
Guido van Rossum97f02771992-09-03 20:49:55 +0000396#ifdef USE_POSIX
397 {"posix", initposix},
398#endif
399
400#ifdef USE_PWD
401 {"pwd", initpwd},
402#endif
403
Guido van Rossum38fbf521992-08-12 15:28:52 +0000404#ifdef USE_REGEX
405 {"regex", initregex},
406#endif
407
Guido van Rossum97f02771992-09-03 20:49:55 +0000408#ifdef USE_ROTOR
409 {"rotor", initrotor},
410#endif
411
412#ifdef USE_SELECT
413 {"select", initselect},
414#endif
415
416#ifdef USE_SGI
417 {"sgi", initsgi},
418#endif
419
420#ifdef USE_SOCKET
421 {"socket", initsocket},
422#endif
423
Guido van Rossum59e53a51991-02-19 12:22:24 +0000424#ifdef USE_STDWIN
Guido van Rossum5b02dbc1991-06-07 13:55:41 +0000425 {"stdwin", initstdwin},
Guido van Rossum59e53a51991-02-19 12:22:24 +0000426#endif
427
Guido van Rossumaee08791992-09-08 09:05:33 +0000428#ifdef USE_STROP
Guido van Rossum97f02771992-09-03 20:49:55 +0000429 {"strop", initstrop},
430#endif
431
432#ifdef USE_STRUCT
433 {"struct", initstruct},
434#endif
435
436#ifdef USE_SUNAUDIODEV
437 {"sunaudiodev", initsunaudiodev},
Guido van Rossum1984f1e1992-08-04 12:41:02 +0000438#endif
439
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000440#ifdef USE_SV
441 {"sv", initsv},
Guido van Rossum38fbf521992-08-12 15:28:52 +0000442#endif
443
Guido van Rossum97f02771992-09-03 20:49:55 +0000444#ifdef USE_THREAD
445 {"thread", initthread},
446#endif
447
448#ifdef USE_TIME
449 {"time", inittime},
450#endif
451
Guido van Rossum0317a471992-10-26 13:40:15 +0000452#ifdef USE_IMAGEOP
453 {"imageop", initimageop},
454#endif
455
Guido van Rossum8ed29411992-12-08 16:10:18 +0000456#ifdef USE_MPZ
457 {"mpz", initmpz},
458#endif
459
460#ifdef USE_MD5
461 {"md5", initmd5},
462#endif
463
Guido van Rossum778983b1993-02-19 15:55:02 +0000464#ifdef USE_ARRAY
465 {"array", initarray},
466#endif
467
Guido van Rossuma3309961993-07-28 09:05:47 +0000468#ifdef USE_XT
469 {"Xt", initXt},
470#endif
471
472#ifdef USE_XAW
473 {"Xaw", initXaw},
474#endif
475
476#ifdef USE_XM
477 {"Xm", initXm},
478#endif
479
480#ifdef USE_GLX
481 {"Glx", initGlx},
482#endif
483
484#ifdef USE_HTML
485 {"HTML", initHTML},
486#endif
487
Guido van Rossum3a40ae41992-09-25 21:54:05 +0000488/* -- ADDMODULE MARKER 2 -- */
489
Guido van Rossum59e53a51991-02-19 12:22:24 +0000490 {0, 0} /* Sentinel */
491};
Guido van Rossumf56e3db1993-04-01 20:59:32 +0000492
493#ifdef USE_FROZEN
494#include "frozen.c"
495#else
496struct frozen {
497 char *name;
498 char *code;
499 int size;
500} frozen_modules[] = {
501 {0, 0, 0}
502};
503#endif