1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
Written by Matthias Schwarzott <zzam@gentoo.org>
GENTOO_USE: !shutdown_rewrite
GENTOO_CAP: CAP_SHUTDOWN_SVDRP
diff -ru --exclude='*.o' vdr-1.3.36-orig/svdrp.c vdr-1.3.36/svdrp.c
--- vdr-1.3.36-orig/svdrp.c 2005-12-29 00:02:26.000000000 +0100
+++ vdr-1.3.36/svdrp.c 2005-12-29 00:18:45.000000000 +0100
@@ -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(true);
else Reply(500, "Command unrecognized: \"%s\"", Cmd);
}
diff -ru --exclude='*.o' vdr-1.3.36-orig/svdrp.h vdr-1.3.36/svdrp.h
--- vdr-1.3.36-orig/svdrp.h 2005-12-29 00:02:26.000000000 +0100
+++ vdr-1.3.36/svdrp.h 2005-12-30 02:28:08.000000000 +0100
@@ -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);
diff -ru --exclude='*.o' vdr-1.3.36-orig/vdr.c vdr-1.3.36/vdr.c
--- vdr-1.3.36-orig/vdr.c 2005-12-29 00:02:26.000000000 +0100
+++ vdr-1.3.36/vdr.c 2005-12-29 00:09:49.000000000 +0100
@@ -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;
|