[PD-cvs] SF.net SVN: pure-data:[10499] trunk/packages/patches/ fix_absolute_paths_for_declare-0.41.4.patch

eighthave at users.sourceforge.net eighthave at users.sourceforge.net
Sat Jan 10 06:47:06 CET 2009


Revision: 10499
          http://pure-data.svn.sourceforge.net/pure-data/?rev=10499&view=rev
Author:   eighthave
Date:     2009-01-10 05:47:05 +0000 (Sat, 10 Jan 2009)

Log Message:
-----------
/partially/ accepted into 0.42... sigh

Removed Paths:
-------------
    trunk/packages/patches/fix_absolute_paths_for_declare-0.41.4.patch

Deleted: trunk/packages/patches/fix_absolute_paths_for_declare-0.41.4.patch
===================================================================
--- trunk/packages/patches/fix_absolute_paths_for_declare-0.41.4.patch	2009-01-10 04:52:15 UTC (rev 10498)
+++ trunk/packages/patches/fix_absolute_paths_for_declare-0.41.4.patch	2009-01-10 05:47:05 UTC (rev 10499)
@@ -1,174 +0,0 @@
-Index: m_pd.h
-===================================================================
---- m_pd.h	(revision 9862)
-+++ m_pd.h	(working copy)
-@@ -457,6 +457,7 @@
- 
- /* ------------  system interface routines ------------------- */
- EXTERN int sys_isreadablefile(const char *name);
-+EXTERN int sys_isabsolutepath(const char *dir);
- EXTERN void sys_bashfilename(const char *from, char *to);
- EXTERN void sys_unbashfilename(const char *from, char *to);
- EXTERN int open_via_path(const char *name, const char *ext, const char *dir,
-Index: s_main.c
-===================================================================
---- s_main.c	(revision 9862)
-+++ s_main.c	(working copy)
-@@ -491,28 +491,29 @@
-     sys_libdir = gensym(sbuf2);
-     sys_guidir = &s_;   /* in MSW the guipath just depends on the libdir */
- #else
--    strncpy(sbuf, sbuf2, MAXPDSTRING-30);
-+    realpath(sbuf2, sbuf);
-+    strncpy(sbuf2, sbuf, MAXPDSTRING-30);
-     sbuf[MAXPDSTRING-30] = 0;
--    strcat(sbuf, "/lib/pd");
--    if (stat(sbuf, &statbuf) >= 0)
-+    strcat(sbuf2, "/lib/pd");
-+    if (stat(sbuf2, &statbuf) >= 0)
-     {
-             /* complicated layout: lib dir is the one we just stat-ed above */
--        sys_libdir = gensym(sbuf);
-+        sys_libdir = gensym(sbuf2);
-             /* gui lives in .../lib/pd/bin */
--        strncpy(sbuf, sbuf2, MAXPDSTRING-30);
-+        strncpy(sbuf2, sbuf, MAXPDSTRING-30);
-         sbuf[MAXPDSTRING-30] = 0;
--        strcat(sbuf, "/lib/pd/bin");
--        sys_guidir = gensym(sbuf);
-+        strcat(sbuf2, "/lib/pd/bin");
-+        sys_guidir = gensym(sbuf2);
-     }
-     else
-     {
-             /* simple layout: lib dir is the parent */
--        sys_libdir = gensym(sbuf2);
-+        sys_libdir = gensym(sbuf);
-             /* gui lives in .../bin */
--        strncpy(sbuf, sbuf2, MAXPDSTRING-30);
-+        strncpy(sbuf2, sbuf, MAXPDSTRING-30);
-         sbuf[MAXPDSTRING-30] = 0;
--        strcat(sbuf, "/bin");
--        sys_guidir = gensym(sbuf);
-+        strcat(sbuf2, "/bin");
-+        sys_guidir = gensym(sbuf2);
-     }
- #endif
- }
-Index: s_path.c
-===================================================================
---- s_path.c	(revision 9862)
-+++ s_path.c	(working copy)
-@@ -69,6 +69,24 @@
-     *to = 0;
- }
- 
-+/* test if path is absolute or relative, based on leading /, env vars, ~, etc */
-+int sys_isabsolutepath(const char *dir)
-+{
-+    if (dir[0] == '/' || dir[0] == '~'
-+#ifdef MSW
-+        || dir[0] == '%' || (dir[1] == ':' && dir[2] == '/')
-+#endif
-+        )
-+    {
-+        return 1;
-+    }
-+    else
-+    {
-+        return 0;            
-+    }
-+}
-+
-+
- /*******************  Utility functions used below ******************/
- 
- /*!
-@@ -250,11 +268,7 @@
- int sys_open_absolute(const char *name, const char* ext,
-     char *dirresult, char **nameresult, unsigned int size, int bin, int *fdp)
- {
--    if (name[0] == '/' 
--#ifdef MSW
--        || (name[1] == ':' && name[2] == '/')
--#endif
--            )
-+    if (sys_isabsolutepath(name))
-     {
-         char dirbuf[MAXPDSTRING];
-         int dirlen = (strrchr(name, '/') - name);
-Index: g_canvas.c
-===================================================================
---- g_canvas.c	(revision 9862)
-+++ g_canvas.c	(working copy)
-@@ -1475,6 +1479,22 @@
-     }
- }
- 
-+static void canvas_completepath(char *from, char *to)
-+{
-+    if (sys_isabsolutepath(from))
-+    {
-+        to[0] = '\0';
-+    }
-+    else
-+    {   // if not absolute path, append Pd lib dir
-+        strncpy(to, sys_libdir->s_name, FILENAME_MAX-4);
-+        to[FILENAME_MAX-3] = '\0';
-+        strcat(to, "/");
-+    }
-+    strncat(to, from, FILENAME_MAX-strlen(to));
-+    to[FILENAME_MAX-1] = '\0';
-+}
-+
- static void canvas_declare(t_canvas *x, t_symbol *s, int argc, t_atom *argv)
- {
-     int i;
-@@ -1496,12 +1516,7 @@
-         }
-         else if ((argc > i+1) && !strcmp(flag, "-stdpath"))
-         {
--            strncpy(strbuf, sys_libdir->s_name, MAXPDSTRING-3);
--            strbuf[MAXPDSTRING-4] = 0;
--            strcat(strbuf, "/");
--            strncpy(strbuf, atom_getsymbolarg(i+1, argc, argv)->s_name,
--                MAXPDSTRING-strlen(strbuf));
--            strbuf[MAXPDSTRING-1] = 0;
-+            canvas_completepath(atom_getsymbolarg(i+1, argc, argv)->s_name, strbuf);
-             e->ce_path = namelist_append(e->ce_path, strbuf, 0);
-             i++;
-         }
-@@ -1512,12 +1527,7 @@
-         }
-         else if ((argc > i+1) && !strcmp(flag, "-stdlib"))
-         {
--            strncpy(strbuf, sys_libdir->s_name, MAXPDSTRING-3);
--            strbuf[MAXPDSTRING-4] = 0;
--            strcat(strbuf, "/");
--            strncpy(strbuf, atom_getsymbolarg(i+1, argc, argv)->s_name,
--                MAXPDSTRING-strlen(strbuf));
--            strbuf[MAXPDSTRING-1] = 0;
-+            canvas_completepath(atom_getsymbolarg(i+1, argc, argv)->s_name, strbuf);
-             sys_load_lib(0, strbuf);
-             i++;
-         }
-@@ -1564,9 +1574,16 @@
-         for (nl = y->gl_env->ce_path; nl; nl = nl->nl_next)
-         {
-             char realname[MAXPDSTRING];
--            strncpy(realname, dir, MAXPDSTRING);
--            realname[MAXPDSTRING-3] = 0;
--            strcat(realname, "/");
-+            if (sys_isabsolutepath(nl->nl_string))
-+            {
-+                realname[0] = '\0';
-+            }
-+            else
-+            {   /* if not absolute path, append Pd lib dir */
-+                strncpy(realname, dir, MAXPDSTRING);
-+                realname[MAXPDSTRING-3] = 0;
-+                strcat(realname, "/");
-+            }
-             strncat(realname, nl->nl_string, MAXPDSTRING-strlen(realname));
-             realname[MAXPDSTRING-1] = 0;
-             if ((fd = sys_trytoopenone(realname, name, ext,


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Pd-cvs mailing list