From 72361e8c3aa8a33e1ea71e2fe081362670940fb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sun, 10 Sep 2023 17:16:46 +0200 Subject: Require component for path append. Changed the signature of `path-append` to require at least one argument. The alternative would have been that no components expands into '.'. --- doc/ref/guile/util-path.texi | 2 +- module/hnh/util/path.scm | 10 ++++------ tests/test/util.scm | 2 -- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/doc/ref/guile/util-path.texi b/doc/ref/guile/util-path.texi index cf99a170..384915ef 100644 --- a/doc/ref/guile/util-path.texi +++ b/doc/ref/guile/util-path.texi @@ -8,7 +8,7 @@ Provided by the module @code{(hnh util path)}. Alias of @code{absolute-file-name?} from Guile. @end defun -@defun path-append strings ... +@defun path-append path paths ... Joins all strings into a path, squeezing duplicated delimiters, but ensuring that all delimiters that are needed are there. diff --git a/module/hnh/util/path.scm b/module/hnh/util/path.scm index d22e8242..b92de8cd 100644 --- a/module/hnh/util/path.scm +++ b/module/hnh/util/path.scm @@ -18,7 +18,7 @@ ;; TODO remove intermidiate period components ;; e.x. /a/../b => /b -(define (path-append . strings) +(define (path-append path . paths) (fold (lambda (s done) (string-append done @@ -34,11 +34,9 @@ ;; the path absolute. This isn't exactly correct if we have ;; drive letters, but on those system the user should make ;; sure that the first component of the path is non-empty. - (let ((s (car strings))) - (if (string-null? s) - // s)) - (cdr strings) - )) + (if (string-null? path) + // path) + paths)) (define (path-join lst) (apply path-append lst)) diff --git a/tests/test/util.scm b/tests/test/util.scm index 81bebdb5..75d59801 100644 --- a/tests/test/util.scm +++ b/tests/test/util.scm @@ -280,8 +280,6 @@ (test-equal "root" "/" (path-append "")) - (test-equal "No components" "" (path-append)) - (test-equal '("usr" "lib" "test") (path-split "usr/lib/test")) -- cgit v1.2.3