summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-10-01 11:28:58 +0200
committerLudovic Courtès <ludo@gnu.org>2015-10-01 11:28:58 +0200
commitfde1783087ba93fcadc4b26bd4611ae03626d105 (patch)
treef5adb11f18108ad75a3f9cde2dc9f662dee6f6dc
parent64c9834716f32c3bae066762a767431a60bb96a5 (diff)
downloadguix-fde1783087ba93fcadc4b26bd4611ae03626d105.tar.gz
download: Check whether HORIZONTAL ELLIPSIS can be encoded.
* guix/build/download.scm (ellipsis): New procedure.
  (store-path-abbreviation): Use it.
-rw-r--r--guix/build/download.scm9
1 files changed, 8 insertions, 1 deletions
diff --git a/guix/build/download.scm b/guix/build/download.scm
index 4b7c53d2c6..240e79ee8d 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -110,6 +110,13 @@ column."
          (padding    (make-string num-spaces #\space)))
     (string-append left padding right)))
 
+(define* (ellipsis #:optional (port (current-output-port)))
+  "Make a rough guess at whether Unicode's HORIZONTAL ELLIPSIS can be written
+in PORT's encoding, and return either that or ASCII dots."
+  (if (equal? (port-encoding port) "UTF-8")
+      "…"
+      "..."))
+
 (define* (store-path-abbreviation store-path #:optional (prefix-length 6))
   "If STORE-PATH is the file name of a store entry, return an abbreviation of
 STORE-PATH for display, showing PREFIX-LENGTH characters of the hash.
@@ -117,7 +124,7 @@ Otherwise return STORE-PATH."
   (if (string-prefix? (%store-directory) store-path)
       (let ((base (basename store-path)))
         (string-append (string-take base prefix-length)
-                       "…"
+                       (ellipsis)
                        (string-drop base 32)))
       store-path))