~ chicken-core (chicken-5) a22990ba293ebd0e7f79dbf80d17015299d36315


commit a22990ba293ebd0e7f79dbf80d17015299d36315
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Mon Oct 24 17:21:37 2022 +0200
Commit:     Peter Bex <peter@more-magic.net>
CommitDate: Tue Oct 25 12:05:54 2022 +0200

    Fix double-quoting bug in egg-compile code exposed by previous fix
    
     1cd587adf8ae40b9e8e779791796ad6dfea209f6 exposed another bug
    in quoting of command-line arguments.
    
    Reported by klovett.
    
    Signed-off-by: felix <felix@call-with-current-continuation.org>
    Signed-off-by: Peter Bex <peter@more-magic.net>

diff --git a/egg-compile.scm b/egg-compile.scm
index 12a7bfa8..14c93be0 100644
--- a/egg-compile.scm
+++ b/egg-compile.scm
@@ -599,11 +599,9 @@
 		       default-csc)
 		   platform))
          (sname (prefix srcdir name))
-         (tfile (qs* (prefix srcdir (conc types-file ".types"))
-                     platform))
-         (ifile (qs* (prefix srcdir (conc inline-file ".inline"))
-                     platform))
-         (lfile (qs* (conc sname +link-file-extension+) platform))
+         (tfile (prefix srcdir (conc types-file ".types")))
+         (ifile (prefix srcdir (conc inline-file ".inline")))
+         (lfile (conc sname +link-file-extension+))
          (opts (append (if (null? options)
                            default-static-compilation-options
                            options)
@@ -629,14 +627,13 @@
                           (maybe types-file tfile)
                           (maybe inline-file ifile)
                           (map (lambda (m)
-                                 (qs* (prefix srcdir (conc m ".import.scm"))
-                                      platform))
+                                 (prefix srcdir (conc m ".import.scm")))
                                (or modules '()))))
          (src (qs* (or source (conc name ".scm")) platform)))
     (when custom
       (prepare-custom-command cmd platform))
     (print "\n" (qs* default-builder platform #t) " "
-           (joins targets) " : "
+           (joins targets platform) " : "
            src " " (qs* eggfile platform) " "
            (if custom cmd "") " "
            (filelist srcdir source-dependencies platform)
@@ -645,7 +642,7 @@
            " -regenerate-import-libraries"
            (if modules " -J" "") " -M"
            " -setup-mode -static -I " srcdir 
-           " -emit-link-file " lfile
+           " -emit-link-file " (qs* lfile platform)
            (if (eq? mode 'host) " -host" "")
            " -D compiling-extension -c -unit " name
            " -D compiling-static-extension"
@@ -675,10 +672,8 @@
                        default-csc)
                    platform))
          (sname (prefix srcdir name))
-         (tfile (qs* (prefix srcdir (conc types-file ".types"))
-                     platform))
-         (ifile (qs* (prefix srcdir (conc inline-file ".inline"))
-                     platform))
+         (tfile (prefix srcdir (conc types-file ".types")))
+         (ifile (prefix srcdir (conc inline-file ".inline")))
          (opts (append (if (null? options)
                            default-dynamic-compilation-options
                            options)
@@ -700,13 +695,12 @@
                           (maybe inline-file ifile)
                           (maybe types-file tfile)
                           (map (lambda (m)
-                                 (qs* (prefix srcdir (conc m ".import.scm"))
-                                      platform))
+                                 (prefix srcdir (conc m ".import.scm")))
                             modules))))
     (when custom
       (prepare-custom-command cmd platform))
     (print "\n" (qs* default-builder platform #t) " "
-           (joins targets)
+           (joins targets platform)
            " : "
            src " "
            (qs* eggfile platform) " "
@@ -1274,6 +1268,7 @@ EOF
     (assert (string=? prefix p1) "wrong prefix")
     (substring fname (add1 plen))))
 
-(define (joins strs) (string-intersperse strs " "))
+(define (joins strs platform) 
+  (string-intersperse (map (cut qs* <> platform) strs) " "))
 
 (define (maybe f x) (if f (list x) '()))
Trap