diff --git a/Makefile b/Makefile index 8f9cc959..18a8ddfa 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ include Makefile.inc -SUBDIR= conf.d etc init.d man scripts sh src +SUBDIR= conf.d etc init.d local.d man scripts sh src # Build our old net foo or not _OLDNET_SH= case "${MKOLDNET}" in \ diff --git a/conf.d/Makefile b/conf.d/Makefile index 034dc744..374bfdb7 100644 --- a/conf.d/Makefile +++ b/conf.d/Makefile @@ -1,5 +1,5 @@ DIR= ${CONFDIR} -CONF= bootmisc fsck hostname local localmount network staticroute urandom +CONF= bootmisc fsck hostname localmount network staticroute urandom TARGETS+= network staticroute CLEANFILES+= network staticroute diff --git a/conf.d/local b/conf.d/local deleted file mode 100644 index 97dbbccd..00000000 --- a/conf.d/local +++ /dev/null @@ -1,18 +0,0 @@ -# Here is where you can put anything you need to start -# that there is not an init script for. - -local_start() { - # This is a good place to load any misc programs - # on startup (use &>/dev/null to hide output) - - # We should always return 0 - return 0 -} - -local_stop() { - # This is a good place to unload any misc. - # programs you started above. - - # We should always return 0 - return 0 -} diff --git a/init.d/local.in b/init.d/local.in index 63d5e927..5583fead 100644 --- a/init.d/local.in +++ b/init.d/local.in @@ -2,7 +2,7 @@ # Copyright (c) 2007-2008 Roy Marples # All rights reserved. Released under the 2-clause BSD license. -description="Executes user commands in /etc/conf.d/local" +description="Executes user programs in @SYSCONFDIR@/local.d" depend() { @@ -12,22 +12,40 @@ depend() start() { - ebegin "Starting local" + einfo "Starting local" + + local file + for file in @SYSCONFDIR@/local.d/*.start ; do + [ -x $file ] && $file + done if type local_start >/dev/null 2>&1; then + ewarn "@SYSCONFDIR@/conf.d/local should be removed." + ewarn "Please move the code from the local_start function" + ewarn "to scripts with an .start extension" + ewarn "in @SYSCONFDIR@/local.d" local_start fi - eend $? "Failed to start local" + return 0 } stop() { - ebegin "Stopping local" + einfo "Stopping local" + + local file + for file in @SYSCONFDIR@/local.d/*.stop; do + [ -x $file ] && $file + done if type local_start >/dev/null 2>&1; then + ewarn "@SYSCONFDIR@/conf.d/local should be removed." + ewarn "Please move the code from the local_stop function" + ewarn "to scripts with an .stop extension" + ewarn "in @SYSCONFDIR@/local.d" local_stop fi - eend $? "Failed to stop local" + return 0 } diff --git a/local.d/Makefile b/local.d/Makefile new file mode 100644 index 00000000..7a7d31dd --- /dev/null +++ b/local.d/Makefile @@ -0,0 +1,6 @@ +DIR= ${LOCALDIR} +CONF= README + +MK= ../mk +include ${MK}/os.mk +include ${MK}/scripts.mk diff --git a/local.d/README b/local.d/README new file mode 100644 index 00000000..d3c11566 --- /dev/null +++ b/local.d/README @@ -0,0 +1,9 @@ +This directory should contain programs or scripts which are to be run +when the local service is started or stopped. + +If a file in this directory is executable and it has a .start extension, +it will be run when the local service is started. If a file is +executable and it has a .stop extension, it will be run when the local +service is stopped. + +All files are processed in lexical order. diff --git a/mk/sys.mk b/mk/sys.mk index e22731b6..e9bbf602 100644 --- a/mk/sys.mk +++ b/mk/sys.mk @@ -21,6 +21,7 @@ PICFLAG?= -fPIC SYSCONFDIR?= ${PREFIX}/etc INITDIR?= ${SYSCONFDIR}/init.d CONFDIR?= ${SYSCONFDIR}/conf.d +LOCALDIR?= ${SYSCONFDIR}/local.d BINDIR?= ${PREFIX}/sbin BINMODE?= 0755