Revision: 9857 http://pure-data.svn.sourceforge.net/pure-data/?rev=9857&view=rev Author: eighthave Date: 2008-05-19 15:56:35 -0700 (Mon, 19 May 2008)
Log Message: ----------- fixed bug where first library loaded had garbage in the path; switched from MAXPDSTRING to FILENAME_MAX, since it is dealing ultimately with filenames
Modified Paths: -------------- branches/pd-extended/v0-40/externals/loaders/libdir.c
Modified: branches/pd-extended/v0-40/externals/loaders/libdir.c =================================================================== --- branches/pd-extended/v0-40/externals/loaders/libdir.c 2008-05-19 19:25:03 UTC (rev 9856) +++ branches/pd-extended/v0-40/externals/loaders/libdir.c 2008-05-19 22:56:35 UTC (rev 9857) @@ -40,15 +40,15 @@ { int fd = -1; unsigned int i; - char helppathname[MAXPDSTRING]; - char fullclassname[MAXPDSTRING], dirbuf[MAXPDSTRING]; - char reldirbuf[MAXPDSTRING], curdir[MAXPDSTRING], *nameptr; + char helppathname[FILENAME_MAX]; + char fullclassname[FILENAME_MAX], dirbuf[FILENAME_MAX]; + char reldirbuf[FILENAME_MAX], curdir[FILENAME_MAX], *nameptr; t_canvasenvironment *canvasenvironment;
/* look for meta file (classname)/(classname)-meta.pd */ - strncpy(fullclassname, classname, MAXPDSTRING - 6); + strncpy(fullclassname, classname, FILENAME_MAX - 6); strcat(fullclassname, "/"); - strncat(fullclassname, classname, MAXPDSTRING - strlen(fullclassname) - 6); + strncat(fullclassname, classname, FILENAME_MAX - strlen(fullclassname) - 6); strcat(fullclassname, "-meta");
/* if this is being called from a canvas, then add the library path to the @@ -58,45 +58,39 @@ { canvasenvironment = canvas_getenv(canvas); if ((fd = canvas_open(0, fullclassname, ".pd", - dirbuf, &nameptr, MAXPDSTRING, 0)) < 0) + dirbuf, &nameptr, FILENAME_MAX, 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 + // 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); - + reldirbuf[0] = '\0'; // count depth of the current dir for(i=0; i<strlen(curdir); i++) { - if(curdir[i] == 47) // 47 is "/" in ascii - strncat(reldirbuf, "../", MAXPDSTRING); + if(curdir[i] == '/') + strncat(reldirbuf, "../", FILENAME_MAX); } - strncat(reldirbuf, dirbuf, MAXPDSTRING); - - - // TODO: have this add to the canvas-local path only + strncat(reldirbuf, dirbuf, FILENAME_MAX); canvasenvironment->ce_path = namelist_append(canvasenvironment->ce_path, - reldirbuf, 0); + 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) + dirbuf, &nameptr, FILENAME_MAX, 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; + strncpy(helppathname, sys_libdir->s_name, FILENAME_MAX-30); + helppathname[FILENAME_MAX-30] = 0; strcat(helppathname, "/doc/5.reference/"); strcat(helppathname, classname); sys_helppath = namelist_append(sys_helppath, helppathname, 0);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.