From d861be8ad569d3928727a8c8162fc843835035db Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Thu, 7 Jun 2018 17:10:33 +0200
Subject: [PATCH] Escape spaces in target path.
cc65 escapes spaces in paths it writes to dependency files (see WriteEscaped() in cc65/input.c). Given that the output of OptPrintTargetPath() is supposed to be used in Makefiles in pretty much the same way it is appropriate to escape spaces here too.
---
src/cl65/main.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/src/cl65/main.c b/src/cl65/main.c
index afd3e97e3..f8acb57a0 100644
--- a/src/cl65/main.c
+++ b/src/cl65/main.c
@@ -1165,19 +1165,28 @@ static void OptPrintTargetPath (const char* Opt attribute ((unused)),
const char* Arg attribute ((unused)))
/* Print the target file path */
{
- SearchPaths* TargetPath = NewSearchPath ();
- AddSubSearchPathFromEnv (TargetPath, "CC65_HOME", "target");
-#if defined(CL65_TGT) && !defined(_WIN32)
- AddSearchPath (TargetPath, STRINGIZE (CL65_TGT));
-#endif
- AddSubSearchPathFromWinBin (TargetPath, "target");
+ char* TargetPath;
- printf ("%s\n", GetSearchPath (TargetPath, 0));
+ SearchPaths* TargetPaths = NewSearchPath ();
+ AddSubSearchPathFromEnv (TargetPaths, "CC65_HOME", "target");
+#if defined(CL65_TGT) && !defined(_WIN32)
+ AddSearchPath (TargetPaths, STRINGIZE (CL65_TGT));
+#endif
+ AddSubSearchPathFromWinBin (TargetPaths, "target");
+
+ TargetPath = GetSearchPath (TargetPaths, 0);
+ while (*TargetPath) {
+ if (*TargetPath == ' ') {
+ /* Escape spaces */
+ putchar ('\\');
+ }
+ putchar (*TargetPath++);
+ }
+ putchar ('\n');
exit (EXIT_SUCCESS);
}
-
static void OptRegisterSpace (const char* Opt attribute ((unused)), const char* Arg)
/* Handle the --register-space option */
{