From a3a76a8384e9f9b6e86b5dbe58ba1421101a87a3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 18 Feb 2022 17:31:10 +0100 Subject: home: symlink-manager: Avoid extra 'lstat' call. * gnu/home/services/symlink-manager.scm (update-symlinks-script)[symlink-to-store?]: Avoid extra 'lstat' call. --- gnu/home/services/symlink-manager.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'gnu/home') diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/symlink-manager.scm index 6b3a9de3d1..ba42424e8e 100644 --- a/gnu/home/services/symlink-manager.scm +++ b/gnu/home/services/symlink-manager.scm @@ -103,8 +103,13 @@ (define (get-backup-path path) (string-append backup-dir "/." path)) (define (symlink-to-store? path) - (and (equal? (stat:type (lstat path)) 'symlink) - (store-file-name? (readlink path)))) + (catch 'system-error + (lambda () + (store-file-name? (readlink path))) + (lambda args + (if (= EINVAL (system-error-errno args)) + #f + (apply throw args))))) (define (backup-file path) (mkdir-p backup-dir) -- cgit v1.2.3