[ANNOUNCE] svdrp shutdown patch 0.1
Commit Message
Hallo!
This is the first release of my "svdrp shutdown patch". It adds the new
svdrp-command "DOWN".
This command triggers an automatic shutdown like the one when reaching
minuserinactivity.
An optional given number is the additional time in minutes after which this
shutdown should start by showing "press any key to abort shutdown" for 5min.
It is mainly thought to replace
svdrpsend.pl hitk power
inside some scripts by
svdrpsend.pl down
to give the user 5minutes to abort shutdown instead of some seconds.
Our primary use is inside the shutdown-script in the abort-case (for example
there are user logged in) to trigger a shutdown-retry in 5 or 10 minutes.
Matthias
@@ -293,6 +293,9 @@
" Updates a timer. Settings must be in the same format as returned\n"
" by the LSTT command. If a timer with the same channel, day, start\n"
" and stop time does not yet exists, it will be created.",
+ "DOWN [ <minutes> ]\n"
+ " Starts an automatic shutdown (with 5 minutes waiting time) in given\n"
+ " minutes or now if no number was given.",
"VOLU [ <number> | + | - | mute ]\n"
" Set the audio volume to the given number (which is limited to the range\n"
" 0...255). If the special options '+' or '-' are given, the volume will\n"
@@ -1342,6 +1345,16 @@
Reply(501, "Missing timer settings");
}
+extern time_t LastActivity;
+void cSVDRP::CmdDOWN(const char *Option)
+{
+ if (isnumber(Option))
+ LastActivity = time(NULL) - Setup.MinUserInactivity*60 + strtol(Option, NULL, 10)*60;
+ else
+ LastActivity = time(NULL) - Setup.MinUserInactivity*60;
+ Reply(250, "Automatic shutdown triggered");
+}
+
void cSVDRP::CmdVOLU(const char *Option)
{
if (*Option) {
@@ -1413,6 +1426,7 @@
else if (CMD("STAT")) CmdSTAT(s);
else if (CMD("UPDT")) CmdUPDT(s);
else if (CMD("VOLU")) CmdVOLU(s);
+ else if (CMD("DOWN")) CmdDOWN(s);
else if (CMD("QUIT")) Close();
else Reply(500, "Command unrecognized: \"%s\"", Cmd);
}
@@ -59,6 +59,7 @@
void CmdDELC(const char *Option);
void CmdDELR(const char *Option);
void CmdDELT(const char *Option);
+ void CmdDOWN(const char *Option);
void CmdEDIT(const char *Option);
void CmdGRAB(const char *Option);
void CmdHELP(const char *Option);
@@ -89,6 +89,8 @@
exit(1);
}
+time_t LastActivity;
+
int main(int argc, char *argv[])
{
// Save terminal settings:
@@ -395,7 +397,7 @@
int PreviousChannel[2] = { 1, 1 };
int PreviousChannelIndex = 0;
time_t LastChannelChanged = time(NULL);
- time_t LastActivity = 0;
+ LastActivity = 0; // now being a global variable
time_t LastCamMenu = 0;
int MaxLatencyTime = 0;
bool ForceShutdown = false;