summaryrefslogtreecommitdiff
path: root/utils/rbutilqt/base/rockboxinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/rbutilqt/base/rockboxinfo.cpp')
-rw-r--r--utils/rbutilqt/base/rockboxinfo.cpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/utils/rbutilqt/base/rockboxinfo.cpp b/utils/rbutilqt/base/rockboxinfo.cpp
new file mode 100644
index 0000000000..f34adbfc2f
--- /dev/null
+++ b/utils/rbutilqt/base/rockboxinfo.cpp
@@ -0,0 +1,83 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2007 by Dominik Wenger
10 *
11 * All files in this archive are subject to the GNU General Public License.
12 * See the file COPYING in the source tree root for full license agreement.
13 *
14 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
15 * KIND, either express or implied.
16 *
17 ****************************************************************************/
18
19#include "rockboxinfo.h"
20
21#include <QtCore>
22#include <QDebug>
23#include "Logger.h"
24
25RockboxInfo::RockboxInfo(QString mountpoint, QString fname)
26{
27 LOG_INFO() << "Getting version info from rockbox-info.txt";
28 QFile file(mountpoint + "/" + fname);
29 m_success = false;
30 m_voicefmt = 400; // default value for compatibility
31 if(!file.exists())
32 return;
33
34 if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
35 return;
36
37 // read file contents
38 QRegExp hash("^Version:\\s+(r?)([0-9a-fM]+)");
39 QRegExp version("^Version:\\s+(\\S.*)");
40 QRegExp release("^Version:\\s+([0-9\\.]+)\\s*$");
41 QRegExp target("^Target:\\s+(\\S.*)");
42 QRegExp features("^Features:\\s+(\\S.*)");
43 QRegExp targetid("^Target id:\\s+(\\S.*)");
44 QRegExp memory("^Memory:\\s+(\\S.*)");
45 QRegExp voicefmt("^Voice format:\\s+(\\S.*)");
46 while (!file.atEnd())
47 {
48 QString line = file.readLine().trimmed();
49
50 if(version.indexIn(line) >= 0) {
51 m_version = version.cap(1);
52 }
53 if(release.indexIn(line) >= 0) {
54 m_release = release.cap(1);
55 }
56 if(hash.indexIn(line) >= 0) {
57 // git hashes are usually at least 7 characters.
58 // svn revisions are expected to be at least 4 digits.
59 if(hash.cap(2).size() > 3)
60 m_revision = hash.cap(2);
61 }
62 else if(target.indexIn(line) >= 0) {
63 m_target = target.cap(1);
64 }
65 else if(features.indexIn(line) >= 0) {
66 m_features = features.cap(1);
67 }
68 else if(targetid.indexIn(line) >= 0) {
69 m_targetid = targetid.cap(1);
70 }
71 else if(memory.indexIn(line) >= 0) {
72 m_ram = memory.cap(1).toInt();
73 }
74 else if(voicefmt.indexIn(line) >= 0) {
75 m_voicefmt = voicefmt.cap(1).toInt();
76 }
77 }
78
79 file.close();
80 m_success = true;
81 return;
82}
83