Revision: 15312
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15312
Author:   jesterking
Date:     2008-06-22 21:49:48 +0200 (Sun, 22 Jun 2008)

Log Message:
-----------
* fix path problems when running .py scripts through menus
  - \'s were not escaped, confusing execfile()
* small indentation fix in btools.py

Modified Paths:
--------------
    branches/apricot/source/blender/python/BPY_interface.c
    branches/apricot/tools/btools.py

Modified: branches/apricot/source/blender/python/BPY_interface.c
===================================================================
--- branches/apricot/source/blender/python/BPY_interface.c      2008-06-22 
19:43:52 UTC (rev 15311)
+++ branches/apricot/source/blender/python/BPY_interface.c      2008-06-22 
19:49:48 UTC (rev 15312)
@@ -782,14 +782,45 @@
        }
 }
 
+#ifdef WIN32
+static char *escape_slashes(const char *s) {
+       int l= 0;
+       int i= 0;
+       int k= 0;
+       char *news= NULL;
+       char *tmp= (char *)s;
+       int slashcount= 0;
+       if(s==0) return 0;
+       l= strlen(s);
+       for(i= 0; i < l; i++) {
+               if(tmp[i]=='\\')
+                       slashcount++;
+       }
+
+       if(slashcount>0) {
+               news= MEM_mallocN(slashcount+l+1, "escslashes");
+               tmp= (char *)s;
+               for(i= 0; i < l; i++) {
+                       if(tmp[i]=='\\') {
+                               news[i+k]='\\';
+                               k++;
+                       }
+                       news[i+k]= tmp[i];
+               }
+               news[slashcount+l] = '\0';
+       } else {
+                       news= (char *)s;
+       }
+
+       return news;
+}
+#endif
+
 int BPY_run_script(Script *script)
 {
        PyObject *py_dict, *py_res, *pyarg;
        Text *text = NULL;
        BPy_constant *info;
-
-
-
        
        PyGILState_STATE gilstate = PyGILState_Ensure();
        
@@ -880,10 +911,21 @@
        if (text) {
                py_res = RunPython( text, py_dict );
        } else {
+#ifdef WIN32
+               /* backward slashes need to be escaped on windows, otherwise 
execfile() doesn't work right */
+               char *scriptname= escape_slashes(script->scriptname);
+               char pystring[sizeof(scriptname) + 14];
+               pystring[0] = '\0';
+               sprintf(pystring, "execfile('%s')", scriptname);
+#else
                char pystring[sizeof(script->scriptname) + 14];
                pystring[0] = '\0';
                sprintf(pystring, "execfile('%s')", script->scriptname);
+#endif
                py_res = PyRun_String( pystring, Py_file_input, py_dict, 
py_dict );
+#ifdef WIN32
+               MEM_freeN(scriptname);
+#endif
        }
 
        if( !py_res ) {         /* Failed execution of the script */

Modified: branches/apricot/tools/btools.py
===================================================================
--- branches/apricot/tools/btools.py    2008-06-22 19:43:52 UTC (rev 15311)
+++ branches/apricot/tools/btools.py    2008-06-22 19:49:48 UTC (rev 15312)
@@ -51,7 +51,7 @@
             'WITH_BF_STATICOPENGL', 'BF_OPENGL', 'BF_OPENGL_INC', 
'BF_OPENGL_LIB', 'BF_OPENGL_LIBPATH', 'BF_OPENGL_LIB_STATIC', 
'BF_OPENGL_LINKFLAGS',
             'WITH_BF_FTGL', 'BF_FTGL', 'BF_FTGL_INC', 'BF_FTGL_LIB',
             'WITH_BF_PLAYER',
-           'WITH_BF_GLEXT',
+            'WITH_BF_GLEXT',
             'WITH_BF_BINRELOC',        
             'CFLAGS', 'CCFLAGS', 'CPPFLAGS', 
             'REL_CFLAGS', 'REL_CCFLAGS',


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to