annotate Modules/getpath.c @ 3546:3f7cdf1663f7 legacy-trunk

A version of swed that can import html files. Also demonstrates implementing object handlers in Python.
author Jack Jansen <jack.jansen@cwi.nl>
date Tue, 07 May 1996 15:25:36 +0000
parents b6c0a41e4a46
children f158edccc72c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2896
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 #include "Python.h"
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 #include "osdefs.h"
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
3416
b6c0a41e4a46 Include stdlib.h or declare getenv
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
4 #ifdef HAVE_STDLIB_H
b6c0a41e4a46 Include stdlib.h or declare getenv
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
5 #include <stdlib.h>
b6c0a41e4a46 Include stdlib.h or declare getenv
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
6 #else
b6c0a41e4a46 Include stdlib.h or declare getenv
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
7 extern char *getenv Py_PROTO((const char *));
b6c0a41e4a46 Include stdlib.h or declare getenv
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
8 #endif
b6c0a41e4a46 Include stdlib.h or declare getenv
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
9
2896
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 #ifndef PYTHONPATH
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 #define PYTHONPATH ".:/usr/local/lib/python"
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 #endif
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 /* Return the initial python search path. This is called once from
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 initsys() to initialize sys.path. The environment variable
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 PYTHONPATH is fetched and the default path appended. The default
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 path may be passed to the preprocessor; if not, a system-dependent
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 default is used. */
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 char *
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 getpythonpath()
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 {
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 char *path = getenv("PYTHONPATH");
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 char *defpath = PYTHONPATH;
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 static char *buf = NULL;
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 char *p;
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 int n;
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 if (path == NULL)
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 path = "";
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 n = strlen(path) + strlen(defpath) + 2;
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 if (buf != NULL) {
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 free(buf);
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 buf = NULL;
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 }
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 buf = malloc(n);
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 if (buf == NULL)
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 Py_FatalError("not enough memory to copy module search path");
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 strcpy(buf, path);
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 p = buf + strlen(buf);
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 if (p != buf)
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 *p++ = DELIM;
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 strcpy(p, defpath);
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 return buf;
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 }