Compare commits
No commits in common. "71af5146420ec8165136feb48964559687200142" and "4e71a26a14c91dad9a35d342a78b64df1c3ed3c9" have entirely different histories.
71af514642
...
4e71a26a14
|
@ -1,4 +1,4 @@
|
||||||
# Winamp Collaborative License (WCL) Version 1.0.1
|
# Winamp Collaborative License (WCL) Version 1.0
|
||||||
|
|
||||||
This License governs the use, modification, and distribution of the Winamp software.
|
This License governs the use, modification, and distribution of the Winamp software.
|
||||||
By using, Modifying, or distributing this software, you agree to the following terms:
|
By using, Modifying, or distributing this software, you agree to the following terms:
|
||||||
|
@ -30,6 +30,7 @@ You are granted the right to Modify the software for private use only. You may m
|
||||||
|
|
||||||
### 5. Restrictions
|
### 5. Restrictions
|
||||||
- No Distribution of Modified Versions: You may not distribute modified versions of the software, whether in source or binary form.
|
- No Distribution of Modified Versions: You may not distribute modified versions of the software, whether in source or binary form.
|
||||||
|
- No Forking: You may not create, maintain, or distribute a forked version of the software.
|
||||||
- Official Distribution: Only the maintainers of the official repository are allowed to distribute the software and its modifications.
|
- Official Distribution: Only the maintainers of the official repository are allowed to distribute the software and its modifications.
|
||||||
|
|
||||||
### 6. No Sublicensing
|
### 6. No Sublicensing
|
||||||
|
@ -76,4 +77,4 @@ You must comply with all applicable laws and regulations in connection with your
|
||||||
- Severability: If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
|
- Severability: If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
|
||||||
By using, Modifying, or contributing to the software, you acknowledge that you have read, understood, and agree to be bound by these terms and conditions.
|
By using, Modifying, or contributing to the software, you acknowledge that you have read, understood, and agree to be bound by these terms and conditions.
|
||||||
|
|
||||||
This custom License aims to maintain the collaborative nature of the project while restricting the distribution of modified versions.
|
This custom License aims to maintain the collaborative nature of the project while restricting the distribution of modified versions.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
32
README.md
32
README.md
|
@ -11,42 +11,40 @@ It really whips the llama's ass.
|
||||||
Building of the Winamp desktop client is currently based around Visual Studio 2019 (VS2019) and Intel IPP libs (You need to use exactly v6.1.1.035).
|
Building of the Winamp desktop client is currently based around Visual Studio 2019 (VS2019) and Intel IPP libs (You need to use exactly v6.1.1.035).
|
||||||
There are different options of how to build Winamp:
|
There are different options of how to build Winamp:
|
||||||
|
|
||||||
1. Use the `build_winampAll_2019.cmd` script file that makes 4 versions x86/x64 (Debug and Release). In this case Visual Studio IDE not running.
|
1. Use a build_winampAll_2019.cmd script file that makes 4 versions x86/x64 (Debug and Release). In this case Visual Studio IDE not running.
|
||||||
2. Use the `winampAll_2019.sln` file to build and debug in Visual Studio IDE.
|
2. Use a winampAll_2019.sln file to build and debug in Visual Studio IDE.
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|
||||||
1. Use the `build_winampAll_2019.cmd` script file that makes 4 versions x86/x64 (Debug and Release). In this case Visual Studio IDE not running.
|
1. Use a build_winampAll_2019.cmd script file that makes 4 versions x86/x64 (Debug and Release). In this case Visual Studio IDE not running.
|
||||||
2. Use the `winampAll_2019.sln` file to build and debug in Visual Studio IDE.
|
2. Use a winampAll_2019.sln file to build and debug in Visual Studio IDE.
|
||||||
|
|
||||||
#### libvpx
|
#### libvpx
|
||||||
We take libvpx from [https://github.com/ShiftMediaProject/libvpx]([url](https://github.com/ShiftMediaProject/libvpx)), modify it and pack to archive.
|
We take libvpx from https://github.com/ShiftMediaProject/libvpx, modify it and pack to archive.
|
||||||
Run `unpack_libvpx_v1.8.2_msvc16.cmd` to unpack.
|
Run unpack_libvpx_v1.8.2_msvc16.cmd to unpack.
|
||||||
|
|
||||||
#### libmpg123
|
#### libmpg123
|
||||||
We take libmpg123 from [https://www.mpg123.de/download.shtml]([url](https://www.mpg123.de/download.shtml)), modify it and pack to archive.
|
We take libmpg123 from https://www.mpg123.de/download.shtml, modify it and pack to archive.
|
||||||
Run `unpack_libmpg123.cmd` to unpack and process dlls.
|
Run unpack_libmpg123.cmd to unpack and process dlls.
|
||||||
|
|
||||||
#### OpenSSL
|
#### OpenSSL
|
||||||
You need to use `openssl-1.0.1u`. For that you need to build a static version of these libs.
|
You need to use openssl-1.0.1u. For that you need to build a static version of these libs.
|
||||||
Run `build_vs_2019_openssl_x86.cmd` and `build_vs_2019_openssl_64.cmd`.
|
Run build_vs_2019_openssl_x86.cmd and build_vs_2019_openssl_64.cmd.
|
||||||
|
|
||||||
To build OpenSSL you need to install
|
To build OpenSSL you need to install
|
||||||
|
|
||||||
* 7-Zip
|
7-Zip, NASM and Perl.
|
||||||
* NASM
|
|
||||||
* Perl
|
|
||||||
|
|
||||||
#### DirectX 9 SDK
|
#### DirectX 9 SDK
|
||||||
We take DirectX 9 SDK (June 2010) from Microsoft, modify it and pack to archive.
|
We take DirectX 9 SDK (June 2010) from Microsoft, modify it and pack to archive.
|
||||||
Run `unpack_microsoft_directx_sdk_2010.cmd` to unpack it.
|
Run unpack_microsoft_directx_sdk_2010.cmd to unpack it.
|
||||||
|
|
||||||
#### Microsoft ATLMFC lib fix
|
#### Microsoft ATLMFC lib fix
|
||||||
In file `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\atlmfc\include\atltransactionmanager.h`
|
In file C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\atlmfc\include\atltransactionmanager.h
|
||||||
|
|
||||||
Go to line 427 and change from `return ::DeleteFile((LPTSTR)lpFileName);` to `return DeleteFile((LPTSTR)lpFileName);`
|
goto line 427 and change from 'return ::DeleteFile((LPTSTR)lpFileName);' to 'return DeleteFile((LPTSTR)lpFileName);'
|
||||||
|
|
||||||
#### Intel IPP 6.1.1.035
|
#### Intel IPP 6.1.1.035
|
||||||
We take Intel IPP 6.1.1.035, modify it and pack to archive.
|
We take Intel IPP 6.1.1.035, modify it and pack to archive.
|
||||||
|
|
||||||
Run `unpack_intel_ipp_6.1.1.035.cmd` to unpack it.
|
Run unpack_intel_ipp_6.1.1.035.cmd to unpack it.
|
||||||
|
|
|
@ -1,2 +1,693 @@
|
||||||
|
// disabled 30 May 2012 as per email from Tejas w.r.t. to Rovi deal ending
|
||||||
#if 0
|
#if 0
|
||||||
|
#include "main.h"
|
||||||
|
#include "../nu/AutoUrl.h"
|
||||||
|
#include "../nu/AutoWide.h"
|
||||||
|
#include "../nu/GrowBuf.h"
|
||||||
|
#include "api.h"
|
||||||
|
#include "../xml/obj_xml.h"
|
||||||
|
#include "../xml/ifc_xmlreadercallback.h"
|
||||||
|
#include "..\Components\wac_network\wac_network_http_receiver_api.h"
|
||||||
|
#include <api/service/waservicefactory.h>
|
||||||
|
#include <api/service/svcs/svc_imgload.h>
|
||||||
|
#include "XMLString.h"
|
||||||
|
#include <tataki/export.h>
|
||||||
|
#include <tataki/bitmap/bitmap.h>
|
||||||
|
#include <tataki/canvas/bltcanvas.h>
|
||||||
|
#include <strsafe.h>
|
||||||
|
|
||||||
|
static INT_PTR CALLBACK artDownloader(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam);
|
||||||
|
static INT_PTR CALLBACK scrollChildHostProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam);
|
||||||
|
static INT_PTR CALLBACK scrollChildProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam);
|
||||||
|
static INT_PTR CALLBACK imageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam);
|
||||||
|
|
||||||
|
#define HTTP_BUFFER_SIZE 32768
|
||||||
|
|
||||||
|
#define WM_ADDCHILD WM_USER+0
|
||||||
|
#define WM_SELECTED WM_USER+1
|
||||||
|
#define WM_UPDATESTATUS WM_USER+2
|
||||||
|
#define AddImageToList(hChild, param) SendMessageW(hChild,WM_ADDCHILD,0,(LPARAM)param)
|
||||||
|
#define GetParam(hwndDlg) (ArtParser*)GetWindowLongPtrW(hwndDlg,GWLP_USERDATA)
|
||||||
|
#define GetParamC(hwndDlg) (ImgDownloader*)GetWindowLongPtrW(hwndDlg,GWLP_USERDATA)
|
||||||
|
#define UpdateStatus(hwndDlg) PostMessageW(hwndDlg,WM_UPDATESTATUS,0,0)
|
||||||
|
|
||||||
|
class ImgDownloader
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ImgDownloader(const wchar_t *_desc, const char *_url) : done(false), http(0), started(false), error(false), imgbuf(0), imgbufsize(0), imgbufused(0)
|
||||||
|
{
|
||||||
|
desc = _wcsdup(_desc);
|
||||||
|
url = _strdup(_url);
|
||||||
|
}
|
||||||
|
~ImgDownloader()
|
||||||
|
{
|
||||||
|
free(desc);
|
||||||
|
free(url);
|
||||||
|
free(imgbuf);
|
||||||
|
waServiceFactory *httpFactory = WASABI_API_SVC->service_getServiceByGuid(httpreceiverGUID);
|
||||||
|
if(httpFactory && http)
|
||||||
|
httpFactory->releaseInterface(http);
|
||||||
|
}
|
||||||
|
bool run();
|
||||||
|
|
||||||
|
wchar_t *desc;
|
||||||
|
char *url;
|
||||||
|
bool done, error;
|
||||||
|
api_httpreceiver *http;
|
||||||
|
|
||||||
|
BYTE *imgbuf;
|
||||||
|
int imgbufsize;
|
||||||
|
int imgbufused;
|
||||||
|
private:
|
||||||
|
bool started;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ArtParser : public ifc_xmlreadercallback
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ArtParser(artFetchData * data);
|
||||||
|
~ArtParser();
|
||||||
|
|
||||||
|
wchar_t curAlbumStr[512] = {0};
|
||||||
|
void ArtParser::StartTag(const wchar_t *xmlpath, const wchar_t *xmltag, ifc_xmlreaderparams *params);
|
||||||
|
void ArtParser::TextHandler(const wchar_t *xmlpath, const wchar_t *xmltag, const wchar_t *str);
|
||||||
|
|
||||||
|
int run();
|
||||||
|
|
||||||
|
artFetchData * data;
|
||||||
|
|
||||||
|
bool doneXML;
|
||||||
|
int curImage, numImages, failedImages;
|
||||||
|
|
||||||
|
bool error;
|
||||||
|
HWND hwndDlg;
|
||||||
|
obj_xml *parser;
|
||||||
|
waServiceFactory *parserFactory, *httpFactory;
|
||||||
|
api_httpreceiver *http;
|
||||||
|
std::vector<ImgDownloader*> imgDownload;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
#define CBCLASS ArtParser
|
||||||
|
START_DISPATCH_INLINE;
|
||||||
|
VCB(ONSTARTELEMENT, StartTag);
|
||||||
|
VCB(ONCHARDATA, TextHandler);
|
||||||
|
END_DISPATCH;
|
||||||
|
#undef CBCLASS
|
||||||
|
};
|
||||||
|
|
||||||
|
wchar_t tmp_album[512] = {0}, tmp_artist[512] = {0}, tmp_year[5] = {0};
|
||||||
|
int RetrieveAlbumArt(artFetchData * data)
|
||||||
|
{
|
||||||
|
if(!data || data->size < sizeof(artFetchData))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
int ret = 1;
|
||||||
|
Tataki::Init(serviceManager);
|
||||||
|
{
|
||||||
|
ArtParser param(data);
|
||||||
|
if(!param.error)
|
||||||
|
ret = LPDialogBoxParamW(IDD_ARTDOWNLOADER,data->parent,artDownloader,(LPARAM)¶m);
|
||||||
|
|
||||||
|
while (ret == 2) // Keep in loop till user aborts custom search
|
||||||
|
{
|
||||||
|
// TODO: benski> maybe we should save the old values and restore at the end
|
||||||
|
data->album = tmp_album;
|
||||||
|
data->artist = tmp_artist;
|
||||||
|
data->year = _wtoi(tmp_year);
|
||||||
|
// Martin> we should also set the other values back to null
|
||||||
|
// benski> i'm not sure if we want to set these id fields to NULL
|
||||||
|
// but we'll go with it for now
|
||||||
|
data->amgAlbumId = NULL;
|
||||||
|
data->amgArtistId = NULL;
|
||||||
|
data->gracenoteFileId = NULL;
|
||||||
|
WASABI_API_MEMMGR->sysFree(data->imgData);
|
||||||
|
data->imgData = NULL;
|
||||||
|
data->imgDataLen = NULL;
|
||||||
|
|
||||||
|
ArtParser param(data);
|
||||||
|
ret = LPDialogBoxParamW(IDD_ARTDOWNLOADER,data->parent,artDownloader,(LPARAM)¶m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Tataki::Quit();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define USER_AGENT_SIZE (10 /*User-Agent*/ + 2 /*: */ + 6 /*Winamp*/ + 1 /*/*/ + 1 /*5*/ + 3/*.21*/ + 1 /*Null*/)
|
||||||
|
static void SetUserAgent(api_httpreceiver *http)
|
||||||
|
{
|
||||||
|
char user_agent[USER_AGENT_SIZE] = {0};
|
||||||
|
StringCchCopyA(user_agent, USER_AGENT_SIZE, "User-Agent: Winamp/"APP_VERSION); // as a nice side effect, this will cut off any extra digits after the first two. e.g. 5.111 becomes 5.11
|
||||||
|
http->addheader(user_agent);
|
||||||
|
}
|
||||||
|
|
||||||
|
class UrlBuilder : private GrowBuf
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
UrlBuilder(const char * base) : first(1) { set(base); }
|
||||||
|
~UrlBuilder(){}
|
||||||
|
void AddParam(const char * key, const wchar_t * value) { AddParamI(key,(char*)AutoUrl(value)); }
|
||||||
|
void AddParam(const char * key, int value) { char buf[16]; StringCchPrintfA(buf,16,"%d",value); AddParamI(key,buf); }
|
||||||
|
void Finish() { GrowBuf::add((void*)"",1); }
|
||||||
|
const char * Get() { return (const char*)get(); } // don't call this without first calling finish!
|
||||||
|
private:
|
||||||
|
void AddParamI(const char * key, const char * value) { if(first){ first=0; add("?");} else add("&"); add(key); add("="); add(value); }
|
||||||
|
void add(const char * x) { GrowBuf::add((char*)x,strlen(x)); }
|
||||||
|
void set(const char * x) { GrowBuf::set((char*)x,strlen(x)); }
|
||||||
|
int first;
|
||||||
|
};
|
||||||
|
|
||||||
|
static wchar_t* format(const wchar_t *in, wchar_t *buf, int len)
|
||||||
|
{
|
||||||
|
wchar_t *p = buf;
|
||||||
|
int inbracket = 0;
|
||||||
|
while(in && *in)
|
||||||
|
{
|
||||||
|
if(p >= buf + len - 1) break;
|
||||||
|
else if(*in == L'[' || *in == L'(' || *in == L'<') inbracket++;
|
||||||
|
else if(*in == L']' || *in == L')' || *in == L'>') inbracket--;
|
||||||
|
else if(!inbracket) *(p++) = *in;
|
||||||
|
in++;
|
||||||
|
}
|
||||||
|
*p=0;
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArtParser::ArtParser(artFetchData * data) : data(data), error(false), parserFactory(0), parser(0), http(0), httpFactory(0), doneXML(false), curImage(0), numImages(0), failedImages(0)
|
||||||
|
{
|
||||||
|
curAlbumStr[0]=0;
|
||||||
|
|
||||||
|
parserFactory = WASABI_API_SVC->service_getServiceByGuid(obj_xmlGUID);
|
||||||
|
if (parserFactory)
|
||||||
|
parser = (obj_xml *)parserFactory->getInterface();
|
||||||
|
|
||||||
|
if (parser)
|
||||||
|
{
|
||||||
|
parser->xmlreader_registerCallback(L"document\fartwork", this);
|
||||||
|
parser->xmlreader_registerCallback(L"response\fdata\fartwork", this);
|
||||||
|
parser->xmlreader_open();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error=true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// construct xml url
|
||||||
|
UrlBuilder url("http://client.winamp.com/metadata/artwork.php");
|
||||||
|
|
||||||
|
wchar_t temp[2048] = {0};
|
||||||
|
|
||||||
|
if(data->artist && data->artist[0] && _wcsicmp(data->artist, L"Various Artists") && _wcsicmp(data->artist, L"VA") && _wcsicmp(data->artist, L"OST"))
|
||||||
|
url.AddParam("artist",format(data->artist,temp,2048));
|
||||||
|
|
||||||
|
if(data->album && data->album[0])
|
||||||
|
url.AddParam("album",format(data->album,temp,2048));
|
||||||
|
|
||||||
|
if(data->year)
|
||||||
|
url.AddParam("recorddate",data->year);
|
||||||
|
|
||||||
|
if(data->amgAlbumId)
|
||||||
|
url.AddParam("amgalbumid",data->amgAlbumId);
|
||||||
|
|
||||||
|
if(data->amgArtistId)
|
||||||
|
url.AddParam("amgartistid",data->amgArtistId);
|
||||||
|
|
||||||
|
if(data->gracenoteFileId && data->gracenoteFileId[0])
|
||||||
|
url.AddParam("tagid",data->gracenoteFileId);
|
||||||
|
|
||||||
|
url.Finish();
|
||||||
|
|
||||||
|
httpFactory = WASABI_API_SVC->service_getServiceByGuid(httpreceiverGUID);
|
||||||
|
if(httpFactory) http = (api_httpreceiver *)httpFactory->getInterface();
|
||||||
|
|
||||||
|
if(http)
|
||||||
|
{
|
||||||
|
http->AllowCompression();
|
||||||
|
http->open(API_DNS_AUTODNS, HTTP_BUFFER_SIZE, config_proxy);
|
||||||
|
SetUserAgent(http);
|
||||||
|
http->connect(url.Get());
|
||||||
|
}
|
||||||
|
else error = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArtParser::~ArtParser()
|
||||||
|
{
|
||||||
|
imgDownload.deleteAll();
|
||||||
|
if(parser)
|
||||||
|
{
|
||||||
|
parser->xmlreader_unregisterCallback(this);
|
||||||
|
parser->xmlreader_close();
|
||||||
|
if(parserFactory)
|
||||||
|
parserFactory->releaseInterface(parser);
|
||||||
|
}
|
||||||
|
parser = 0;
|
||||||
|
parserFactory = 0;
|
||||||
|
if(http && httpFactory)
|
||||||
|
httpFactory->releaseInterface(http);
|
||||||
|
http = 0;
|
||||||
|
httpFactory = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ArtParser::StartTag(const wchar_t *xmlpath, const wchar_t *xmltag, ifc_xmlreaderparams *params)
|
||||||
|
{
|
||||||
|
const wchar_t* artist = params->getItemValue(L"amgArtistDispName");
|
||||||
|
const wchar_t* album = params->getItemValue(L"amgDispName");
|
||||||
|
const wchar_t* year = params->getItemValue(L"recordDate");
|
||||||
|
StringCchPrintfW(curAlbumStr,512,L"%s - %s (%s)",artist?artist:L"",album?album:L"",year?year:L"");
|
||||||
|
}
|
||||||
|
|
||||||
|
void ArtParser::TextHandler(const wchar_t *xmlpath, const wchar_t *xmltag, const wchar_t *str)
|
||||||
|
{
|
||||||
|
numImages++;
|
||||||
|
imgDownload.push_back(new ImgDownloader(curAlbumStr,AutoChar(str)));
|
||||||
|
UpdateStatus(hwndDlg);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ArtParser::run()
|
||||||
|
{
|
||||||
|
int ret = http->run();
|
||||||
|
if (ret == -1) // connection failed
|
||||||
|
{
|
||||||
|
error=true;
|
||||||
|
UpdateStatus(hwndDlg);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int replycode = http->getreplycode();
|
||||||
|
switch (replycode)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 100:
|
||||||
|
return 1;
|
||||||
|
case 200:
|
||||||
|
{
|
||||||
|
char downloadedData[HTTP_BUFFER_SIZE] = {0};
|
||||||
|
int xmlResult = API_XML_SUCCESS;
|
||||||
|
int downloadSize = http->get_bytes(downloadedData, HTTP_BUFFER_SIZE);
|
||||||
|
if(downloadSize)
|
||||||
|
xmlResult = parser->xmlreader_feed((void *)downloadedData, downloadSize);
|
||||||
|
else if(!downloadSize && ret == 1)
|
||||||
|
{ // we're finished!
|
||||||
|
xmlResult = parser->xmlreader_feed(0,0);
|
||||||
|
doneXML=true;
|
||||||
|
UpdateStatus(hwndDlg);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
error=true;
|
||||||
|
UpdateStatus(hwndDlg);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ImgDownloader::run()
|
||||||
|
{
|
||||||
|
if(!started)
|
||||||
|
{
|
||||||
|
started = true;
|
||||||
|
waServiceFactory *httpFactory = WASABI_API_SVC->service_getServiceByGuid(httpreceiverGUID);
|
||||||
|
if(httpFactory) http = (api_httpreceiver *)httpFactory->getInterface();
|
||||||
|
if(http)
|
||||||
|
{
|
||||||
|
http->open(API_DNS_AUTODNS, HTTP_BUFFER_SIZE, config_proxy);
|
||||||
|
SetUserAgent(http);
|
||||||
|
http->connect(url);
|
||||||
|
}
|
||||||
|
imgbuf = (BYTE*)malloc(HTTP_BUFFER_SIZE);
|
||||||
|
imgbufsize = HTTP_BUFFER_SIZE;
|
||||||
|
}
|
||||||
|
if(!http || !imgbuf)
|
||||||
|
{
|
||||||
|
error=true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int ret = http->run();
|
||||||
|
if(ret == -1) //error
|
||||||
|
{
|
||||||
|
error=true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int replycode = http->getreplycode();
|
||||||
|
switch (replycode)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 100:
|
||||||
|
return 1;
|
||||||
|
case 200:
|
||||||
|
{
|
||||||
|
int downloadSize = http->get_bytes(imgbuf+imgbufused, imgbufsize - imgbufused);
|
||||||
|
imgbufused += downloadSize;
|
||||||
|
if(imgbufused + 4096 >= imgbufsize)
|
||||||
|
{
|
||||||
|
imgbufsize += HTTP_BUFFER_SIZE;
|
||||||
|
imgbuf = (BYTE*)realloc(imgbuf,imgbufsize);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!downloadSize && ret == 1)
|
||||||
|
done=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static INT_PTR CALLBACK artDownloader(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam)
|
||||||
|
{
|
||||||
|
static HWND m_child;
|
||||||
|
switch(uMsg)
|
||||||
|
{
|
||||||
|
case WM_INITDIALOG:
|
||||||
|
{
|
||||||
|
m_child = LPCreateDialogW(IDD_ARTDOWNLOADER_SCROLLHOST,hwndDlg,(WNDPROC)scrollChildHostProc);
|
||||||
|
SetWindowLong(hwndDlg,GWLP_USERDATA,lParam);
|
||||||
|
ArtParser * parser = (ArtParser *)lParam;
|
||||||
|
parser->hwndDlg = hwndDlg;
|
||||||
|
SetTimer(hwndDlg,0,50,NULL);
|
||||||
|
SetTimer(hwndDlg,1,50,NULL);
|
||||||
|
UpdateStatus(hwndDlg);
|
||||||
|
if(parser->data->showCancelAll) ShowWindow(GetDlgItem(hwndDlg,IDC_CANCELALL),SW_SHOWNA);
|
||||||
|
wchar_t old[100]=L"";
|
||||||
|
GetWindowTextW(hwndDlg,old,100);
|
||||||
|
wchar_t buf[256]=L"";
|
||||||
|
if(parser->data->artist && parser->data->artist[0] && parser->data->album && parser->data->album[0])
|
||||||
|
StringCchPrintfW(buf,256,L"%s: %s - %s",old,parser->data->artist,parser->data->album);
|
||||||
|
else if(parser->data->album && parser->data->album[0])
|
||||||
|
StringCchPrintfW(buf,256,L"%s: %s",old,parser->data->album);
|
||||||
|
else if(parser->data->artist && parser->data->artist[0])
|
||||||
|
StringCchPrintfW(buf,256,L"%s: %s",old,parser->data->artist);
|
||||||
|
|
||||||
|
if(buf[0])
|
||||||
|
SetWindowTextW(hwndDlg,buf);
|
||||||
|
|
||||||
|
SetWindowTextW(GetDlgItem(hwndDlg,IDC_SEARCHREFINE_ARTIST), parser->data->artist);
|
||||||
|
SetWindowTextW(GetDlgItem(hwndDlg,IDC_SEARCHREFINE_ALBUM), parser->data->album);
|
||||||
|
wchar_t yearbuf[5]=L"";
|
||||||
|
_itow(parser->data->year,yearbuf,10);
|
||||||
|
SetWindowTextW(GetDlgItem(hwndDlg,IDC_SEARCHREFINE_YEAR), (parser->data->year?yearbuf:L""));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_SELECTED:
|
||||||
|
{
|
||||||
|
ArtParser * parser = GetParam(hwndDlg);
|
||||||
|
HWND selchild = (HWND)wParam;
|
||||||
|
ImgDownloader *d = (ImgDownloader *)lParam;
|
||||||
|
if(parser && d && d->imgbuf && d->imgbufused)
|
||||||
|
{
|
||||||
|
if (!AGAVE_API_AMGSUCKS || AGAVE_API_AMGSUCKS->WriteAlbumArt(d->imgbuf, d->imgbufused, &parser->data->imgData, &parser->data->imgDataLen) != 0)
|
||||||
|
{
|
||||||
|
void * img = WASABI_API_MEMMGR->sysMalloc(d->imgbufused);
|
||||||
|
memcpy(img,d->imgbuf,d->imgbufused);
|
||||||
|
parser->data->imgData = img;
|
||||||
|
parser->data->imgDataLen = d->imgbufused;
|
||||||
|
}
|
||||||
|
char * dot = strrchr(d->url,'.');
|
||||||
|
if(dot) lstrcpynW(parser->data->type,AutoWide(dot+1),10);
|
||||||
|
EndDialog(hwndDlg,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_UPDATESTATUS:
|
||||||
|
{
|
||||||
|
ArtParser * parser = GetParam(hwndDlg);
|
||||||
|
if(parser)
|
||||||
|
{
|
||||||
|
wchar_t s[100] = {0};
|
||||||
|
if(parser->error) getStringW(IDS_ART_SEARCH_FAILED,s,100);
|
||||||
|
else if(parser->doneXML) getStringW(IDS_ART_SEARCH_FINISHED,s,100);
|
||||||
|
else getStringW(IDS_ART_SEARCH_PROGRESS,s,100);
|
||||||
|
wchar_t buf[512] = {0};
|
||||||
|
StringCchPrintfW(buf,512,getStringW(IDS_ART_SEARCH_STATUS,0,0),s,parser->numImages,parser->curImage - parser->failedImages,parser->failedImages,parser->numImages - parser->curImage);
|
||||||
|
SetDlgItemTextW(hwndDlg,IDC_STATUS,buf);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_TIMER:
|
||||||
|
{
|
||||||
|
ArtParser * parser = GetParam(hwndDlg);
|
||||||
|
switch(wParam)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
if(parser && !parser->run())
|
||||||
|
KillTimer(hwndDlg,0);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if(parser && parser->imgDownload.size())
|
||||||
|
{
|
||||||
|
ImgDownloader *d = parser->imgDownload.at(0);
|
||||||
|
if(d->error)
|
||||||
|
{
|
||||||
|
parser->failedImages++;
|
||||||
|
parser->curImage++;
|
||||||
|
parser->imgDownload.eraseindex(0);
|
||||||
|
delete d;
|
||||||
|
UpdateStatus(hwndDlg);
|
||||||
|
}
|
||||||
|
else if(d->done)
|
||||||
|
{
|
||||||
|
parser->curImage++;
|
||||||
|
parser->imgDownload.eraseindex(0);
|
||||||
|
AddImageToList(m_child,d);
|
||||||
|
UpdateStatus(hwndDlg);
|
||||||
|
}
|
||||||
|
else d->run();
|
||||||
|
}
|
||||||
|
if(parser->error || parser->doneXML)
|
||||||
|
{
|
||||||
|
if(parser->curImage == parser->numImages)
|
||||||
|
{
|
||||||
|
KillTimer(hwndDlg,1);
|
||||||
|
if(!parser->numImages)
|
||||||
|
{
|
||||||
|
wchar_t title[100] = {0};
|
||||||
|
getStringW(IDS_ART_SEARCH_NOT_FOUND_TITLE,title,100);
|
||||||
|
MessageBoxW(hwndDlg,getStringW(IDS_ART_SEARCH_NOT_FOUND,0,0),title,0);
|
||||||
|
//EndDialog(hwndDlg,-1); //CUT, since we have now a custom search
|
||||||
|
}
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_SEARCHAGAIN), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_DESTROY:
|
||||||
|
{
|
||||||
|
SetWindowLong(hwndDlg,GWLP_USERDATA,0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_CLOSE:
|
||||||
|
EndDialog(hwndDlg,-1);
|
||||||
|
break;
|
||||||
|
case WM_COMMAND:
|
||||||
|
switch(LOWORD(wParam))
|
||||||
|
{
|
||||||
|
case IDCANCEL:
|
||||||
|
EndDialog(hwndDlg,-1);
|
||||||
|
break;
|
||||||
|
case IDC_CANCELALL:
|
||||||
|
EndDialog(hwndDlg,-2);
|
||||||
|
break;
|
||||||
|
case IDC_SEARCHAGAIN: // copy text field params to parser
|
||||||
|
ArtParser * parser = GetParam(hwndDlg);
|
||||||
|
|
||||||
|
// Let the first search process finish
|
||||||
|
if (!(parser->doneXML || parser->error))
|
||||||
|
{
|
||||||
|
//TODO change this string
|
||||||
|
MessageBoxW(hwndDlg, L"Please wait till the current retrieval is finished", L"", 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetDlgItemTextW(hwndDlg,IDC_SEARCHREFINE_ALBUM, tmp_album, 512);
|
||||||
|
GetDlgItemTextW(hwndDlg,IDC_SEARCHREFINE_ARTIST, tmp_artist, 512);
|
||||||
|
GetDlgItemTextW(hwndDlg,IDC_SEARCHREFINE_YEAR, tmp_year, 5);
|
||||||
|
|
||||||
|
// End Dialog w/ returning 2: indicates that teh users wants to start a custom search
|
||||||
|
EndDialog(hwndDlg,2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// from FileInfo.cpp
|
||||||
|
extern HBITMAP getBitmap(ARGB32 * data, int dw, int dh, int targetW, int targetH, HWND parent);
|
||||||
|
extern ARGB32 * decompressImage(const void *data, int datalen, int * dataW, int * dataH);
|
||||||
|
|
||||||
|
HBITMAP loadImage(const void * data, int datalen, int w, int h, HWND parent, int *dw=0, int *dh=0)
|
||||||
|
{
|
||||||
|
int dataW=0, dataH=0;
|
||||||
|
ARGB32* ret = decompressImage(data,datalen,&dataW,&dataH);
|
||||||
|
|
||||||
|
if(dw) *dw = dataW;
|
||||||
|
if(dh) *dh = dataH;
|
||||||
|
if(!ret) return 0;
|
||||||
|
HBITMAP r = getBitmap(ret, dataW, dataH, w, h, parent);
|
||||||
|
WASABI_API_MEMMGR->sysFree(ret);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define GetDlgParent(hwndDlg) GetParent(GetParent(GetParent(hwndDlg)))
|
||||||
|
static INT_PTR CALLBACK imageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam)
|
||||||
|
{
|
||||||
|
switch(uMsg)
|
||||||
|
{
|
||||||
|
case WM_INITDIALOG:
|
||||||
|
{
|
||||||
|
SetWindowLong(hwndDlg,GWLP_USERDATA,lParam);
|
||||||
|
ImgDownloader *d = (ImgDownloader *)lParam;
|
||||||
|
int w=0,h=0;
|
||||||
|
HBITMAP bm = loadImage(d->imgbuf,d->imgbufused,140,140,hwndDlg,&w,&h);
|
||||||
|
SendDlgItemMessage(hwndDlg,IDC_IMAGE,STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)bm);
|
||||||
|
wchar_t buf[1024] = {0};
|
||||||
|
StringCchPrintfW(buf,1024,L"%s: %dx%d (%d kB)",d->desc,w,h,(d->imgbufused/1024));
|
||||||
|
SetDlgItemTextW(hwndDlg,IDC_IMGTEXT,buf);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_DESTROY:
|
||||||
|
{
|
||||||
|
ImgDownloader *d = GetParamC(hwndDlg);
|
||||||
|
SetWindowLong(hwndDlg,GWLP_USERDATA,0);
|
||||||
|
if(d) delete d;
|
||||||
|
HBITMAP bm = (HBITMAP)SendDlgItemMessage(hwndDlg,IDC_IMAGE,STM_SETIMAGE,IMAGE_BITMAP,0);
|
||||||
|
if(bm) DeleteObject(bm);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_COMMAND:
|
||||||
|
if(LOWORD(wParam) != IDC_SELECT)
|
||||||
|
break;
|
||||||
|
// else run through
|
||||||
|
case WM_LBUTTONDBLCLK:
|
||||||
|
SendMessageW(GetDlgParent(hwndDlg),WM_SELECTED,(WPARAM)hwndDlg,(LPARAM)GetParamC(hwndDlg));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// scroll shit, nothing interesting is happening down here...
|
||||||
|
|
||||||
|
static INT_PTR CALLBACK scrollChildHostProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam)
|
||||||
|
{
|
||||||
|
//static HWND m_child;
|
||||||
|
switch(uMsg)
|
||||||
|
{
|
||||||
|
case WM_INITDIALOG:
|
||||||
|
{
|
||||||
|
RECT r;
|
||||||
|
HWND hw = GetParent(hwndDlg);
|
||||||
|
GetWindowRect(GetDlgItem(hw,IDC_PLACEHOLDER),&r);
|
||||||
|
ScreenToClient(hw,(LPPOINT)&r);
|
||||||
|
ScreenToClient(hw,((LPPOINT)&r)+1);
|
||||||
|
SetWindowPos(hwndDlg,NULL,r.left,r.top,r.right-r.left,r.bottom-r.top,SWP_NOZORDER|SWP_NOACTIVATE);
|
||||||
|
LPCreateDialogW(IDD_ARTDOWNLOADER_SCROLLCHILD,hwndDlg,(WNDPROC)scrollChildProc);
|
||||||
|
|
||||||
|
SCROLLINFO si={sizeof(si),SIF_RANGE|SIF_PAGE,0};
|
||||||
|
si.nPage = (r.right - r.left);
|
||||||
|
SetScrollInfo(hwndDlg,SB_HORZ,&si,TRUE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_ADDCHILD:
|
||||||
|
{
|
||||||
|
HWND m_child = GetWindow(hwndDlg,GW_CHILD);
|
||||||
|
HWND newChild = (HWND)SendMessageW(m_child,uMsg,wParam,lParam);
|
||||||
|
RECT r,r2;
|
||||||
|
GetClientRect(m_child,&r);
|
||||||
|
GetClientRect(hwndDlg,&r2);
|
||||||
|
SCROLLINFO si={sizeof(si),SIF_RANGE|SIF_PAGE,0};
|
||||||
|
si.nMin = 0;
|
||||||
|
si.nMax = (r.right - r.left);
|
||||||
|
si.nPage = (r2.right - r2.left);
|
||||||
|
if(si.nMax < 0) si.nMax = 0;
|
||||||
|
SetScrollInfo(hwndDlg,SB_HORZ,&si,TRUE);
|
||||||
|
return (INT_PTR)newChild;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_HSCROLL:
|
||||||
|
{
|
||||||
|
HWND m_child = GetWindow(hwndDlg,GW_CHILD);
|
||||||
|
int v=0;
|
||||||
|
RECT r;
|
||||||
|
RECT r2;
|
||||||
|
GetClientRect(hwndDlg,&r2);
|
||||||
|
GetClientRect(m_child,&r);
|
||||||
|
int action = LOWORD(wParam);
|
||||||
|
|
||||||
|
if (r2.right < r.right) {
|
||||||
|
if (action == SB_THUMBPOSITION || action == SB_THUMBTRACK) {
|
||||||
|
SCROLLINFO si={sizeof(si),SIF_TRACKPOS|SIF_POS};
|
||||||
|
GetScrollInfo(hwndDlg,SB_HORZ,&si);
|
||||||
|
v=si.nTrackPos;
|
||||||
|
}
|
||||||
|
else if (action == SB_TOP)
|
||||||
|
v=0;
|
||||||
|
else if (action == SB_BOTTOM)
|
||||||
|
v=r.right-r2.right;
|
||||||
|
else if (action == SB_PAGEDOWN || action == SB_LINEDOWN) {
|
||||||
|
SCROLLINFO si={sizeof(si),SIF_TRACKPOS|SIF_POS};
|
||||||
|
GetScrollInfo(hwndDlg,SB_HORZ,&si);
|
||||||
|
if(action == SB_LINEDOWN)
|
||||||
|
v=si.nPos + (r2.right)/10;
|
||||||
|
else
|
||||||
|
v=si.nPos + r2.right;
|
||||||
|
if (v > r.right-r2.right) v=r.right-r2.right;
|
||||||
|
}
|
||||||
|
else if (action == SB_PAGEUP || action == SB_LINEUP) {
|
||||||
|
SCROLLINFO si={sizeof(si),SIF_TRACKPOS|SIF_POS};
|
||||||
|
GetScrollInfo(hwndDlg,SB_HORZ,&si);
|
||||||
|
if(action == SB_LINEUP)
|
||||||
|
v=si.nPos - (r2.right)/10;
|
||||||
|
else
|
||||||
|
v=si.nPos - r2.right;
|
||||||
|
if (v < 0) v=0;
|
||||||
|
}
|
||||||
|
else return 0;
|
||||||
|
|
||||||
|
SetScrollPos(hwndDlg,SB_HORZ,v,!(action == SB_THUMBPOSITION || action == SB_THUMBTRACK));
|
||||||
|
SetWindowPos(m_child,NULL,0-v,0,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
SetScrollPos(hwndDlg,SB_HORZ,0,!(action == SB_THUMBPOSITION || action == SB_THUMBTRACK));
|
||||||
|
SetWindowPos(m_child,NULL,0,0,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static INT_PTR CALLBACK scrollChildProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam)
|
||||||
|
{
|
||||||
|
switch(uMsg)
|
||||||
|
{
|
||||||
|
case WM_INITDIALOG:
|
||||||
|
{
|
||||||
|
RECT r;
|
||||||
|
GetClientRect(hwndDlg,&r);
|
||||||
|
SetWindowPos(hwndDlg,0,0,0,0,r.bottom,SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_ADDCHILD:
|
||||||
|
{
|
||||||
|
HWND newChild = LPCreateDialogParamW(IDD_ARTDOWNLOADER_IMAGE,hwndDlg,imageProc,lParam);
|
||||||
|
RECT r,r2;
|
||||||
|
GetClientRect(hwndDlg,&r);
|
||||||
|
GetClientRect(newChild,&r2);
|
||||||
|
SetWindowPos(hwndDlg,0,0,0,r.right + r2.right,r.bottom,SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);
|
||||||
|
SetWindowPos(newChild,0,r.right,0,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
|
||||||
|
ShowWindow(newChild,SW_SHOWNA);
|
||||||
|
return (INT_PTR)newChild;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
Binary file not shown.
|
@ -0,0 +1,38 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIGsDCCBJigAwIBAgIQCK1AsmDSnEyfXs2pvZOu2TANBgkqhkiG9w0BAQwFADBi
|
||||||
|
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||||
|
d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg
|
||||||
|
RzQwHhcNMjEwNDI5MDAwMDAwWhcNMzYwNDI4MjM1OTU5WjBpMQswCQYDVQQGEwJV
|
||||||
|
UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRy
|
||||||
|
dXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0IDIwMjEgQ0ExMIIC
|
||||||
|
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1bQvQtAorXi3XdU5WRuxiEL1
|
||||||
|
M4zrPYGXcMW7xIUmMJ+kjmjYXPXrNCQH4UtP03hD9BfXHtr50tVnGlJPDqFX/IiZ
|
||||||
|
wZHMgQM+TXAkZLON4gh9NH1MgFcSa0OamfLFOx/y78tHWhOmTLMBICXzENOLsvsI
|
||||||
|
8IrgnQnAZaf6mIBJNYc9URnokCF4RS6hnyzhGMIazMXuk0lwQjKP+8bqHPNlaJGi
|
||||||
|
TUyCEUhSaN4QvRRXXegYE2XFf7JPhSxIpFaENdb5LpyqABXRN/4aBpTCfMjqGzLm
|
||||||
|
ysL0p6MDDnSlrzm2q2AS4+jWufcx4dyt5Big2MEjR0ezoQ9uo6ttmAaDG7dqZy3S
|
||||||
|
vUQakhCBj7A7CdfHmzJawv9qYFSLScGT7eG0XOBv6yb5jNWy+TgQ5urOkfW+0/tv
|
||||||
|
k2E0XLyTRSiDNipmKF+wc86LJiUGsoPUXPYVGUztYuBeM/Lo6OwKp7ADK5GyNnm+
|
||||||
|
960IHnWmZcy740hQ83eRGv7bUKJGyGFYmPV8AhY8gyitOYbs1LcNU9D4R+Z1MI3s
|
||||||
|
MJN2FKZbS110YU0/EpF23r9Yy3IQKUHw1cVtJnZoEUETWJrcJisB9IlNWdt4z4FK
|
||||||
|
PkBHX8mBUHOFECMhWWCKZFTBzCEa6DgZfGYczXg4RTCZT/9jT0y7qg0IU0F8WD1H
|
||||||
|
s/q27IwyCQLMbDwMVhECAwEAAaOCAVkwggFVMBIGA1UdEwEB/wQIMAYBAf8CAQAw
|
||||||
|
HQYDVR0OBBYEFGg34Ou2O/hfEYb7/mF7CIhl9E5CMB8GA1UdIwQYMBaAFOzX44LS
|
||||||
|
cV1kTN8uZz/nupiuHA9PMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEF
|
||||||
|
BQcDAzB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRp
|
||||||
|
Z2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMuZGlnaWNlcnQu
|
||||||
|
Y29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYy
|
||||||
|
aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5j
|
||||||
|
cmwwHAYDVR0gBBUwEzAHBgVngQwBAzAIBgZngQwBBAEwDQYJKoZIhvcNAQEMBQAD
|
||||||
|
ggIBADojRD2NCHbuj7w6mdNW4AIapfhINPMstuZ0ZveUcrEAyq9sMCcTEp6QRJ9L
|
||||||
|
/Z6jfCbVN7w6XUhtldU/SfQnuxaBRVD9nL22heB2fjdxyyL3WqqQz/WTauPrINHV
|
||||||
|
UHmImoqKwba9oUgYftzYgBoRGRjNYZmBVvbJ43bnxOQbX0P4PpT/djk9ntSZz0rd
|
||||||
|
KOtfJqGVWEjVGv7XJz/9kNF2ht0csGBc8w2o7uCJob054ThO2m67Np375SFTWsPK
|
||||||
|
6Wrxoj7bQ7gzyE84FJKZ9d3OVG3ZXQIUH0AzfAPilbLCIXVzUstG2MQ0HKKlS43N
|
||||||
|
b3Y3LIU/Gs4m6Ri+kAewQ3+ViCCCcPDMyu/9KTVcH4k4Vfc3iosJocsL6TEa/y4Z
|
||||||
|
XDlx4b6cpwoG1iZnt5LmTl/eeqxJzy6kdJKt2zyknIYf48FWGysj/4+16oh7cGvm
|
||||||
|
oLr9Oj9FpsToFpFSi0HASIRLlk2rREDjjfAVKM7t8RhWByovEMQMCGQ8M4+uKIw8
|
||||||
|
y4+ICw2/O/TOHnuO77Xry7fwdxPm5yg/rBKupS8ibEH5glwVZsxsDsrFhsP2JjMM
|
||||||
|
B0ug0wcCampAMEhLNKhRILutG4UI4lkNbcoFUCvqShyepf2gpx8GdOfy1lKQ/a+F
|
||||||
|
SCH5Vzu0nAPthkX0tGFuv2jiJmCG6sivqf6UHedjGzqGVnhO
|
||||||
|
-----END CERTIFICATE-----
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
||||||
|
<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><div><blockquote type="cite" class=""><div class=""></div></blockquote></div><br class=""></div></body></html>
|
|
@ -0,0 +1,32 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,41 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIHRDCCBSygAwIBAgIQBpNVvDvQCWBPv1q9mt/1ADANBgkqhkiG9w0BAQsFADBp
|
||||||
|
MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMT
|
||||||
|
OERpZ2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0
|
||||||
|
IDIwMjEgQ0ExMB4XDTIyMDYxMDAwMDAwMFoXDTI0MDYxMjIzNTk1OVowSTELMAkG
|
||||||
|
A1UEBhMCQkUxEjAQBgNVBAcTCUJydXhlbGxlczESMBAGA1UEChMJV2luYW1wIFNB
|
||||||
|
MRIwEAYDVQQDEwlXaW5hbXAgU0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
|
||||||
|
AoICAQD4sc3Vvf1YOujnYGodelz2YbBaf+G037IbzRiCvlTUAPaqaiNmBBlgKOfn
|
||||||
|
0Ui8SkmRABQ06WDOCJYxCnugstvhg1vs/E7AxxG2rEgZl/NmB84ingOlCcE6f2WH
|
||||||
|
cttxSVsrjxbRFFQIkvj+v3R12NTWQzg4HGwyXS8VtB22On2gVjmsdeuMiUuDaXRx
|
||||||
|
JCVm3NIYz7LJAdpnl9LkJOwVuCyifGUcLoJVZJgz8QcCGg038OLL17XVriAE+i46
|
||||||
|
r0caNeZwFuAG2AVaRO7ggzkjA5DeFlB9vBqbJAbi9dQGkXGTx/CGR0n09EkF5uyP
|
||||||
|
A2a7SodAYijIluiZLgEDOVTKJZLxbX4cdTCyHrSFq231TMdbpGj/+3Hc5BHpymkN
|
||||||
|
I2Ju8sf9SfzuR2s6F77wdobmrR+8jVEQAYw82FB+rL4CuW8Kg0dr/LHYdv53jbrr
|
||||||
|
f9JSB8DqvJ7zjS40eIIEXq2zWdt7qzw6TiUo/mkr1aSqXhYQhotuossovEs8IePP
|
||||||
|
Sxatw5olw6kokY8RrIi7yindv48M9EC4vy9l8qx1+7+G7tBOTnGTxHBvgG/L3PW6
|
||||||
|
NDb44iDSRmFVJRb8QxCQ0L2Ywz8VdkHWoCr7dPGIY6pdy0aHKRrMZeZmaB2A72lD
|
||||||
|
sN4cMjXfFNPD5x53HA9Vf333Wv4KANINSL4af7KOa+9LRYh4dwIDAQABo4ICBjCC
|
||||||
|
AgIwHwYDVR0jBBgwFoAUaDfg67Y7+F8Rhvv+YXsIiGX0TkIwHQYDVR0OBBYEFELu
|
||||||
|
dm9oHqV42XGzPaxAv/7pJey9MA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggr
|
||||||
|
BgEFBQcDAzCBtQYDVR0fBIGtMIGqMFOgUaBPhk1odHRwOi8vY3JsMy5kaWdpY2Vy
|
||||||
|
dC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQy
|
||||||
|
MDIxQ0ExLmNybDBToFGgT4ZNaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lD
|
||||||
|
ZXJ0VHJ1c3RlZEc0Q29kZVNpZ25pbmdSU0E0MDk2U0hBMzg0MjAyMUNBMS5jcmww
|
||||||
|
PgYDVR0gBDcwNTAzBgZngQwBBAEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5k
|
||||||
|
aWdpY2VydC5jb20vQ1BTMIGUBggrBgEFBQcBAQSBhzCBhDAkBggrBgEFBQcwAYYY
|
||||||
|
aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMFwGCCsGAQUFBzAChlBodHRwOi8vY2Fj
|
||||||
|
ZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JT
|
||||||
|
QTQwOTZTSEEzODQyMDIxQ0ExLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEB
|
||||||
|
CwUAA4ICAQAiXaobHW5Lm7gafYUDOeXJvkieNAit/CD1sOvd1AwlTej2X5JvuzQL
|
||||||
|
6pGuFPmHiTvzPo9bMZ7/qm01UQnRn3/x0nkCYURXzmot///lZ94uQKnFT/6mHxcU
|
||||||
|
ZtZa9qG7EyieVSrmaI1pH5NdQroPL9gmscewC9VhJZnMoUhAeaOzzpjI24lakOw4
|
||||||
|
h22V88BHRcxkNUUH5qV5fDhHhiiGvuqGO4Yi6bCm8TuC/AEVt3KsrytnRKoc9Z+s
|
||||||
|
klbA7G9hPgcmYdcoHFNAc9XmZLo7tbffjqokRmytYjTZgw2s4qUO49Zt7+J3KJRt
|
||||||
|
WduuqXNpSLW6bkuDyQBL9NitkW50R3Ub0gEr0xUYwD0IqwWj7DDxCyxwtP4OyD4r
|
||||||
|
T/Py9rTYSLP+XGgb4MgIN/sMKlVJf8SN5P2DzNuX+hBZyFeAGNyFhOSKydXaeaxA
|
||||||
|
mgNzZb25JJ7gPnb/6fJkl+8mh64RKgDZk5y79MRukxecwBaDOetYAJ9AFvyeLZoE
|
||||||
|
JzbCtADu4d/IAC8ZU38ROWXec9aJE/YByXfhyNjDMQsZIY0Av0UOuWMzunnISycn
|
||||||
|
q8ZTNQXWhwuOAZRVecApc+cwwJKWJJuubrdCw6dC1p+D8Qc/SrD/jmHw2XWYI9l5
|
||||||
|
Exm0ABFlOzOMyUqSAxXwymxugJMFUr4r7/GM2qFUSTkQf/e2pUPIbg==
|
||||||
|
-----END CERTIFICATE-----
|
Binary file not shown.
|
@ -0,0 +1,30 @@
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
Proc-Type: 4,ENCRYPTED
|
||||||
|
DEK-Info: DES-EDE3-CBC,FFEF139B23999677
|
||||||
|
|
||||||
|
uWGiiUFqEd5AafE4FCrJmBUADd/bJT7rVfTXCY5BxQFkXntpODQ1W3qcZIxPwmFg
|
||||||
|
SjFdL8DPI1wFyw6VF4aX58JNnAx0TQZnNWZ/zg+vBfMtd9BO6uixl2qLVvupkKs7
|
||||||
|
HYDJlAAP9hmHbDj9K2EOUS+EpBURq5m3E/XMY5nhtTcsYkfzmqXPCOKbL8pvKRCf
|
||||||
|
qRWim4F+MqBKzgvi7aHuBO5KH4gQ2IKEF181AyUsFmSp1wvxF01NiT25im9DOQFW
|
||||||
|
YFRuLwiD85/8YRF1fHB5+uEuxOeslUC7cb0ypru1MjvqRxqFxlG3+uZeBG1YHyuD
|
||||||
|
7BPMeK3AuPQkVpCqGimtEX0km2Gi9qAMP+bYd3NGzT7DGKP2ZpZ8SnCETrT5pPfb
|
||||||
|
/irkNe+blx21IU5hzbw9DDXUqi8zm2jIcn2EX+hdvb3g0j2FqQ+7+m1ASu5p89vc
|
||||||
|
3DEQZ+JF47Ay/5GefztSFoIlLjTiZYBOK+NPkoR7cUY8f4r3hNLLuyzN8/idPFoi
|
||||||
|
o+/tvNwd06CSxwIK0Ks6BMcCXG9zREgLsSVLBVjOFVJ/Wr/NhnQga65/76UsqxTF
|
||||||
|
ZaY+Q6FTz8ggsbkjQEEGlSDfVdYTAX1MfgGbpVPmvufkAl3CoefQTT4hCs7s0TGW
|
||||||
|
YKfjNfqqFAwJW1UZkAYm21YKIlCSmGux0pOd8S6S3kNYdRMn5QppyqpcnRZcMBBw
|
||||||
|
mPYwUqjX1/Fb5myw77Gstt1Cnx4+dithcjeBq5DIsci4jUhf4e9ujHf96OaWKK01
|
||||||
|
/EsNa54hT1CQRDHvdVF0tlVJdUyn8NonN7tB4+rUS6YJRdxthHhDfPsrtg9o5e8N
|
||||||
|
yZxunfGSey8dithZHA11nXb6J5rJcsRnCZUzhq0nkYguxHSTgkEqLZcbl5WigkgF
|
||||||
|
EzUU4di8I4m5vSy6OLM7inKAomJD11cpV+kBbUzOXoVo6v8Gz3KvES/UpN0I+Wgh
|
||||||
|
xs7xRgg/Kx6/DG3Jwv71ITCYytZH4mY1eplUaJuIv11BPhc132adVpcI31A459uG
|
||||||
|
eN9UqEfZJfT0YTNVCefErCmuRu/iIh/XndVFKd1N/WsUR58H3+JGaArss66KbvXR
|
||||||
|
CT4Fkyc5+rQENc2daAH2tAeeLIheMmEyKmfXefje7tiaPD6+lgPISoNlGo0cxyQ7
|
||||||
|
YGVneVmpDpNZ/s6kV5BvxawkH7WGzt0gDqMmAyawK2kBPuTvG0+uYXAfEJjdWhAH
|
||||||
|
E87Xu13GtVOyuJD37RojJbned6xlwuW0oLXSb5IO677lN+cyyqjNy2VG7l3MYL+b
|
||||||
|
Bd2/LVWH97lNLy5Fsx8DmnjhPO8AIxwisxS0FxTTy89WQCjItPqWHH1+2yiMHcTR
|
||||||
|
fq6SqU1tw8GiBRBQtCeVNxVAxzA3tXM83FxhFhI+WmHaNi4QB6IXdgLaKQ1IhZ4G
|
||||||
|
g5gI0erPUSJ2k7nqGaynnCVwtHQA32s/XsHrflyO34X18+oC3DOFMKw31qnBLa+G
|
||||||
|
ljbJ69NUcIRhPQ8pYqT68heOP06VysiR9ndQ9CW/VaF+LEN+oIbE7p3RbpY3RWLY
|
||||||
|
IYwSbiaF0sGiwjtLh3m2Ji0w9K2AZpTIcLNq43tQ6VcJsvKCa1xpomj0yJI02iSr
|
||||||
|
-----END RSA PRIVATE KEY-----
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 4.4 KiB |
|
@ -0,0 +1,21 @@
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
REM set SIGNNAME=Winamp %WINAMP_VERSION_MAJOR%.%WINAMP_VERSION_MINOR%%WINAMP_VERSION_MINOR_SECOND% %%~j
|
||||||
|
|
||||||
|
signtool.exe sign /f Winamp_SA.pfx /p WaWa!_59_!WaWa /t http://timestamp.digicert.com /du "http://www.winamp.com" /d "Winamp 5.9" /v Winamp59_9999_final_full_en-us.exe
|
||||||
|
|
||||||
|
REM ___________________________________________________________________
|
||||||
|
|
||||||
|
REM if not defined WAPROJECTS set WAPROJECTS=c:\projects
|
||||||
|
REM if not defined CURSANDBOX set CURSANDBOX=%WAPROJECTS%
|
||||||
|
|
||||||
|
REM set KEYFILE=%CURSANDBOX%\codesign\WinampSA.pfx
|
||||||
|
REM %CURSANDBOX%\codesign\signtool.exe sign /f %KEYFILE% /p !Wa!Wa!5_6_7_8!Wa!Wa! /d %1 /du "http://www.winamp.com" /t http://timestamp.comodoca.com/authenticode /v %2
|
||||||
|
|
||||||
|
SET errCode=%ERRORLEVEL%
|
||||||
|
|
||||||
|
IF %errCode% NEQ 0 @echo SimpleSign Failed
|
||||||
|
|
||||||
|
pause /B %errCode%
|
||||||
|
|
||||||
|
exit
|
|
@ -0,0 +1,11 @@
|
||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQEzBAEBCAAdFiEE6VpbjcQyp+t7ByJYRGjUQigxlBsFAmKjGNYACgkQRGjUQigx
|
||||||
|
lBsmaggAvwHvdssyFg8Ro9UI06qtsDJvwAmsjQJdH+++OayA3a1XSa6vyGibrbA4
|
||||||
|
tRfFPn8RYmfmbd0jlKwjFWCdjTTP+b11DjDrkIv3RVz0nQmLX0AaQHzZdoWGodpZ
|
||||||
|
JgTEhSxTsY17ss6CzYPhP+F6LQ7S96GbA6fWRx0E/t6v8Kqnl6L1rSfoV6U9/873
|
||||||
|
5LaOvHsk2BPoL9w+mp6BdITyVoK2jaRPbE+2eDTn1VW4w4C6Qi4mV3VRYN5dZVjj
|
||||||
|
sGmRSsIz2MW8KsHDA9odBjOfdHlRbrSl9cjPo4fmEpxVI8yGtfCOKsRjnKCMcWpG
|
||||||
|
NZ5RaNE3FfD5En0FMvd/owkBqp6d+w==
|
||||||
|
=9kUo
|
||||||
|
-----END PGP SIGNATURE-----
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,108 @@
|
||||||
|
-----BEGIN PKCS7-----
|
||||||
|
MIITuwYJKoZIhvcNAQcCoIITrDCCE6gCAQExADALBgkqhkiG9w0BBwGgghOQMIIH
|
||||||
|
RDCCBSygAwIBAgIQCNS/WlKcclmX4PbFJkldLzANBgkqhkiG9w0BAQsFADBpMQsw
|
||||||
|
CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERp
|
||||||
|
Z2lDZXJ0IFRydXN0ZWQgRzQgQ29kZSBTaWduaW5nIFJTQTQwOTYgU0hBMzg0IDIw
|
||||||
|
MjEgQ0ExMB4XDTIyMDYxNTAwMDAwMFoXDTI0MDYxMjIzNTk1OVowSTELMAkGA1UE
|
||||||
|
BhMCQkUxEjAQBgNVBAcTCUJydXhlbGxlczESMBAGA1UEChMJV2luYW1wIFNBMRIw
|
||||||
|
EAYDVQQDEwlXaW5hbXAgU0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
||||||
|
AQDX5OYi3zspRs2tAMPBeTW2jabo4ttN0/3a7VFxYDrZq3c6i6LhEhWZhDpdsiAl
|
||||||
|
cM/uM+YepdVOzRcm14IiL6GwagA1fZdgJoiNETSj4KDuxzZowUqDN0L13Nv2xI2k
|
||||||
|
ZJpZ/el6aItpdC4ulidR6cRz9E83IEqruDCQyh8/6bO4WYboWhXltm8GE9zkw6dk
|
||||||
|
q5UbnQKZdEMttiP+U5J5Ue+erwqaMn0T8U9HShA4zRDE5eKcwig3oIo7mRLG5W5o
|
||||||
|
YlzRSdPnhdpN7cw+ahoHsZzwyWVCsi7sZrkNc0vd4wwCBDWsgU3TG5+EQAZJc5zi
|
||||||
|
cLOSl/qiTcAuYEVmIHD7yerGLV8YY6usMLMXhwhT7CJ1DMCE7vp7mLNyOhxG5wsN
|
||||||
|
cysankU4ylYXdZrIKTIQkMd0hbjlAkMKodVt0/lODuxrfY9eHaue72Pz8LMlJHN3
|
||||||
|
5C+KTxVeoL0+8b1OGqhDxcWsleqSIXREz+NEfN6EGwwUt+3txXiumeVX2YMWDeQd
|
||||||
|
khazi2s5TkCExYRaKVJAkBAm/VqBu6bHyo0L1LNfHfdnZPre6wrhzEcChOcgs4Ni
|
||||||
|
D6gT9Shm9MyOMJ1yJuZcvgnPBC9FnPVcgeByTQI/2u0MPYVDclcQkei9FwW4sz16
|
||||||
|
vCnEqtysYOX64fpvBvB7IVWz8cWbVX0Lalk5m7MIinF+6QIDAQABo4ICBjCCAgIw
|
||||||
|
HwYDVR0jBBgwFoAUaDfg67Y7+F8Rhvv+YXsIiGX0TkIwHQYDVR0OBBYEFHRlJwsS
|
||||||
|
WBHjeyAXymfNFGh6R2rmMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEF
|
||||||
|
BQcDAzCBtQYDVR0fBIGtMIGqMFOgUaBPhk1odHRwOi8vY3JsMy5kaWdpY2VydC5j
|
||||||
|
b20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQwOTZTSEEzODQyMDIx
|
||||||
|
Q0ExLmNybDBToFGgT4ZNaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0
|
||||||
|
VHJ1c3RlZEc0Q29kZVNpZ25pbmdSU0E0MDk2U0hBMzg0MjAyMUNBMS5jcmwwPgYD
|
||||||
|
VR0gBDcwNTAzBgZngQwBBAEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdp
|
||||||
|
Y2VydC5jb20vQ1BTMIGUBggrBgEFBQcBAQSBhzCBhDAkBggrBgEFBQcwAYYYaHR0
|
||||||
|
cDovL29jc3AuZGlnaWNlcnQuY29tMFwGCCsGAQUFBzAChlBodHRwOi8vY2FjZXJ0
|
||||||
|
cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRDb2RlU2lnbmluZ1JTQTQw
|
||||||
|
OTZTSEEzODQyMDIxQ0ExLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUA
|
||||||
|
A4ICAQDSxJbkRf9a9TldRN7TD7PEupDeVN1OEKjRCdA+lH9eSgaeJ/Kol8KJ6nnJ
|
||||||
|
jMAQjnNmysyGyt7FXWGWA3DpLP4dfg46LNVhHVlInWTfqs2ospy2UOAbQnA8Dyw1
|
||||||
|
1shSVesOCGURTkaDe41VMClg9yS02rPivnNggPmj6v8TNW3hizjVyqP7MNTl4EeC
|
||||||
|
f7hvfZx/zpGEDKAiSeil74NJJms/ITLeH4Z5bQCz/b5nMtIMOWX+nOsbVwieWrgr
|
||||||
|
tG/S4CM/YHBq1c4PLcPk4/CA+9MF+PBwjOu4d9nHowKUeR+sEl6TyYMZ27c8AP9w
|
||||||
|
OIlJslj2553w7sAkxZ1fvKPlk4StDxdpd3YxnWVRQX5OcDuBi40WHaqPEDm055YH
|
||||||
|
RQh1casTukLsIXaQhrC/S5ov01uMimenVIXn9A/M4WzZ5ICl3JXNM7HldJ172AjW
|
||||||
|
83PlCiyjxEZtNRO4icZznWfpFbEFy2kwdE3JQlcPLTDxlIeft/p6NqnISwIgbIVz
|
||||||
|
9SCeABFQQQJDwb1yURw7Cifl4f88yNVfyS88OIvXB6E10JsERHe0Z4mMR7tm8tvk
|
||||||
|
7nEzITigyWVoSmntIn/PhphNS5LihnIyNlqHtx8RKBpMHoofEoli5nZF4vy8Vd4L
|
||||||
|
qI8K+bBEuk/KM2FVFawRs0xywxd8P5xQwx4XLQpAhUXnPlDbgzCCBrAwggSYoAMC
|
||||||
|
AQICEAitQLJg0pxMn17Nqb2TrtkwDQYJKoZIhvcNAQEMBQAwYjELMAkGA1UEBhMC
|
||||||
|
VVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0
|
||||||
|
LmNvbTEhMB8GA1UEAxMYRGlnaUNlcnQgVHJ1c3RlZCBSb290IEc0MB4XDTIxMDQy
|
||||||
|
OTAwMDAwMFoXDTM2MDQyODIzNTk1OVowaTELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
|
||||||
|
DkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQDEzhEaWdpQ2VydCBUcnVzdGVkIEc0IENv
|
||||||
|
ZGUgU2lnbmluZyBSU0E0MDk2IFNIQTM4NCAyMDIxIENBMTCCAiIwDQYJKoZIhvcN
|
||||||
|
AQEBBQADggIPADCCAgoCggIBANW0L0LQKK14t13VOVkbsYhC9TOM6z2Bl3DFu8SF
|
||||||
|
JjCfpI5o2Fz16zQkB+FLT9N4Q/QX1x7a+dLVZxpSTw6hV/yImcGRzIEDPk1wJGSz
|
||||||
|
jeIIfTR9TIBXEmtDmpnyxTsf8u/LR1oTpkyzASAl8xDTi7L7CPCK4J0JwGWn+piA
|
||||||
|
STWHPVEZ6JAheEUuoZ8s4RjCGszF7pNJcEIyj/vG6hzzZWiRok1MghFIUmjeEL0U
|
||||||
|
V13oGBNlxX+yT4UsSKRWhDXW+S6cqgAV0Tf+GgaUwnzI6hsy5srC9KejAw50pa85
|
||||||
|
tqtgEuPo1rn3MeHcreQYoNjBI0dHs6EPbqOrbZgGgxu3amct0r1EGpIQgY+wOwnX
|
||||||
|
x5syWsL/amBUi0nBk+3htFzgb+sm+YzVsvk4EObqzpH1vtP7b5NhNFy8k0UogzYq
|
||||||
|
ZihfsHPOiyYlBrKD1Fz2FRlM7WLgXjPy6OjsCqewAyuRsjZ5vvetCB51pmXMu+NI
|
||||||
|
UPN3kRr+21CiRshhWJj1fAIWPIMorTmG7NS3DVPQ+EfmdTCN7DCTdhSmW0tddGFN
|
||||||
|
PxKRdt6/WMtyEClB8NXFbSZ2aBFBE1ia3CYrAfSJTVnbeM+BSj5AR1/JgVBzhRAj
|
||||||
|
IVlgimRUwcwhGug4GXxmHM14OEUwmU//Y09Mu6oNCFNBfFg9R7P6tuyMMgkCzGw8
|
||||||
|
DFYRAgMBAAGjggFZMIIBVTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRo
|
||||||
|
N+Drtjv4XxGG+/5hewiIZfROQjAfBgNVHSMEGDAWgBTs1+OC0nFdZEzfLmc/57qY
|
||||||
|
rhwPTzAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMwdwYIKwYB
|
||||||
|
BQUHAQEEazBpMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20w
|
||||||
|
QQYIKwYBBQUHMAKGNWh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2Vy
|
||||||
|
dFRydXN0ZWRSb290RzQuY3J0MEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwz
|
||||||
|
LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRSb290RzQuY3JsMBwGA1UdIAQV
|
||||||
|
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
|
||||||
|
RxGthz0H0XW8z/NmfjEA
|
||||||
|
-----END PKCS7-----
|
|
@ -1,6 +1,6 @@
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
echo "Cleanup the environment..."
|
echo "Cleanup the environment....."
|
||||||
IF EXIST "Src\external_dependencies\vcpkg" (
|
IF EXIST "Src\external_dependencies\vcpkg" (
|
||||||
echo Deleting "Src\external_dependencies\vcpkg" ...
|
echo Deleting "Src\external_dependencies\vcpkg" ...
|
||||||
rmdir /S /Q "Src\external_dependencies\vcpkg"
|
rmdir /S /Q "Src\external_dependencies\vcpkg"
|
||||||
|
@ -49,7 +49,7 @@ IF NOT EXIST .\vcpkg (
|
||||||
echo Patching ports...
|
echo Patching ports...
|
||||||
xcopy /K /Y /H /C /I /E .\vcpkg-ports\* .\vcpkg\ports\*
|
xcopy /K /Y /H /C /I /E .\vcpkg-ports\* .\vcpkg\ports\*
|
||||||
|
|
||||||
echo Installing packages...
|
echo Installing packages....
|
||||||
cd .\vcpkg
|
cd .\vcpkg
|
||||||
.\vcpkg install alac:x86-windows-static-md
|
.\vcpkg install alac:x86-windows-static-md
|
||||||
.\vcpkg install expat:x86-windows-static-md expat:x86-windows-static
|
.\vcpkg install expat:x86-windows-static-md expat:x86-windows-static
|
||||||
|
|
|
@ -17,7 +17,7 @@ else:
|
||||||
VCPKG_PATH = Path(__file__).parent / 'vcpkg'
|
VCPKG_PATH = Path(__file__).parent / 'vcpkg'
|
||||||
|
|
||||||
if len(sys.argv) > 3:
|
if len(sys.argv) > 3:
|
||||||
print("the arguments after the second one are ignored")
|
print("the argumnets after the second one are ignored")
|
||||||
|
|
||||||
|
|
||||||
if not VCPKG_PATH.exists():
|
if not VCPKG_PATH.exists():
|
||||||
|
@ -57,4 +57,4 @@ with open(PKG_VERSION_JSON_PATHNAME) as f:
|
||||||
versions_set = sorted(set(versions_list), reverse=True)
|
versions_set = sorted(set(versions_list), reverse=True)
|
||||||
|
|
||||||
for version in versions_set:
|
for version in versions_set:
|
||||||
print(version)
|
print(version)
|
Loading…
Reference in New Issue