summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2012-03-05 11:11:49 +0000
committerRoy Marples <roy@marples.name>2012-03-05 11:11:49 +0000
commitc37989c4aa92fa076d8a7602811de5e8c60b9679 (patch)
tree29d99c2fb5174f9f7c7b933d0e99c6796c28f72d
parent8a1c7bcc1b3fc9bf79105751d207a8f5cd311dfc (diff)
downloaddhcpcd-c37989c4aa92fa076d8a7602811de5e8c60b9679.tar.xz
Try to emulate hostname(1) if it doens't exist.
-rw-r--r--dhcpcd-hooks/30-hostname29
1 files changed, 23 insertions, 6 deletions
diff --git a/dhcpcd-hooks/30-hostname b/dhcpcd-hooks/30-hostname
index f2b35b46..7cfeb6fc 100644
--- a/dhcpcd-hooks/30-hostname
+++ b/dhcpcd-hooks/30-hostname
@@ -1,12 +1,33 @@
# Set the hostname from DHCP data if required
+# Some systems don't have hostname(1)
+_hostname()
+{
+ local name=
+
+ if [ -z "$1" ]; then
+ if [ -r /proc/sys/kernel/hostname ]; then
+ read name </proc/sys/kernel/hostname && echo "$name"
+ else
+ hostname
+ fi
+ return $?
+ fi
+
+ if [ -w /proc/sys/kernel/hostname ]; then
+ echo "$1" >/proc/sys/kernel/hostname
+ else
+ hostname "$1"
+ fi
+}
+
need_hostname()
{
local hostname=""
case "$force_hostname" in
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|1) ;;
- *) hostname="$(hostname)";;
+ *) hostname="$(_hostname)";;
esac
case "$hostname" in
""|"(none)"|localhost|localhost.localdomain)
@@ -21,11 +42,7 @@ need_hostname()
try_hostname()
{
if valid_domainname "$1"; then
- if [ -w /proc/sys/kernel/hostname ]; then
- echo "$1" >/proc/sys/kernel/hostname
- else
- hostname "$1"
- fi
+ _hostname "$1"
else
syslog err "Invalid hostname: $1"
fi