From 1c75bf370db4e8d467740e676a5d1dc2fc790ed7 Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Thu, 25 Jul 2024 21:32:37 -0500 Subject: [PATCH] init.d/hostname: fix /etc/hostname processing This is an alternative to #585 in which we keep the init script but use `hostname -F` to read the value from @SYSCONFDIR@/hostname. This allows for comments in the hostname file. Also, we deprecate using /etc/conf.d/* to set the host name. --- init.d/hostname.in | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/init.d/hostname.in b/init.d/hostname.in index fc949336e..f48f4521a 100644 --- a/init.d/hostname.in +++ b/init.d/hostname.in @@ -19,18 +19,28 @@ depend() start() { - local h source - if read -r h _ 2> /dev/null < @SYSCONFDIR@/hostname; then + local source + if [ -s @SYSCONFDIR@/hostname ]; then source="@SYSCONFDIR@/hostname" elif [ -n "${hostname}" ]; then - h=${hostname} source="@SYSCONFDIR@/conf.d/${RC_SVCNAME}" fi - if [ -z "$h" ]; then + if [ -z "$source" ]; then einfo "Using default system hostname" return 0 fi - ebegin "Setting hostname to $h from $source" - hostname "$h" + if [ "$source" = "@SYSCONFDIR@/conf.d/$RC_SVCNAME" ]; then + ewarn "Setting hostname in @SYSCONFDIR@/conf.d/$RC_SVCNAME is deprecated" + ewarn "and will be removed in the future." + fi + ebegin "Setting hostname from $source" + if [ "$source" = "@SYSCONFDIR@/hostname" ]; then + hostname -F "$source" + else + hostname "$hostname" + fi + if [ $? ]; then + einfo "hostname set to $(hostname)" + fi eend $? "Failed to set the hostname" }