diff options
Diffstat (limited to 'dhcpcd-run-hooks.in')
-rw-r--r-- | dhcpcd-run-hooks.in | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/dhcpcd-run-hooks.in b/dhcpcd-run-hooks.in deleted file mode 100644 index 1e5d5b3..0000000 --- a/dhcpcd-run-hooks.in +++ /dev/null @@ -1,138 +0,0 @@ -#!/bin/sh -# dhcpcd client configuration script - -# Handy variables and functions for our hooks to use -from="from" -signature_base="# Generated by dhcpcd" -signature="${signature_base} ${from} ${interface}" -signature_base_end="# End of dhcpcd" -signature_end="${signature_base_end} ${from} ${interface}" -state_dir="/var/run/dhcpcd" - -# Ensure that all arguments are unique -uniqify() -{ - local result= - - while [ -n "$1" ]; do - case " ${result} " in - *" $1 "*);; - *) result="${result}${result:+ }$1";; - esac - shift - done - echo "${result}" -} - -# List interface config files in a dir -# We may wish to control the order at some point rather than just lexical -list_interfaces() -{ - local x= interfaces= - for x in "$1"/*; do - [ -e "${x}" ] || continue - interfaces="${interfaces}${interfaces:+ }${x##*/}" - done - echo "${interfaces}" -} - -# We normally use sed to extract values using a key from a list of files -# but sed may not always be available at the time. -key_get_value() -{ - local key="$1" value= x= line= - - shift - if type sed >/dev/null 2>&1; then - sed -n "s/^${key}//p" $@ - else - for x; do - while read line; do - case "${line}" in - "${key}"*) echo "${line##${key}}";; - esac - done < "${x}" - done - fi -} - -# We normally use sed to remove markers from a configuration file -# but sed may not always be available at the time. -remove_markers() -{ - local m1="$1" m2="$2" x= line= in_marker=0 - - shift; shift - if type sed >/dev/null 2>&1; then - sed "/^${m1}/,/^${m2}/d" $@ - else - for x; do - while read line; do - case "${line}" in - "${m1}"*) in_marker=1;; - "${m2}"*) in_marker=0;; - *) [ ${in_marker} = 0 ] && echo "${line}";; - esac - done < "${x}" - done - fi -} - -# Compare two files -# It different, replace first with second otherwise remove second -change_file() -{ - if type cmp >/dev/null 2>&1; then - cmp -s "$1" "$2" - elif type diff >/dev/null 2>&1; then - diff -q "$1" "$2" >/dev/null - else - # Hopefully we're only working on small text files ... - [ "$(cat "$1")" = "$(cat "$2")" ] - fi - if [ $? -eq 0 ]; then - rm -f "$2" - return 1 - fi - mv -f "$2" "$1" - return 0 -} - -# Save a config file -save_conf() -{ - if [ -f "$1" ]; then - rm -f "$1"-pre."${interface}" - mv -f "$1" "$1"-pre."${interface}" - fi -} - -# Restore a config file -restore_conf() -{ - [ -f "$1"-pre."${interface}" ] || return 1 - rm -f "$1" - mv -f "$1"-pre."${interface}" "$1" -} - - -# We source each script into this one so that scripts run earlier can -# remove variables from the environment so later scripts don't see them. -# Thus, the user can create their dhcpcd.enter/exit-hook script to configure -# /etc/resolv.conf how they want and stop the system scripts ever updating it. -for hook in \ - @SYSCONFDIR@/dhcpcd.enter-hook \ - @HOOKDIR@/* \ - @SYSCONFDIR@/dhcpcd.exit-hook -do - for skip in ${skip_hooks}; do - case "${hook}" in - "${skip}") continue 2;; - */[0-9][0-9]"-${skip}") continue 2;; - */[0-9][0-9]"-${skip}.sh") continue 2;; - esac - done - if [ -f "${hook}" ]; then - . "${hook}" - fi -done |