From 3cc4d76e239997a47753d0250405648d1df75a03 Mon Sep 17 00:00:00 2001 From: Noah Stegmaier Date: Thu, 4 Jun 2020 11:45:52 +0200 Subject: [PATCH 1/4] escape filepaths --- Source/Modules/main.cxx | 2 +- Source/Swig/misc.c | 13 +++++++++++++ Source/Swig/swig.h | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx index 72b765b40..4dce5d953 100644 --- a/Source/Modules/main.cxx +++ b/Source/Modules/main.cxx @@ -1154,7 +1154,7 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) { use_file = 0; } if (use_file) { - Printf(f_dependencies_file, "\\\n %s ", Getitem(files, i)); + Printf(f_dependencies_file, "\\\n %s ", Swig_filename_escape_space(Getitem(files, i))); if (depend_phony) Append(phony_targets, Getitem(files, i)); } diff --git a/Source/Swig/misc.c b/Source/Swig/misc.c index 7b818478f..ef6fcc02f 100644 --- a/Source/Swig/misc.c +++ b/Source/Swig/misc.c @@ -249,6 +249,19 @@ String *Swig_filename_escape(String *filename) { return adjusted_filename; } +/* ----------------------------------------------------------------------------- + * Swig_filename_escape() + * + * Escapes spaces in filename - for Makefiles + * ----------------------------------------------------------------------------- */ + +String *Swig_filename_escape_space(String *filename) { + String *adjusted_filename = Copy(filename); + Swig_filename_correct(adjusted_filename); + Replaceall(adjusted_filename, " ", "\\ "); + return adjusted_filename; +} + /* ----------------------------------------------------------------------------- * Swig_filename_unescape() * diff --git a/Source/Swig/swig.h b/Source/Swig/swig.h index e0783dae1..76691269e 100644 --- a/Source/Swig/swig.h +++ b/Source/Swig/swig.h @@ -315,6 +315,7 @@ extern int ParmList_is_compactdefargs(ParmList *p); extern String *Swig_new_subdirectory(String *basedirectory, String *subdirectory); extern void Swig_filename_correct(String *filename); extern String *Swig_filename_escape(String *filename); + extern String *Swig_filename_escape_space(String *filename); extern void Swig_filename_unescape(String *filename); extern int Swig_storage_isextern(Node *n); extern int Swig_storage_isexternc(Node *n); From d723f821603afc8201c6a5b306577461c0671a2b Mon Sep 17 00:00:00 2001 From: Noah Stegmaier Date: Thu, 4 Jun 2020 12:01:46 +0200 Subject: [PATCH 2/4] escape path of generated file --- Source/Modules/main.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx index 4dce5d953..d15f86942 100644 --- a/Source/Modules/main.cxx +++ b/Source/Modules/main.cxx @@ -1143,7 +1143,7 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) { if (dependencies_target) { Printf(f_dependencies_file, "%s: ", dependencies_target); } else { - Printf(f_dependencies_file, "%s: ", outfile); + Printf(f_dependencies_file, "%s: ", Swig_filename_escape_space(outfile)); } List *files = Preprocessor_depend(); List *phony_targets = NewList(); From e22419473536e803e49cc5f5caa6ba37eb733a4d Mon Sep 17 00:00:00 2001 From: Noah Stegmaier Date: Thu, 4 Jun 2020 12:17:51 +0200 Subject: [PATCH 3/4] escape target name --- Source/Modules/main.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx index d15f86942..273bd3632 100644 --- a/Source/Modules/main.cxx +++ b/Source/Modules/main.cxx @@ -1141,7 +1141,7 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) { } else f_dependencies_file = stdout; if (dependencies_target) { - Printf(f_dependencies_file, "%s: ", dependencies_target); + Printf(f_dependencies_file, "%s: ", Swig_filename_escape_space(dependencies_target)); } else { Printf(f_dependencies_file, "%s: ", Swig_filename_escape_space(outfile)); } From cf7802c5cc058b620b0fcd67a01cd2480a4ee1ba Mon Sep 17 00:00:00 2001 From: Noah Stegmaier Date: Fri, 22 May 2020 16:56:19 +0200 Subject: [PATCH 4/4] escape phony targets as well --- Source/Modules/main.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx index 273bd3632..d8f2ab6b4 100644 --- a/Source/Modules/main.cxx +++ b/Source/Modules/main.cxx @@ -1162,7 +1162,7 @@ int SWIG_main(int argc, char *argv[], const TargetLanguageModule *tlm) { Printf(f_dependencies_file, "\n"); if (depend_phony) { for (int i = 0; i < Len(phony_targets); i++) { - Printf(f_dependencies_file, "\n%s:\n", Getitem(phony_targets, i)); + Printf(f_dependencies_file, "\n%s:\n", Swig_filename_escape_space(Getitem(phony_targets, i))); } }