mes: dirname: Fix for absolute file names.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 11 Nov 2018 09:15:12 +0000 (10:15 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 11 Nov 2018 09:15:12 +0000 (10:15 +0100)
* mes/module/mes/guile.mes (dirname): Fix absolute files.

mes/module/mes/guile.mes

index 4e897b4be8f2286fe339cde2139418c253db29eb..76c3f781887b16990def49e4b51617ba6bbe802b 100644 (file)
     port))
 
 (define (dirname file-name)
-  (let ((lst (filter (negate string-null?) (string-split file-name #\/))))
-    (if (<= (length lst) 1) "."
-        (string-join (list-head lst (1- (length lst))) "/"))))
+  (let* ((lst (string-split file-name #\/))
+         (lst (filter (negate string-null?) lst)))
+    (if (null? lst) (if (string-prefix? "/" file-name) "/" ".")
+        (let ((dir (string-join (list-head lst (1- (length lst))) "/")))
+          (if (string-prefix? "/" file-name) (string-append "/" dir)
+              (if (string-null? dir) "."
+                  dir))))))
 
 ;; FIXME: c&p from display
 (define (with-output-to-string thunk)