From 5ed3f809010e9ed9edd0398623e1f036d14b9969 Mon Sep 17 00:00:00 2001 From: Abdulaziz Ghuloum Date: Thu, 23 Oct 2008 13:26:07 -0400 Subject: [PATCH] - fixed problem with importing (main) when (main main) is available. - fixed decoding of library names containing funny characters. --- scheme/last-revision | 2 +- scheme/psyntax.library-manager.ss | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/scheme/last-revision b/scheme/last-revision index da66d92..27c71ca 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1646 +1647 diff --git a/scheme/psyntax.library-manager.ss b/scheme/psyntax.library-manager.ss index 33ad176..d361634 100644 --- a/scheme/psyntax.library-manager.ss +++ b/scheme/psyntax.library-manager.ss @@ -98,7 +98,7 @@ ((<= 0 n 9) (display n p)) (else (write-char (integer->char - (+ (char->integer #\A) + (+ (char->integer #\a) (- n 10))) p)))) (define (main*? x) @@ -106,26 +106,26 @@ (string=? (substring x 0 4) "main") (for-all (lambda (x) (char=? x #\_)) (string->list (substring x 4 (string-length x)))))) - (let f ((x (car ls)) (ls (cdr ls))) + (let f ((x (car ls)) (ls (cdr ls)) (fst #t)) (write-char #\/ p) (let ([name (symbol->string x)]) (for-each - (lambda (c) - (cond - ((or (char<=? #\a c #\z) - (char<=? #\A c #\Z) - (char<=? #\0 c #\9) - (memv c '(#\- #\. #\_ #\~))) - (write-char c p)) - (else - (write-char #\% p) - (let ((n (char->integer c))) + (lambda (n) + (let ([c (integer->char n)]) + (cond + ((or (char<=? #\a c #\z) + (char<=? #\A c #\Z) + (char<=? #\0 c #\9) + (memv c '(#\- #\+ #\_))) + (write-char c p)) + (else + (write-char #\% p) (display-hex (quotient n 16)) (display-hex (remainder n 16)))))) - (string->list name)) + (bytevector->u8-list (string->utf8 name))) (if (null? ls) - (when (main*? name) (write-char #\_ p)) - (f (car ls) (cdr ls))))) + (when (and (not fst) (main*? name)) (write-char #\_ p)) + (f (car ls) (cdr ls) #f)))) (extract))) (define file-locator