~ chicken-core (chicken-5) fd1ac20d33c3527e9a1c348cb65dde0ae157bf8a
commit fd1ac20d33c3527e9a1c348cb65dde0ae157bf8a Merge: 71cdec91 a0f0aec9 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Sat Jul 31 00:54:36 2010 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Sat Jul 31 00:54:36 2010 +0200 resolved conflicts diff --cc chicken-uninstall.scm index 844acf86,8a074b4d..bd6b35ee --- a/chicken-uninstall.scm +++ b/chicken-uninstall.scm @@@ -109,38 -108,52 +111,52 @@@ EO (define *short-options* '(#\h #\s)) (define (main args) - (let loop ((args args) (pats '())) - (if (null? args) - (uninstall (if (null? pats) (usage 1) (reverse pats))) - (let ((arg (car args))) - (cond ((or (string=? arg "-help") - (string=? arg "-h") - (string=? arg "--help")) - (usage 0)) - ((or (string=? arg "-v") (string=? arg "-version")) - (print (chicken-version)) - (exit 0)) - ((string=? arg "-target") - (set! *host-extensions* #f) - (loop (cdr args) pats)) - ((string=? arg "-host") - (set! *target-extensions* #f) - (loop (cdr args) pats)) - ((string=? arg "-force") - (set! *force* #t) - (loop (cdr args) pats)) - ((or (string=? arg "-s") (string=? arg "-sudo")) - (sudo-install #t) - (loop (cdr args) pats)) - ((and (positive? (string-length arg)) - (char=? #\- (string-ref arg 0))) - (if (> (string-length arg) 2) - (let ((sos (string->list (substring arg 1)))) - (if (every (cut memq <> *short-options*) sos) - (loop (append (map (cut string #\- <>) sos) (cdr args)) pats) - (usage 1))) - (usage 1))) - (else (loop (cdr args) (cons (##sys#glob->regexp arg) pats)))))))) + (let ((exact #f)) + (let loop ((args args) (pats '())) + (cond ((null? args) + (when (null? pats) (usage 1)) + (uninstall + (reverse + (map + (lambda (p) + (if exact - (regexp (string-append "^" (regexp-escape p) "$")) - (glob->regexp p))) ++ (irregex (string-append "^" (irregex-quote p) "$")) ++ (##sys#glob->regexp p))) + pats)))) + (else + (let ((arg (car args))) + (cond ((or (string=? arg "-help") + (string=? arg "-h") + (string=? arg "--help")) + (usage 0)) + ((or (string=? arg "-v") (string=? arg "-version")) + (print (chicken-version)) + (exit 0)) + ((string=? arg "-target") + (set! *host-extensions* #f) + (loop (cdr args) pats)) + ((string=? arg "-host") + (set! *target-extensions* #f) + (loop (cdr args) pats)) + ((string=? arg "-force") + (set! *force* #t) + (loop (cdr args) pats)) + ((string=? arg "-exact") + (set! exact #t) + (loop (cdr args) pats)) + ((or (string=? arg "-s") (string=? arg "-sudo")) + (sudo-install #t) + (loop (cdr args) pats)) + ((and (positive? (string-length arg)) + (char=? #\- (string-ref arg 0))) + (if (> (string-length arg) 2) + (let ((sos (string->list (substring arg 1)))) + (if (every (cut memq <> *short-options*) sos) + (loop + (append (map (cut string #\- <>) sos) (cdr args)) pats) + (usage 1))) + (usage 1))) + (else (loop (cdr args) (cons arg pats)))))))))) (main (command-line-arguments)) diff --cc files.scm index 902d5900,2c1c167f..1ef2eda2 --- a/files.scm +++ b/files.scm @@@ -258,36 -259,31 +258,36 @@@ EO (if (absolute-pathname? dir) dir (##sys#string-append def-pds dir)) ) - file ext pds) ) ) ) + file ext def-pds) ) ) ) (define decompose-pathname - (let ((string-match string-match)) - (let* ([patt1 "^(.*[\\/\\\\])?([^\\/\\\\]+)(\\.([^\\/\\\\.]+))$"] - [patt2 "^(.*[\\/\\\\])?((\\.)?[^\\/\\\\]+)$"] - [rx1 (regexp patt1)] - [rx2 (regexp patt2)] - [strip-pds - (lambda (dir) - (and dir - (if (member dir '("/" "\\")) - dir - (chop-pds dir #f) ) ) )] ) - (lambda (pn) - (##sys#check-string pn 'decompose-pathname) - (if (fx= 0 (##sys#size pn)) - (values #f #f #f) - (let ([ms (string-match rx1 pn)]) - (if ms - (values (strip-pds (cadr ms)) (caddr ms) (car (cddddr ms))) - (let ([ms (string-match rx2 pn)]) - (if ms - (values (strip-pds (cadr ms)) (caddr ms) #f) - (values (strip-pds pn) #f #f) ) ) ) ) ) ) ) ) ) + (let* ([patt1 "^(.*[\\/\\\\])?([^\\/\\\\]+)(\\.([^\\/\\\\.]+))$"] + [patt2 "^(.*[\\/\\\\])?((\\.)?[^\\/\\\\]+)$"] + [rx1 (irregex patt1)] + [rx2 (irregex patt2)] + [strip-pds + (lambda (dir) + (and dir + (if (member dir '("/" "\\")) + dir + (chop-pds dir #f) ) ) )] ) + (lambda (pn) + (##sys#check-string pn 'decompose-pathname) + (if (fx= 0 (##sys#size pn)) + (values #f #f #f) + (let ([ms (irregex-search rx1 pn)]) + (if ms + (values + (strip-pds (irregex-match-substring ms 1)) + (irregex-match-substring ms 2) + (irregex-match-substring ms 4)) + (let ([ms (irregex-search rx2 pn)]) + (if ms + (values + (strip-pds (irregex-match-substring ms 1)) + (irregex-match-substring ms 2) + #f) + (values (strip-pds pn) #f #f) ) ) ) ) ) ) ) ) (define pathname-directory) (define pathname-file)Trap