unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Martin von Gagern <Martin.vGagern@gmx.net>
To: Glenn Morris <rgm@gnu.org>
Cc: bug-gnu-emacs@gnu.org
Subject: Re: backup-buffer-copy loops if old backup can't be deleted
Date: Wed, 22 Aug 2007 11:13:18 +0200	[thread overview]
Message-ID: <46CBFE2E.9050606@gmx.net> (raw)
In-Reply-To: <16sl6cy2t8.fsf@fencepost.gnu.org>


[-- Attachment #1.1: Type: text/plain, Size: 2170 bytes --]

Glenn Morris wrote:
> ! 	(dir (or (file-name-directory to-name)
> ! 		 default-directory)))
> !     ;; Can't delete or create files in a read-only directory.
> !     (unless (file-writable-p dir)
> !       (signal 'file-error (list "Directory is not writable" dir)))

This seems a good idea, as deleting a backup file we won't be able to
recreate would be a bad move. However I guess there are filesystems out
there where a file might be undeletable even if its directory is
writable. So be careful about assumptions. You should still be careful
about exception handling later on.

> +                        ;; If we allow for the possibility of something
> +                        ;; creating the file between delete and copy
> +                        ;; (below), we must also allow for the
> +                        ;; possibility of something deleting it between
> +                        ;; a file-exists-p check and a delete.
>                          (condition-case nil
>   			   (delete-file to-name)
>                            (file-error nil))

You left the possible cause for the loop in place, again relying on
catching an error in the normal course of events when there is no
backup. I can see your point, but I still think this is dangerous.
One reason is given above, and the second reason is this:

If we keep thinking about other processes creating or deleting files in
the middle of the operation, we might as well consider other processes
changing permissions as well. So who says that the directory will still
be writable once we are here?

Is there some reliable way by which we could discern a file-error
because the file does not exist from a file-error because we can't
delete it? Because we can recover from one, but not from the other.

> + 	    ;; FIXME does that every actually happen in practice?
> + 	    ;; This is a potential infloop, which seems bad...

The more I think about it, the rarer this seems to me. In my last mail I
voted for a fixed maximum loop count, but by now I would even drop all
loops; they are simply not worth the effort I guess.

Greetings,
 Martin von Gagern


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 252 bytes --]

[-- Attachment #2: Type: text/plain, Size: 149 bytes --]

_______________________________________________
bug-gnu-emacs mailing list
bug-gnu-emacs@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs

  reply	other threads:[~2007-08-22  9:13 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.5018.1187641790.32220.bug-gnu-emacs@gnu.org>
2007-08-20 22:01 ` backup-buffer-copy loops if old backup can't be deleted Martin von Gagern
     [not found] ` <mailman.5021.1187647310.32220.bug-gnu-emacs@gnu.org>
2007-08-21 12:18   ` Martin von Gagern
2007-08-21 14:37     ` martin rudalics
2007-08-21 14:51       ` Martin von Gagern
2007-08-21 15:28         ` martin rudalics
2007-08-21 19:35         ` Glenn Morris
2007-08-21 21:01           ` martin rudalics
2007-08-21 21:50             ` Glenn Morris
2007-08-22  9:13               ` Martin von Gagern [this message]
2007-08-22  9:44                 ` martin rudalics
2007-08-22  9:48                   ` Martin von Gagern
2007-08-22 12:40                     ` martin rudalics
2007-08-22 21:37                     ` Michael Schierl
2007-08-21 22:21             ` Martin von Gagern
2007-08-22  9:51               ` Ulrich Mueller
2007-08-23 20:59     ` Richard Stallman
2007-08-24  7:13       ` Martin von Gagern
2007-08-24  9:10         ` martin rudalics
2007-08-25  4:07           ` Richard Stallman
2007-08-25  4:07         ` Richard Stallman
     [not found]     ` <mailman.5219.1187902794.32220.bug-gnu-emacs@gnu.org>
2007-08-24  6:11       ` Ulrich Mueller
2007-08-20 19:58 Martin von Gagern
2007-08-21  6:50 ` martin rudalics

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=46CBFE2E.9050606@gmx.net \
    --to=martin.vgagern@gmx.net \
    --cc=bug-gnu-emacs@gnu.org \
    --cc=rgm@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).