forked from mia/Aegisub
Make update checker use a compile-time list of tags to determine the appropriate updates to list, instead of a hard-coded OS check. The list of accepted tags is defined by the UPDATE_CHECKER_ACCEPT_TAGS macro. If this macro is undefined, the update checker will still compile, but will reject all updates with tags.
Updates #1132. Originally committed to SVN as r4440.
This commit is contained in:
parent
2d9eee4ea9
commit
ff34a08afd
2 changed files with 42 additions and 17 deletions
|
@ -112,6 +112,18 @@
|
|||
//#define FINAL_RELEASE
|
||||
|
||||
|
||||
// Specify tags the update checker accepts
|
||||
// See <http://devel.aegisub.org/wiki/Technical/UpdateChecker> for details on tags.
|
||||
// Depending on who will be using your build, you may or may not want to have the
|
||||
// "source" tag in here. If the string is empty, the update checker will reject any
|
||||
// update offered.
|
||||
#if defined(_M_IX86)
|
||||
# define UPDATE_CHECKER_ACCEPT_TAGS "windows source"
|
||||
#elif defined(_M_X64)
|
||||
# define UPDATE_CHECKER_ACCEPT_TAGS "win64 source"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
///////////// NOT RECOMMENDED /////////////
|
||||
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
#include <wx/statline.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <memory>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
#endif
|
||||
|
||||
|
@ -323,6 +324,17 @@ static wxString GetSystemLanguage()
|
|||
|
||||
void AegisubVersionCheckerThread::DoCheck()
|
||||
{
|
||||
std::set<wxString> accept_tags;
|
||||
#ifdef UPDATE_CHECKER_ACCEPT_TAGS
|
||||
{
|
||||
wxStringTokenizer tk(wxString(UPDATE_CHECKER_ACCEPT_TAGS, wxConvUTF8), _T(" "));
|
||||
while (tk.HasMoreTokens())
|
||||
{
|
||||
accept_tags.insert(tk.GetNextToken());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
const wxString servername = _T("updates.aegisub.org");
|
||||
const wxString base_updates_path = _T("/trunk");
|
||||
|
||||
|
@ -344,7 +356,7 @@ void AegisubVersionCheckerThread::DoCheck()
|
|||
|
||||
std::auto_ptr<wxInputStream> stream(http.GetInputStream(path));
|
||||
if (stream.get() == 0) // check for null-pointer
|
||||
throw VersionCheckError("Could not connect to updates server.");
|
||||
throw VersionCheckError(STD_STR(_("Could not download from updates server.")));
|
||||
|
||||
if (http.GetResponse() < 200 || http.GetResponse() >= 300) {
|
||||
const std::string str_err = STD_STR(wxString::Format(_("HTTP request failed, got HTTP response %d."), http.GetResponse()));
|
||||
|
@ -367,7 +379,7 @@ void AegisubVersionCheckerThread::DoCheck()
|
|||
|
||||
wxString line_type = parsed[0];
|
||||
wxString line_revision = parsed[1];
|
||||
wxString line_platform = parsed[2];
|
||||
wxString line_tags_str = parsed[2];
|
||||
wxString line_url = inline_string_decode(parsed[3]);
|
||||
wxString line_friendlyname = inline_string_decode(parsed[4]);
|
||||
wxString line_description = inline_string_decode(parsed[5]);
|
||||
|
@ -378,23 +390,24 @@ void AegisubVersionCheckerThread::DoCheck()
|
|||
continue;
|
||||
}
|
||||
|
||||
// check if the OS is right
|
||||
wxOperatingSystemId osid = wxGetOsVersion();
|
||||
if (line_platform == _T("windows") && !(osid & wxOS_WINDOWS_NT))
|
||||
// check if the tags match
|
||||
if (line_tags_str.IsEmpty() || line_tags_str == _T("all"))
|
||||
{
|
||||
continue;
|
||||
// looking good
|
||||
}
|
||||
if (line_platform == _T("mac") && !(osid & wxOS_MAC_OSX_DARWIN))
|
||||
else
|
||||
{
|
||||
continue;
|
||||
bool accepts_all_tags = true;
|
||||
wxStringTokenizer tk(line_tags_str, _T(" "));
|
||||
while (tk.HasMoreTokens())
|
||||
{
|
||||
if (accept_tags.find(tk.GetNextToken()) == accept_tags.end())
|
||||
{
|
||||
accepts_all_tags = false;
|
||||
break;
|
||||
}
|
||||
if (line_platform == _T("source") && (osid & wxOS_WINDOWS_NT || osid & wxOS_MAC_OSX_DARWIN))
|
||||
{
|
||||
// TODO: support interested-in-source-releases flag
|
||||
continue;
|
||||
}
|
||||
if (!(line_platform == _T("windows") || line_platform == _T("mac") || line_platform == _T("source") || line_platform == _T("all")))
|
||||
{
|
||||
if (!accepts_all_tags)
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue