On Sat, Jul 14, 2007 at 11:08:30AM +0200, martin f krafft wrote:
> also sprach Andrew Pimlott <[EMAIL PROTECTED]> [2007.07.13.2224 +0200]:
> > One solution would be for hibernate to recognize the 0x20 exit status
> > from "s2ram -n".  There could be an option "USuspendRamUnsureOk yes"
> > that tells hibernate to proceed in this case, and not pass -f to s2ram.
> > Just an idea, maybe you know a better way.
> 
> Good idea. I've implemented this; does the following patch work for
> you?

Not quite--the unsure check should be in EnsureUSuspendCapable, since
"-n" mode is the only place where s2ram exits with a non-zero status for
"unsure" systems.  Here is an alternative, that I've quickly tested, but
be warned that I don't do much shell scripting.

Andrew

--- ususpend.bak        2007-07-16 21:09:42.000000000 -0700
+++ ususpend    2007-07-16 23:03:21.000000000 -0700
@@ -6,6 +6,7 @@
 
 AddConfigHelp "USuspendMethod <disk|ram|both>" "Enables use of the uswsusp 
suspend method of newer kernels (>= 2.6.17rc1)"
 AddConfigHelp "USuspendRamForce <boolean>" "Passes the -f flag to s2ram to 
force suspending even if the machine is not recognised"
+AddConfigHelp "USuspendRamUnsureOk <boolean>" "Instructs s2ram to continue 
when it's unsure about the system type, thus not requiring -f to be passed"
 AddConfigHelp "USuspendRamVbeSave <boolean>" "Passes the -s flag to s2ram to 
save VBE state before suspending and restore after resume"
 AddConfigHelp "USuspendRamVbePost <boolean>" "Passes the -p flag to s2ram to 
VBE POST the graphics card after resume"
 AddConfigHelp "USuspendRamVbeMode <boolean>" "Passes the -m flag to s2ram to 
get VBE mode before suspend and set it after resume"
@@ -18,6 +19,7 @@
 USUSPEND_DEVICE=/dev/snapshot
 USUSPEND_PROG=s2disk
 USUSPEND_RAM_FORCE=0
+USUSPEND_RAM_UNSUREOK=0
 USUSPEND_RAM_VBESAVE=0
 USUSPEND_RAM_VBEPOST=0
 USUSPEND_RAM_VBEMODE=0
@@ -49,6 +51,9 @@
        ususpendramforce)
            BoolIsOn "$1" "$2" && USUSPEND_RAM_FORCE=1 || return 0
            ;;
+       ususpendramunsureok)
+           BoolIsOn "$1" "$2" && USUSPEND_RAM_UNSUREOK=1 || return 0
+           ;;
        ususpendramvbesave)
            BoolIsOn "$1" "$2" && USUSPEND_RAM_VBESAVE=1 || return 0
            ;;
@@ -110,10 +115,21 @@
        vecho 0 "$USUSPEND_PROG not installed."
        return 2
     fi
-    if [ "$USUSPEND_PROG" = s2ram ] && [ $USUSPEND_RAM_FORCE -eq 0 ] \
-           && ! $USUSPEND_PROG -n >/dev/null; then
-       vecho 0 "$USUSPEND_PROG: unknown machine, see s2ram(8) and the 
USuspendRamForce option"
-       return 2
+    if [ "$USUSPEND_PROG" = s2ram ] && [ $USUSPEND_RAM_FORCE -eq 0 ]; then
+       $USUSPEND_PROG -n >/dev/null
+       ret=$?
+       case "$ret/$USUSPEND_RAM_UNSUREOK" in
+           0/*) :;;
+           32/1) :;; # unsure, but USuspendRamUnsureOk passed
+           32/*)
+               vecho 0 "$USUSPEND_PROG: unsure about your machine, see the 
USuspendRamUnsureOk option"
+               return 2
+               ;;
+           *)
+               vecho 0 "$USUSPEND_PROG: unknown machine, see s2ram(8) and the 
USuspendRamForce option"
+               return 2
+               ;;
+       esac
     fi
     if ! test -f $USUSPEND_STATE_FILE ; then
        vecho 0 "Your kernel does not have power management built in."



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to