diff options
author | Jochen Dolze <vdr@dolze.de> | 2010-03-22 16:22:28 +0100 |
---|---|---|
committer | Jochen Dolze <vdr@dolze.de> | 2010-03-22 16:22:28 +0100 |
commit | 9344b4ed2f830a78679dc80c23bd44d82098ac1f (patch) | |
tree | 1daaf2dab4f56fc039339761c5e1432d57a6d71c /markad.cpp | |
parent | ac8f47a0ece76e2abcfd096b1a02ba788e1bbeac (diff) | |
download | vdr-plugin-markad-9344b4ed2f830a78679dc80c23bd44d82098ac1f.tar.gz vdr-plugin-markad-9344b4ed2f830a78679dc80c23bd44d82098ac1f.tar.bz2 |
Revoked plugin scan
Diffstat (limited to 'markad.cpp')
-rw-r--r-- | markad.cpp | 57 |
1 files changed, 54 insertions, 3 deletions
@@ -15,23 +15,74 @@ cPluginMarkAd::cPluginMarkAd(void) // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT! statusMonitor=NULL; + bindir=strdup(DEF_BINDIR); + logodir=strdup(DEF_LOGODIR); } cPluginMarkAd::~cPluginMarkAd() { // Clean up after yourself! if (statusMonitor) delete statusMonitor; + if (bindir) free(bindir); + if (logodir) free(logodir); } const char *cPluginMarkAd::CommandLineHelp(void) { // Return a string that describes all known command line options. - return NULL; + return " -b DIR, --bindir=DIR use DIR as location for markad executable\n" + " (default: /usr/bin)\n" + " -l DIR --logocachedir=DIR use DIR as location for markad logos\n" + " (default: /var/lib/markad)\n"; } bool cPluginMarkAd::ProcessArgs(int argc, char *argv[]) { - // Implement command line argument processing here if applicable. + // Command line argument processing + static struct option long_options[] = + { + { "bindir", required_argument, NULL, 'b' + }, + { "logocachedir", required_argument, NULL, 'l'}, + { NULL } + }; + + int c; + while ((c = getopt_long(argc, argv, "b:l:", long_options, NULL)) != -1) + { + switch (c) + { + case 'b': + if ((access(optarg,R_OK | X_OK))!=-1) + { + if (bindir) free(bindir); + bindir=strdup(optarg); + } + else + { + fprintf(stderr,"markad: can't access bin directory: %s\n", + optarg); + return false; + } + break; + + case 'l': + if ((access(optarg,R_OK))!=-1) + { + if (logodir) free(logodir); + logodir=strdup(optarg); + } + else + { + fprintf(stderr,"markad: can't access logo directory: %s\n", + optarg); + return false; + } + break; + default: + return false; + } + } return true; } @@ -44,7 +95,7 @@ bool cPluginMarkAd::Initialize(void) bool cPluginMarkAd::Start(void) { // Start any background activities the plugin shall perform. - statusMonitor = new cStatusMarkAd(); + statusMonitor = new cStatusMarkAd(bindir,logodir); return true; } |