// This is here else it causes compile errors with something in libdvbmpeg
#include <vdr/menu.h>
-MVPClient::MVPClient(int tsocket)
+MVPClient::MVPClient(char* tconfigDirExtra, int tsocket)
: tcp(tsocket)
{
lp = NULL;
recordingManager = NULL;
log = Log::getInstance();
loggedIn = false;
+ configDirExtra = tconfigDirExtra;
}
MVPClient::~MVPClient()
// Open the config
- const char* configDir = cPlugin::ConfigDirectory();
+ const char* configDir = cPlugin::ConfigDirectory(configDirExtra);
if (!configDir)
{
log->log("Client", Log::DEBUG, "No config dir!");
}
char configFileName[PATH_MAX];
- snprintf(configFileName, PATH_MAX - strlen(configDir) - 17 - 20, "%s/vomp-%02X-%02X-%02X-%02X-%02X-%02X.conf", configDir, buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5]);
- //( ^^^^^^^^^^^^^eh?^^^^^^^^^^^^^)
+ snprintf(configFileName, PATH_MAX, "%s/vomp-%02X-%02X-%02X-%02X-%02X-%02X.conf", configDir, buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5]);
config.init(configFileName);
// Send the login reply
class MVPClient
{
public:
- MVPClient(int tsocket);
+ MVPClient(char* configDirExtra, int tsocket);
~MVPClient();
int run();
Config config;
MVPReceiver* lp;
bool loggedIn;
+ char* configDirExtra;
cRecordings* recordingManager;
return 1;
}
-int MVPServer::run()
+int MVPServer::run(char* tconfigDirExtra)
{
if (threadIsActive()) return 1;
+ configDirExtra = tconfigDirExtra;
+
// Start config
- const char* configDir = cPlugin::ConfigDirectory();
+ const char* configDir = cPlugin::ConfigDirectory(configDirExtra);
if (!configDir)
{
dsyslog("VOMP: Could not get config dir from VDR");
{
char configFileName[PATH_MAX];
snprintf(configFileName, PATH_MAX, "%s/vomp.conf", configDir);
+
if (config.init(configFileName))
{
dsyslog("VOMP: Config file found");
while(1)
{
clientSocket = accept(listeningSocket,(struct sockaddr *)&address, &length);
- MVPClient* m = new MVPClient(clientSocket);
+ MVPClient* m = new MVPClient(configDirExtra, clientSocket);
m->run();
}
}
MVPServer();
virtual ~MVPServer();
- int run();
+ int run(char* configDir);
int stop();
private:
Bootpd bootpd;
Tftpd tftpd;
int listeningSocket;
+ char* configDirExtra;
};
#endif
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/*
- * vomp-server.c: A plugin for the Video Disk Recorder
- *
- * See the README file for copyright information and how to reach the author.
- *
- * $Id$
- */
-
#include <vdr/plugin.h>
+#include <getopt.h>
#include "mvpserver.h"
-static const char *VERSION = "0.2.2";
+static const char *VERSION = "0.2.3";
static const char *DESCRIPTION = "VDR on MVP plugin by Chris Tallon";
class cPluginVompserver : public cPlugin
private:
MVPServer mvpserver;
+ char* configDir;
};
cPluginVompserver::cPluginVompserver(void)
// Initialize any member variables here.
// DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL
// VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT!
+
+ configDir = NULL;
}
bool cPluginVompserver::Start(void)
{
// Start any background activities the plugin shall perform.
- int success = mvpserver.run();
+ int success = mvpserver.run(configDir);
if (success) return true;
else return false;
}
const char *cPluginVompserver::CommandLineHelp(void)
{
// Return a string that describes all known command line options.
- return NULL;
+
+ return " -c dir config path relative to VDR plugins config path\n";
}
bool cPluginVompserver::ProcessArgs(int argc, char *argv[])
{
// Implement command line argument processing here if applicable.
+
+ int c;
+ while ((c = getopt(argc, argv, "c:")) != -1)
+ {
+ if (c == 'c')
+ {
+ configDir = optarg;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
return true;
}
}
VDRPLUGINCREATOR(cPluginVompserver); // Don't touch this!
+