#!/usr/bin/openrc-run

description="Sets the hostname, respects hostname= kernel command line parameter and DHCP-assigned hostname"

. /opt/etc/functions.openrc

depend()
{
	after procfs
	provide ${SVCNAME}
}

kernelcmd_hostname()
{
	local _parm _hn
	for _parm in $(cat /proc/cmdline | grep "hostname="); do
		_hn=$(echo ${_parm} | grep "hostname=" | sed 's/hostname=//')
		[ -n "${_hn}" ] && break
	done
	echo ${_hn}
}

start()
{
	ebegin "Starting \"${SVCNAME}\""
	local _hn=$(hostname)
	local _khn=$(kernelcmd_hostname)
	[ "${_hn}" = "localhost" -o "${_hn}" = "amnesiac" ] && _hn=""
	update_me
	if [ -n "${_khn}" ]; then
		if [ -n "${_hn}" ]; then
			einfo "${ME}: Valid hostname \"${_hn}\" was already set."
			einfo "${ME}: It will be overrided by \"${_khn}\" from kernel command line."
		fi
		hostname "${_khn}"
	else
		if [ -n "${_hn}" ]; then
			einfo "${ME}: hostname \"${_hn}\" is already set."
		elif [ -n "${HOSTNAME}" ]; then
			einfo "${ME}: using hostname \"${HOSTNAME}\" provided in config."
			hostname "${HOSTNAME}"
		else
			ewarn "${ME}: no valid hostname provided"
		fi
	fi
	eend 0
}
