all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Best way to check file modification time?
@ 2015-11-17 11:09 Joost Kremers
  2015-11-17 16:04 ` Barry Margolin
  0 siblings, 1 reply; 6+ messages in thread
From: Joost Kremers @ 2015-11-17 11:09 UTC (permalink / raw)
  To: help-gnu-emacs

Hi all,

I'm dealing with files that I do not visit directly, instead I read
their contents into a temp buffer and parse them. At a later point, I
write the new contents into a temp buffer and save them to the original
file, overwriting the previous version.

I would like to check whether the original file may have been
overwritten by some other process (possibly by Emacs itself if the user
visits the same file in a buffer, but also by external programs).

Right now, I'm essentially doing the following:

```
(setq my-file-modtime (nth 5 (file-attributes my-file)))
(my-parse-function file)
```

where `my-parse-function' reads the contents of FILE into a temp buffer
and does the parsing. IOW, there is a function call between saving the
mod time and reading the file.

Saving is basically the same: the mod time of the file on disk is read
again and checked against the saved mod time, then if that checks out, a
function is called that creates the temp buffer, writes out the
information and saves the file.

Now, it seems to me that there may be too much time between checking the
mod time and reading/saving the file, such that it is in principle
possible that the relevant file gets overwritten at just the wrong moment.

I can easily move the mod time checking to a position in the code that's
closer to the actual reading or saving of the file, but I suspect that
only reduces the problem, it doesn't eliminate it altogether. So I'm
wondering if there's a Right Way™ to do this. If not, any advice on how
to reduce the risks as much as possible would be great!

TIA


-- 
Joost Kremers                                   joostkremers@fastmail.fm
Selbst in die Unterwelt dringt durch Spalten Licht
EN:SiS(9)


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-11-20 14:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-17 11:09 Best way to check file modification time? Joost Kremers
2015-11-17 16:04 ` Barry Margolin
2015-11-17 17:12   ` Stefan Monnier
     [not found]   ` <mailman.78.1447780399.31583.help-gnu-emacs@gnu.org>
2015-11-19 14:07     ` Joost Kremers
2015-11-20 14:50       ` Stefan Monnier
2015-11-19 14:10   ` Joost Kremers

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.