scsh-checkins
[Top] [All Lists]

[Scsh-checkins] CVS: scsh/scsh scsh.scm,1.14,1.15

To: scsh-checkins@lists.sourceforge.net
Subject: [Scsh-checkins] CVS: scsh/scsh scsh.scm,1.14,1.15
From: Olin Shivers <olin-shivers@users.sourceforge.net>
Date: Sat, 02 Jun 2001 10:43:14 -0700
List-id: <scsh-checkins.lists.sourceforge.net>
Sender: scsh-checkins-admin@lists.sourceforge.net
Update of /cvsroot/scsh/scsh/scsh
In directory usw-pr-cvs1:/tmp/cvs-serv18911

Modified Files:
        scsh.scm 
Log Message:
Fixed bug in CREATE-TEMP-FILE wherein format-string tilde's weren't
being quoted. Oops.

Index: scsh.scm
===================================================================
RCS file: /cvsroot/scsh/scsh/scsh/scsh.scm,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -r1.14 -r1.15
*** scsh.scm    2001/03/11 18:52:58     1.14
--- scsh.scm    2001/06/02 17:43:12     1.15
***************
*** 298,302 ****
             fname)
           (if (null? maybe-prefix) '()
!              (list (string-append (car maybe-prefix) ".~a"))))))
  
  (define *temp-file-template*
--- 298,303 ----
             fname)
           (if (null? maybe-prefix) '()
!              (list (string-append (constant-format-string (car maybe-prefix))
!                                   ".~a"))))))
  
  (define *temp-file-template*
***************
*** 316,319 ****
--- 317,337 ----
                  (loop (+ i 1)))))))))
  
+ 
+ ;; Double tildes in S. 
+ ;; Using the return value as a format string will output exactly S.
+ (define (constant-format-string s)    ; Ugly code. Would be much clearer
+   (let* ((len (string-length s))      ; if written with string SRFI.
+        (tilde? (lambda (s i) (char=? #\~ (string-ref s i))))
+        (newlen (do ((i (- len 1) (- i 1))
+                     (ans 0 (+ ans (if (tilde? s i) 2 1))))
+                    ((< i 0) ans)))
+        (fs (make-string newlen)))
+     (let lp ((i 0) (j 0))
+       (cond ((< i len)
+            (let ((j (cond ((tilde? s i) (string-set! fs j #\~) (+ j 1))
+                           (else j))))
+              (string-set! fs j (string-ref s i))
+              (lp (+ i 1) (+ j 1))))))
+     fs))
  
  



<Prev in Thread] Current Thread [Next in Thread>
  • [Scsh-checkins] CVS: scsh/scsh scsh.scm,1.14,1.15, Olin Shivers <=