+/* lock_file.h -- lock and unlock files.
+ *
+ * This code is Copyright (c) 2017, by the authors of nmh. See the
+ * COPYRIGHT file in the root directory of the nmh distribution for
+ * complete copyright information.
+ */
+
+/*
+ * Lock open/close routines.
+ *
+ * The lk[f]opendata() functions are designed to open "data" files (anything
+ * not a mail spool file) using the locking mechanism configured for data
+ * files. The lk[f]openspool() functions are for opening the mail spool
+ * file, which will use the locking algorithm configured for the mail
+ * spool.
+ *
+ * Files opened for reading are locked with a read lock (if possible by
+ * the underlying lock mechanism), files opened for writing are locked
+ * using an exclusive lock. The int * argument is used to indicate failure
+ * to acquire a lock.
+ */
+int lkopendata(const char *file, int access, mode_t mode, int *failed_to_lock);
+int lkopenspool(const char *file, int access, mode_t mode, int *failed_to_lock);
+FILE *lkfopendata(const char *file, const char *mode, int *failed_to_lock);
+FILE *lkfopenspool(const char *file, const char *mode);
+int lkclosedata(int fd, const char *name);
+int lkfclosedata(FILE *f, const char *name);
+int lkclosespool(int fd, const char *name);
+int lkfclosespool(FILE *f, const char *name);