blob: fe48023d3f2b2171977ab02d9ebe9f28154c9f06 [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 Rossum9bfef441993-03-29 10:43:31 +000065#define VERSION "0.9.%d BETA (%s)"
Guido van Rossumaa011411991-12-16 13:05:20 +000066
67#ifdef __DATE__
68#define DATE __DATE__
69#else
Guido van Rossum9bfef441993-03-29 10:43:31 +000070#define DATE ">= 27 Mar 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
75#include ":::src:stdwin:H:stdwin.h"
76#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 */
144#define PYTHONPATH ".;C\\python\\lib"
145#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 Rossum3a40ae41992-09-25 21:54:05 +0000298/* -- ADDMODULE MARKER 1 -- */
Guido van Rossum59e53a51991-02-19 12:22:24 +0000299
300struct {
301 char *name;
302 void (*initfunc)();
303} inittab[] = {
304
Guido van Rossum188f8321991-09-10 14:55:08 +0000305#ifdef USE_AL
306 {"al", inital},
307#endif
308
Guido van Rossum59e53a51991-02-19 12:22:24 +0000309#ifdef USE_AMOEBA
310 {"amoeba", initamoeba},
311#endif
312
Guido van Rossum97f02771992-09-03 20:49:55 +0000313#ifdef USE_AUDIO
314 {"audio", initaudio},
315#endif
316
Guido van Rossumc89705d1992-11-26 08:54:07 +0000317#ifdef USE_AUDIOOP
318 {"audioop", initaudioop},
319#endif
320
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000321#ifdef USE_CD
322 {"cd", initcd},
323#endif
324
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000325#ifdef USE_CL
326 {"cl", initcl},
327#endif
328
Guido van Rossum97f02771992-09-03 20:49:55 +0000329#ifdef USE_DBM
330 {"dbm", initdbm},
331#endif
332
333#ifdef USE_FCNTL
334 {"fcntl", initfcntl},
335#endif
336
Guido van Rossum3fecef71991-08-16 08:58:56 +0000337#ifdef USE_FL
338 {"fl", initfl},
339#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000340
341#ifdef USE_FM
342 {"fm", initfm},
Guido van Rossum2abc7a61991-04-03 19:01:18 +0000343#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000344
345#ifdef USE_GL
346 {"gl", initgl},
347#endif
348
Guido van Rossum97f02771992-09-03 20:49:55 +0000349#ifdef USE_GRP
350 {"grp", initgrp},
351#endif
352
353#ifdef USE_IMGFILE
354 {"imgfile", initimgfile},
355#endif
356
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000357#ifdef USE_JPEG
358 {"jpeg", initjpeg},
359#endif
360
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000361#ifdef USE_MAC
362 {"mac", initmac},
363#endif
364
Guido van Rossum97f02771992-09-03 20:49:55 +0000365#ifdef USE_MARSHAL
366 {"marshal", initmarshal},
367#endif
368
369#ifdef USE_MATH
370 {"math", initmath},
371#endif
372
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000373#ifdef USE_NIS
374 {"nis", initnis},
375#endif
376
Guido van Rossum59e53a51991-02-19 12:22:24 +0000377#ifdef USE_PANEL
378 {"pnl", initpanel},
379#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000380
Guido van Rossum97f02771992-09-03 20:49:55 +0000381#ifdef USE_POSIX
382 {"posix", initposix},
383#endif
384
385#ifdef USE_PWD
386 {"pwd", initpwd},
387#endif
388
Guido van Rossum38fbf521992-08-12 15:28:52 +0000389#ifdef USE_REGEX
390 {"regex", initregex},
391#endif
392
Guido van Rossum97f02771992-09-03 20:49:55 +0000393#ifdef USE_ROTOR
394 {"rotor", initrotor},
395#endif
396
397#ifdef USE_SELECT
398 {"select", initselect},
399#endif
400
401#ifdef USE_SGI
402 {"sgi", initsgi},
403#endif
404
405#ifdef USE_SOCKET
406 {"socket", initsocket},
407#endif
408
Guido van Rossum59e53a51991-02-19 12:22:24 +0000409#ifdef USE_STDWIN
Guido van Rossum5b02dbc1991-06-07 13:55:41 +0000410 {"stdwin", initstdwin},
Guido van Rossum59e53a51991-02-19 12:22:24 +0000411#endif
412
Guido van Rossumaee08791992-09-08 09:05:33 +0000413#ifdef USE_STROP
Guido van Rossum97f02771992-09-03 20:49:55 +0000414 {"strop", initstrop},
415#endif
416
417#ifdef USE_STRUCT
418 {"struct", initstruct},
419#endif
420
421#ifdef USE_SUNAUDIODEV
422 {"sunaudiodev", initsunaudiodev},
Guido van Rossum1984f1e1992-08-04 12:41:02 +0000423#endif
424
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000425#ifdef USE_SV
426 {"sv", initsv},
Guido van Rossum38fbf521992-08-12 15:28:52 +0000427#endif
428
Guido van Rossum97f02771992-09-03 20:49:55 +0000429#ifdef USE_THREAD
430 {"thread", initthread},
431#endif
432
433#ifdef USE_TIME
434 {"time", inittime},
435#endif
436
Guido van Rossum0317a471992-10-26 13:40:15 +0000437#ifdef USE_IMAGEOP
438 {"imageop", initimageop},
439#endif
440
Guido van Rossum8ed29411992-12-08 16:10:18 +0000441#ifdef USE_MPZ
442 {"mpz", initmpz},
443#endif
444
445#ifdef USE_MD5
446 {"md5", initmd5},
447#endif
448
Guido van Rossum778983b1993-02-19 15:55:02 +0000449#ifdef USE_ARRAY
450 {"array", initarray},
451#endif
452
Guido van Rossum3a40ae41992-09-25 21:54:05 +0000453/* -- ADDMODULE MARKER 2 -- */
454
Guido van Rossum59e53a51991-02-19 12:22:24 +0000455 {0, 0} /* Sentinel */
456};
Guido van Rossumf56e3db1993-04-01 20:59:32 +0000457
458#ifdef USE_FROZEN
459#include "frozen.c"
460#else
461struct frozen {
462 char *name;
463 char *code;
464 int size;
465} frozen_modules[] = {
466 {0, 0, 0}
467};
468#endif