1 | /* |
2 | This file is part of the KDE Baloo Project |
3 | SPDX-FileCopyrightText: 2013-2015 Vishesh Handa <vhanda@kde.org> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL |
6 | */ |
7 | |
8 | #include <KCrash> |
9 | |
10 | #include <iostream> |
11 | |
12 | #include "global.h" |
13 | #include "database.h" |
14 | #include "fileindexerconfig.h" |
15 | #include "priority.h" |
16 | #include "migrator.h" |
17 | #include "mainhub.h" |
18 | |
19 | #include <QDBusConnection> |
20 | #include <QCoreApplication> |
21 | #include <QFile> |
22 | |
23 | int main(int argc, char** argv) |
24 | { |
25 | lowerIOPriority(); |
26 | lowerSchedulingPriority(); |
27 | lowerPriority(); |
28 | |
29 | QCoreApplication app(argc, argv); |
30 | |
31 | Baloo::FileIndexerConfig indexerConfig; |
32 | if (!indexerConfig.indexingEnabled()) { |
33 | std::cout << "Baloo File Indexing has been disabled" << std::endl; |
34 | return 0; |
35 | } |
36 | |
37 | if (!QDBusConnection::sessionBus().registerService(QStringLiteral("org.kde.baloo" ))) { |
38 | qWarning() << "Failed to register via dbus. Another instance is running" ; |
39 | return 1; |
40 | } |
41 | |
42 | // Crash Handling |
43 | KCrash::setFlags(KCrash::AutoRestart); |
44 | |
45 | const QString path = Baloo::fileIndexDbPath(); |
46 | |
47 | Baloo::Migrator migrator(path, &indexerConfig); |
48 | if (migrator.migrationRequired()) { |
49 | migrator.migrate(); |
50 | } |
51 | |
52 | bool firstRun = !QFile::exists(fileName: path + QStringLiteral("/index" )); |
53 | |
54 | Baloo::Database *db = Baloo::globalDatabaseInstance(); |
55 | |
56 | /** |
57 | * try to open, if that fails, try to unlink the index db and retry |
58 | */ |
59 | if (!db->open(mode: Baloo::Database::CreateDatabase)) { |
60 | // delete old stuff, set to initial run! |
61 | qWarning() << "Failed to create database, removing corrupted database." ; |
62 | QFile::remove(fileName: path + QStringLiteral("/index" )); |
63 | QFile::remove(fileName: path + QStringLiteral("/index-lock" )); |
64 | firstRun = true; |
65 | |
66 | // try to create now after cleanup, if still no works => fail |
67 | if (!db->open(mode: Baloo::Database::CreateDatabase)) { |
68 | qWarning() << "Failed to create database after deleting corrupted one." ; |
69 | return 1; |
70 | } |
71 | } |
72 | |
73 | Baloo::MainHub hub(db, &indexerConfig, firstRun); |
74 | return app.exec(); |
75 | } |
76 | |