From 9cb8bf95009e9298abf79da1fea3c81dfbc19bd5 Mon Sep 17 00:00:00 2001 From: rofl0r Date: Mon, 30 May 2022 12:22:02 +0000 Subject: [PATCH] cl65: fix regression in --print-target-path since the "empty prefix means run from current dir" hack was removed, cl65 --print-target-path no longer prints the path relative to the binary, but the hardcoded library path which points to prefix, because the code adds the hardcoded path first to the pathsearch, but then actually only returns the first entry rather than looking whether the path exists. closes #1754 --- src/cl65/main.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/cl65/main.c b/src/cl65/main.c index 5d84fb625..67e9444f4 100644 --- a/src/cl65/main.c +++ b/src/cl65/main.c @@ -1212,6 +1212,7 @@ static void OptPrintTargetPath (const char* Opt attribute ((unused)), /* Print the target file path */ { char* TargetPath; + char* tmp; SearchPaths* TargetPaths = NewSearchPath (); AddSubSearchPathFromEnv (TargetPaths, "CC65_HOME", "target"); @@ -1220,7 +1221,15 @@ static void OptPrintTargetPath (const char* Opt attribute ((unused)), #endif AddSubSearchPathFromBin (TargetPaths, "target"); - TargetPath = GetSearchPath (TargetPaths, 0); + TargetPath = SearchFile (TargetPaths, "."); + if (!TargetPath) { + fprintf (stderr, "%s: error - could not determine target path\n", ProgName); + exit (EXIT_FAILURE); + } + tmp = strrchr(TargetPath, '.'); + if (tmp) { + *(--tmp) = 0; + } while (*TargetPath) { if (*TargetPath == ' ') { /* Escape spaces */