]> git.cworth.org Git - apitrace/blob - gui/main.cpp
Fix buffer overflow.
[apitrace] / gui / main.cpp
1 #include "mainwindow.h"
2
3 #include "apitrace.h"
4 #include "apitracecall.h"
5
6 #include <QApplication>
7 #include <QMetaType>
8 #include <QVariant>
9 #include <QImage>
10
11 Q_DECLARE_METATYPE(QList<ApiTraceFrame*>);
12 Q_DECLARE_METATYPE(QVector<ApiTraceCall*>);
13 Q_DECLARE_METATYPE(Qt::CaseSensitivity);
14 Q_DECLARE_METATYPE(ApiTrace::SearchResult);
15 Q_DECLARE_METATYPE(ApiTrace::SearchRequest);
16 Q_DECLARE_METATYPE(QList<QImage>);
17
18 static void usage(void)
19 {
20     qWarning("usage: qapitrace [TRACE] [CALLNO]\n");
21 }
22
23 int main(int argc, char **argv)
24 {
25     QApplication app(argc, argv);
26
27     qRegisterMetaType<QList<ApiTraceFrame*> >();
28     qRegisterMetaType<QVector<ApiTraceCall*> >();
29     qRegisterMetaType<ApiTraceState>();
30     qRegisterMetaType<Qt::CaseSensitivity>();
31     qRegisterMetaType<ApiTrace::SearchResult>();
32     qRegisterMetaType<ApiTrace::SearchRequest>();
33     qRegisterMetaType<QList<QImage> >();
34     QStringList args = app.arguments();
35
36     int i = 1;
37     while (i < args.count()) {
38         QString arg = args[i];
39         if (arg[0] != QLatin1Char('-')) {
40             break;
41         }
42         ++i;
43         if (arg == QLatin1String("--")) {
44             break;
45         } else if (arg == QLatin1String("-h") ||
46                    arg == QLatin1String("--help")) {
47             usage();
48             exit(0);
49         } else {
50             usage();
51             exit(1);
52         }
53     }
54
55     MainWindow window;
56     window.show();
57
58     if (i < args.count()) {
59         QString fileName = args[i++];
60
61         int callNum = -1;
62         if (i < args.count()) {
63             callNum = args[i++].toInt();
64         }
65         window.loadTrace(fileName, callNum);
66     }
67
68     app.exec();
69 }