Ville-Pertti Keinonen scribbled this message on Aug 24:
>
> [EMAIL PROTECTED] (Greg Lehey) writes:
>
> > an agreement of some kind. But what if I want to merge the contents
> > of another mail folder:
>
> > cat oldmail >>/var/mail/grog
>
> > That works, but it's playing with fire: if sendmail is delivering a
> > message at the same time, it won't see me, and my cat doesn't get a
> > lock beforehand, so both an incoming message and part of my mail
> > folder could end up getting written to the same location. With
> > mandatory locking, it would work, transparently.
>
> Certainly not with range-locking rather than file-locking. cat is
> certainly not guaranteed to be atomic, and while you shouldn't end up
> writing things in the same location, what might happen unless you are
> preventing multiple openers is:
>
> cat writes part of oldmail to /var/mail/grog
> sendmail locks /var/mail/grog
> (cat may try to write more to /var/mail/grog but blocks)
> sendmail delivers new mail
> sendmail unlocks /var/mail/grog
> cat writes the rest of oldmail to /var/mail/grog
>
> You'll still probably end up with a broken mailbox.
what you do is this:
lockf -k $mailfile cat ${mailtmp} >> $mailfile
then you don't have to worry.. that's what lockf is for...
--
John-Mark Gurney Voice: +1 541 684 8449
Cu Networking P.O. Box 5693, 97405
"The soul contains in itself the event that shall presently befall it.
The event is only the actualizing of its thought." -- Ralph Waldo Emerson
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message