diff options
-rw-r--r-- | pm/functions.in | 125 | ||||
-rw-r--r-- | pm/pm-functions.in | 131 | ||||
-rw-r--r-- | src/pm-action.in | 3 | ||||
-rw-r--r-- | src/pm-is-supported.in | 2 | ||||
-rw-r--r-- | src/pm-powersave.in | 3 |
5 files changed, 136 insertions, 128 deletions
diff --git a/pm/functions.in b/pm/functions.in index bfa9a55..a7905ce 100644 --- a/pm/functions.in +++ b/pm/functions.in @@ -1,131 +1,10 @@ #!/bin/sh # vim:noexpandtab +# Common functionality for the hooks. -# Default values go here. It is important to _not_ initialize some -# variables here. They are: -# -# PM_CMDLINE -# RESUME_MODULES -# # for great debugging! -[ "${PM_DEBUG}" = "true" ] && { - export PM_DEBUG - set -x -} -set -a -PM_UTILS_LIBDIR="@PM-UTILS-LIBDIR@" -PM_UTILS_ETCDIR="@PM-UTILS-SYSCONFDIR@" -PM_UTILS_RUNDIR="/var/run/pm-utils" - -PATH=/sbin:/usr/sbin:/bin:/usr/bin:"${PM_UTILS_LIBDIR}"/bin -HIBERNATE_MODE="platform" -HIBERNATE_RESUME_POST_VIDEO=no -INHIBIT="${PM_UTILS_RUNDIR}/inhibit" -PM_LOGFILE="${PM_LOGFILE:=/var/log/pm-suspend.log}" -SUSPEND_MODULES="" -TEMPORARY_CPUFREQ_GOVERNOR="performance" -LOCKDIR="${PM_UTILS_RUNDIR}/locks" -STORAGEDIR="${PM_UTILS_RUNDIR}/storage" -SLEEP_MODULE="kernel" -NA=254 - -# Use c sort order -export LC_COLLATE=C - -[ -f "${PM_UTILS_LIBDIR}"/defaults ] && . "${PM_UTILS_LIBDIR}"/defaults - -set +a - -for cfg in "${PM_UTILS_ETCDIR}"/config.d/*[!~] ; do - [ -f "$cfg" ] || continue - set -a - . "${cfg}" - set +a -done - -take_suspend_lock() -{ - VT=$(fgconsole) - chvt 63 - try_lock "pm-utils.lock" || return 1 - mkdir -p "${STORAGEDIR}" - return 0 -} - -remove_suspend_lock() -{ - rm -rf "${STORAGEDIR}" - chvt 1 - chvt $VT - release_lock "pm-utils.lock" -} - -hook_exit_status(){ - case $1 in - 0) echo "success." ;; - $NA) echo "not applicable." ;; - *) echo "Returned exit code $1." ;; - esac -} - -run_hooks() { - # $1 = type of hook to find. - # $2 = paramaters to pass to hooks. - # $3 = if present and equal to "reverse", run hooks backwards. - # Currently only power and sleep are meaningful. - local syshooks="${PM_UTILS_ETCDIR}/$1.d" - local phooks="${PM_UTILS_LIBDIR}/$1.d" - local sort="sort" - local base - local hook - local oifs="${IFS}" - # the next two lines are not a typo or a formatting error! - local nifs=" -" - IFS="${nifs}" # tolerate spaces in filenames. - [ "$3" = "reverse" ] && sort="sort -r" - for base in $(IFS="${oifs}"; for f in "$syshooks/"*[!~] "$phooks/"*[!~]; - do [ -O "$f" ] && echo ${f##*/} ; done | $sort | uniq) ; - do - if [ -f "$syshooks/$base" ]; then - hook="$syshooks/$base" - elif [ -f "$phooks/$base" ]; then - hook="$phooks/$base" - fi - [ -x "${hook}" ] && ( - IFS="${oifs}" - echo "$(date): running ${hook} $2" - "${hook}" $2 - hook_exit_status $? - ) - done - IFS="${oifs}" -} - -init_logfile() -{ - if [ -h "$1" ]; then - echo "$1 is a symbolic link, refusing to overwrite." - return 1 - elif [ ! -O "$1" ]; then - echo "We do not own $1, refusing to overwrite." - return 1 - elif [ -z "$1" ]; then - echo "Please pass a filename to init_logfile." - return 1 - fi - exec > "$1" 2>&1 -} - - -SLEEP_FUNCTIONS="${PM_UTILS_LIBDIR}/module.d/${SLEEP_MODULE}" -[ -f "${SLEEP_FUNCTIONS}" ] || { - echo "Requested sleep module $SLEEP_MODULE not available." - exit 1 -} - -. "${SLEEP_FUNCTIONS}" +[ "${PM_DEBUG}" = "true" ] && set -x # try to take the lock. Fail if we cannot get it. diff --git a/pm/pm-functions.in b/pm/pm-functions.in new file mode 100644 index 0000000..88eb841 --- /dev/null +++ b/pm/pm-functions.in @@ -0,0 +1,131 @@ +#!/bin/sh +# vim:noexpandtab + + +# Default values go here. It is important to _not_ initialize some +# variables here. They are: +# +# PM_CMDLINE +# RESUME_MODULES +# +# for great debugging! +[ "${PM_DEBUG}" = "true" ] && { + export PM_DEBUG + set -x +} +set -a +PM_UTILS_LIBDIR="@PM-UTILS-LIBDIR@" +PM_UTILS_ETCDIR="@PM-UTILS-SYSCONFDIR@" +PM_UTILS_RUNDIR="/var/run/pm-utils" + +PATH=/sbin:/usr/sbin:/bin:/usr/bin:"${PM_UTILS_LIBDIR}"/bin +HIBERNATE_MODE="platform" +HIBERNATE_RESUME_POST_VIDEO=no +INHIBIT="${PM_UTILS_RUNDIR}/inhibit" +PM_LOGFILE="${PM_LOGFILE:=/var/log/pm-suspend.log}" +SUSPEND_MODULES="" +TEMPORARY_CPUFREQ_GOVERNOR="performance" +LOCKDIR="${PM_UTILS_RUNDIR}/locks" +STORAGEDIR="${PM_UTILS_RUNDIR}/storage" +SLEEP_MODULE="kernel" +NA=254 +PM_FUNCTIONS="$PM_UTILS_LIBDIR/functions" +# Use c sort order +export LC_COLLATE=C + +[ -f "${PM_UTILS_LIBDIR}"/defaults ] && . "${PM_UTILS_LIBDIR}"/defaults + +set +a + +for cfg in "${PM_UTILS_ETCDIR}"/config.d/*[!~] ; do + [ -f "$cfg" ] || continue + set -a + . "${cfg}" + set +a +done + +. "${PM_FUNCTIONS}" + +take_suspend_lock() +{ + VT=$(fgconsole) + chvt 63 + try_lock "pm-utils.lock" || return 1 + mkdir -p "${STORAGEDIR}" + return 0 +} + +remove_suspend_lock() +{ + rm -rf "${STORAGEDIR}" + chvt 1 + chvt $VT + release_lock "pm-utils.lock" +} + +hook_exit_status(){ + case $1 in + 0) echo "success." ;; + $NA) echo "not applicable." ;; + *) echo "Returned exit code $1." ;; + esac +} + +run_hooks() { + # $1 = type of hook to find. + # $2 = paramaters to pass to hooks. + # $3 = if present and equal to "reverse", run hooks backwards. + # Currently only power and sleep are meaningful. + local syshooks="${PM_UTILS_ETCDIR}/$1.d" + local phooks="${PM_UTILS_LIBDIR}/$1.d" + local sort="sort" + local base + local hook + local oifs="${IFS}" + # the next two lines are not a typo or a formatting error! + local nifs=" +" + IFS="${nifs}" # tolerate spaces in filenames. + [ "$3" = "reverse" ] && sort="sort -r" + for base in $(IFS="${oifs}"; for f in "$syshooks/"*[!~] "$phooks/"*[!~]; + do [ -O "$f" ] && echo ${f##*/} ; done | $sort | uniq) ; + do + if [ -f "$syshooks/$base" ]; then + hook="$syshooks/$base" + elif [ -f "$phooks/$base" ]; then + hook="$phooks/$base" + fi + [ -x "${hook}" ] && ( + IFS="${oifs}" + echo "$(date): running ${hook} $2" + "${hook}" $2 + hook_exit_status $? + ) + done + IFS="${oifs}" +} + +init_logfile() +{ + if [ -h "$1" ]; then + echo "$1 is a symbolic link, refusing to overwrite." + return 1 + elif [ ! -O "$1" ]; then + echo "We do not own $1, refusing to overwrite." + return 1 + elif [ -z "$1" ]; then + echo "Please pass a filename to init_logfile." + return 1 + fi + exec > "$1" 2>&1 +} + + +SLEEP_FUNCTIONS="${PM_UTILS_LIBDIR}/module.d/${SLEEP_MODULE}" +[ -f "${SLEEP_FUNCTIONS}" ] || { + echo "Requested sleep module $SLEEP_MODULE not available." + exit 1 +} + +. "${SLEEP_FUNCTIONS}" + diff --git a/src/pm-action.in b/src/pm-action.in index e87b7f8..32525c8 100644 --- a/src/pm-action.in +++ b/src/pm-action.in @@ -85,8 +85,7 @@ do shift done -export PM_FUNCTIONS="@PM-UTILS-LIBDIR@/functions" -. "${PM_FUNCTIONS}" +. "@PM-UTILS-LIBDIR@/pm-functions" ACTION="$(echo ${0##*pm-} |tr - _)" diff --git a/src/pm-is-supported.in b/src/pm-is-supported.in index bfce1ae..9446846 100644 --- a/src/pm-is-supported.in +++ b/src/pm-is-supported.in @@ -16,7 +16,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -. "@PM-UTILS-LIBDIR@/functions" +. "@PM-UTILS-LIBDIR@/pm-functions" help_options() { diff --git a/src/pm-powersave.in b/src/pm-powersave.in index a1cdb4a..d0c2d5f 100644 --- a/src/pm-powersave.in +++ b/src/pm-powersave.in @@ -25,8 +25,7 @@ # POWERSAVE_LOGFILE="/dev/null" -export PM_FUNCTIONS="@PM-UTILS-LIBDIR@/functions" -. "${PM_FUNCTIONS}" +. "@PM-UTILS-LIBDIR@/pm-functions" if [ "$1" = "true" -o "$1" = "false" ] ; then init_logfile "${POWERSAVE_LOGFILE}" |