diff options
Diffstat (limited to 'svdrp.c')
-rw-r--r-- | svdrp.c | 66 |
1 files changed, 65 insertions, 1 deletions
@@ -10,7 +10,7 @@ * and interact with the Video Disk Recorder - or write a full featured * graphical interface that sits on top of an SVDRP connection. * - * $Id: svdrp.c 1.25 2001/10/07 15:13:42 kls Exp $ + * $Id: svdrp.c 1.26 2001/10/27 11:35:38 kls Exp $ */ #include "svdrp.h" @@ -120,6 +120,12 @@ const char *HelpPages[] = { " it returns the current channel number and name.", "DELC <number>\n" " Delete channel.", + "DELR <number>\n" + " Delete the recording with the given number. Before a recording can be\n" + " deleted, an LSTR command must have been executed in order to retrieve\n" + " the recording numbers. The numbers don't change during subsequent DELR\n" + " commands. CAUTION: THERE IS NO CONFIRMATION PROMPT WHEN DELETING A\n" + " RECORDING - BE SURE YOU KNOW WHAT YOU ARE DOING!", "DELT <number>\n" " Delete timer.", "GRAB <filename> [ jpeg | pnm [ <quality> [ <sizex> <sizey> ] ] ]\n" @@ -137,6 +143,9 @@ const char *HelpPages[] = { " containing the given string as part of their name are listed.", "LSTE\n" " List EPG data.", + "LSTR [ <number> ]\n" + " List recordings. Without option, all recordings are listed. Otherwise\n" + " the summary for the given recording is listed.", "LSTT [ <number> ]\n" " List timers. Without option, all timers are listed. Otherwise\n" " only the given timer is listed.", @@ -380,6 +389,27 @@ void cSVDRP::CmdDELC(const char *Option) Reply(502, "DELC not yet implemented"); } +void cSVDRP::CmdDELR(const char *Option) +{ + if (*Option) { + if (isnumber(Option)) { + cRecording *recording = Recordings.Get(strtol(Option, NULL, 10) - 1); + if (recording) { + if (recording->Delete()) + Reply(250, "Recording \"%s\" deleted", Option); + else + Reply(554, "Error while deleting recording!"); + } + else + Reply(550, "Recording \"%s\" not found%s", Option, Recordings.Count() ? "" : " (use LSTR before deleting)"); + } + else + Reply(501, "Error in recording number \"%s\"", Option); + } + else + Reply(501, "Missing recording number"); +} + void cSVDRP::CmdDELT(const char *Option) { if (*Option) { @@ -589,6 +619,38 @@ void cSVDRP::CmdLSTE(const char *Option) Reply(451, "Can't get EPG data"); } +void cSVDRP::CmdLSTR(const char *Option) +{ + bool recordings = Recordings.Load(); + if (*Option) { + if (isnumber(Option)) { + cRecording *recording = Recordings.Get(strtol(Option, NULL, 10) - 1); + if (recording) { + if (recording->Summary()) { + char *summary = strdup(recording->Summary()); + Reply(250, "%s", strreplace(summary,'\n','|')); + delete summary; + } + else + Reply(550, "No summary availabe"); + } + else + Reply(550, "Recording \"%s\" not found", Option); + } + else + Reply(501, "Error in recording number \"%s\"", Option); + } + else if (recordings) { + cRecording *recording = Recordings.First(); + while (recording) { + Reply(recording == Recordings.Last() ? 250 : -250, "%d %s", recording->Index() + 1, recording->Title(' ', true)); + recording = Recordings.Next(recording); + } + } + else + Reply(550, "No recordings available"); +} + void cSVDRP::CmdLSTT(const char *Option) { if (*Option) { @@ -910,12 +972,14 @@ void cSVDRP::Execute(char *Cmd) s = skipspace(s); if (CMD("CHAN")) CmdCHAN(s); else if (CMD("DELC")) CmdDELC(s); + else if (CMD("DELR")) CmdDELR(s); else if (CMD("DELT")) CmdDELT(s); else if (CMD("GRAB")) CmdGRAB(s); else if (CMD("HELP")) CmdHELP(s); else if (CMD("HITK")) CmdHITK(s); else if (CMD("LSTC")) CmdLSTC(s); else if (CMD("LSTE")) CmdLSTE(s); + else if (CMD("LSTR")) CmdLSTR(s); else if (CMD("LSTT")) CmdLSTT(s); else if (CMD("MESG")) CmdMESG(s); else if (CMD("MODC")) CmdMODC(s); |