17
17
* along with this program; if not, write to the Free Software
18
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21
* $Date: 2010-01-29 10:34:44 +0100 (Fri, 29 Jan 2010) $
21
* $Date: 2013-06-17 22:39:46 +0200 (Mon, 17 Jun 2013) $
59
60
const char* m_szWorkingDir;
60
61
const char** m_szArgs;
63
const char* m_szStdArgs[2];
62
64
const char* m_szInfoName;
63
const char* m_szDefaultKindPrefix;
65
const char* m_szLogPrefix;
64
66
EnvironmentStrings m_environmentStrings;
65
Options::EScriptLogKind m_eDefaultLogKind;
66
67
bool m_bTerminated;
70
char m_szCmdLine[2048];
73
76
void ProcessOutput(char* szText);
74
void PrepareEnvironmentStrings();
77
virtual void AddMessage(Message::EKind eKind, bool bDefaultKind, Options::EMessageTarget eMessageTarget, const char* szText);
77
virtual bool ReadLine(char* szBuf, int iBufSize, FILE* pStream);
78
void PrintMessage(Message::EKind eKind, const char* szFormat, ...);
79
virtual void AddMessage(Message::EKind eKind, const char* szText);
80
bool GetTerminated() { return m_bTerminated; }
82
void PrepareEnvOptions(const char* szStripPrefix);
83
void PrepareEnvParameters(NZBInfo* pNZBInfo, const char* szStripPrefix);
80
87
ScriptController();
88
95
void SetArgs(const char** szArgs, bool bFreeArgs) { m_szArgs = szArgs; m_bFreeArgs = bFreeArgs; }
89
96
void SetInfoName(const char* szInfoName) { m_szInfoName = szInfoName; }
90
97
const char* GetInfoName() { return m_szInfoName; }
91
void SetDefaultKindPrefix(const char* szDefaultKindPrefix) { m_szDefaultKindPrefix = szDefaultKindPrefix; }
92
void SetDefaultLogKind(Options::EScriptLogKind eDefaultLogKind) { m_eDefaultLogKind = eDefaultLogKind; }
98
void SetLogPrefix(const char* szLogPrefix) { m_szLogPrefix = szLogPrefix; }
93
99
void SetEnvVar(const char* szName, const char* szValue);
100
void SetEnvVarSpecial(const char* szPrefix, const char* szName, const char* szValue);
96
class PostScriptController : public Thread, ScriptController
103
class PostScriptController : public Thread, public ScriptController
99
106
PostInfo* m_pPostInfo;
100
bool m_bNZBFileCompleted;
101
bool m_bHasFailedParJobs;
107
char m_szNZBName[1024];
109
void ExecuteScript(const char* szScriptName, const char* szDisplayName, const char* szLocation);
110
void PrepareParams(const char* szScriptName);
111
ScriptStatus::EStatus AnalyseExitCode(int iExitCode);
113
typedef std::deque<char*> FileList;
104
virtual void AddMessage(Message::EKind eKind, bool bDefaultKind, Options::EMessageTarget eMessageTarget, const char* szText);
116
virtual void AddMessage(Message::EKind eKind, const char* szText);
107
119
virtual void Run();
108
120
virtual void Stop();
109
static void StartScriptJob(PostInfo* pPostInfo, const char* szScript,
110
bool bNZBFileCompleted, bool bHasFailedParJobs);
121
static void StartJob(PostInfo* pPostInfo);
122
static void InitParamsForNewNZB(NZBInfo* pNZBInfo);
113
125
class NZBScriptController : public ScriptController
116
129
char** m_pCategory;
117
NZBParameterList* m_pParameterList;
131
NZBParameterList* m_pParameters;
120
virtual void AddMessage(Message::EKind eKind, bool bDefaultKind, Options::EMessageTarget eMessageTarget, const char* szText);
123
static void ExecuteScript(const char* szScript, const char* szNZBFilename, const char* szDirectory, char** pCategory, NZBParameterList* pParameterList);
126
class SchedulerScriptController : public Thread, ScriptController
137
virtual void AddMessage(Message::EKind eKind, const char* szText);
140
static void ExecuteScript(const char* szScript, const char* szNZBFilename, const char* szDirectory,
141
char** pNZBName, char** pCategory, int* iPriority, NZBParameterList* pParameters,
142
bool* bAddTop, bool* bAddPaused);
145
class NZBAddedScriptController : public Thread, public ScriptController
152
static void StartScript(DownloadQueue* pDownloadQueue, NZBInfo *pNZBInfo, const char* szScript);
155
class SchedulerScriptController : public Thread, public ScriptController
129
158
virtual void Run();