On Sun, Apr 25, 2004 at 06:35:19PM +0200, Matthias Grimm wrote:
> Ok, thats a sollution I can live with. We introduce something new and keep 
> compatibility with existing systems. I would be thankfull for your patch.
The script is attached (again this is based on things Michel Dänzer once
sent do this list). I'd like to suggest several more things.  Please use
a .d suffix for directories processed by run-parts. That's good practise
and helps sysadmins to identify what these directories are for.
Furthermore please use several subdirs:

These two since apmd uses these names and so it eases migration

event.d    <-> former active
scripts.d  <-> former storage

These two since we might want to have scripts for suspend/resume ordered
in different ways:

sleep.d    <-> executed before suspend (suspend.d might be better)
wakeup.d   <-> executed after resume (resume.d might be better)

We can the have symlinks here like:
sleep.d/20nfs  -> ../scripts.d/nfs
sleep.d/21eth0 -> ../scripts.d/eth0

wakeup.d/20eth0 -> ../scripts.d/eth0
wakeup.d/21nfs  -> ../scripts.d/nfs

Where the former first unmounts all nfs mounted directories, then shuts
down eth0 and the later first brings up eth0 again, then mounts the
directories per nfs again. This could be implemented by this patch:

--- ../power.orig/pmcs-pbbuttonsd       2004-04-23 01:52:00.000000000 +0200
+++ pmcs-pbbuttonsd     2004-04-26 15:08:38.687541040 +0200
@@ -20,6 +20,9 @@
 
 PATH=/bin:/sbin:/usr/bin:/usr/sbin
 
+[ -x /usr/bin/logger ] && \
+       /usr/bin/logger -p daemon.info -t pmcs-pbbuttonsd "called with $1 $2"
+
 case "$1" in
   emergency)
     wall "Low battery - system will go down now!"
@@ -27,7 +30,8 @@
     ;;
   *)
     cd `dirname $0`
-    run-parts --arg="$1" --arg="$2" active
+    [ -d ${1}.d ] && run-parts --arg="$1" --arg="$2" ${1}.d
+    run-parts --arg="$1" --arg="$2" event.d
     ;;
 esac

Did you get in touch with the acpid folks, they might be interested in
this too.
Cheers,
 -- Guido
#!/bin/sh
#
# name        : apmd-compat
# author      : Guido Guenther <[EMAIL PROTECTED]>
# description : Execute scripts in /etc/apm for compatibility
#
# --- end of public part -- don't change below this line ---

. /etc/power/config

[ "$apmd_compat" = "no" ] && exit 0

case "$2" in
  battery)
        if [ -x /etc/apm/apmd_proxy ]; then 
                /etc/apm/apmd_proxy change power
        else
                run-parts --arg=change --arg=power /etc/apm/event.d     
                if [ -d /etc/apm/other.d ]; then
                        run-parts --arg=change --arg=power /etc/apm/other.d
                fi
        fi
  ;;
  ac)
        if [ -x /etc/apm/apmd_proxy ]; then 
                /etc/apm/apmd_proxy change power
        else
                run-parts --arg=change --arg=power /etc/apm/event.d     
                if [ -d /etc/apm/other.d ]; then
                        run-parts --arg=change --arg=power /etc/apm/other.d
                fi
        fi
  ;;
esac

case "$1" in
  sleep)
        if [ -x /etc/apm/apmd_proxy ]; then 
                /etc/apm/apmd_proxy suspend user
        else    
                run-parts --arg=suspend --arg=user /etc/apm/event.d
                if [ -d /etc/apm/suspend.d ]; then
                        run-parts --arg=suspend --arg=user /etc/apm/suspend.d
                fi
        fi
  ;;
  wakeup)
        if [ -x /etc/apm/apmd_proxy ]; then 
                /etc/apm/apmd_proxy resume suspend
        else
                if [ -d /etc/apm/resume.d ]; then
                        run-parts --arg=resume --arg=suspend /etc/apm/resume.d
                fi
                run-parts --arg=resume --arg=suspend /etc/apm/event.d
        fi
  ;;
esac

Attachment: signature.asc
Description: Digital signature

Reply via email to