summaryrefslogtreecommitdiffstats
path: root/RISCOS/Modules/getpath_riscos.c
diff options
context:
space:
mode:
Diffstat (limited to 'RISCOS/Modules/getpath_riscos.c')
-rw-r--r--RISCOS/Modules/getpath_riscos.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/RISCOS/Modules/getpath_riscos.c b/RISCOS/Modules/getpath_riscos.c
new file mode 100644
index 0000000..11e92c1
--- /dev/null
+++ b/RISCOS/Modules/getpath_riscos.c
@@ -0,0 +1,60 @@
+#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;
+}