[project @ 2004-09-27 05:21:00 by jmb]

Improve !Boot file and support protocol fallback positions.

svn path=/import/netsurf/; revision=1287
This commit is contained in:
John Mark Bell 2004-09-27 05:21:00 +00:00
parent ebc39ef41f
commit 5802723281
6 changed files with 161 additions and 33 deletions

View File

@ -1,14 +1,37 @@
| Boot file for NetSurf. ( $Revision: 1.10 $ )
|
| This file sets up various system variables which NetSurf may use.
| Additionally, it places the NetSurf application sprites into the Wimp
| sprite pool.
|
| This file may be executed in two ways:
| 1. When NetSurf is first seen by the OS.
| 2. When NetSurf is run by the user (called from the !Run file).
| In the first instance, NetSurf-specific variables are set and non
| NetSurf-specific variables which are unset are initialised.
| In the second instance, all variables are set, irrespective of their
| previous state. This is achieved by use of the NetSurf$ForceVars
| variable, which is set by the !Run file prior to calling this file.
| Set up NetSurf$Dir
Set NetSurf$Dir <Obey$Dir>
| Filetype -> Type name mappings
|
| These get set whether they were previously set or not
Set File$Type_695 GIF
Set File$Type_B28 URL
Set File$Type_B60 PNG
Set File$Type_C85 JPEG
Set File$Type_F78 JNG
Set File$Type_F79 CSS
Set File$Type_F83 MNG
Set File$Type_F91 URI
Set File$Type_FAF HTML
| Application system variables
|
| See http://www.iyonix.com/32bit/help.shtml for more details.
Set NetSurf$Help <NetSurf$Dir>.Docs.docs_en
Set NetSurf$Version "Development Build"
Set NetSurf$Web "http://netsurf.sourceforge.net/"
@ -17,21 +40,49 @@ Set NetSurf$Publisher "The NetSurf Developers"
Set NetSurf$Description "Web browser"
| NetSurf Sprites
|
| The sprite file used is based on the OS version:
| RO < Select 3 uses !Sprites<nn>
| RO >= Select 3 uses ASprites<nn>
| RO >= 5 uses 5Sprites<nn>
If "<Boot$OSVersion>" < "436" Then IconSprites <Obey$Dir>.!Sprites Else If "<Boot$OSVersion>" < "500" Then IconSprites <Obey$Dir>.ASprites Else IconSprites <Obey$Dir>.5Sprites
| Acorn URI protocol
If "<Alias$Open_URI_http>" = "" Then Set Alias$Open_URI_http <NetSurf$Dir>.URILaunch
If "<Alias$Open_URI_https>" = "" Then Set Alias$Open_URI_https <NetSurf$Dir>.URILaunch
If "<Alias$Open_URI_file>" = "" Then Set Alias$Open_URI_file <NetSurf$Dir>.URILaunch
|
| Format: Alias$Open_URI_<scheme> <command to run>
|
| These are basically a last resort. The URI module will initially broadcast
| Message_URI_MProcess. If this isn't claimed, then it'll check if an
| appropriate Alias$Open_URI_<scheme> variable is set. If such a variable
| exists, then it will attempt to launch the task named by the variable.
| If the launch is successful, the Message_URI_MProcess is rebroadcast.
| The -nowin is required to ensure only one window is opened (this only has
| an effect if the user has configured auto window opening at startup).
If (("<Alias$Open_URI_http>" = "") OR ("<NetSurf$ForceVars>" = "1")) Then Set Alias$Open_URI_http <NetSurf$Dir>.!Run -nowin
If (("<Alias$Open_URI_https>" = "") OR ("<NetSurf$ForceVars>" = "1")) Then Set Alias$Open_URI_https <NetSurf$Dir>.!Run -nowin
If (("<Alias$Open_URI_file>" = "") OR ("<NetSurf$ForceVars>" = "1")) Then Set Alias$Open_URI_file <NetSurf$Dir>.!Run -nowin
| ANT URI protocol
| Not yet ;)
|If "" = "<Alias$URLOpen_http>" Then Set Alias$URLOpen_http <NetSurf$Dir>.URILaunch %%*0
|If "" = "<Alias$URLOpen_https>" Then Set Alias$URLOpen_https <NetSurf$Dir>.URILaunch %%*0
|If "" = "<Alias$URLOpen_file>" Then Set Alias$URLOpen_file <NetSurf$Dir>.URILaunch %%*0
| ANT URL protocol
|
| Format: Alias$URLOpen_<scheme> <command to run>
|
| These handle the "load" stage of the protocol. The appropriate variable's
| existence is checked then, if it is present, the URL to be opened is
| appended to the string "URLOpen_<scheme> " and this is then fed to
| Wimp_StartTask.
If (("<Alias$URLOpen_http>" = "") OR ("<NetSurf$ForceVars>" = "1")) Then Set Alias$URLOpen_http /<NetSurf$Dir>.!Run -url %%*0
If (("<Alias$URLOpen_https>" = "") OR ("<NetSurf$ForceVars>" = "1")) Then Set Alias$URLOpen_https /<NetSurf$Dir>.!Run -url %%*0
If (("<Alias$URLOpen_file>" = "") OR ("<NetSurf$ForceVars>" = "1")) Then Set Alias$URLOpen_file /<NetSurf$Dir>.!Run -url %%*0
| Claim HTML and URI files
| Not Yet ;)
|If "" = "<Alias$@RunType_FAF>" Then Set Alias$@RunType_FAF <NetSurf$Dir>.URILaunch
|If "" = "<Alias$@RunType_B28>" Then Set Alias$@RunType_B28 <NetSurf$Dir>.URILaunch
|If "" = "<FTPc$Dir>" Then If "<Alias$@RunType_F91>" = "" Then Set Alias$@RunType_F91 <NetSurf$Dir>.URILaunch
| Claim HTML and URL files
|
| Format: Alias$@RunType_<hex> <command to run>
|
| Again, a fallback. The filer initially tries a DataOpen message. If that
| bounces, it looks at these variables.
If (("<Alias$@RunType_FAF>" = "") OR ("<NetSurf$ForceVars>" = "1")) Then Set Alias$@RunType_FAF /<NetSurf$Dir>.!Run -html %%*0
If (("<Alias$@RunType_B28>" = "") OR ("<NetSurf$ForceVars>" = "1")) Then Set Alias$@RunType_B28 /<NetSurf$Dir>.!Run -urlf %%*0
| We don't claim the URI filetype as the spec tells us not to:
| "Applications must not set an Alias$@RunType variable for the URI filetype"
| Obviously this means that Browse/Phoenix and the Oreganos are incorrect.

View File

@ -1,14 +1,26 @@
| Run file for NetSurf. ( $Revision: 1.29 $ )
|
| This file ensures that the system resources required by NetSurf are
| present. Additionally, it forces setting of system variables related
| to NetSurf.
| Set system variables and application sprites
Set NetSurf$ForceVars 1
<Obey$Dir>.!Boot
UnSet NetSurf$ForceVars
| Can't run more than one copy of NetSurf at once.
If "<NetSurf$Running>" = "yes" Then Error NetSurf is already running
| We need RISC OS 3
| We need RISC OS 3
RMEnsure UtilityModule 3.00 Error NetSurf needs RISC OS 3 or later
| Ensure Nested WIMP is installed
| http://acorn.riscos.com (in the universal boot archive)
RMEnsure WindowManager 3.80 Error 0 NetSurf requires the Nested Window Manager. This can be obtained by downloading the Universal Boot sequence from http://acorn.riscos.com/
RMEnsure WindowManager 3.80 Error NetSurf requires the Nested Window Manager. This can be obtained by downloading the Universal Boot sequence from http://acorn.riscos.com/
| Ensure the System resource exists - can't do much if it doesn't
If "<System$Path>" = "" Then Set System$Path_Message System resources not found.
| Ensure CallASWI is installed
| http://www.iyonix.com/32bit/
@ -45,7 +57,13 @@ RMEnsure MimeMap 0.10 Error NetSurf requires MimeMap 0.10 or later
RMEnsure Tinct 0.07 RMLoad System:Modules.Tinct
RMEnsure Tinct 0.07 Error NetSurf requires Tinct 0.07 or later. This can be downloaded from http://www.tinct.net
Wimpslot -min 2240k -max 2240k
| Ensure Iconv
| http://moose.mine.nu:6888/iconv002.zip
| Not an error if not present - there'll be no charset conversion.
RMEnsure Iconv 0.02 RMLoad System:Modules.Iconv
WimpSlot -min 2240k -max 2240k
Set NetSurf$Running yes
Run <NetSurf$Dir>.!RunImage 2><NetSurf$Dir>.stderr
Run <NetSurf$Dir>.!RunImage %*0 2><NetSurf$Dir>.stderr
UnSet NetSurf$Running

View File

@ -26,7 +26,7 @@ typedef enum { GUI_POINTER_DEFAULT, GUI_POINTER_POINT, GUI_POINTER_CARET,
#include "netsurf/desktop/browser.h"
void gui_init(int argc, char** argv);
void gui_init2(void);
void gui_init2(int argc, char** argv);
void gui_multitask(void);
void gui_poll(bool active);
void gui_quit(void);

View File

@ -9,6 +9,7 @@
#include <locale.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/utsname.h>
#include "netsurf/utils/config.h"
@ -35,6 +36,7 @@ static void lib_init(void);
int main(int argc, char** argv)
{
setbuf(stderr, NULL);
netsurf_init(argc, argv);
while (!netsurf_quit)
@ -75,7 +77,7 @@ void netsurf_init(int argc, char** argv)
setlocale(LC_ALL, "");
fetch_init();
fetchcache_init();
gui_init2();
gui_init2(argc, argv);
}
/**

View File

@ -32,7 +32,7 @@ void gui_init(int argc, char** argv)
}
void gui_init2(void)
void gui_init2(int argc, char** argv)
{
browser_window_create("http://netsurf.sourceforge.net/", 0);
}

View File

@ -427,24 +427,81 @@ void ro_gui_check_resolvers(void)
* Last-minute gui init, after all other modules have initialised.
*/
void gui_init2(void)
void gui_init2(int argc, char** argv)
{
#ifdef WITH_KIOSK_BROWSING
browser_window_create("file:/<NetSurf$Dir>/Docs/intro_en", NULL);
#else
char url[80];
char *url = 0;
bool open_window = option_open_browser_at_startup;
if (option_open_browser_at_startup) {
if (option_homepage_url && option_homepage_url[0]) {
browser_window_create(option_homepage_url, NULL);
} else {
snprintf(url, sizeof url,
"file:/<NetSurf$Dir>/Docs/intro_%s",
option_language);
browser_window_create(url, NULL);
/* parse command-line arguments */
if (argc == 2) {
LOG(("parameters: '%s'", argv[1]));
/* this is needed for launching URI files */
if (strcasecmp(argv[1], "-nowin") == 0)
open_window = false;
}
else if (argc == 3) {
LOG(("parameters: '%s' '%s'", argv[1], argv[2]));
open_window = true;
/* HTML files */
if (strcasecmp(argv[1], "-html") == 0) {
url = ro_path_to_url(argv[2]);
if (!url) {
LOG(("malloc failed"));
die("Insufficient memory for URL");
}
}
/* URL files */
else if (strcasecmp(argv[1], "-urlf") == 0) {
url = ro_gui_url_file_parse(argv[2]);
if (!url) {
LOG(("malloc failed"));
die("Insufficient memory for URL");
}
}
/* ANT URL Load */
else if (strcasecmp(argv[1], "-url") == 0) {
url = strdup(argv[2]);
if (!url) {
LOG(("malloc failed"));
die("Insufficient memory for URL");
}
}
/* Unknown => exit here. */
else {
LOG(("Unknown parameters: '%s' '%s'",
argv[1], argv[2]));
return;
}
}
/* get user's homepage (if configured) */
else if (option_homepage_url && option_homepage_url[0]) {
url = calloc(strlen(option_homepage_url) + 5, sizeof(char));
if (!url) {
LOG(("malloc failed"));
die("Insufficient memory for URL");
}
sprintf(url, "%s", option_homepage_url);
}
/* default homepage */
else {
url = calloc(80, sizeof(char));
if (!url) {
LOG(("malloc failed"));
die("Insufficient memory for URL");
}
snprintf(url, 80, "file:/<NetSurf$Dir>/Docs/intro_%s",
option_language);
}
#ifdef WITH_KIOSK_BROWSING
open_window = true;
#endif
if (open_window)
browser_window_create(url, NULL);
free(url);
}