GNU bug report logs -
#54180
[PATCH 00/12] Home: Clarify and better test symlink-manager.scm
Previous Next
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Sun, 27 Feb 2022 13:41:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #62 received at 54180 <at> debbugs.gnu.org (full text, mbox):
Maxime Devos <maximedevos <at> 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’.
This bug report was last modified 3 years and 156 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.