1 #include "Python.h"
2 #include "osdefs.h"
3 
4 static char *prefix, *exec_prefix, *progpath, *module_search_path=NULL;
5 
6 static void
calculate_path()7 calculate_path()
8 {
9     char *pypath = getenv("Python$Path");
10     if (pypath) {
11         int pathlen = strlen(pypath);
12         module_search_path = malloc(pathlen + 1);
13         if (module_search_path)
14             strncpy(module_search_path, pypath, pathlen + 1);
15         else {
16             fprintf(stderr,
17                 "Not enough memory for dynamic PYTHONPATH.\n"
18                 "Using default static PYTHONPATH.\n");
19         }
20     }
21     if (!module_search_path)
22         module_search_path = "<Python$Dir>.Lib";
23     prefix = "<Python$Dir>";
24     exec_prefix = prefix;
25     progpath = Py_GetProgramName();
26 }
27 
28 /* External interface */
29 
30 char *
Py_GetPath()31 Py_GetPath()
32 {
33     if (!module_search_path)
34         calculate_path();
35     return module_search_path;
36 }
37 
38 char *
Py_GetPrefix()39 Py_GetPrefix()
40 {
41     if (!module_search_path)
42         calculate_path();
43     return prefix;
44 }
45 
46 char *
Py_GetExecPrefix()47 Py_GetExecPrefix()
48 {
49     if (!module_search_path)
50         calculate_path();
51     return exec_prefix;
52 }
53 
54 char *
Py_GetProgramFullPath()55 Py_GetProgramFullPath()
56 {
57     if (!module_search_path)
58         calculate_path();
59     return progpath;
60 }
61