blob: 549d14f82ec7a78a81095c73edaed40222895874 [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 Rossum450ed491992-01-19 16:27:42 +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 Rossum0b0db8e1993-01-21 16:07:51 +000070#define DATE ">= 11 Jan 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 Rossumaec78551990-12-20 23:03:58 +000085/*ARGSUSED*/
86void
87initargs(p_argc, p_argv)
88 int *p_argc;
89 char ***p_argv;
90{
Guido van Rossum9b4e1b31991-12-30 01:43:49 +000091 sprintf(version, VERSION, PATCHLEVEL, DATE);
Guido van Rossumaa011411991-12-16 13:05:20 +000092
Guido van Rossum450ed491992-01-19 16:27:42 +000093 argv0 = **p_argv;
94
Guido van Rossum28a83ab1991-01-18 15:32:01 +000095#ifdef USE_STDWIN
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000096#ifdef THINK_C_3_0
97 wsetstdio(1);
Guido van Rossum28a83ab1991-01-18 15:32:01 +000098#endif
Guido van Rossum0b0db8e1993-01-21 16:07:51 +000099 wargs(p_argc, p_argv);
100#endif /* USE_STDWIN */
Guido van Rossum9f462af1991-12-10 13:54:12 +0000101 if (*p_argc < 2 && isatty(0) && isatty(1))
102 {
103 printf("Python %s.\n", version);
Guido van Rossumaa011411991-12-16 13:05:20 +0000104 printf(
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000105"Copyright 1990, 1991, 1992, 1993 Stichting Mathematisch Centrum, Amsterdam\n");
Guido van Rossum9f462af1991-12-10 13:54:12 +0000106 }
Guido van Rossumaec78551990-12-20 23:03:58 +0000107}
108
109void
110initcalls()
111{
Guido van Rossumaec78551990-12-20 23:03:58 +0000112}
113
114void
115donecalls()
116{
Guido van Rossum28a83ab1991-01-18 15:32:01 +0000117#ifdef USE_STDWIN
Guido van Rossum5b02dbc1991-06-07 13:55:41 +0000118 wdone();
Guido van Rossum28a83ab1991-01-18 15:32:01 +0000119#endif
Guido van Rossumaec78551990-12-20 23:03:58 +0000120#ifdef USE_AUDIO
121 asa_done();
122#endif
123}
124
125#ifndef PYTHONPATH
Guido van Rossum34679b71993-01-26 13:33:44 +0000126
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000127#ifdef macintosh
128/* On the Mac, the search path is a space-separated list of directories */
129#define PYTHONPATH ": :lib :demo"
Guido van Rossum34679b71993-01-26 13:33:44 +0000130#endif /* macintosh */
131
132#ifdef unix
Guido van Rossum97f02771992-09-03 20:49:55 +0000133#define PYTHONPATH ".:/usr/local/lib/python"
Guido van Rossum34679b71993-01-26 13:33:44 +0000134#endif /* unix */
135
136#ifdef MSDOS
137/* In MS-DOS, the delimiter is a semicolon */
138#define PYTHONPATH ".;C\\python\\lib"
139#endif /* MSDOS */
140
141#ifndef PYTHONPATH
142ERROR; ERROR; On what kind of system are you?;
143#endif
144
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000145#endif /* !PYTHONPATH */
Guido van Rossumaec78551990-12-20 23:03:58 +0000146
147extern char *getenv();
148
149char *
150getpythonpath()
151{
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000152#ifdef macintosh
153 return PYTHONPATH;
154#else /* !macintosh */
Guido van Rossumaec78551990-12-20 23:03:58 +0000155 char *path = getenv("PYTHONPATH");
Guido van Rossumc888bf71992-06-03 17:05:13 +0000156 char *defpath = PYTHONPATH;
157 char *buf;
Guido van Rossum34679b71993-01-26 13:33:44 +0000158 char *p;
Guido van Rossumc888bf71992-06-03 17:05:13 +0000159 int n;
160
161 if (path == 0 || *path == '\0')
162 return defpath;
163 n = strlen(path) + strlen(defpath) + 2;
164 buf = malloc(n);
165 if (buf == NULL)
166 return path; /* XXX too bad -- but not likely */
167 strcpy(buf, path);
Guido van Rossum34679b71993-01-26 13:33:44 +0000168 p = buf + strlen(buf);
169 *p++ = DELIM;
170 strcpy(p, defpath);
Guido van Rossumc888bf71992-06-03 17:05:13 +0000171 return buf;
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000172#endif /* !macintosh */
Guido van Rossumaec78551990-12-20 23:03:58 +0000173}
Guido van Rossum59e53a51991-02-19 12:22:24 +0000174
175
176/* Table of built-in modules.
177 These are initialized when first imported. */
178
179/* Standard modules */
Guido van Rossum6f7b9591991-06-04 19:47:46 +0000180
Guido van Rossum188f8321991-09-10 14:55:08 +0000181#ifdef USE_AL
182extern void inital();
183#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000184#ifdef USE_AMOEBA
185extern void initamoeba();
186#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000187#ifdef USE_AUDIO
188extern void initaudio();
189#endif
Guido van Rossumc89705d1992-11-26 08:54:07 +0000190#ifdef USE_AUDIOOP
191extern void initaudioop();
192#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000193#ifdef USE_CD
194extern void initcd();
195#endif
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000196#ifdef USE_CL
197extern void initcl();
198#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000199#ifdef USE_DBM
200extern void initdbm();
201#endif
202#ifdef USE_FCNTL
203extern void initfcntl();
204#endif
Guido van Rossum3fecef71991-08-16 08:58:56 +0000205#ifdef USE_FL
206extern void initfl();
207#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000208#ifdef USE_FM
209extern void initfm();
210#endif
211#ifdef USE_GL
212extern void initgl();
213#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000214#ifdef USE_GRP
215extern void initgrp();
216#endif
217#ifdef USE_IMGFILE
218extern void initimgfile();
219#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000220#ifdef USE_JPEG
221extern void initjpeg();
222#endif
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000223#ifdef USE_MAC
224extern void initmac();
225#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000226#ifdef USE_MARSHAL
227extern void initmarshal();
228#endif
229#ifdef USE_MATH
230extern void initmath();
231#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000232#ifdef USE_NIS
233extern void initnis();
Guido van Rossum2abc7a61991-04-03 19:01:18 +0000234#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000235#ifdef USE_PANEL
236extern void initpanel();
237#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000238#ifdef USE_POSIX
239extern void initposix();
240#endif
241#ifdef USE_PWD
242extern void initpwd();
243#endif
Guido van Rossum38fbf521992-08-12 15:28:52 +0000244#ifdef USE_REGEX
245extern void initregex();
246#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000247#ifdef USE_ROTOR
248extern void initrotor();
249#endif
250#ifdef USE_SELECT
251extern void initselect();
252#endif
253#ifdef USE_SGI
254extern void initsgi();
255#endif
256#ifdef USE_SOCKET
257extern void initsocket();
258#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000259#ifdef USE_STDWIN
Guido van Rossum5b02dbc1991-06-07 13:55:41 +0000260extern void initstdwin();
Guido van Rossum59e53a51991-02-19 12:22:24 +0000261#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000262#ifdef USE_STROP
263extern void initstrop();
264#endif
265#ifdef USE_STRUCT
266extern void initstruct();
267#endif
268#ifdef USE_SUNAUDIODEV
269extern void initsunaudiodev();
270#endif
Guido van Rossum1984f1e1992-08-04 12:41:02 +0000271#ifdef USE_THREAD
272extern void initthread();
273#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000274#ifdef USE_SV
275extern void initsv();
Guido van Rossum38fbf521992-08-12 15:28:52 +0000276#endif
Guido van Rossum97f02771992-09-03 20:49:55 +0000277#ifdef USE_TIME
278extern void inittime();
279#endif
Guido van Rossum0317a471992-10-26 13:40:15 +0000280#ifdef USE_IMAGEOP
281extern void initimageop();
282#endif
Guido van Rossum8ed29411992-12-08 16:10:18 +0000283#ifdef USE_MPZ
284extern void initmpz();
285#endif
286#ifdef USE_MD5
287extern void initmd5();
288#endif
Guido van Rossum3a40ae41992-09-25 21:54:05 +0000289/* -- ADDMODULE MARKER 1 -- */
Guido van Rossum59e53a51991-02-19 12:22:24 +0000290
291struct {
292 char *name;
293 void (*initfunc)();
294} inittab[] = {
295
Guido van Rossum188f8321991-09-10 14:55:08 +0000296#ifdef USE_AL
297 {"al", inital},
298#endif
299
Guido van Rossum59e53a51991-02-19 12:22:24 +0000300#ifdef USE_AMOEBA
301 {"amoeba", initamoeba},
302#endif
303
Guido van Rossum97f02771992-09-03 20:49:55 +0000304#ifdef USE_AUDIO
305 {"audio", initaudio},
306#endif
307
Guido van Rossumc89705d1992-11-26 08:54:07 +0000308#ifdef USE_AUDIOOP
309 {"audioop", initaudioop},
310#endif
311
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000312#ifdef USE_CD
313 {"cd", initcd},
314#endif
315
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000316#ifdef USE_CL
317 {"cl", initcl},
318#endif
319
Guido van Rossum97f02771992-09-03 20:49:55 +0000320#ifdef USE_DBM
321 {"dbm", initdbm},
322#endif
323
324#ifdef USE_FCNTL
325 {"fcntl", initfcntl},
326#endif
327
Guido van Rossum3fecef71991-08-16 08:58:56 +0000328#ifdef USE_FL
329 {"fl", initfl},
330#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000331
332#ifdef USE_FM
333 {"fm", initfm},
Guido van Rossum2abc7a61991-04-03 19:01:18 +0000334#endif
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000335
336#ifdef USE_GL
337 {"gl", initgl},
338#endif
339
Guido van Rossum97f02771992-09-03 20:49:55 +0000340#ifdef USE_GRP
341 {"grp", initgrp},
342#endif
343
344#ifdef USE_IMGFILE
345 {"imgfile", initimgfile},
346#endif
347
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000348#ifdef USE_JPEG
349 {"jpeg", initjpeg},
350#endif
351
Guido van Rossum0b0db8e1993-01-21 16:07:51 +0000352#ifdef USE_MAC
353 {"mac", initmac},
354#endif
355
Guido van Rossum97f02771992-09-03 20:49:55 +0000356#ifdef USE_MARSHAL
357 {"marshal", initmarshal},
358#endif
359
360#ifdef USE_MATH
361 {"math", initmath},
362#endif
363
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000364#ifdef USE_NIS
365 {"nis", initnis},
366#endif
367
Guido van Rossum59e53a51991-02-19 12:22:24 +0000368#ifdef USE_PANEL
369 {"pnl", initpanel},
370#endif
Guido van Rossum59e53a51991-02-19 12:22:24 +0000371
Guido van Rossum97f02771992-09-03 20:49:55 +0000372#ifdef USE_POSIX
373 {"posix", initposix},
374#endif
375
376#ifdef USE_PWD
377 {"pwd", initpwd},
378#endif
379
Guido van Rossum38fbf521992-08-12 15:28:52 +0000380#ifdef USE_REGEX
381 {"regex", initregex},
382#endif
383
Guido van Rossum97f02771992-09-03 20:49:55 +0000384#ifdef USE_ROTOR
385 {"rotor", initrotor},
386#endif
387
388#ifdef USE_SELECT
389 {"select", initselect},
390#endif
391
392#ifdef USE_SGI
393 {"sgi", initsgi},
394#endif
395
396#ifdef USE_SOCKET
397 {"socket", initsocket},
398#endif
399
Guido van Rossum59e53a51991-02-19 12:22:24 +0000400#ifdef USE_STDWIN
Guido van Rossum5b02dbc1991-06-07 13:55:41 +0000401 {"stdwin", initstdwin},
Guido van Rossum59e53a51991-02-19 12:22:24 +0000402#endif
403
Guido van Rossumaee08791992-09-08 09:05:33 +0000404#ifdef USE_STROP
Guido van Rossum97f02771992-09-03 20:49:55 +0000405 {"strop", initstrop},
406#endif
407
408#ifdef USE_STRUCT
409 {"struct", initstruct},
410#endif
411
412#ifdef USE_SUNAUDIODEV
413 {"sunaudiodev", initsunaudiodev},
Guido van Rossum1984f1e1992-08-04 12:41:02 +0000414#endif
415
Guido van Rossumb001f7a1992-08-19 16:44:41 +0000416#ifdef USE_SV
417 {"sv", initsv},
Guido van Rossum38fbf521992-08-12 15:28:52 +0000418#endif
419
Guido van Rossum97f02771992-09-03 20:49:55 +0000420#ifdef USE_THREAD
421 {"thread", initthread},
422#endif
423
424#ifdef USE_TIME
425 {"time", inittime},
426#endif
427
Guido van Rossum0317a471992-10-26 13:40:15 +0000428#ifdef USE_IMAGEOP
429 {"imageop", initimageop},
430#endif
431
Guido van Rossum8ed29411992-12-08 16:10:18 +0000432#ifdef USE_MPZ
433 {"mpz", initmpz},
434#endif
435
436#ifdef USE_MD5
437 {"md5", initmd5},
438#endif
439
Guido van Rossum3a40ae41992-09-25 21:54:05 +0000440/* -- ADDMODULE MARKER 2 -- */
441
Guido van Rossum59e53a51991-02-19 12:22:24 +0000442 {0, 0} /* Sentinel */
443};