mutt_dotlock - Lock mail spool files.
mutt_dotlock [-t|-f|-u|-d] [-p] [-r
retries]
file
mutt_dotlock implements the traditional mail spool file locking method:
To lock
file, a file named
file.lock is created. The program
operates with group mail privileges if necessary.
- -t
- Just try. mutt_dotlock won't actually lock a file,
but inform the invoking process if it's at all possible to lock
file.
- -f
- Force the lock. If another process holds a lock on
file longer than a certain amount of time, mutt_dotlock will
break that lock by removing the lockfile.
- -u
- Unlock. mutt_dotlock will remove
file.lock.
- -d
- Delete. mutt_dotlock will lock file, remove
it if it has length 0, and afterwards remove file.lock.
- -p
- Use privileges. If given this option, mutt_dotlock
will operate with group mail privileges when creating and deleting lock
files.
- -r retries
- This command line option tells mutt_dotlock to try
locking retries times before giving up or (if invoked with the
-f command line option) break a lock. The default value is 5.
mutt_dotlock waits one second between successive locking
attempts.
-
file.lock
- The lock file mutt_dotlock generates.
fcntl(2),
flock(2),
lockfile(1),
mutt(1)
mutt_dotlock gives all diagnostics in its return values:
- 0 - DL_EX_OK
- The program was successful.
- 1 - DL_EX_ERROR
- An unspecified error such as bad command line parameters,
lack of system memory and the like has occurred.
- 3 - DL_EX_EXIST
- The user wants to lock a file which has been locked by
another process already. If mutt_dotlock is invoked with the
-f command line option, mutt_dotlock won't generate this
error, but break other processes' locks.
- 4 - DL_EX_NEED_RPIVS
- This return value only occurs if mutt_dotlock has
been invoked with the -t command line option. It means that
mutt_dotlock will have to use its group mail privileges to lock
file.
- 5 - DL_EX_IMPOSSIBLE
- This return value only occurs if mutt_dotlock has
been invoked with the -t command line option. It means that
mutt_dotlock is unable to lock file even with group mail
privileges.
mutt_dotlock tries to implement an NFS-safe dotlocking method which was
borrowed from
lockfile (1).
If the user can't open
file for reading with his normal privileges,
mutt_dotlock will return the
DL_EX_ERROR exit value to avoid
certain attacks against other users' spool files. The code carefully avoids
race conditions when checking permissions; for details of all this see the
comments in dotlock.c.
mutt_dotlock is part of the Mutt mail user agent package. It has been
created to avoid running mutt with group mail privileges.
Thomas Roessler <
[email protected]>