From 78d1fe10a449fa080f515216b9016b6d8e00fa1b Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 3 Nov 2001 12:23:45 +0100 Subject: [PATCH] Added a fifth parameter to the 'shutdown' call that indicates the reason for this shutdown request --- HISTORY | 2 ++ INSTALL | 8 +++++++- vdr.c | 7 ++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/HISTORY b/HISTORY index e5a02ede..42c4b8b1 100644 --- a/HISTORY +++ b/HISTORY @@ -856,3 +856,5 @@ Video Disk Recorder Revision History out should always be in sync. - Fixed handling the "Power" key in case Setup.MinUserInactivity is set to 0 to disable automatic shutdown. +- Added a fifth parameter to the 'shutdown' call that indicates the reason for + this shutdown request (see INSTALL). diff --git a/INSTALL b/INSTALL index e7e67316..20961b8e 100644 --- a/INSTALL +++ b/INSTALL @@ -127,7 +127,7 @@ active, the user has been inactive for at least MinUserInactivity minutes and the next timer event is at least MinEventTimeout minutes in the future (see the Setup parameters in MANUAL). -The command given in the '-s' option will be called with four parameters. +The command given in the '-s' option will be called with five parameters. The first one is the time (in UTC) of the next timer event (as a time_t type number), and the second one is the number of seconds from the current time until the next timer event. Your program can choose which one to use @@ -153,6 +153,12 @@ contains the file name of the recording as defined in the timer (or an empty string if no timer is present). These can be used by the shutdown program to show that information on some display interface etc. +The fifth parameter indicates the reason why the shutdown was requested. +'0' means this is an automatic shutdown due to some timeout, while '1' means +that this is a user requested shutdown (resulting from pressing the "Power" +key). The shutdown program may use this information to decide whether or +not to actually perform the system shutdown. + If a timer is currently recording, the parameters will reflect the start time of that timer. This means that the first parameter will be a time in the past, and the second parameter will be a negative number. This only diff --git a/vdr.c b/vdr.c index c62a2856..886b0917 100644 --- a/vdr.c +++ b/vdr.c @@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/people/kls/vdr * - * $Id: vdr.c 1.88 2001/11/03 11:48:21 kls Exp $ + * $Id: vdr.c 1.89 2001/11/03 12:23:45 kls Exp $ */ #include @@ -503,11 +503,12 @@ int main(int argc, char *argv[]) dsyslog(LOG_INFO, "next timer event at %s", ctime(&Next)); if (WatchdogTimeout > 0) signal(SIGALRM, SIG_IGN); - if (Interface->Confirm(tr("Press any key to cancel shutdown"), LastActivity == 1 ? 5 : SHUTDOWNWAIT, true)) { + bool UserShutdown = key == kPower; + if (Interface->Confirm(tr("Press any key to cancel shutdown"), UserShutdown ? 5 : SHUTDOWNWAIT, true)) { int Channel = timer ? timer->channel : 0; const char *File = timer ? timer->file : ""; char *cmd; - asprintf(&cmd, "%s %ld %ld %d '%s'", Shutdown, Next, Delta, Channel, File); + asprintf(&cmd, "%s %ld %ld %d '%s' %d", Shutdown, Next, Delta, Channel, File, UserShutdown); isyslog(LOG_INFO, "executing '%s'", cmd); SystemExec(cmd); delete cmd;