summaryrefslogtreecommitdiff
path: root/riscos/uri.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2004-04-02 00:41:10 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2004-04-02 00:41:10 +0000
commit9454b8bca10f2ac8e224b9d60d71355b36194555 (patch)
tree746b528194b91da4180252db1f929e8b9abf2caa /riscos/uri.c
parentadc05e5240fc9062c6b3ecb92f1bb1f59f0951c3 (diff)
downloadnetsurf-9454b8bca10f2ac8e224b9d60d71355b36194555.tar.gz
netsurf-9454b8bca10f2ac8e224b9d60d71355b36194555.tar.bz2
[project @ 2004-04-02 00:41:10 by jmb]
Try to use external apps for URI schemes we don't understand (eg mailto:) svn path=/import/netsurf/; revision=698
Diffstat (limited to 'riscos/uri.c')
-rw-r--r--riscos/uri.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/riscos/uri.c b/riscos/uri.c
index ae13ba0ea..4e0205391 100644
--- a/riscos/uri.c
+++ b/riscos/uri.c
@@ -5,6 +5,7 @@
* Copyright 2003 Rob Jackson <jacko@xms.ms>
*/
+#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include "oslib/uri.h"
@@ -14,12 +15,17 @@
#include "netsurf/riscos/theme.h"
#include "netsurf/desktop/gui.h"
#include "netsurf/riscos/gui.h"
+#include "netsurf/riscos/url_protocol.h"
#include "netsurf/utils/log.h"
#include "netsurf/utils/utils.h"
#ifdef WITH_URI
void ro_uri_message_received(uri_full_message_process*);
+bool ro_uri_launch(char *uri);
+void ro_uri_bounce(uri_full_message_return_result*);
+
+extern wimp_t task_handle;
void ro_uri_message_received(uri_full_message_process* uri_message)
@@ -61,4 +67,36 @@ void ro_uri_message_received(uri_full_message_process* uri_message)
xfree(uri_requested);
}
+
+bool ro_uri_launch(char *uri) {
+
+ uri_h uri_handle;
+ wimp_t handle_task;
+ uri_dispatch_flags returned;
+ os_error *e;
+
+ e = xuri_dispatch(0, uri, task_handle, &returned, &handle_task, &uri_handle);
+
+ if (e || returned & 1) {
+ return false;
+ }
+
+ return true;
+}
+
+void ro_uri_bounce(uri_full_message_return_result *message) {
+
+ char uri_buf[512];
+ os_error *e;
+
+ if ((message->flags & 1) == 0) return;
+
+ e = xuri_request_uri(0, uri_buf, sizeof uri_buf, message->handle, 0);
+
+ if (e) return;
+
+ ro_url_load(uri_buf);
+
+ return;
+}
#endif