summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-01-29 23:59:27 +0100
committerLudovic Courtès <ludo@gnu.org>2013-01-30 00:09:32 +0100
commit473b03b3c6fbca909e18dbb5888ac5a98992207a (patch)
treef193b7488453c4794f67c1bec157807788af42f8
parentbdcf35a6b294c1db7ce78a5550ba51e067863069 (diff)
Gracefully handle failure to install the current locale.
* guix/ui.scm (install-locale): New procedure. * guix-build.in, guix-download.in, guix-gc.in, guix-import.in, guix-package.in: Use it instead of (setlocale LC_ALL "").
-rw-r--r--guix-build.in2
-rw-r--r--guix-download.in2
-rw-r--r--guix-gc.in2
-rw-r--r--guix-import.in2
-rw-r--r--guix-package.in2
-rw-r--r--guix/ui.scm11
6 files changed, 16 insertions, 5 deletions
diff --git a/guix-build.in b/guix-build.in
index 4d3db0aa6d..eb8d2fa016 100644
--- a/guix-build.in
+++ b/guix-build.in
@@ -220,7 +220,7 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"))
name version)
(leave (_ "~A: unknown package~%") name))))))
- (setlocale LC_ALL "")
+ (install-locale)
(textdomain "guix")
(setvbuf (current-output-port) _IOLBF)
(setvbuf (current-error-port) _IOLBF)
diff --git a/guix-download.in b/guix-download.in
index f8859618d7..4b814699ca 100644
--- a/guix-download.in
+++ b/guix-download.in
@@ -134,7 +134,7 @@ and the hash of its contents.\n"))
(alist-cons 'argument arg result))
%default-options))
- (setlocale LC_ALL "")
+ (install-locale)
(textdomain "guix")
(setvbuf (current-output-port) _IOLBF)
(setvbuf (current-error-port) _IOLBF)
diff --git a/guix-gc.in b/guix-gc.in
index ab7ce3214f..1a4a5413d9 100644
--- a/guix-gc.in
+++ b/guix-gc.in
@@ -155,7 +155,7 @@ interpreted."
(alist-cons 'argument arg result))
%default-options))
- (setlocale LC_ALL "")
+ (install-locale)
(textdomain "guix")
(setvbuf (current-output-port) _IOLBF)
(setvbuf (current-error-port) _IOLBF)
diff --git a/guix-import.in b/guix-import.in
index af5c5897e0..97619a9a59 100644
--- a/guix-import.in
+++ b/guix-import.in
@@ -115,7 +115,7 @@ Import and convert the Nix expression ATTRIBUTE of NIXPKGS.\n"))
(alist-cons 'argument arg result))
%default-options))
- (setlocale LC_ALL "")
+ (install-locale)
(textdomain "guix")
(setvbuf (current-output-port) _IOLBF)
(setvbuf (current-error-port) _IOLBF)
diff --git a/guix-package.in b/guix-package.in
index 913872c925..ab0191faa2 100644
--- a/guix-package.in
+++ b/guix-package.in
@@ -598,7 +598,7 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n"))
#t))
(_ #f))))
- (setlocale LC_ALL "")
+ (install-locale)
(textdomain "guix")
(setvbuf (current-output-port) _IOLBF)
(setvbuf (current-error-port) _IOLBF)
diff --git a/guix/ui.scm b/guix/ui.scm
index 761b1ce444..3ec7be771b 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -26,6 +26,7 @@
#:use-module (ice-9 match)
#:export (_
N_
+ install-locale
leave
show-version-and-exit
show-bug-report-information
@@ -45,6 +46,16 @@
(define _ (cut gettext <> %gettext-domain))
(define N_ (cut ngettext <> <> <> %gettext-domain))
+(define (install-locale)
+ "Install the current locale settings."
+ (catch 'system-error
+ (lambda _
+ (setlocale LC_ALL ""))
+ (lambda args
+ (format (current-error-port)
+ (_ "warning: failed to install locale: ~a~%")
+ (strerror (system-error-errno args))))))
+
(define-syntax-rule (leave fmt args ...)
"Format FMT and ARGS to the error port and exit."
(begin