diff options
author | Andrew Tropin <andrew@trop.in> | 2022-04-07 11:22:48 +0300 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-04-10 00:17:40 +0200 |
commit | d6b9a3faa8d470af6dada3e052a12bba6c32fc22 (patch) | |
tree | a3aef596be8fe297bab00a2e0782c68e026f6d61 /gnu/home/services | |
parent | eeb8ac43c8c0b0cc69422766070dbefc55f5c5c1 (diff) | |
download | guix-d6b9a3faa8d470af6dada3e052a12bba6c32fc22.tar.gz |
home: symlink-manager: Use no-follow version of file-exists?.
* gnu/home/services/symlink-manager.scm (update-symlinks-script): Use no-follow version of file-exists?. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu/home/services')
-rw-r--r-- | gnu/home/services/symlink-manager.scm | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/symlink-manager.scm index 24d21bfad3..5b85a0e581 100644 --- a/gnu/home/services/symlink-manager.scm +++ b/gnu/home/services/symlink-manager.scm @@ -85,6 +85,10 @@ subdirectory from XDG_CONFIG_HOME to generate a target path." ;; such as "config/fontconfig/fonts.conf" or "bashrc". (string-append home-directory "/" (preprocess-file file))) + (define (no-follow-file-exists? file) + "Return #t if file exists, even if it's a dangling symlink." + (->bool (false-if-exception (lstat file)))) + (define (symlink-to-store? file) (catch 'system-error (lambda () @@ -123,7 +127,7 @@ subdirectory from XDG_CONFIG_HOME to generate a target path." (const #t) (lambda (file stat _) ;leaf (let ((file (target-file (strip file)))) - (when (file-exists? file) + (when (no-follow-file-exists? file) ;; DO NOT remove the file if it is no longer a symlink to ;; the store, it will be backed up later during ;; create-symlinks phase. @@ -182,7 +186,7 @@ subdirectory from XDG_CONFIG_HOME to generate a target path." (lambda (file stat result) ;leaf (let ((source (source-file (strip file))) (target (target-file (strip file)))) - (when (file-exists? target) + (when (no-follow-file-exists? target) (backup-file (strip file))) (format #t (G_ "Symlinking ~a -> ~a...") target source) @@ -191,7 +195,7 @@ subdirectory from XDG_CONFIG_HOME to generate a target path." (lambda (directory stat result) ;down (unless (string=? directory config-file-directory) (let ((target (target-file (strip directory)))) - (when (and (file-exists? target) + (when (and (no-follow-file-exists? target) (not (file-is-directory? target))) (backup-file (strip directory))) |