static void test_parse_sleep_config(void) { const char *verb; log_info("/* %s */", __func__); FOREACH_STRING(verb, "suspend", "hibernate", "hybrid-sleep", "suspend-then-hibernate") assert_se(parse_sleep_config(verb, NULL, NULL, NULL, NULL) == 0); }
int can_sleep(const char *verb) { _cleanup_strv_free_ char **modes = NULL, **states = NULL; int r; assert(streq(verb, "suspend") || streq(verb, "hibernate") || streq(verb, "hybrid-sleep")); r = parse_sleep_config(verb, &modes, &states); if (r < 0) return false; if (!can_sleep_state(states) || !can_sleep_disk(modes)) return false; return streq(verb, "suspend") || enough_memory_for_hibernation(); }