aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--conf.d/Makefile2
-rw-r--r--conf.d/local18
-rw-r--r--init.d/local.in28
-rw-r--r--local.d/Makefile6
-rw-r--r--local.d/README9
-rw-r--r--mk/sys.mk1
7 files changed, 41 insertions, 25 deletions
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 <roy@marples.name>
# 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