From: <wsf...@us...> - 2008-12-24 13:19:59
|
Revision: 11000 http://swig.svn.sourceforge.net/swig/?rev=11000&view=rev Author: wsfulton Date: 2008-12-24 13:19:55 +0000 (Wed, 24 Dec 2008) Log Message: ----------- fix input filename containing a path on windows Modified Paths: -------------- trunk/Source/Modules/main.cxx trunk/Source/Swig/include.c trunk/Source/Swig/misc.c trunk/Source/Swig/swig.h Modified: trunk/Source/Modules/main.cxx =================================================================== --- trunk/Source/Modules/main.cxx 2008-12-23 22:47:58 UTC (rev 10999) +++ trunk/Source/Modules/main.cxx 2008-12-24 13:19:55 UTC (rev 11000) @@ -1002,7 +1002,7 @@ if (lang_config) { Printf(fs, "\n%%include <%s>\n", lang_config); } - Printf(fs, "%%include(maininput=\"%s\") \"%s\"\n", input_file, Swig_last_file()); + Printf(fs, "%%include(maininput=\"%s\") \"%s\"\n", Swig_filename_escape(NewString(input_file)), Swig_last_file()); for (i = 0; i < Len(libfiles); i++) { Printf(fs, "\n%%include \"%s\"\n", Getitem(libfiles, i)); } Modified: trunk/Source/Swig/include.c =================================================================== --- trunk/Source/Swig/include.c 2008-12-23 22:47:58 UTC (rev 10999) +++ trunk/Source/Swig/include.c 2008-12-24 13:19:55 UTC (rev 11000) @@ -183,12 +183,8 @@ Delete(spath); } if (f) { -#if defined(_WIN32) /* Note not on Cygwin else filename is displayed with double '/' */ - Replaceall(filename, "\\\\", "\\"); /* remove double '\' in case any already present */ - Replaceall(filename, "\\", "\\\\"); -#endif Delete(lastpath); - lastpath = Copy(filename); + lastpath = Swig_filename_escape(filename); } Delete(filename); return f; Modified: trunk/Source/Swig/misc.c =================================================================== --- trunk/Source/Swig/misc.c 2008-12-23 22:47:58 UTC (rev 10999) +++ trunk/Source/Swig/misc.c 2008-12-24 13:19:55 UTC (rev 11000) @@ -118,6 +118,21 @@ /* ----------------------------------------------------------------------------- + * Swig_filename_escape() + * + * Escapes backslashes in filename - for Windows + * ----------------------------------------------------------------------------- */ + +String *Swig_filename_escape(String *filename) { + String *adjusted_filename = Copy(filename); +#if defined(_WIN32) /* Note not on Cygwin else filename is displayed with double '/' */ + Replaceall(adjusted_filename, "\\\\", "\\"); /* remove double '\' in case any already present */ + Replaceall(adjusted_filename, "\\", "\\\\"); +#endif + return adjusted_filename; +} + +/* ----------------------------------------------------------------------------- * Swig_string_escape() * * Takes a string object and produces a string with escape codes added to it. Modified: trunk/Source/Swig/swig.h =================================================================== --- trunk/Source/Swig/swig.h 2008-12-23 22:47:58 UTC (rev 10999) +++ trunk/Source/Swig/swig.h 2008-12-24 13:19:55 UTC (rev 11000) @@ -286,6 +286,7 @@ extern const char *Swig_package_version(void); extern void Swig_banner(File *f); extern String *Swig_strip_c_comments(const String *s); + extern String *Swig_filename_escape(String *filename); extern String *Swig_string_escape(String *s); extern String *Swig_string_mangle(const String *s); extern void Swig_scopename_split(String *s, String **prefix, String **last); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |