00001
00002 #ifndef _WIN32
00003 #include <QCoreApplication>
00004 #else
00005 #include <QApplication>
00006 #endif
00007
00008
00009 #include "exitcodes.h"
00010 #include "mythcontext.h"
00011 #include "mythversion.h"
00012 #include "mythlogging.h"
00013
00014
00015 #include "mythutil.h"
00016 #include "commandlineparser.h"
00017 #include "backendutils.h"
00018 #include "fileutils.h"
00019 #include "mpegutils.h"
00020 #include "jobutils.h"
00021 #include "markuputils.h"
00022 #include "messageutils.h"
00023
00024
00025 int main(int argc, char *argv[])
00026 {
00027 MythUtilCommandLineParser cmdline;
00028 if (!cmdline.Parse(argc, argv))
00029 {
00030 cmdline.PrintHelp();
00031 return GENERIC_EXIT_INVALID_CMDLINE;
00032 }
00033
00034
00035 QString defaultVerbose = "general";
00036 LogLevel_t defaultLevel = LOG_INFO;
00037 if (cmdline.toBool("pidcounter") || cmdline.toBool("pidfilter"))
00038 {
00039 if (!cmdline.toBool("verbose"))
00040 {
00041 verboseString = defaultVerbose = "";
00042 verboseMask = 0;
00043 }
00044 if (!cmdline.toBool("loglevel"))
00045 logLevel = defaultLevel = LOG_ERR;
00046 }
00047
00048
00049 if (cmdline.toBool("showhelp"))
00050 {
00051 cmdline.PrintHelp();
00052 return GENERIC_EXIT_OK;
00053 }
00054
00055 if (cmdline.toBool("showversion"))
00056 {
00057 cmdline.PrintVersion();
00058 return GENERIC_EXIT_OK;
00059 }
00060
00061 #ifndef _WIN32
00062 QCoreApplication a(argc, argv);
00063 #else
00064
00065
00066 QApplication a(argc, argv);
00067 #endif
00068
00069 QCoreApplication::setApplicationName(MYTH_APPNAME_MYTHUTIL);
00070
00071 int retval;
00072 if ((retval = cmdline.ConfigureLogging(defaultVerbose)) != GENERIC_EXIT_OK)
00073 return retval;
00074
00075 if (!cmdline.toBool("loglevel"))
00076 logLevel = defaultLevel;
00077
00078 gContext = new MythContext(MYTH_BINARY_VERSION);
00079 if (!gContext->Init(false))
00080 {
00081 LOG(VB_GENERAL, LOG_ERR, "Failed to init MythContext, exiting.");
00082 return GENERIC_EXIT_NO_MYTHCONTEXT;
00083 }
00084
00085 cmdline.ApplySettingsOverride();
00086
00087 UtilMap utilMap;
00088
00089 registerBackendUtils(utilMap);
00090 registerFileUtils(utilMap);
00091 registerMPEGUtils(utilMap);
00092 registerJobUtils(utilMap);
00093 registerMarkupUtils(utilMap);
00094 registerMessageUtils(utilMap);
00095
00096 bool cmdFound = false;
00097 int cmdResult = GENERIC_EXIT_OK;
00098 UtilMap::iterator i;
00099 for (i = utilMap.begin(); i != utilMap.end(); ++i)
00100 {
00101 if (cmdline.toBool(i.key()))
00102 {
00103 cmdResult = (i.value())(cmdline);
00104 cmdFound = true;
00105 break;
00106 }
00107 }
00108
00109 if(!cmdFound)
00110 {
00111 cmdline.PrintHelp();
00112 cmdResult = GENERIC_EXIT_INVALID_CMDLINE;
00113 }
00114
00115 delete gContext;
00116
00117 return cmdResult;
00118 }
00119
00120