1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
--- branches/pd-extended/0.41/pd/src/s_path.c 2009/04/09 01:04:16 10990
+++ branches/pd-extended/0.41/pd/src/s_path.c 2009/04/09 01:29:24 10991
@@ -229,8 +229,29 @@
void sys_setextrapath(const char *p)
{
+ char pathbuf[FILENAME_MAX];
namelist_free(pd_extrapath);
- pd_extrapath = namelist_append(0, p, 0);
+ /* add standard place for users to install stuff first */
+#ifdef __gnu_linux__
+ sys_expandpath("~/pd-externals", pathbuf);
+ pd_extrapath = namelist_append(0, pathbuf, 0);
+ pd_extrapath = namelist_append(pd_extrapath, "/usr/local/lib/pd-externals", 0);
+#endif
+
+#ifdef __APPLE__
+ sys_expandpath("~/Library/Pd", pathbuf);
+ pd_extrapath = namelist_append(0, pathbuf, 0);
+ pd_extrapath = namelist_append(pd_extrapath, "/Library/Pd", 0);
+#endif
+
+#ifdef _WIN32
+ sys_expandpath("%ProgramFiles%/Common Files/Pd", pathbuf);
+ pd_extrapath = namelist_append(0, pathbuf, 0);
+ sys_expandpath("%UserProfile%/Application Data/Pd", pathbuf);
+ pd_extrapath = namelist_append(pd_extrapath, pathbuf, 0);
+#endif
+ /* add built-in "extra" path last so its checked last */
+ pd_extrapath = namelist_append(pd_extrapath, p, 0);
}
#ifdef MSW
@@ -357,11 +378,12 @@
dirresult, nameresult, size, bin)) >= 0)
return (fd);
- /* next look in "extra" */
- if (sys_usestdpath &&
- (fd = sys_trytoopenone(pd_extrapath->nl_string, name, ext,
- dirresult, nameresult, size, bin)) >= 0)
- return (fd);
+ /* next look in built-in paths like "extra" */
+ if (sys_usestdpath)
+ for (nl = pd_extrapath; nl; nl = nl->nl_next)
+ if ((fd = sys_trytoopenone(nl->nl_string, name, ext,
+ dirresult, nameresult, size, bin)) >= 0)
+ return (fd);
*dirresult = 0;
*nameresult = dirresult;
|