diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-04-20 22:37:20 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-04-20 22:37:20 +0200 |
commit | 44fd6ef137f4aa7b9eb9c999e57b450432c4e915 (patch) | |
tree | dc9114d8ba4966d758f78b4ff57fd38853cb3c4b /guix/ui.scm | |
parent | 3392ce5d606be84c07624e0626b99e410449639f (diff) | |
download | gnu-guix-44fd6ef137f4aa7b9eb9c999e57b450432c4e915.tar gnu-guix-44fd6ef137f4aa7b9eb9c999e57b450432c4e915.tar.gz |
ui: Add 'symlink' replacement with better error reporting.
* guix/ui.scm (symlink): New procedure.
Diffstat (limited to 'guix/ui.scm')
-rw-r--r-- | guix/ui.scm | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/guix/ui.scm b/guix/ui.scm index f80ce37146..e717ab713e 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -42,6 +42,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 format) #:use-module (ice-9 regex) + #:replace (symlink) #:export (_ N_ P_ @@ -205,6 +206,21 @@ Report bugs to: ~a.") %guix-bug-report-address) General help using GNU software: <http://www.gnu.org/gethelp/>")) (newline)) +(define symlink + (let ((real-symlink (@ (guile) symlink))) + (lambda (target link) + "This is a 'symlink' replacement that provides proper error reporting." + (catch 'system-error + (lambda () + (real-symlink target link)) + (lambda (key proc fmt args errno) + ;; Augment the FMT and ARGS with information about LINK (this + ;; information is missing as of Guile 2.0.11, making the exception + ;; uninformative.) + (apply throw key proc "~A: ~S" + (append args (list link)) + errno)))))) + (define (string->number* str) "Like `string->number', but error out with an error message on failure." (or (string->number str) |