]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Try to emulate hostname(1) if it doens't exist.
authorRoy Marples <roy@marples.name>
Mon, 5 Mar 2012 11:11:49 +0000 (11:11 +0000)
committerRoy Marples <roy@marples.name>
Mon, 5 Mar 2012 11:11:49 +0000 (11:11 +0000)
dhcpcd-hooks/30-hostname

index f2b35b46437aed0887b8d88d4aa4e34acf8cbdbc..7cfeb6fcc455690297143a1fc0de7b6c040645bf 100644 (file)
@@ -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