aboutsummaryrefslogtreecommitdiff
path: root/module/hnh/util/path.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/hnh/util/path.scm')
-rw-r--r--module/hnh/util/path.scm20
1 files changed, 20 insertions, 0 deletions
diff --git a/module/hnh/util/path.scm b/module/hnh/util/path.scm
new file mode 100644
index 00000000..b08932f9
--- /dev/null
+++ b/module/hnh/util/path.scm
@@ -0,0 +1,20 @@
+(define-module (hnh util path)
+ :use-module (srfi srfi-1)
+ :use-module (hnh util))
+
+;; TODO shouldn't this use `file-name-separator-string'?
+(define-public (path-append . strings)
+ (fold (lambda (s done)
+ (string-append
+ done
+ (if (string-null? s)
+ (string-append s "/")
+ (if (char=? #\/ (string-last done))
+ (if (char=? #\/ (string-first s))
+ (string-drop s 1) s)
+ (if (char=? #\/ (string-first s))
+ s (string-append "/" s))))))
+ (let ((s (car strings)))
+ (if (string-null? s)
+ "/" s))
+ (cdr strings)))