~ chicken-core (chicken-5) 179f6fa30a737605adefd23578ed63ec559122f9
commit 179f6fa30a737605adefd23578ed63ec559122f9 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Wed Dec 15 11:56:17 2010 +0100 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Wed Dec 15 11:56:17 2010 +0100 fixed brokenness in normalize-pathname diff --git a/files.scm b/files.scm index 943a6de4..52bd0d87 100644 --- a/files.scm +++ b/files.scm @@ -351,7 +351,11 @@ EOF (let ((bldplt (if (memq (build-platform) '(msvc mingw32)) 'windows 'unix)) ) (define (addpart part parts) (cond ((string=? "." part) parts) - ((string=? ".." part) (if (null? parts) '("..") (cdr parts))) + ((string=? ".." part) + (if (or (null? parts) + (string=? ".." (car parts))) + (cons part parts) + (cdr parts))) (else (cons part parts) ) ) ) (lambda (path #!optional (platform bldplt)) (let ((sep (if (eq? platform 'windows) #\\ #\/))) diff --git a/tests/path-tests.scm b/tests/path-tests.scm index ebeb835c..a1d5ee64 100644 --- a/tests/path-tests.scm +++ b/tests/path-tests.scm @@ -53,6 +53,7 @@ (test "a/b" (normalize-pathname "a/./././b" 'unix)) (test "a/b" (normalize-pathname "a/b/c/d/../.." 'unix)) (test "a/b/" (normalize-pathname "a/b/c/d/../../" 'unix)) +(test "../../foo" (normalize-pathname "../../foo" 'unix)) (define home (get-environment-variable "HOME"))Trap