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: Maxime Devos
Subject: [bug#54180] [PATCH 00/12] Home: Clarify and better test symlink-manager.scm
Date: Sat, 05 Mar 2022 23:37:31 +0100
User-agent: Evolution 3.38.3-1

Ludovic Courtès schreef op za 05-03-2022 om 23:19 [+0100]:
> > 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’.

Yes, we could keep it inside the 'catch', but that doesn't it's a good
idea, because if format throws a ENOTEMPTY/ENOTDIR, shouldn't that be
reported because that seems very wrong?

WDYT of

  (define (delete-if-empty file)
     ;; Returns #t if deleted, #f if skipped because empty
     (catch ... (lambda () (rmdir directory) #t) 
        (lambda ...
          (cond ((= ENOTEMPTY ...) #false)
                ((= ENOTDIR ...)
                 [TODO: if it was a regular file, shouldn't it still be 
deleted?])
                (#true (throw ...))))))

  (if (delete-if-empty)
      (format ... "removed ...")
      (format ... "skipped ..."))
?

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

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