diff options
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r-- | rbutil/rbutilqt/base/serverinfo.cpp | 9 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/systeminfo.cpp | 55 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/systeminfo.h | 19 | ||||
-rw-r--r-- | rbutil/rbutilqt/gui/selectiveinstallwidget.cpp | 4 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutil.ini | 52 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.cpp | 3 | ||||
-rw-r--r-- | rbutil/rbutilqt/test/stubs/stubs-serverinfo.cpp | 23 | ||||
-rw-r--r-- | rbutil/rbutilqt/test/test-serverinfo.cpp | 4 |
8 files changed, 94 insertions, 75 deletions
diff --git a/rbutil/rbutilqt/base/serverinfo.cpp b/rbutil/rbutilqt/base/serverinfo.cpp index 08f7f770b7..2f73d96beb 100644 --- a/rbutil/rbutilqt/base/serverinfo.cpp +++ b/rbutil/rbutilqt/base/serverinfo.cpp | |||
@@ -95,17 +95,20 @@ QVariant ServerInfo::platformValue(enum ServerInfos info, QString platform) | |||
95 | if(value.toStringList().size() > 1) | 95 | if(value.toStringList().size() > 1) |
96 | value = value.toStringList().at(1); | 96 | value = value.toStringList().at(1); |
97 | else if(!version.isEmpty() && info == CurReleaseUrl) | 97 | else if(!version.isEmpty() && info == CurReleaseUrl) |
98 | value = SystemInfo::value(SystemInfo::ReleaseUrl).toString() | 98 | value = SystemInfo::value(SystemInfo::BuildUrl, |
99 | SystemInfo::BuildRelease).toString() | ||
99 | .replace("%MODEL%", platform) | 100 | .replace("%MODEL%", platform) |
100 | .replace("%RELVERSION%", version); | 101 | .replace("%RELVERSION%", version); |
101 | else if(!version.isEmpty() && info == RelCandidateUrl) | 102 | else if(!version.isEmpty() && info == RelCandidateUrl) |
102 | value = SystemInfo::value(SystemInfo::CandidateUrl).toString() | 103 | value = SystemInfo::value(SystemInfo::BuildUrl, |
104 | SystemInfo::BuildCandidate).toString() | ||
103 | .replace("%MODEL%", platform) | 105 | .replace("%MODEL%", platform) |
104 | .replace("%RELVERSION%", version); | 106 | .replace("%RELVERSION%", version); |
105 | } | 107 | } |
106 | break; | 108 | break; |
107 | case CurDevelUrl: | 109 | case CurDevelUrl: |
108 | value = SystemInfo::value(SystemInfo::BleedingUrl).toString() | 110 | value = SystemInfo::value(SystemInfo::BuildUrl, |
111 | SystemInfo::BuildCurrent).toString() | ||
109 | .replace("%MODEL%", platform); | 112 | .replace("%MODEL%", platform); |
110 | break; | 113 | break; |
111 | case ManualPdfUrl: | 114 | case ManualPdfUrl: |
diff --git a/rbutil/rbutilqt/base/systeminfo.cpp b/rbutil/rbutilqt/base/systeminfo.cpp index 67b0428ceb..2aece49110 100644 --- a/rbutil/rbutilqt/base/systeminfo.cpp +++ b/rbutil/rbutilqt/base/systeminfo.cpp | |||
@@ -27,28 +27,23 @@ const static struct { | |||
27 | SystemInfo::SystemInfos info; | 27 | SystemInfo::SystemInfos info; |
28 | const char* name; | 28 | const char* name; |
29 | } SystemInfosList[] = { | 29 | } SystemInfosList[] = { |
30 | { SystemInfo::ManualUrl, "manual_url" }, | 30 | { SystemInfo::ManualUrl, ":build:/manual_url" }, |
31 | { SystemInfo::BleedingUrl, "bleeding_url" }, | 31 | { SystemInfo::BuildUrl, ":build:/build_url" }, |
32 | { SystemInfo::BootloaderUrl, "bootloader_url" }, | 32 | { SystemInfo::FontUrl, ":build:/font_url" }, |
33 | { SystemInfo::BootloaderInfoUrl, "bootloader_info_url" }, | 33 | { SystemInfo::VoiceUrl, ":build:/voice_url" }, |
34 | { SystemInfo::ReleaseFontUrl, "release_font_url" }, | 34 | { SystemInfo::BootloaderUrl, "bootloader/download_url" }, |
35 | { SystemInfo::DailyFontUrl, "daily_font_url" }, | 35 | { SystemInfo::BootloaderInfoUrl, "bootloader/info_url" }, |
36 | { SystemInfo::DailyVoiceUrl, "daily_voice_url" }, | 36 | { SystemInfo::DoomUrl, "doom_url" }, |
37 | { SystemInfo::ReleaseVoiceUrl, "release_voice_url" }, | 37 | { SystemInfo::Duke3DUrl, "duke3d_url" }, |
38 | { SystemInfo::DoomUrl, "doom_url" }, | 38 | { SystemInfo::PuzzFontsUrl, "puzzfonts_url" }, |
39 | { SystemInfo::Duke3DUrl, "duke3d_url" }, | 39 | { SystemInfo::QuakeUrl, "quake_url" }, |
40 | { SystemInfo::PuzzFontsUrl, "puzzfonts_url" }, | 40 | { SystemInfo::Wolf3DUrl, "wolf3d_url" }, |
41 | { SystemInfo::QuakeUrl, "quake_url" }, | 41 | { SystemInfo::XWorldUrl, "xworld_url" }, |
42 | { SystemInfo::Wolf3DUrl, "wolf3d_url" }, | 42 | { SystemInfo::BuildInfoUrl, "build_info_url" }, |
43 | { SystemInfo::XWorldUrl, "xworld_url" }, | 43 | { SystemInfo::GenlangUrl, "genlang_url" }, |
44 | { SystemInfo::ReleaseUrl, "release_url" }, | 44 | { SystemInfo::ThemesUrl, "themes_url" }, |
45 | { SystemInfo::CandidateUrl, "rc_url" }, | 45 | { SystemInfo::ThemesInfoUrl, "themes_info_url" }, |
46 | { SystemInfo::DailyUrl, "daily_url" }, | 46 | { SystemInfo::RbutilUrl, "rbutil_url" }, |
47 | { SystemInfo::BuildInfoUrl, "build_info_url" }, | ||
48 | { SystemInfo::GenlangUrl, "genlang_url" }, | ||
49 | { SystemInfo::ThemesUrl, "themes_url" }, | ||
50 | { SystemInfo::ThemesInfoUrl, "themes_info_url" }, | ||
51 | { SystemInfo::RbutilUrl, "rbutil_url" }, | ||
52 | }; | 47 | }; |
53 | 48 | ||
54 | const static struct { | 49 | const static struct { |
@@ -84,7 +79,7 @@ void SystemInfo::ensureSystemInfoExists() | |||
84 | } | 79 | } |
85 | 80 | ||
86 | 81 | ||
87 | QVariant SystemInfo::value(enum SystemInfos info) | 82 | QVariant SystemInfo::value(enum SystemInfos info, BuildType type) |
88 | { | 83 | { |
89 | ensureSystemInfoExists(); | 84 | ensureSystemInfoExists(); |
90 | 85 | ||
@@ -93,6 +88,20 @@ QVariant SystemInfo::value(enum SystemInfos info) | |||
93 | while(SystemInfosList[i].info != info) | 88 | while(SystemInfosList[i].info != info) |
94 | i++; | 89 | i++; |
95 | QString s = SystemInfosList[i].name; | 90 | QString s = SystemInfosList[i].name; |
91 | switch(type) { | ||
92 | case BuildDaily: | ||
93 | s.replace(":build:", "daily"); | ||
94 | break; | ||
95 | case BuildCurrent: | ||
96 | s.replace(":build:", "development"); | ||
97 | break; | ||
98 | case BuildCandidate: | ||
99 | s.replace(":build:", "release-candidate"); | ||
100 | break; | ||
101 | case BuildRelease: | ||
102 | s.replace(":build:", "release"); | ||
103 | break; | ||
104 | } | ||
96 | LOG_INFO() << "GET:" << s << systemInfos->value(s).toString(); | 105 | LOG_INFO() << "GET:" << s << systemInfos->value(s).toString(); |
97 | return systemInfos->value(s); | 106 | return systemInfos->value(s); |
98 | } | 107 | } |
diff --git a/rbutil/rbutilqt/base/systeminfo.h b/rbutil/rbutilqt/base/systeminfo.h index c4afe4b27d..12b9eb4bfb 100644 --- a/rbutil/rbutilqt/base/systeminfo.h +++ b/rbutil/rbutilqt/base/systeminfo.h | |||
@@ -34,15 +34,21 @@ class SystemInfo : public QObject | |||
34 | MapIncompatible, | 34 | MapIncompatible, |
35 | }; | 35 | }; |
36 | 36 | ||
37 | enum BuildType { | ||
38 | BuildCurrent, | ||
39 | BuildDaily, | ||
40 | BuildRelease, | ||
41 | BuildCandidate | ||
42 | }; | ||
43 | |||
37 | //! All system settings | 44 | //! All system settings |
38 | enum SystemInfos { | 45 | enum SystemInfos { |
46 | BuildUrl, | ||
47 | FontUrl, | ||
48 | VoiceUrl, | ||
39 | ManualUrl, | 49 | ManualUrl, |
40 | BleedingUrl, | ||
41 | BootloaderUrl, | 50 | BootloaderUrl, |
42 | BootloaderInfoUrl, | 51 | BootloaderInfoUrl, |
43 | DailyUrl, | ||
44 | DailyFontUrl, | ||
45 | DailyVoiceUrl, | ||
46 | DoomUrl, | 52 | DoomUrl, |
47 | Duke3DUrl, | 53 | Duke3DUrl, |
48 | QuakeUrl, | 54 | QuakeUrl, |
@@ -50,9 +56,6 @@ class SystemInfo : public QObject | |||
50 | Wolf3DUrl, | 56 | Wolf3DUrl, |
51 | XWorldUrl, | 57 | XWorldUrl, |
52 | ReleaseUrl, | 58 | ReleaseUrl, |
53 | CandidateUrl, | ||
54 | ReleaseVoiceUrl, | ||
55 | ReleaseFontUrl, | ||
56 | BuildInfoUrl, | 59 | BuildInfoUrl, |
57 | GenlangUrl, | 60 | GenlangUrl, |
58 | ThemesUrl, | 61 | ThemesUrl, |
@@ -92,7 +95,7 @@ class SystemInfo : public QObject | |||
92 | //! returns a map of usb-ids and their targets | 95 | //! returns a map of usb-ids and their targets |
93 | static QMap<int, QStringList> usbIdMap(enum MapType type); | 96 | static QMap<int, QStringList> usbIdMap(enum MapType type); |
94 | //! get a value from system settings | 97 | //! get a value from system settings |
95 | static QVariant value(enum SystemInfos info); | 98 | static QVariant value(enum SystemInfos info, BuildType type = BuildCurrent); |
96 | //! get a value from system settings for a named platform. | 99 | //! get a value from system settings for a named platform. |
97 | static QVariant platformValue(enum PlatformInfo info, QString platform = ""); | 100 | static QVariant platformValue(enum PlatformInfo info, QString platform = ""); |
98 | 101 | ||
diff --git a/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp b/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp index fafe79c8f7..c916e7a190 100644 --- a/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp +++ b/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp | |||
@@ -428,10 +428,10 @@ void SelectiveInstallWidget::installFonts(void) | |||
428 | QString relversion = installInfo.release(); | 428 | QString relversion = installInfo.release(); |
429 | if(relversion.isEmpty()) { | 429 | if(relversion.isEmpty()) { |
430 | // release is empty for non-release versions (i.e. daily / current) | 430 | // release is empty for non-release versions (i.e. daily / current) |
431 | fontsurl = SystemInfo::value(SystemInfo::DailyFontUrl).toString(); | 431 | fontsurl = SystemInfo::value(SystemInfo::FontUrl, SystemInfo::BuildDaily).toString(); |
432 | } | 432 | } |
433 | else { | 433 | else { |
434 | fontsurl = SystemInfo::value(SystemInfo::ReleaseFontUrl).toString(); | 434 | fontsurl = SystemInfo::value(SystemInfo::FontUrl, SystemInfo::BuildRelease).toString(); |
435 | logversion = installInfo.release(); | 435 | logversion = installInfo.release(); |
436 | } | 436 | } |
437 | fontsurl.replace("%RELEASEVER%", relversion); | 437 | fontsurl.replace("%RELEASEVER%", relversion); |
diff --git a/rbutil/rbutilqt/rbutil.ini b/rbutil/rbutilqt/rbutil.ini index 93af1bfb1b..e0d60e797e 100644 --- a/rbutil/rbutilqt/rbutil.ini +++ b/rbutil/rbutilqt/rbutil.ini | |||
@@ -1,30 +1,13 @@ | |||
1 | [general] | 1 | [general] |
2 | ; builds | 2 | ; server information |
3 | release_url=http://download.rockbox.org/release/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip | 3 | build_info_url=http://download.rockbox.org/build-info |
4 | bleeding_url=http://build.rockbox.org/data/rockbox-%MODEL%.zip | 4 | ; genlang -- used to get list of strings (only really old builds) |
5 | rc_url=http://download.rockbox.org/release-candidate/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip | ||
6 | |||
7 | ; voice files | ||
8 | release_voice_url=http://download.rockbox.org/release/%RELVERSION%/%MODEL%-%RELVERSION%-english.zip | ||
9 | genlang_url=http://www.rockbox.org/genlang/?lang=%LANG%&t=%TARGET%&rev=%REVISION%&f=%FEATURES% | 5 | genlang_url=http://www.rockbox.org/genlang/?lang=%LANG%&t=%TARGET%&rev=%REVISION%&f=%FEATURES% |
10 | |||
11 | ; bootloader | ||
12 | bootloader_info_url=http://download.rockbox.org/bootloader/bootloaders-info | ||
13 | bootloader_url=http://download.rockbox.org/bootloader | ||
14 | |||
15 | ; themes | 6 | ; themes |
16 | themes_url=http://themes.rockbox.org/ | 7 | themes_url=http://themes.rockbox.org/ |
17 | themes_info_url=http://themes.rockbox.org/rbutilqt.php?target=%TARGET%&release=%RELEASE%&revision=%REVISION%&rbutilver=%RBUTILVER% | 8 | themes_info_url=http://themes.rockbox.org/rbutilqt.php?target=%TARGET%&release=%RELEASE%&revision=%REVISION%&rbutilver=%RBUTILVER% |
18 | 9 | ||
19 | ; server information | ||
20 | build_info_url=http://download.rockbox.org/build-info | ||
21 | |||
22 | ; fonts | ||
23 | release_font_url=http://download.rockbox.org/release/%RELEASEVER%/rockbox-fonts-%RELEASEVER%.zip | ||
24 | daily_font_url=http://download.rockbox.org/daily/fonts/rockbox-fonts.zip | ||
25 | |||
26 | ; other | 10 | ; other |
27 | manual_url=http://download.rockbox.org/manual/rockbox-%MODEL%%FORMAT% | ||
28 | doom_url=http://download.rockbox.org/useful/rockdoom.zip | 11 | doom_url=http://download.rockbox.org/useful/rockdoom.zip |
29 | duke3d_url=http://download.rockbox.org/useful/duke3d.zip | 12 | duke3d_url=http://download.rockbox.org/useful/duke3d.zip |
30 | quake_url=http://download.rockbox.org/useful/quake.zip | 13 | quake_url=http://download.rockbox.org/useful/quake.zip |
@@ -33,6 +16,35 @@ wolf3d_url=http://download.rockbox.org/useful/wolf3d.zip | |||
33 | xworld_url=http://download.rockbox.org/useful/xworld.zip | 16 | xworld_url=http://download.rockbox.org/useful/xworld.zip |
34 | rbutil_url=http://download.rockbox.org/rbutil/ | 17 | rbutil_url=http://download.rockbox.org/rbutil/ |
35 | 18 | ||
19 | [bootloader] | ||
20 | info_url=http://download.rockbox.org/bootloader/bootloaders-info | ||
21 | download_url=http://download.rockbox.org/bootloader | ||
22 | |||
23 | [release] | ||
24 | build_url=https://download.rockbox.org/release/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip | ||
25 | voice_url=https://download.rockbox.org/release/%RELVERSION%/%MODEL%-%RELVERSION%-english.zip | ||
26 | font_url=https://download.rockbox.org/release/%RELEASEVER%/rockbox-fonts-%RELEASEVER%.zip | ||
27 | manual_url=https://download.rockbox.org/release/%RELEASEVER%/rockbox-%MODEL%%FORMAT% | ||
28 | |||
29 | [release-candidate] | ||
30 | build_url=https://download.rockbox.org/release-candidate/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip | ||
31 | voice_url=https://download.rockbox.org/release-candidate/%RELVERSION%/%MODEL%-%RELVERSION%-english.zip | ||
32 | font_url=https://download.rockbox.org/release-candidate/%RELEASEVER%/rockbox-fonts-%RELEASEVER%.zip | ||
33 | manual_url=https://download.rockbox.org/release-candidate/%RELEASEVER%/rockbox-%MODEL%%FORMAT% | ||
34 | |||
35 | [development] | ||
36 | build_url=http://build.rockbox.org/data/rockbox-%MODEL%.zip | ||
37 | voice_url=https://download.rockbox.org/release/%RELVERSION%/%MODEL%-%RELVERSION%-english.zip | ||
38 | font_url=https://download.rockbox.org/daily/fonts/rockbox-fonts.zip | ||
39 | ; manual is only built daily, use that one instead. | ||
40 | manual_url=https://download.rockbox.org/daily/manual/rockbox-%MODEL%%FORMAT% | ||
41 | |||
42 | [daily] | ||
43 | build_url=https://download.rockbox.org/daily/%MODEL%/rockbox-%MODEL%.zip | ||
44 | voice_url=https://download.rockbox.org/daily/voices/%MODEL%-%VERSION%-%LANGUAGE%.zip | ||
45 | font_url=https://download.rockbox.org/daily/fonts/rockbox-fonts.zip | ||
46 | manual_url=https://download.rockbox.org/daily/manual/rockbox-%MODEL%%FORMAT% | ||
47 | |||
36 | ; [platforms] is used to determine the order in the device tree. | 48 | ; [platforms] is used to determine the order in the device tree. |
37 | ; Only devices present in this section will get displayed! | 49 | ; Only devices present in this section will get displayed! |
38 | [platforms] | 50 | [platforms] |
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp index d013a7cb58..597509cc78 100644 --- a/rbutil/rbutilqt/rbutilqt.cpp +++ b/rbutil/rbutilqt/rbutilqt.cpp | |||
@@ -483,7 +483,8 @@ void RbUtilQt::installVoice() | |||
483 | return; | 483 | return; |
484 | } | 484 | } |
485 | else { | 485 | else { |
486 | voiceurl = SystemInfo::value(SystemInfo::ReleaseVoiceUrl).toString(); | 486 | voiceurl = SystemInfo::value(SystemInfo::VoiceUrl, |
487 | SystemInfo::BuildRelease).toString(); | ||
487 | logversion = installInfo.release(); | 488 | logversion = installInfo.release(); |
488 | } | 489 | } |
489 | if(QMessageBox::question(this, tr("Confirm Installation"), | 490 | if(QMessageBox::question(this, tr("Confirm Installation"), |
diff --git a/rbutil/rbutilqt/test/stubs/stubs-serverinfo.cpp b/rbutil/rbutilqt/test/stubs/stubs-serverinfo.cpp index 38336a7a6f..f0fcaf6613 100644 --- a/rbutil/rbutilqt/test/stubs/stubs-serverinfo.cpp +++ b/rbutil/rbutilqt/test/stubs/stubs-serverinfo.cpp | |||
@@ -38,27 +38,22 @@ QVariant SystemInfo::platformValue(SystemInfo::PlatformInfo info, QString platfo | |||
38 | return QString(); | 38 | return QString(); |
39 | } | 39 | } |
40 | 40 | ||
41 | QVariant SystemInfo::value(SystemInfo::SystemInfos info) | 41 | QVariant SystemInfo::value(SystemInfo::SystemInfos info, SystemInfo::BuildType type) |
42 | { | 42 | { |
43 | switch(info) { | 43 | (void)info; // test is currently only using BuildUrl. |
44 | case SystemInfo::ManualUrl: | 44 | switch(type) { |
45 | return QString("https://unittest/manual/rockbox-%MODEL%%FORMAT%"); | 45 | case SystemInfo::BuildCurrent: |
46 | break; | ||
47 | case SystemInfo::BleedingUrl: | ||
48 | return QString("https://unittest/dev/rockbox-%MODEL%.zip"); | 46 | return QString("https://unittest/dev/rockbox-%MODEL%.zip"); |
49 | break; | 47 | case SystemInfo::BuildDaily: |
50 | case SystemInfo::DailyUrl: | ||
51 | return QString("https://unittest/daily/rockbox-%MODEL%-%RELVERSION%.zip"); | 48 | return QString("https://unittest/daily/rockbox-%MODEL%-%RELVERSION%.zip"); |
52 | break; | 49 | case SystemInfo::BuildRelease: |
53 | case SystemInfo::ReleaseUrl: | ||
54 | return QString("https://unittest/release/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip"); | 50 | return QString("https://unittest/release/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip"); |
55 | break; | 51 | case SystemInfo::BuildCandidate: |
56 | case SystemInfo::CandidateUrl: | ||
57 | return QString("https://unittest/rc/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip"); | 52 | return QString("https://unittest/rc/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip"); |
58 | break; | ||
59 | default: | 53 | default: |
60 | return QString(); | 54 | break; |
61 | } | 55 | } |
56 | return QString(); | ||
62 | } | 57 | } |
63 | 58 | ||
64 | QStringList SystemInfo::platforms(SystemInfo::PlatformType type, QString variant) | 59 | QStringList SystemInfo::platforms(SystemInfo::PlatformType type, QString variant) |
diff --git a/rbutil/rbutilqt/test/test-serverinfo.cpp b/rbutil/rbutilqt/test/test-serverinfo.cpp index bc6024e843..b999624c78 100644 --- a/rbutil/rbutilqt/test/test-serverinfo.cpp +++ b/rbutil/rbutilqt/test/test-serverinfo.cpp | |||
@@ -93,10 +93,6 @@ const struct testvector testdata[] = | |||
93 | { "iaudiox5.v", ServerInfo::BleedingRevision, "be1be79" }, | 93 | { "iaudiox5.v", ServerInfo::BleedingRevision, "be1be79" }, |
94 | { "iaudiox5.v", ServerInfo::BleedingDate, "2020-11-14T10:57:23" }, | 94 | { "iaudiox5.v", ServerInfo::BleedingDate, "2020-11-14T10:57:23" }, |
95 | { "iaudiox5.v", ServerInfo::CurDevelUrl, "https://unittest/dev/rockbox-iaudiox5.zip" }, | 95 | { "iaudiox5.v", ServerInfo::CurDevelUrl, "https://unittest/dev/rockbox-iaudiox5.zip" }, |
96 | { "iaudiox5.v", ServerInfo::ManualPdfUrl, "https://unittest/manual/rockbox-iaudiox5.pdf" }, | ||
97 | { "ipodmini2g", ServerInfo::ManualPdfUrl, "https://unittest/manual/rockbox-ipodmini1g.pdf" }, | ||
98 | { "iriverh100", ServerInfo::ManualHtmlUrl, "https://unittest/manual/rockbox-iriverh100/rockbox-build.html" }, | ||
99 | { "iriverh120", ServerInfo::ManualZipUrl, "https://unittest/manual/rockbox-iriverh100-html.zip" }, | ||
100 | }; | 96 | }; |
101 | 97 | ||
102 | 98 | ||