diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2004-04-02 00:41:10 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2004-04-02 00:41:10 +0000 |
commit | 9454b8bca10f2ac8e224b9d60d71355b36194555 (patch) | |
tree | 746b528194b91da4180252db1f929e8b9abf2caa /riscos/uri.c | |
parent | adc05e5240fc9062c6b3ecb92f1bb1f59f0951c3 (diff) | |
download | netsurf-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.c | 38 |
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 |