Fix for PR8884
svn: r7141
This commit is contained in:
parent
fb9b192516
commit
8d769c151c
|
@ -94,13 +94,41 @@
|
||||||
[cache-file (build-path (PLANET-DIR) "cache.ss")])
|
[cache-file (build-path (PLANET-DIR) "cache.ss")])
|
||||||
(when (file-exists? cache-file)
|
(when (file-exists? cache-file)
|
||||||
(let ([cache-lines (with-input-from-file cache-file read)])
|
(let ([cache-lines (with-input-from-file cache-file read)])
|
||||||
(with-output-to-file cache-file
|
(call-with-output-file cache-file
|
||||||
(lambda ()
|
(λ (op)
|
||||||
(if (pair? cache-lines)
|
(if (pair? cache-lines)
|
||||||
(write (filter (lambda (line) (not (and (pair? line) (equal? (car line) pathbytes)))) cache-lines))
|
(write (filter
|
||||||
(printf "\n")))
|
(λ (line)
|
||||||
|
(not
|
||||||
|
(and
|
||||||
|
(pair? line)
|
||||||
|
(or (not (directory-exists? (bytes->path (car line))))
|
||||||
|
(subpath? path (bytes->path (car line)))))))
|
||||||
|
cache-lines)
|
||||||
|
op)
|
||||||
|
(fprintf op "\n")))
|
||||||
'truncate/replace)))))
|
'truncate/replace)))))
|
||||||
|
|
||||||
|
;; subpath? : path path -> boolean
|
||||||
|
;; determines if p1 is a subpath of p2. Both paths must actually exist on the filesystem
|
||||||
|
(define (subpath? p1 p2)
|
||||||
|
(let ([full-p1 (explode-path (normalize-path p1))]
|
||||||
|
[full-p2 (explode-path (normalize-path p2))])
|
||||||
|
(sublist? full-p1 full-p2 (o2 bytes=? path->bytes))))
|
||||||
|
|
||||||
|
;; o2 : (X X -> Y) (Z -> X) -> (Z Z -> Y)
|
||||||
|
;; "compose-two"
|
||||||
|
(define (o2 a b) (λ (x y) (a (b x) (b y))))
|
||||||
|
|
||||||
|
;; sublist? : (listof X) (listof X) (X X -> boolean) -> boolean
|
||||||
|
;; determine if l1 is a sublist of l2, using = as the comparison operator for elements
|
||||||
|
(define (sublist? l1 l2 =)
|
||||||
|
(cond
|
||||||
|
[(null? l1) #t]
|
||||||
|
[(null? l2) #f]
|
||||||
|
[(= (car l1) (car l2)) (sublist? (cdr l1) (cdr l2) =)]
|
||||||
|
[else #f]))
|
||||||
|
|
||||||
(define (erase-pkg owner name maj min)
|
(define (erase-pkg owner name maj min)
|
||||||
(let* ([uninstalled-pkg-dir
|
(let* ([uninstalled-pkg-dir
|
||||||
(build-path (UNINSTALLED-PACKAGE-CACHE) owner name (number->string maj) (number->string min))]
|
(build-path (UNINSTALLED-PACKAGE-CACHE) owner name (number->string maj) (number->string min))]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user