summaryrefslogtreecommitdiff
path: root/markad.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'markad.cpp')
-rw-r--r--markad.cpp57
1 files changed, 54 insertions, 3 deletions
diff --git a/markad.cpp b/markad.cpp
index db134e3..6142131 100644
--- a/markad.cpp
+++ b/markad.cpp
@@ -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;
}