[PD-cvs] externals/loaders libdir.c,1.5,1.6

Georg Holzmann grholzi at users.sourceforge.net
Mon Jan 29 20:18:25 CET 2007


Update of /cvsroot/pure-data/externals/loaders
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11407

Modified Files:
	libdir.c 
Log Message:
fixed loading of externals for pd0.40


Index: libdir.c
===================================================================
RCS file: /cvsroot/pure-data/externals/loaders/libdir.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** libdir.c	23 Nov 2006 15:57:28 -0000	1.5
--- libdir.c	29 Jan 2007 19:18:23 -0000	1.6
***************
*** 39,45 ****
  static int libdir_loader(t_canvas *canvas, char *classname)
  {
!     int fd = -1;
!     char fullclassname[MAXPDSTRING], dirbuf[MAXPDSTRING], *nameptr;
! 	t_canvasenvironment *canvasenvironment;
  
  /* look for meta file (classname)/(classname)-meta.pd */
--- 39,46 ----
  static int libdir_loader(t_canvas *canvas, char *classname)
  {
!     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 */
***************
*** 61,67 ****
  		}
  		close(fd);
  		// TODO: have this add to the canvas-local path only
  		canvasenvironment->ce_path = namelist_append(canvasenvironment->ce_path, 
! 													 dirbuf, 0);
  		post("libdir_loader: added %s to the canvas-local path", classname);
  	}
--- 62,85 ----
  		}
  		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; i<strlen(curdir); i++)
+ 		{
+ 			if(curdir[i] == 47) // 47 is "/" in ascii
+                           strncat(reldirbuf, "../", MAXPDSTRING);
+ 		}
+ 		strncat(reldirbuf, dirbuf, MAXPDSTRING);
+ 
+ 
  		// TODO: have this add to the canvas-local path only
  		canvasenvironment->ce_path = namelist_append(canvasenvironment->ce_path, 
! 								reldirbuf, 0);
  		post("libdir_loader: added %s to the canvas-local path", classname);
  	}





More information about the Pd-cvs mailing list