#!/bin/sh

# Simple hibernate script
# Based on work from:
#    Bill Nottingham <notting@redhat.com>
#    Peter Jones <pjones@redhat.com>
#    David Zeuthen <davidz@redhat.com>
#    Matthias Hensler <matthias@wspse.de>

# The rule here? Simplicity.

export PM_MODE="hibernate"

. /etc/pm/functions
. /etc/pm/functions-suspend2

get_hibernate_method
method=$?
[ $method -eq 0 ] && exit 1

if [ $method -eq 1 ]; then
  [ -f /sys/power/disk ] || exit 1
  [ -f /sys/power/state ] || exit 1
else
  [ -f /proc/suspend2/do_suspend ] || exit 1
fi

take_suspend_lock || exit 1

default_resume_kernel

if [ $method -eq 1 ]; then
  run_hooks suspend
  sync ; sync ; sync
  echo -n "platform" > /sys/power/disk
  echo -n "disk" > /sys/power/state
  run_hooks resume reverse
else
  use_hibernate_script || run_hooks suspend
  use_hibernate_script || sync
  use_hibernate_script || echo -n "1" > /proc/suspend2/do_suspend
  use_hibernate_script && /usr/sbin/hibernate
  use_hibernate_script || run_hooks resume reverse
fi

remove_suspend_lock 200

