Subject: [bug#54180] [PATCH 06/12] home: symlink-manager: Avoid extra 'lstat' call.

From: Maxime Devos <[email-masked]>
Date: Sun, 27 Feb 2022 16:52:25 +0100

Ludovic Courtès schreef op zo 27-02-2022 om 14:53 [+0100]:
>           (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)))))

I think it would be slightly clearer if 'store-file-name?' was moved
outside the catch:

  (and=> (catch 'system-error (lambda () (readlink path)) [...])
         store-file-name?)

It is 'readlink' that might throw an exception, not 'store-file-name?'.

Greetings,
Maxime.