From ecd55f9647d139784857df994d0f5b965d164547 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 8 Apr 2010 08:51:00 +0200 Subject: [PATCH] rtcwake: does miss the "off" option Reported-by: Piergiorgio Sartor Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=580296 Signed-off-by: Karel Zak --- sys-utils/rtcwake.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/sys-utils/rtcwake.c b/sys-utils/rtcwake.c index 7b2df26a..344fed76 100644 --- a/sys-utils/rtcwake.c +++ b/sys-utils/rtcwake.c @@ -468,15 +468,19 @@ int main(int argc, char **argv) fflush(stdout); usleep(10 * 1000); - if (strcmp(suspend, "no") == 0) + if (strcmp(suspend, "no") == 0) { + if (verbose) + printf(_("suspend mode: no; leaving\n")); + close(fd); exit(EXIT_SUCCESS); - else if (strcmp(suspend, "on") != 0) { - sync(); - suspend_system(suspend); + } else if (strcmp(suspend, "off") == 0) { char *arg[4]; int i = 0; + if (verbose) + printf(_("suspend mode: off; executing %s\n"), + _PATH_SHUTDOWN); arg[i++] = _PATH_SHUTDOWN; arg[i++] = "-P"; arg[i++] = "now"; @@ -487,9 +491,13 @@ int main(int argc, char **argv) fprintf(stderr, _("%s: unable to execute %s: %s\n"), progname, _PATH_SHUTDOWN, strerror(errno)); rc = EXIT_FAILURE; - } else { + + } else if (strcmp(suspend, "on") == 0) { unsigned long data; + if (verbose) + printf(_("suspend mode: on; reading rtc\n")); + do { t = read(fd, &data, sizeof data); if (t < 0) { @@ -499,6 +507,12 @@ int main(int argc, char **argv) if (verbose) printf("... %s: %03lx\n", devname, data); } while (!(data & RTC_AF)); + + } else { + if (verbose) + printf(_("suspend mode: %s; suspending system\n"), suspend); + sync(); + suspend_system(suspend); } if (ioctl(fd, RTC_AIE_OFF, 0) < 0) -- 2.39.5