#!/usr/bin/ash
# SPDX-License-Identifier: GPL-2.0-only

run_hook() {
    local resumedev noresume resume rootdelay

    noresume="$(getarg noresume)"
    if [ -n "$noresume" ]; then
        return 0
    fi

    # systemd-hibernate-resume supports resuming from 'HibernateLocation'
    # EFI variable. $resume can be empty in this case.
    if [ -x /usr/lib/systemd/systemd-hibernate-resume ]; then
        /usr/lib/systemd/systemd-hibernate-resume
        return
    fi

    resume="$(getarg resume)"
    if [ -z "$resume" ]; then
        err 'resume: no device specified for hibernation'
        return 1
    fi

    if [ ! -e /sys/power/resume ]; then
        err 'resume: no hibernation support found'
        return 1
    fi

    rootdelay="$(getarg rootdelay)"
    if resumedev="$(resolve_device "$resume" "$rootdelay")"; then
        # shellcheck disable=SC3001
        read -r major minor < <(stat -Lc '0x%t 0x%T' "$resumedev")
        printf '%d:%d' "$major" "$minor" >/sys/power/resume
        return 0
    fi

    err "resume: hibernation device '$resume' not found"
    return 1
}

# vim: set ft=sh ts=4 sw=4 et:
