| #include "Python.h" | 
 | #include "osdefs.h" | 
 |  | 
 | static char *prefix, *exec_prefix, *progpath, *module_search_path=NULL; | 
 |  | 
 | static void | 
 | calculate_path() | 
 | { | 
 |     char *pypath = getenv("Python$Path"); | 
 |     if (pypath) { | 
 |         int pathlen = strlen(pypath); | 
 |         module_search_path = malloc(pathlen + 1); | 
 |         if (module_search_path) | 
 |             strncpy(module_search_path, pypath, pathlen + 1); | 
 |         else { | 
 |             fprintf(stderr, | 
 |                 "Not enough memory for dynamic PYTHONPATH.\n" | 
 |                 "Using default static PYTHONPATH.\n"); | 
 |         } | 
 |     } | 
 |     if (!module_search_path) | 
 |         module_search_path = "<Python$Dir>.Lib"; | 
 |     prefix = "<Python$Dir>"; | 
 |     exec_prefix = prefix; | 
 |     progpath = Py_GetProgramName(); | 
 | } | 
 |  | 
 | /* External interface */ | 
 |  | 
 | char * | 
 | Py_GetPath() | 
 | { | 
 |     if (!module_search_path) | 
 |         calculate_path(); | 
 |     return module_search_path; | 
 | } | 
 |  | 
 | char * | 
 | Py_GetPrefix() | 
 | { | 
 |     if (!module_search_path) | 
 |         calculate_path(); | 
 |     return prefix; | 
 | } | 
 |  | 
 | char * | 
 | Py_GetExecPrefix() | 
 | { | 
 |     if (!module_search_path) | 
 |         calculate_path(); | 
 |     return exec_prefix; | 
 | } | 
 |  | 
 | char * | 
 | Py_GetProgramFullPath() | 
 | { | 
 |     if (!module_search_path) | 
 |         calculate_path(); | 
 |     return progpath; | 
 | } |