diff options
author | lado <herrlado@gmail.com> | 2011-11-06 15:09:56 +0100 |
---|---|---|
committer | lado <herrlado@gmail.com> | 2011-11-06 15:09:56 +0100 |
commit | 8996a0601d2e8708209b5b9d4d4c1b397cbf8056 (patch) | |
tree | e108c3fd86c2661f90e26e235c9990d4e4e660c0 /vdr-vdrmanager/vdrmanager.cpp | |
parent | 3248a802c6b4559416fbea3a1ef84145dc1e66f9 (diff) | |
download | vdr-manager-8996a0601d2e8708209b5b9d4d4c1b397cbf8056.tar.gz vdr-manager-8996a0601d2e8708209b5b9d4d4c1b397cbf8056.tar.bz2 |
new option forceCheckSvdrp
getopts for arg parsing
Diffstat (limited to 'vdr-vdrmanager/vdrmanager.cpp')
-rw-r--r-- | vdr-vdrmanager/vdrmanager.cpp | 169 |
1 files changed, 92 insertions, 77 deletions
diff --git a/vdr-vdrmanager/vdrmanager.cpp b/vdr-vdrmanager/vdrmanager.cpp index b885981..dfc3bfe 100644 --- a/vdr-vdrmanager/vdrmanager.cpp +++ b/vdr-vdrmanager/vdrmanager.cpp @@ -15,108 +15,123 @@ #define ANDROVDR_PORT 6420 -const char *VERSION = "0.2"; -static const char *DESCRIPTION = "VDR-Manager support plugin"; +const char *VERSION = "0.2"; +static const char *DESCRIPTION = "VDR-Manager support plugin"; -class cPluginAndroVdr : public cPlugin { +class cPluginAndroVdr: public cPlugin { private: - // Add any member variables or functions you may need here. - cAndroVdrThread * Thread; - int port; - const char * password; + // Add any member variables or functions you may need here. + cAndroVdrThread * Thread; + int port; + const char * password; + bool forceCheckSvdrp; protected: public: - cPluginAndroVdr(void); - virtual ~cPluginAndroVdr(); - virtual const char *Version(void) { return VERSION; } - virtual const char *Description(void) { return DESCRIPTION; } - virtual const char *CommandLineHelp(void); - virtual bool Initialize(void); - virtual bool Start(void); - virtual void Stop(void); - virtual void Housekeeping(void); - virtual const char *MainMenuEntry(void) { return NULL; } - virtual cOsdObject *MainMenuAction(void); - virtual cMenuSetupPage *SetupMenu(void); - virtual bool ProcessArgs(int argc, char *argv[]); + cPluginAndroVdr(void); + virtual ~cPluginAndroVdr(); + virtual const char *Version(void) { + return VERSION; + } + virtual const char *Description(void) { + return DESCRIPTION; + } + virtual const char *CommandLineHelp(void); + virtual bool Initialize(void); + virtual bool Start(void); + virtual void Stop(void); + virtual void Housekeeping(void); + virtual const char *MainMenuEntry(void) { + return NULL; + } + virtual cOsdObject *MainMenuAction(void); + virtual cMenuSetupPage *SetupMenu(void); + virtual bool ProcessArgs(int argc, char *argv[]); }; -cPluginAndroVdr::cPluginAndroVdr(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! - Thread = NULL; - port = ANDROVDR_PORT; - password = ""; +cPluginAndroVdr::cPluginAndroVdr(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! + Thread = NULL; + port = ANDROVDR_PORT; + password = ""; } -cPluginAndroVdr::~cPluginAndroVdr() -{ - // Clean up after yourself! +cPluginAndroVdr::~cPluginAndroVdr() { + // Clean up after yourself! } -cOsdObject * cPluginAndroVdr::MainMenuAction(void) -{ - return NULL; +cOsdObject * cPluginAndroVdr::MainMenuAction(void) { + return NULL; } -cMenuSetupPage * cPluginAndroVdr::SetupMenu(void) -{ - return NULL; +cMenuSetupPage * cPluginAndroVdr::SetupMenu(void) { + return NULL; } - -const char * cPluginAndroVdr::CommandLineHelp(void) -{ - return " -p port port number to listen to\n" - " -P password password (none if not given)"; + +const char * cPluginAndroVdr::CommandLineHelp(void) { + return " -p port port number to listen to\n" + " -P password password (none if not given)" + " -s force check against svdrphosts.conf"; } -bool cPluginAndroVdr::ProcessArgs(int argc, char *argv[]) -{ - for(int i = 1; i < argc; i++) { - if (i < argc - 1) { - if (strcmp(argv[i], "-p") == 0) { - port = atoi(argv[++i]); - } else if (strcmp(argv[i], "-P") == 0) { - password = argv[++i]; - } - } - } - - // default port - if (port <= 0) - port = ANDROVDR_PORT; - - return true; +bool cPluginAndroVdr::ProcessArgs(int argc, char *argv[]) { + dsyslog("forceCheckSvdrp = true %d", argc); + + int c; + while ((c = getopt(argc, argv, "p:P:s")) != -1) + switch (c) { + case 'p': + port = atoi(optarg); + break; + case 'P': + password = optarg; + break; + case 's': + forceCheckSvdrp = true; + break; + case '?': + if (optopt == 'c') { + fprintf(stderr, "Option -%c requires an argument.\n", optopt); + } else if (isprint(optopt)) + fprintf(stderr, "Unknown option `-%c'.\n", optopt); + else + fprintf(stderr, "Unknown option character `\\x%x'.\n", optopt); + return false; + default: + return false; + } + +// default port + if (port <= 0) + port = ANDROVDR_PORT; + + return true; } -bool cPluginAndroVdr::Initialize(void) -{ - // Initialize any background activities the plugin shall perform. +bool cPluginAndroVdr::Initialize(void) { +// Initialize any background activities the plugin shall perform. - // Start any background activities the plugin shall perform. - Thread = new cAndroVdrThread(port, password); +// Start any background activities the plugin shall perform. + Thread = new cAndroVdrThread(port, password, forceCheckSvdrp); - return Thread != NULL; + return Thread != NULL; } -bool cPluginAndroVdr::Start(void) -{ - Thread->Start(); +bool cPluginAndroVdr::Start(void) { + Thread->Start(); - return true; + return true; } -void cPluginAndroVdr::Stop(void) -{ - // Stop any background activities the plugin shall perform. - Thread->Shutdown(); +void cPluginAndroVdr::Stop(void) { +// Stop any background activities the plugin shall perform. + Thread->Shutdown(); } -void cPluginAndroVdr::Housekeeping(void) -{ - // Perform any cleanup or other regular tasks. +void cPluginAndroVdr::Housekeeping(void) { +// Perform any cleanup or other regular tasks. } -VDRPLUGINCREATOR(cPluginAndroVdr); // Don't touch this! +VDRPLUGINCREATOR(cPluginAndroVdr); +// Don't touch this! |