6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering/***
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering This file is part of systemd.
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering Copyright 2012 Lennart Poettering
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering systemd is free software; you can redistribute it and/or modify it
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering under the terms of the GNU Lesser General Public License as published by
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering the Free Software Foundation; either version 2.1 of the License, or
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering (at your option) any later version.
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering systemd is distributed in the hope that it will be useful, but
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering Lesser General Public License for more details.
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering You should have received a copy of the GNU Lesser General Public License
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering***/
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering#include <stdio.h>
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering#include "log.h"
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek#include "sleep-config.h"
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek#include "strv.h"
cf0fbc49e67b55f8d346fc94de28c90113505297Thomas Hindoe Paaboel Andersen#include "util.h"
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering
e9e506ed436859048f6efc3b5962c6809f1a592aZbigniew Jędrzejewski-Szmekstatic void test_sleep(void) {
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek _cleanup_strv_free_ char
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek **standby = strv_new("standby", NULL),
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek **mem = strv_new("mem", NULL),
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek **disk = strv_new("disk", NULL),
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek **suspend = strv_new("suspend", NULL),
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek **reboot = strv_new("reboot", NULL),
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek **platform = strv_new("platform", NULL),
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek **shutdown = strv_new("shutdown", NULL),
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek **freez = strv_new("freeze", NULL);
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek
69ab80881552d5f79ca95f6b3be48ad122ab1ec2Zbigniew Jędrzejewski-Szmek log_info("Standby configured: %s", yes_no(can_sleep_state(standby) > 0));
69ab80881552d5f79ca95f6b3be48ad122ab1ec2Zbigniew Jędrzejewski-Szmek log_info("Suspend configured: %s", yes_no(can_sleep_state(mem) > 0));
69ab80881552d5f79ca95f6b3be48ad122ab1ec2Zbigniew Jędrzejewski-Szmek log_info("Hibernate configured: %s", yes_no(can_sleep_state(disk) > 0));
69ab80881552d5f79ca95f6b3be48ad122ab1ec2Zbigniew Jędrzejewski-Szmek log_info("Hibernate+Suspend (Hybrid-Sleep) configured: %s", yes_no(can_sleep_disk(suspend) > 0));
69ab80881552d5f79ca95f6b3be48ad122ab1ec2Zbigniew Jędrzejewski-Szmek log_info("Hibernate+Reboot configured: %s", yes_no(can_sleep_disk(reboot) > 0));
69ab80881552d5f79ca95f6b3be48ad122ab1ec2Zbigniew Jędrzejewski-Szmek log_info("Hibernate+Platform configured: %s", yes_no(can_sleep_disk(platform) > 0));
69ab80881552d5f79ca95f6b3be48ad122ab1ec2Zbigniew Jędrzejewski-Szmek log_info("Hibernate+Shutdown configured: %s", yes_no(can_sleep_disk(shutdown) > 0));
69ab80881552d5f79ca95f6b3be48ad122ab1ec2Zbigniew Jędrzejewski-Szmek log_info("Freeze configured: %s", yes_no(can_sleep_state(freez) > 0));
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek log_info("Suspend configured and possible: %s", yes_no(can_sleep("suspend") > 0));
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek log_info("Hibernation configured and possible: %s", yes_no(can_sleep("hibernate") > 0));
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek log_info("Hybrid-sleep configured and possible: %s", yes_no(can_sleep("hybrid-sleep") > 0));
e9e506ed436859048f6efc3b5962c6809f1a592aZbigniew Jędrzejewski-Szmek}
e9e506ed436859048f6efc3b5962c6809f1a592aZbigniew Jędrzejewski-Szmek
e9e506ed436859048f6efc3b5962c6809f1a592aZbigniew Jędrzejewski-Szmekint main(int argc, char* argv[]) {
e9e506ed436859048f6efc3b5962c6809f1a592aZbigniew Jędrzejewski-Szmek log_parse_environment();
e9e506ed436859048f6efc3b5962c6809f1a592aZbigniew Jędrzejewski-Szmek log_open();
e9e506ed436859048f6efc3b5962c6809f1a592aZbigniew Jędrzejewski-Szmek
e9e506ed436859048f6efc3b5962c6809f1a592aZbigniew Jędrzejewski-Szmek if (getuid() != 0)
ff9b60f38bf68eba4a47cabff14547d92e083214Torstein Husebø log_warning("This program is unlikely to work for unprivileged users");
e9e506ed436859048f6efc3b5962c6809f1a592aZbigniew Jędrzejewski-Szmek
e9e506ed436859048f6efc3b5962c6809f1a592aZbigniew Jędrzejewski-Szmek test_sleep();
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering return 0;
6524990fdc98370ecba5d9f73e67161e8798c010Lennart Poettering}