summaryrefslogtreecommitdiff
path: root/riscos
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2004-11-29 21:47:00 +0000
committerJames Bursa <james@netsurf-browser.org>2004-11-29 21:47:00 +0000
commit16fce4f8ff7019d8abfd18eb5a0c92b499a08d41 (patch)
tree43434ab9f5813bceec11f8d59878535b95b8fb18 /riscos
parenta53d5ecfa9dc4e521661fbe4a04dbda5defb6261 (diff)
downloadnetsurf-16fce4f8ff7019d8abfd18eb5a0c92b499a08d41.tar.gz
netsurf-16fce4f8ff7019d8abfd18eb5a0c92b499a08d41.tar.bz2
[project @ 2004-11-29 21:47:00 by bursa]
Open the home page when NetSurf is run when it is already running. svn path=/import/netsurf/; revision=1376
Diffstat (limited to 'riscos')
-rw-r--r--riscos/gui.c70
1 files changed, 39 insertions, 31 deletions
diff --git a/riscos/gui.c b/riscos/gui.c
index 22b35a9b5..b8134589f 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -1356,46 +1356,54 @@ void ro_msg_datasave_ack(wimp_message *message)
void ro_msg_dataopen(wimp_message *message)
{
+ int file_type = message->data.data_xfer.file_type;
char *url = 0;
+ size_t len;
+ os_error *error;
- if (message->data.data_xfer.file_type != 0xfaf &&
- message->data.data_xfer.file_type != 0xb28)
- /* ignore all but HTML and URL */
- return;
-
- /* url file */
- if (message->data.data_xfer.file_type == 0xb28) {
- char *temp;
- FILE *fp = fopen(message->data.data_xfer.file_name, "r");
-
- if (!fp) return;
-
- url = xcalloc(256, sizeof(char));
-
- temp = fgets(url, 256, fp);
-
- fclose(fp);
-
- if (!temp) return;
-
- if (url[strlen(url)-1] == '\n') {
- url[strlen(url)-1] = '\0';
+ if (file_type == 0xb28) /* ANT URL file */
+ url = ro_gui_url_file_parse(message->data.data_xfer.file_name);
+ else if (file_type == 0xfaf) /* HTML file */
+ url = ro_path_to_url(message->data.data_xfer.file_name);
+ else if (file_type == 0x2000) { /* application */
+ len = strlen(message->data.data_xfer.file_name);
+ if (len < 9 || strcmp(".!NetSurf",
+ message->data.data_xfer.file_name + len - 9))
+ return;
+ if (option_homepage_url && option_homepage_url[0]) {
+ url = strdup(option_homepage_url);
+ } else {
+ url = malloc(80);
+ if (url)
+ snprintf(url, 80,
+ "file:/<NetSurf$Dir>/Docs/intro_%s",
+ option_language);
}
- }
+ if (!url)
+ warn_user("NoMemory", 0);
+ } else
+ return;
/* send DataLoadAck */
message->action = message_DATA_LOAD_ACK;
message->your_ref = message->my_ref;
- wimp_send_message(wimp_USER_MESSAGE, message, message->sender);
+ error = xwimp_send_message(wimp_USER_MESSAGE, message, message->sender);
+ if (error) {
+ LOG(("xwimp_send_message: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user("WimpError", error->errmess);
+ return;
+ }
+
+ if (!url)
+ /* error has already been reported by one of the three
+ * functions called above */
+ return;
/* create a new window with the file */
- if (message->data.data_xfer.file_type != 0xb28) {
- url = ro_path_to_url(message->data.data_xfer.file_name);
- }
- if (url) {
- browser_window_create(url, NULL, 0);
- free(url);
- }
+ browser_window_create(url, NULL, 0);
+
+ free(url);
}