| Run file for NetSurf.
|
| 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

| Configure logging.  Set 1 to enable, or 0 to suppress.
Set NetSurf$Logging 1

| Detect if NetSurf is already running and, if so, force the 
| current instance to open a new window. Then stop this script.
Set Alias$NetSurfRunning UnSet Alias$NetSurfRunning|mUnSet NetSurf$Running|mObey
Set NetSurf$Running 0
WimpSlot -min 64k -max 64k
/<NetSurf$Dir>.KickNS
| If not running, then unset system variables and continue
If "<NetSurf$Running>" = "0" Then Set Alias$NetSurfRunning UnSet Alias$NetSurfRunning|mUnSet NetSurf$Running
| Invoke our alias to clean up
NetSurfRunning

| Resource Locations
| The following are read-only locations
SetMacro NetSurf$Path        Choices:WWW.NetSurf.,<NetSurf$Dir>.
| The following are write-only locations
SetMacro NetSurf$ChoicesSave <Choices$Write>.WWW.NetSurf.Choices

| We need RISC OS 3
RMEnsure UtilityModule 3.00 Error NetSurf needs RISC OS 3 or later

| Ensure Nested WIMP is installed
| http://www.riscos.com/ftp_space/generic/uniboot/ (i.e. install universal boot)
RMEnsure WindowManager 3.80 Error NetSurf requires the Nested Window Manager. This can be obtained by downloading the Universal Boot sequence from http://www.riscos.com/ftp_space/generic/uniboot/

| Check for various key resources - can't do much if they don't exist
If "<System$Path>" = "" Then Set System$Path_Message System resources not found.
If "<Wimp$ScrapDir>" = "" Then Error Scrap resource not found.
If "<InetDBase$Path>" = "" Then Error Internet resources can not be found
If "<Unicode$Path>" = "" Then Error NetSurf requires the !Unicode resource. This can be found, along with the Iconv module, at https://www.netsurf-browser.org/projects/iconv/
If "<Inet$MimeMappings>" = "" Then Set Inet$MimeMappings InetDBase:MimeMap

| Use OS copy of root CA bundle, if present
IfThere InetDBase:CertData Then Set NetSurf$CABundle InetDBase:CertData Else Set NetSurf$CABundle NetSurf:Resources.ca-bundle

| Define this alias for clarity
| Syntax: NetSurfRMLoad <Path to module>
Set Alias$NetSurfRMLoad IfThere %%*0 Then RMLoad %%*0

| Ensure a 32bit SharedCLibrary is installed
| (5.17 == first 32bit SCL, 5.43 == C99 features)
RMEnsure SharedCLibrary 5.17 NetSurfRMLoad System:Modules.CLib
RMEnsure SharedCLibrary 5.43 Error NetSurf requires SharedCLibrary 5.43 or later. This can be downloaded from https://www.riscosopen.org/content/downloads/common

| Ensure CallASWI is installed
RMEnsure UtilityModule 3.70 RMEnsure CallASWI 0.02 NetSurfRMLoad System:Modules.CallASWI
RMEnsure UtilityModule 3.70 RMEnsure CallASWI 0.02 Error NetSurf requires the CallASWI module. This can be downloaded from https://www.riscosopen.org/content/downloads/common

| Ensure DrawFile module is installed
| Should be installed in !System.310.Modules
RMEnsure DrawFile 1.30 NetSurfRMLoad System:Modules.DrawFile
RMEnsure DrawFile 1.30 Error NetSurf requires the DrawFile module. This can be downloaded from https://www.riscosopen.org/content/downloads/common

| Ensure SharedUnixLibrary is installed
RMEnsure SharedUnixLibrary 1.07 NetSurfRMLoad System:Modules.SharedULib
RMEnsure SharedUnixLibrary 1.07 Error NetSurf requires SharedUnixLibrary 1.07 or later. Please use the RISC OS Configure app to update the computer's !System directory from the NetSurf archive.

| Ensure ARMEABISupport is installed
|RMEnsure ARMEABISupport 1.04 NetSurfRMLoad System:Modules.ARMEABISupport
|RMEnsure ARMEABISupport 1.04 Error NetSurf requires ARMEABISupport 1.04 or later. Please use the RISC OS Configure app to update the computer's !System directory from the NetSurf archive.

| Load AcornURI if it isn't already
Unset NetSurf$Start_URI_Handler
RMEnsure AcornURI 0.12 Set NetSurf$Start_URI_Handler 1
RMEnsure AcornURI 0.12 NetSurfRMLoad System:Modules.Network.URI
RMEnsure AcornURI 0.12 Error NetSurf requires AcornURI 0.12 or later. Please use the RISC OS Configure app to update the computer's !System directory from the NetSurf archive.
RMEnsure AcornURI 0.12 Unset NetSurf$Start_URI_Handler

| Check for mime map module
RMEnsure MimeMap 0.10 NetSurfRMLoad System:Modules.Network.MimeMap
RMEnsure MimeMap 0.10 Error NetSurf requires MimeMap 0.10 or later

| Ensure Tinct is loaded
RMEnsure Tinct 0.13 NetSurfRMLoad System:Modules.Tinct
RMEnsure Tinct 0.13 Error NetSurf requires Tinct 0.13 or later. Please use the RISC OS Configure app to update the computer's !System directory from the NetSurf archive.

| Ensure Iconv
RMEnsure Iconv 0.12 NetSurfRMLoad System:Modules.Iconv
RMEnsure Iconv 0.12 Error NetSurf requires Iconv 0.12 or later. Please use the RISC OS Configure app to update the computer's !System directory from the NetSurf archive.

| Ensure CryptRandom
RMEnsure CryptRandom 0.13 NetSurfRMLoad System:Modules.CryptRand
RMEnsure CryptRandom 0.13 Error NetSurf requires CryptRandom 0.13 or later.  Please use the RISC OS Configure app to update the computer's !System directory from the NetSurf archive.

| Disable SpecialFX, if present
Set NetSurf$SpecialFX 1
RMEnsure SpecialFX 1.00 Set NetSurf$SpecialFX 0
If <NetSurf$SpecialFX> Then SpecialFX ~B~G~L NetSurf
Unset NetSurf$SpecialFX

| No longer need this alias
Unset Alias$NetSurfRMLoad

| Now attempt to create Scrap directories
CDir <Wimp$ScrapDir>.WWW
CDir <Wimp$ScrapDir>.WWW.NetSurf

| Install NetSurf-specific fonts
| NB: trailing dot is required
FontInstall NetSurf:Resources.Fonts.

WIMPSLOT
Run <NetSurf$Dir>.!RunImage %*0 2><Wimp$ScrapDir>.WWW.NetSurf.Log
