mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-13 17:47:12 -04:00
Added support for opening URLs
This commit is contained in:
parent
69d4a3f0ff
commit
aa6643370a
@ -41,7 +41,7 @@ APP_AUTHOR := UnknownShadow200
|
|||||||
# options for code generation
|
# options for code generation
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
CC := gcc
|
CC := gcc
|
||||||
CFLAGS := -pipe -fno-math-errno -O0 -g -mtune=pentium4 -msse2 -march=i686 -idirafter /@unixroot/usr/include/os2tk45 -DOS2
|
CFLAGS := -pipe -fno-math-errno -O3 -g -mtune=pentium4 -msse2 -march=i686 -idirafter /@unixroot/usr/include/os2tk45 -DOS2
|
||||||
LDFLAGS := -Zhigh-mem -Zomf -Zargs-wild -Zargs-resp -Zlinker DISABLE -Zlinker 1121
|
LDFLAGS := -Zhigh-mem -Zomf -Zargs-wild -Zargs-resp -Zlinker DISABLE -Zlinker 1121
|
||||||
LIBS := -lcx -lmmpm2 -lpthread -lSDL2
|
LIBS := -lcx -lmmpm2 -lpthread -lSDL2
|
||||||
|
|
||||||
|
@ -63,7 +63,9 @@ cc_bool Platform_SingleProcess;
|
|||||||
#include <kernel/image.h>
|
#include <kernel/image.h>
|
||||||
#elif defined CC_BUILD_OS2
|
#elif defined CC_BUILD_OS2
|
||||||
#include <libcx/net.h>
|
#include <libcx/net.h>
|
||||||
#define INCL_DOSPROCESS
|
#define INCL_DOS
|
||||||
|
#define INCL_DOSERRORS
|
||||||
|
#define INCL_PM
|
||||||
#include <os2.h>
|
#include <os2.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -786,6 +788,69 @@ cc_result Process_StartOpen(const cc_string* args) {
|
|||||||
}
|
}
|
||||||
#elif defined CC_BUILD_HAIKU || defined CC_BUILD_BEOS
|
#elif defined CC_BUILD_HAIKU || defined CC_BUILD_BEOS
|
||||||
/* Implemented in interop_BeOS.cpp */
|
/* Implemented in interop_BeOS.cpp */
|
||||||
|
#elif defined CC_BUILD_OS2
|
||||||
|
inline static void ShowErrorMessage(const char *url) {
|
||||||
|
static char errorMsg[] = "Could not open browser. Please go to: ";
|
||||||
|
cc_string message = String_Init(errorMsg, strlen(errorMsg), 500);
|
||||||
|
String_AppendConst(&message, url);
|
||||||
|
Logger_DialogWarn(&message);
|
||||||
|
}
|
||||||
|
|
||||||
|
cc_result Process_StartOpen(const cc_string* args) {
|
||||||
|
char str[NATIVE_STR_LEN];
|
||||||
|
APIRET rc;
|
||||||
|
UCHAR path[CCHMAXPATH], parameter[NATIVE_STR_LEN];
|
||||||
|
UCHAR userPath[CCHMAXPATH], sysPath[CCHMAXPATH];
|
||||||
|
PRFPROFILE profile = { sizeof(userPath), userPath, sizeof(sysPath), sysPath };
|
||||||
|
HINI os2Ini;
|
||||||
|
HAB hAnchor = WinQueryAnchorBlock(WinQueryActiveWindow(HWND_DESKTOP));
|
||||||
|
RESULTCODES result = { 0 };
|
||||||
|
|
||||||
|
// We get URL
|
||||||
|
String_EncodeUtf8(str, args);
|
||||||
|
|
||||||
|
// Initialize buffers
|
||||||
|
Mem_Set(path, 0, sizeof(path));
|
||||||
|
Mem_Set(parameter, 0, sizeof(parameter));
|
||||||
|
|
||||||
|
// We have to look in the OS/2 configuration for the default browser.
|
||||||
|
// First step: Find the configuration files
|
||||||
|
if (!PrfQueryProfile(hAnchor, &profile)) {
|
||||||
|
ShowErrorMessage(str);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Second step: Open the configuration files and read exe path and parameters
|
||||||
|
os2Ini = PrfOpenProfile(hAnchor, userPath);
|
||||||
|
if (os2Ini == NULLHANDLE) {
|
||||||
|
ShowErrorMessage(str);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (!PrfQueryProfileString(os2Ini, "WPURLDEFAULTSETTINGS", "DefaultBrowserExe",
|
||||||
|
NULL, path, sizeof(path))) {
|
||||||
|
PrfCloseProfile(os2Ini);
|
||||||
|
ShowErrorMessage(str);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
PrfQueryProfileString(os2Ini, "WPURLDEFAULTSETTINGS", "DefaultBrowserParameters",
|
||||||
|
NULL, parameter, sizeof(parameter));
|
||||||
|
PrfCloseProfile(os2Ini);
|
||||||
|
|
||||||
|
// concat arguments
|
||||||
|
strncat(parameter, " ", 20);
|
||||||
|
strncat(parameter, str, sizeof(str));
|
||||||
|
|
||||||
|
// Last step: Execute detached browser
|
||||||
|
rc = DosExecPgm(userPath, sizeof(userPath), EXEC_ASYNC,
|
||||||
|
parameter, NULL, &result, path);
|
||||||
|
if (rc != NO_ERROR) {
|
||||||
|
ShowErrorMessage(str);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
cc_result Process_StartOpen(const cc_string* args) {
|
cc_result Process_StartOpen(const cc_string* args) {
|
||||||
char str[NATIVE_STR_LEN];
|
char str[NATIVE_STR_LEN];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user