From 0a432ebb8bc1137d76d297eb68b4daec5364c89e Mon Sep 17 00:00:00 2001
From: P. J. McDermott <pjm@nac.net>
Date: Mon, 29 Jul 2013 23:35:31 -0400
Subject: pro-archman: Lock the archive.

---
(limited to 'src')

diff --git a/src/pro-archman.sh b/src/pro-archman.sh
index 1f9628b..8b0719b 100644
--- a/src/pro-archman.sh
+++ b/src/pro-archman.sh
@@ -36,6 +36,7 @@ conf_incoming_channel=
 conf_incoming_dir=
 conf_pool_gc_delay=
 archive=
+lock=
 
 # use() must be defined inline so it can be used to load other modules.
 use()
@@ -100,6 +101,14 @@ main()
 	# FIXME: Remove.
 	archive="${opt_base_dir}"
 
+	mkdir -p "${opt_base_dir}/.db"
+	lock="${opt_base_dir}/.db/lock"
+	if ! (set -C; printf '%d\n' "${$}" >"${lock}") 2>/dev/null; then
+		printf '%s: Error: ' "${0##*/}" >&2
+		printf "$(get_msg 'lock_fail')\n" >&2
+		exit 2
+	fi
+
 	if [ "x${opt_cmd}" != 'x' ]; then
 		run_cmd "${opt_cmd}" "${@}"
 		status=${?}
@@ -159,5 +168,8 @@ fini()
 {
 	update_feeds
 	collect_garbage
+
+	rm -f "${lock}"
 }
+
 main "${@}"
--
cgit v0.9.1