#!/bin/sh

PROGRAM="sysctl"

SYSCTL_ARGS=""

# shellcheck source=/dev/null
[ -r "/etc/default/$PROGRAM" ] && . "/etc/default/$PROGRAM"

# Files are read from directories in the SYSCTL_SOURCES list, in the given
# order. A file may be used more than once, since there can be multiple
# symlinks to it. No attempt is made to prevent this.
SYSCTL_SOURCES="/etc/sysctl.d/ /usr/local/lib/sysctl.d/ /usr/lib/sysctl.d/ /lib/sysctl.d/ /etc/sysctl.conf"

# The "--system" option activates "--ignore", which is bad because invalid
# variable settings in the configuration files will not be reported on the
# system log. Use some scripting to mimic the --system behavior but still
# reporting errors. Users not interested on error report can put "-e" in
# SYSCTL_ARGS.
#
# The file redirections do the following:
#
# - stdout is redirected to syslog with facility.level "kern.info"
# - stderr is redirected to syslog with facility.level "kern.err"
# - file dscriptor 4 is used to pass the result to the "start" function.
#
run_program() {
	# shellcheck disable=SC2086 # we need the word splitting
	find $SYSCTL_SOURCES -maxdepth 1 -name '*.conf' -print0 2> /dev/null | \
	xargs -0 -r -n 1 readlink -f | {
		prog_status="OK"
		while :; do
			read -r file
			if [ -z "$file" ]; then
				echo "$prog_status" >&4
				break
			fi
			echo "* Applying $file ..."
			/sbin/sysctl -p "$file" $SYSCTL_ARGS || prog_status="FAIL"
		done 2>&1 >&3 | /usr/bin/logger -t sysctl -p kern.err
	} 3>&1 | /usr/bin/logger -t sysctl -p kern.info
}

start() {
	printf '%s %s: ' "$1" "$PROGRAM"
	status=$(run_program 4>&1)
	echo "$status"
	if [ "$status" = "OK" ]; then
		return 0
	fi
	return 1
}

case "$1" in
	start)
		start "Running";;
	restart|reload)
		start "Rerunning";;
	stop)
		:;;
	*)
		echo "Usage: $0 {start|stop|restart|reload}"
		exit 1
esac
