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))
|