aboutsummaryrefslogtreecommitdiff
path: root/pd/src/s_loader.c
diff options
context:
space:
mode:
authorMiller Puckette <millerpuckette@users.sourceforge.net>2006-06-03 19:13:08 +0000
committerMiller Puckette <millerpuckette@users.sourceforge.net>2006-06-03 19:13:08 +0000
commitbeb2211b63b4b80ee07a807e5ffdd441aeea6354 (patch)
tree876eb052d5cec7755053328a470c75e0638b6b94 /pd/src/s_loader.c
parenteb976fa09171036cbaeaabf920708b2d39c49acc (diff)
FFT package selection
Zmoelnig's multi-'$' patch big-soundfile support Patch to set open directories (openpanel, savepanel) patch to allow funny characters in extern names fixed makefile.in to support intel mac svn path=/trunk/; revision=5164
Diffstat (limited to 'pd/src/s_loader.c')
-rw-r--r--pd/src/s_loader.c45
1 files changed, 25 insertions, 20 deletions
diff --git a/pd/src/s_loader.c b/pd/src/s_loader.c
index 89646a48..d985af05 100644
--- a/pd/src/s_loader.c
+++ b/pd/src/s_loader.c
@@ -38,8 +38,12 @@ static char sys_dllextent[] =
".pd_linux";
#endif
#ifdef MACOSX
+#ifdef __i386
+ ".pd_imac";
+#else
".pd_darwin";
#endif
+#endif
#ifdef MSW
".dll";
#endif
@@ -73,30 +77,30 @@ static int sys_load_lib_alt(char *dirname, char *classname, char *altname)
if ((fd = open_via_path(dirname, classname2, sys_dllextent,
dirbuf, &nameptr, MAXPDSTRING, 1)) < 0)
{
- /* next try (alternative_classname).(sys_dllextent) */
- if(altname)
+ /* next try (alternative_classname).(sys_dllextent) */
+ if (altname)
{
- if ((fd = open_via_path(dirname, altname, sys_dllextent,
- dirbuf, &nameptr, MAXPDSTRING, 1)) < 0)
-
- /* next try (alternative_classname)/(alternative_classname).(sys_dllextent) ... */
- strncpy(classname2, altname, MAXPDSTRING);
- filename[MAXPDSTRING-2] = 0;
- strcat(classname2, "/");
- strncat(classname2, altname, MAXPDSTRING-strlen(classname2));
- filename[MAXPDSTRING-1] = 0;
- if ((fd = open_via_path(dirname, classname2, sys_dllextent,
- dirbuf, &nameptr, MAXPDSTRING, 1)) < 0)
+ if ((fd = open_via_path(dirname, altname, sys_dllextent,
+ dirbuf, &nameptr, MAXPDSTRING, 1)) < 0)
{
- return 0;
- }
+ /* next try
+ (alt_classname)/(alt_classname).(sys_dllextent) */
+ strncpy(classname2, altname, MAXPDSTRING);
+ filename[MAXPDSTRING-2] = 0;
+ strcat(classname2, "/");
+ strncat(classname2, altname,
+ MAXPDSTRING-strlen(classname2));
+ filename[MAXPDSTRING-1] = 0;
+ if ((fd = open_via_path(dirname, classname2,
+ sys_dllextent, dirbuf, &nameptr, MAXPDSTRING, 1)) < 0)
+ {
+ return 0;
+ }
+ }
}
- else
- return (0);
+ else return (0);
}
}
-
-
close(fd);
class_set_extern_dir(gensym(dirbuf));
@@ -110,7 +114,7 @@ static int sys_load_lib_alt(char *dirname, char *classname, char *altname)
if (lastdot = strrchr(nameptr, '.'))
*lastdot = 0;
-#ifdef MACOSX
+#ifdef DIDFORMACOSX /* no longer correct on macosx??? */
strcpy(symname, "_");
strcat(symname, nameptr);
if(altname)
@@ -134,6 +138,7 @@ static int sys_load_lib_alt(char *dirname, char *classname, char *altname)
strcat(symname, "_setup");
#ifdef DL_OPEN
dlobj = dlopen(filename, RTLD_NOW | RTLD_GLOBAL);
+ post("opened %x", dlobj);
if (!dlobj)
{
post("%s: %s", filename, dlerror());