Subject: [alpine-aports] [PATCH] main/dovecot: new init-script with dovecot.instances support

From: Valery Kartel <[email-masked]>
Date: Wed, 23 Dec 2015 00:37:54 +0200

---
 main/dovecot/dovecot.initd | 49 +++++++++++-----------------------------------
 1 file changed, 11 insertions(+), 38 deletions(-)

diff --git a/main/dovecot/dovecot.initd b/main/dovecot/dovecot.initd
index 880a39f..944ff87 100644
--- a/main/dovecot/dovecot.initd
+++ b/main/dovecot/dovecot.initd
@@ -1,9 +1,12 @@
 #!/sbin/openrc-run
 
 description="Secure POP3/IMAP server"
-description_reload="Reload configuration"
-
+cfgfile=/etc/dovecot/${SVCNAME}.conf
+pidfile=$(/usr/bin/doveconf -c $cfgfile -h base_dir 2>/dev/null)/master.pid
+command=/usr/sbin/dovecot
+required_files=$cfgfile
 extra_started_commands="reload"
+description_reload="Reload configuration"
 
 depend() {
 	need localmount net
@@ -12,46 +15,16 @@ depend() {
 	use logger
 }
 
-checkconfig() {
-	DOVECOT_INSTANCE=${SVCNAME##*.}
-	if [ -n "${DOVECOT_INSTANCE}" -a "${SVCNAME}" != "dovecot" ]; then
-		DOVECOT_CONF=/etc/dovecot/dovecot.${DOVECOT_INSTANCE}.conf
-	else
-		DOVECOT_CONF=/etc/dovecot/dovecot.conf
-	fi
-	if [ ! -e ${DOVECOT_CONF} ]; then
-		eerror "You will need an ${DOVECOT_CONF} first"
-		return 1
-	fi
-	if [ -x /usr/sbin/dovecot ]; then
-		DOVECOT_BASEDIR=$(/usr/sbin/dovecot -c ${DOVECOT_CONF} -a | grep '^base_dir = ' | sed 's/^base_dir = //')
-	else
-		eerror "dovecot not executable"
-		return 1
-	fi
-	DOVECOT_BASEDIR=${DOVECOT_BASEDIR:-/run/dovecot}
-	DOVECOT_PIDFILE=${DOVECOT_BASEDIR}/master.pid
-	checkpath --directory --owner dovecot:dovecot --mode 0755 \
-		${DOVECOT_BASEDIR}
-}
-
-start() {
-	checkconfig || return 1
-	ebegin "Starting ${SVCNAME}"
-	start-stop-daemon --start --exec /usr/sbin/dovecot --pidfile "${DOVECOT_PIDFILE}" -- -c "${DOVECOT_CONF}"
-	eend $?
-}
-
-stop() {
-	checkconfig || return 1
-	ebegin "Stopping ${SVCNAME}"
-	start-stop-daemon --stop --exec /usr/sbin/dovecot --pidfile "${DOVECOT_PIDFILE}"
+start_pre() {
+	ebegin
+	[ "$cfgfile" = "/etc/dovecot/dovecot.conf" ] || command_args="-c $cfgfile"
+	checkpath --directory ${pidfile%/*}
+	$command $command_args -a > /dev/null
 	eend $?
 }
 
 reload() {
-	checkconfig || return 1
 	ebegin "Reloading ${SVCNAME} configs and restarting auth/login processes"
-	start-stop-daemon --signal HUP --exec /usr/sbin/dovecot --pidfile "${DOVECOT_PIDFILE}"
+	start_pre && start-stop-daemon --signal HUP --exec $command --pidfile $pidfile
 	eend $?
 }
-- 
2.6.4

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---