guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#54180] [PATCH 00/12] Home: Clarify and better test symlink-manager.


From: Ludovic Courtès
Subject: [bug#54180] [PATCH 00/12] Home: Clarify and better test symlink-manager.scm
Date: Sat, 05 Mar 2022 23:19:25 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)

Maxime Devos <maximedevos@telenet.be> skribis:

> Ludovic Courtès schreef op zo 27-02-2022 om 14:53 [+0100]:
>> +                 (let ((directory (get-target-path directory)))
>> +                   (catch 'system-error
>> +                     (lambda ()
>> +                       (rmdir directory)
>> +                       (format #t (G_ "Removed ~a.\n") directory))
>> +                     (lambda args
>> +                       (let ((errno (system-error-errno args)))
>> +                         (cond ((= ENOTEMPTY errno)
>> +                                (format
>> +                                 #t
>> +                                 (G_ "Skipping ~a (not an empty 
>> directory)...\n")
>> +                                 directory))
>> +                               ((= ENOTDIR errno)
>> +                                #t)
>> +                               (else
>> +                                (apply throw args))))))))
>
> Like with my comment on ‘Avoid extra 'lstat call.’, I would move the
> (format #t (G_ "Removed ~a.\n") directory) outside the catch.
>
> If 'format' somehow throws a ENOTEMPTY/ENOTDIR system-error, something
> is very wrong.

Precisely: we can keep the ‘format’ call after ‘rmdir’ because we know
(1) it’s only going to be called if ‘rmdir’ succeeds, and (2) it won’t
throw to ‘system-error’.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]