[lug] What was I thinking?

Jeffrey S. Haemer jeffrey.haemer at gmail.com
Wed Aug 13 18:18:25 MDT 2014


No good deed goes unpunished.

20 years ago, I wrote a tool that triggered actions based on file changes.
Tom Schneider, a friend at the NIH, had written an first version as a csh
script, which I re-wrote for him in Perl, and generalized into a little,
domain-specific-language. It was a useful and fun exercise.

In brief, the tool -- atchange -- is an infinite loop, watching for file
modifications, executing the actions when the mtime changes.

Yesterday, Tom sent me a note asking why it had stopped working: when he
deletes messages from his mailbox, it fails to notify him that the mailbox
has changed.

This morning, he sent me a copy of the program -- changed some since I last
saw it, but still comprehensible -- and enough code to be able to reproduce
his problem.

Running his test required installing tcsh and mutt, but okay, fine. My goal
is to help him, not to suggest that he change the way he works or the tools
he uses. He's an involuntary immigrant from another era, and a scientist,
not a programmer. Tom also still programs in Pascal.

Once I did, though, I could reproduce the problem.

By fishing through the code, narrowing things down, and doing experiments,
I discovered that when you bring up a mailbox in mutt, delete some
messages, and exit, the messages are removed from the mailbox but the mtime
is *unchanged.* Mutt actually appears to cache the mtime, modify the file
(leaving it with the same inode number), and then reset the mtime to what
it started out as. And no, mail(1) doesn't even do this. It's probably a
feature.

So, like, when I wrote atchange, I probably just *assumed* that when a file
is modified, the modification time changes.

What was I thinking? :-)

-- 
Jeffrey Haemer <jeffrey.haemer at gmail.com>
720-837-8908 [cell], http://seejeffrun.blogspot.com [blog],
http://www.youtube.com/user/goyishekop [vlog]
*פרייהייט? דאס איז יאַנג דינען וואָרט.*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lug.boulder.co.us/pipermail/lug/attachments/20140813/fb477080/attachment.html>


More information about the LUG mailing list