[PD-cvs] externals/loaders libdir.c,1.7,1.8

Hans-Christoph Steiner eighthave at users.sourceforge.net
Mon Nov 26 07:24:24 CET 2007


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

Modified Files:
	libdir.c 
Log Message:
added the doc/5.reference/classname path to the global helppath if loaded library into global namespace; fixed compiler warning about unsigned int comparison

Index: libdir.c
===================================================================
RCS file: /cvsroot/pure-data/externals/loaders/libdir.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** libdir.c	13 Oct 2007 03:26:22 -0000	1.7
--- libdir.c	26 Nov 2007 06:24:22 -0000	1.8
***************
*** 39,43 ****
  static int libdir_loader(t_canvas *canvas, char *classname)
  {
!     int fd = -1, i;
      char fullclassname[MAXPDSTRING], dirbuf[MAXPDSTRING];
      char reldirbuf[MAXPDSTRING], curdir[MAXPDSTRING], *nameptr;
--- 39,45 ----
  static int libdir_loader(t_canvas *canvas, char *classname)
  {
!     int fd = -1;
!     unsigned int i;
!     char helppathname[MAXPDSTRING];
      char fullclassname[MAXPDSTRING], dirbuf[MAXPDSTRING];
      char reldirbuf[MAXPDSTRING], curdir[MAXPDSTRING], *nameptr;
***************
*** 45,101 ****
  
  /* look for meta file (classname)/(classname)-meta.pd */
! 	strncpy(fullclassname, classname, MAXPDSTRING - 6);
! 	strcat(fullclassname, "/");
! 	strncat(fullclassname, classname, MAXPDSTRING - strlen(fullclassname) - 6);
! 	strcat(fullclassname, "-meta");
! 	
! 	/* if this is being called from a canvas, then add the library path to the
! 	 * canvas-local path */
  #if (PD_MINOR_VERSION >= 40)
! 	if(canvas) 
! 	{
! 		canvasenvironment = canvas_getenv(canvas);
! 		if ((fd = canvas_open(0, fullclassname, ".pd",
! 								dirbuf, &nameptr, MAXPDSTRING, 0)) < 0) 
! 		{
! 			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; 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);
! 	}
! 	else
  #endif
! 	{
! 		if ((fd = open_via_path(".", fullclassname, ".pd",
! 								dirbuf, &nameptr, MAXPDSTRING, 0)) < 0) 
! 		{
! 			return (0);
! 		}
! 		close(fd);
! 		sys_searchpath = namelist_append(sys_searchpath, dirbuf, 0);
! 		post("libdir_loader: added %s to the global classpath", classname);
! //		post("\tThis is deprecated behavior.");
! 	}
! 	/* post("libdir_loader loaded fullclassname: '%s'\n", fullclassname); */
      if (sys_verbose) 
          post("Loaded libdir %s from %s", classname, dirbuf);
--- 47,108 ----
  
  /* look for meta file (classname)/(classname)-meta.pd */
!     strncpy(fullclassname, classname, MAXPDSTRING - 6);
!     strcat(fullclassname, "/");
!     strncat(fullclassname, classname, MAXPDSTRING - strlen(fullclassname) - 6);
!     strcat(fullclassname, "-meta");
!     
!     /* if this is being called from a canvas, then add the library path to the
!      * canvas-local path */
  #if (PD_MINOR_VERSION >= 40)
!     if(canvas) 
!     {
!         canvasenvironment = canvas_getenv(canvas);
!         if ((fd = canvas_open(0, fullclassname, ".pd",
!                                 dirbuf, &nameptr, MAXPDSTRING, 0)) < 0) 
!         {
!             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; 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);
!     }
!     else
  #endif
!     {
!         if ((fd = open_via_path(".", fullclassname, ".pd",
!                                 dirbuf, &nameptr, MAXPDSTRING, 0)) < 0) 
!         {
!             return (0);
!         }
!         close(fd);
!         sys_searchpath = namelist_append(sys_searchpath, dirbuf, 0);
!         strncpy(helppathname, sys_libdir->s_name, MAXPDSTRING-30);
!         helppathname[MAXPDSTRING-30] = 0;
!         strcat(helppathname, "/doc/5.reference/");
!         strcat(helppathname, classname);
!         sys_helppath = namelist_append(sys_helppath, helppathname, 0);
!         post("libdir_loader: added %s to the global classpath", classname);
! //        post("\tThis is deprecated behavior.");
!     }
!     /* post("libdir_loader loaded fullclassname: '%s'\n", fullclassname); */
      if (sys_verbose) 
          post("Loaded libdir %s from %s", classname, dirbuf);
***************
*** 110,120 ****
      sys_register_loader(libdir_loader);
  #else
! 	error("to function, this needs to be compiled against Pd 0.40 or higher,\n");
! 	post("\tor a version that has sys_register_loader()");
  #endif
      post("libdir loader %s",version);  
      post("\twritten by Hans-Christoph Steiner <hans at at.or.at>");
      post("\tcompiled on "__DATE__" at "__TIME__ " ");
! 	post("\tcompiled against Pd version %d.%d.%d.%s", PD_MAJOR_VERSION, 
! 		 PD_MINOR_VERSION, PD_BUGFIX_VERSION, PD_TEST_VERSION);
  }
--- 117,127 ----
      sys_register_loader(libdir_loader);
  #else
!     error("to function, this needs to be compiled against Pd 0.40 or higher,\n");
!     post("\tor a version that has sys_register_loader()");
  #endif
      post("libdir loader %s",version);  
      post("\twritten by Hans-Christoph Steiner <hans at at.or.at>");
      post("\tcompiled on "__DATE__" at "__TIME__ " ");
!     post("\tcompiled against Pd version %d.%d.%d.%s", PD_MAJOR_VERSION, 
!          PD_MINOR_VERSION, PD_BUGFIX_VERSION, PD_TEST_VERSION);
  }





More information about the Pd-cvs mailing list