diff options
| author | Roy Marples <roy@marples.name> | 2012-03-05 11:11:49 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2012-03-05 11:11:49 +0000 |
| commit | c37989c4aa92fa076d8a7602811de5e8c60b9679 (patch) | |
| tree | 29d99c2fb5174f9f7c7b933d0e99c6796c28f72d | |
| parent | 8a1c7bcc1b3fc9bf79105751d207a8f5cd311dfc (diff) | |
| download | dhcpcd-c37989c4aa92fa076d8a7602811de5e8c60b9679.tar.xz | |
Try to emulate hostname(1) if it doens't exist.
| -rw-r--r-- | dhcpcd-hooks/30-hostname | 29 |
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 |
