MythTV master
mythutil.cpp
Go to the documentation of this file.
1// Qt includes
2#include <QtGlobal>
3#ifndef _WIN32
4#include <QCoreApplication>
5#else
6#include <QApplication>
7#endif
8#include <QDateTime>
9#include <QString>
10
11// libmyth* includes
12#include "libmyth/mythcontext.h"
15#include "libmythbase/mythconfig.h"
17#include "libmythbase/mythversion.h"
18
19// Local includes
20#include "backendutils.h"
21#include "eitutils.h"
22#include "fileutils.h"
23#include "jobutils.h"
24#include "markuputils.h"
25#include "messageutils.h"
26#include "mpegutils.h"
27#include "musicmetautils.h"
28#include "mythutil.h"
30#include "recordingutils.h"
31
33 ProgramInfo &pginfo)
34{
35 if (cmdline.toBool("video"))
36 {
37 QString video = cmdline.toString("video");
38 pginfo = ProgramInfo(video);
39 return true;
40 }
41 if (!cmdline.toBool("chanid"))
42 {
43 LOG(VB_GENERAL, LOG_ERR, "No chanid specified");
44 return false;
45 }
46
47 if (!cmdline.toBool("starttime"))
48 {
49 LOG(VB_GENERAL, LOG_ERR, "No start time specified");
50 return false;
51 }
52
53 uint chanid = cmdline.toUInt("chanid");
54 QDateTime starttime = cmdline.toDateTime("starttime");
55 QString startstring = starttime.toString("yyyyMMddhhmmss");
56
57 const ProgramInfo tmpInfo(chanid, starttime);
58
59 if (!tmpInfo.GetChanID())
60 {
61 LOG(VB_GENERAL, LOG_ERR,
62 QString("No program data exists for channel %1 at %2")
63 .arg(chanid).arg(startstring));
64 return false;
65 }
66
67 pginfo = tmpInfo;
68
69 return true;
70}
71
72int main(int argc, char *argv[])
73{
75 if (!cmdline.Parse(argc, argv))
76 {
79 }
80
81 // default to quiet operation for pidcounter and pidfilter
82 QString defaultVerbose = "general";
83 LogLevel_t defaultLevel = LOG_INFO;
84 if (cmdline.toBool("pidcounter") || cmdline.toBool("pidfilter"))
85 {
86 if (!cmdline.toBool("verbose"))
87 {
88 verboseString = defaultVerbose = "";
89 verboseMask = 0;
90 }
91 if (!cmdline.toBool("loglevel"))
92 logLevel = defaultLevel = LOG_ERR;
93 }
94
95
96 if (cmdline.toBool("showhelp"))
97 {
99 return GENERIC_EXIT_OK;
100 }
101
102 if (cmdline.toBool("showversion"))
103 {
105 return GENERIC_EXIT_OK;
106 }
107
108#ifndef _WIN32
109 QCoreApplication a(argc, argv);
110#else
111 // MINGW application needs a window to receive messages
112 // such as socket notifications :[
113 QApplication a(argc, argv);
114#endif
115
116 QCoreApplication::setApplicationName(MYTH_APPNAME_MYTHUTIL);
117
118 int retval = cmdline.ConfigureLogging(defaultVerbose);
119 if (retval != GENERIC_EXIT_OK)
120 return retval;
121
122 if (!cmdline.toBool("loglevel"))
123 logLevel = defaultLevel;
124
125 MythContext context {MYTH_BINARY_VERSION};
126 if (!context.Init(false))
127 {
128 LOG(VB_GENERAL, LOG_ERR, "Failed to init MythContext, exiting.");
130 }
131
133
134 UtilMap utilMap;
135
136 registerBackendUtils(utilMap);
137 registerEITUtils(utilMap);
138 registerFileUtils(utilMap);
139 registerMPEGUtils(utilMap);
140 registerJobUtils(utilMap);
141 registerMarkupUtils(utilMap);
142 registerMessageUtils(utilMap);
143 registerMusicUtils(utilMap);
144 registerRecordingUtils(utilMap);
145
146 bool cmdFound = false;
147 int cmdResult = GENERIC_EXIT_OK;
148 UtilMap::iterator i;
149 for (i = utilMap.begin(); i != utilMap.end(); ++i)
150 {
151 if (cmdline.toBool(i.key()))
152 {
153 cmdResult = (i.value())(cmdline);
154 cmdFound = true;
155 break;
156 }
157 }
158
159 if(!cmdFound)
160 {
163 }
164
165 return cmdResult;
166}
167
168/* vim: set expandtab tabstop=4 shiftwidth=4: */
void registerBackendUtils(UtilMap &utilMap)
bool toBool(const QString &key) const
Returns stored QVariant as a boolean.
virtual bool Parse(int argc, const char *const *argv)
Loop through argv and populate arguments with values.
void ApplySettingsOverride(void)
Apply all overrides to the global context.
int ConfigureLogging(const QString &mask="general", bool progress=false)
Read in logging options and initialize the logging interface.
QString toString(const QString &key) const
Returns stored QVariant as a QString, falling to default if not provided.
static void PrintVersion(void)
Print application version information.
QDateTime toDateTime(const QString &key) const
Returns stored QVariant as a QDateTime, falling to default if not provided.
uint toUInt(const QString &key) const
Returns stored QVariant as an unsigned integer, falling to default if not provided.
void PrintHelp(void) const
Print command line option help.
Startup context for MythTV.
Definition: mythcontext.h:20
Holds information on recordings and videos.
Definition: programinfo.h:68
uint GetChanID(void) const
This is the unique key used in the database to locate tuning information.
Definition: programinfo.h:373
void registerEITUtils(UtilMap &utilMap)
Definition: eitutils.cpp:137
@ GENERIC_EXIT_NO_MYTHCONTEXT
No MythContext available.
Definition: exitcodes.h:16
@ GENERIC_EXIT_OK
Exited with no error.
Definition: exitcodes.h:13
@ GENERIC_EXIT_INVALID_CMDLINE
Command line parse error.
Definition: exitcodes.h:18
void registerFileUtils(UtilMap &utilMap)
Definition: fileutils.cpp:148
unsigned int uint
Definition: freesurround.h:24
void registerJobUtils(UtilMap &utilMap)
Definition: jobutils.cpp:83
uint64_t verboseMask
Definition: logging.cpp:97
LogLevel_t logLevel
Definition: logging.cpp:85
QString verboseString
Definition: logging.cpp:98
void registerMarkupUtils(UtilMap &utilMap)
void registerMessageUtils(UtilMap &utilMap)
void registerMPEGUtils(UtilMap &utilMap)
Definition: mpegutils.cpp:844
void registerMusicUtils(UtilMap &utilMap)
static constexpr const char * MYTH_APPNAME_MYTHUTIL
Definition: mythappname.h:19
MythCommFlagCommandLineParser cmdline
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
int main(int argc, char *argv[])
Definition: mythutil.cpp:72
bool GetProgramInfo(const MythUtilCommandLineParser &cmdline, ProgramInfo &pginfo)
Definition: mythutil.cpp:32
QMap< QString, UtilFunc > UtilMap
Definition: mythutil.h:15
void registerRecordingUtils(UtilMap &utilMap)