diff options
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 |