From 83b85a152febab88b35db5d2505e9459fed4c8e3 Mon Sep 17 00:00:00 2001 From: Georg Holzmann Date: Mon, 29 Jan 2007 19:18:23 +0000 Subject: fixed loading of externals for pd0.40 svn path=/trunk/; revision=7393 --- externals/loaders/libdir.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'externals') diff --git a/externals/loaders/libdir.c b/externals/loaders/libdir.c index 59b0700f..f52ad3f3 100644 --- a/externals/loaders/libdir.c +++ b/externals/loaders/libdir.c @@ -19,7 +19,7 @@ struct _canvasenvironment }; -static char *version = "$Revision: 1.5 $"; +static char *version = "$Revision: 1.6 $"; /* This loader opens a directory with a -meta.pd file as a library. In the * long run, the idea is that one folder will have all of objects files, all @@ -38,9 +38,10 @@ static char *version = "$Revision: 1.5 $"; static int libdir_loader(t_canvas *canvas, char *classname) { - int fd = -1; - char fullclassname[MAXPDSTRING], dirbuf[MAXPDSTRING], *nameptr; - t_canvasenvironment *canvasenvironment; + int fd = -1, i; + char fullclassname[MAXPDSTRING], dirbuf[MAXPDSTRING]; + char reldirbuf[MAXPDSTRING], curdir[MAXPDSTRING], *nameptr; + t_canvasenvironment *canvasenvironment; /* look for meta file (classname)/(classname)-meta.pd */ strncpy(fullclassname, classname, MAXPDSTRING - 6); @@ -60,9 +61,26 @@ static int libdir_loader(t_canvas *canvas, char *classname) return (0); } close(fd); + + + // G.Holzmann: canvas will look to a relative path to it, so we cannot add + // the absulote dirbuf path, we have to make it relative to the current canvas + // (see from line 1561 in g_canvas.c) + + sys_unbashfilename(canvas_getdir(canvas)->s_name, curdir); + + // count depth of the current dir + for(i=0; ice_path = namelist_append(canvasenvironment->ce_path, - dirbuf, 0); + reldirbuf, 0); post("libdir_loader: added %s to the canvas-local path", classname); } else -- cgit v1.2.1