#include "../SDL_sysurl.h"
#include "../../core/windows/SDL_windows.h"
#include <shellapi.h>
#if defined(__XBOXONE__) || defined(__XBOXSERIES__)
int
SDL_SYS_OpenURL(const char *url)
{
return SDL_Unsupported();
}
#else
int
SDL_SYS_OpenURL(const char *url)
{
WCHAR* wurl;
HINSTANCE rc;
const HRESULT hr = WIN_CoInitialize();
if (FAILED(hr)) {
return WIN_SetErrorFromHRESULT("CoInitialize failed", hr);
}
wurl = WIN_UTF8ToStringW(url);
if (wurl == NULL) {
WIN_CoUninitialize();
return SDL_OutOfMemory();
}
rc = ShellExecuteW(NULL, L"open", wurl, NULL, NULL, SW_SHOWNORMAL);
SDL_free(wurl);
WIN_CoUninitialize();
return (rc > ((HINSTANCE) 32)) ? 0 : WIN_SetError("Couldn't open given URL.");
}
#endif