00001 #include <qapplication.h>
00002 #include <qstring.h>
00003 #include <qregexp.h>
00004 #include <qsqldatabase.h>
00005 #include <qsqlquery.h>
00006 #include <qdir.h>
00007
00008 #include <iostream>
00009 #include <fstream>
00010 #include <string>
00011 #include <unistd.h>
00012 #include <cstdlib>
00013 #include <cstdio>
00014 #include <ctime>
00015 #include <cmath>
00016
00017 #include "libmyth/exitcodes.h"
00018 #include "libmyth/mythcontext.h"
00019 #include "libmythtv/jobqueue.h"
00020 #include "libmyth/mythdbcon.h"
00021
00022 using namespace std;
00023
00024 JobQueue *jobqueue = NULL;
00025
00026 int main(int argc, char *argv[])
00027 {
00028 QApplication a(argc, argv, false);
00029 QMap<QString, QString> settingsOverride;
00030 int argpos = 1;
00031
00032 QString filename;
00033
00034 QFileInfo finfo(a.argv()[0]);
00035
00036 QString binname = finfo.baseName();
00037
00038 while (argpos < a.argc())
00039 {
00040 if (!strcmp(a.argv()[argpos],"-v") ||
00041 !strcmp(a.argv()[argpos],"--verbose"))
00042 {
00043 if (a.argc()-1 > argpos)
00044 {
00045 if (parse_verbose_arg(a.argv()[argpos+1]) ==
00046 GENERIC_EXIT_INVALID_CMDLINE)
00047 return JOBQUEUE_EXIT_INVALID_CMDLINE;
00048
00049 ++argpos;
00050 } else
00051 {
00052 cerr << "Missing argument to -v/--verbose option\n";
00053 return JOBQUEUE_EXIT_INVALID_CMDLINE;
00054 }
00055 }
00056 else if (!strcmp(a.argv()[argpos],"-O") ||
00057 !strcmp(a.argv()[argpos],"--override-setting"))
00058 {
00059 if ((a.argc() - 1) > argpos)
00060 {
00061 QString tmpArg = a.argv()[argpos+1];
00062 if (tmpArg.startsWith("-"))
00063 {
00064 cerr << "Invalid or missing argument to "
00065 "-O/--override-setting option\n";
00066 return BACKEND_EXIT_INVALID_CMDLINE;
00067 }
00068
00069 QStringList pairs = QStringList::split(",", tmpArg);
00070 for (unsigned int index = 0; index < pairs.size(); ++index)
00071 {
00072 QStringList tokens = QStringList::split("=", pairs[index]);
00073 tokens[0].replace(QRegExp("^[\"']"), "");
00074 tokens[0].replace(QRegExp("[\"']$"), "");
00075 tokens[1].replace(QRegExp("^[\"']"), "");
00076 tokens[1].replace(QRegExp("[\"']$"), "");
00077 settingsOverride[tokens[0]] = tokens[1];
00078 }
00079 }
00080 else
00081 {
00082 cerr << "Invalid or missing argument to -O/--override-setting "
00083 "option\n";
00084 return GENERIC_EXIT_INVALID_CMDLINE;
00085 }
00086
00087 ++argpos;
00088 }
00089 else if (!strcmp(a.argv()[argpos],"-h") ||
00090 !strcmp(a.argv()[argpos],"--help"))
00091 {
00092 cerr << "Valid Options are:" << endl <<
00093 "-v or --verbose debug-level Use '-v help' for level info" << endl <<
00094 endl;
00095 return JOBQUEUE_EXIT_INVALID_CMDLINE;
00096 }
00097 else
00098 {
00099 printf("illegal option: '%s' (use --help)\n", a.argv()[argpos]);
00100 return JOBQUEUE_EXIT_INVALID_CMDLINE;
00101 }
00102
00103 ++argpos;
00104 }
00105
00106 gContext = NULL;
00107 gContext = new MythContext(MYTH_BINARY_VERSION);
00108 if (!gContext->Init(false))
00109 {
00110 VERBOSE(VB_IMPORTANT, "Failed to init MythContext, exiting.");
00111 return JOBQUEUE_EXIT_NO_MYTHCONTEXT;
00112 }
00113
00114 if (settingsOverride.size())
00115 {
00116 QMap<QString, QString>::iterator it;
00117 for (it = settingsOverride.begin(); it != settingsOverride.end(); ++it)
00118 {
00119 VERBOSE(VB_IMPORTANT, QString("Setting '%1' being forced to '%2'")
00120 .arg(it.key()).arg(it.data()));
00121 gContext->OverrideSettingForSession(it.key(), it.data());
00122 }
00123 }
00124
00125 gContext->ConnectToMasterServer();
00126
00127 jobqueue = new JobQueue(false);
00128
00129 a.exec();
00130
00131 delete gContext;
00132
00133 return JOBQUEUE_EXIT_OK;
00134 }