From 625421c14577a7666be61a899704ee5b16476b39 Mon Sep 17 00:00:00 2001
From: Andrew Hodgkinson <ahodgkin@gitlab.riscosopen.org>
Date: Fri, 3 Oct 1997 16:15:14 +0000
Subject: [PATCH] !Run[D] files updated to require FTP 0.14, and ensure that
 the Resolver and MimeMap modules are present. Paragraph tags can now affect
 images and other such objects - previously they only worked on text (this was
 noticed for a DIV element containing one image, which was preceeded by a P
 element but didn't have any white space above it).

This is the source that will be released to PSI, and builds the Customer
!Customer and internal !Phoenix releases at about 5:00pm on 10/03/97.
---
 Resources/UK/Browse/!Run,feb   |   9 ++-
 Resources/UK/Browse/!RunD,feb  |   9 ++-
 Resources/UK/Phoenix/!Run,feb  |   9 ++-
 Resources/UK/Phoenix/!RunD,feb |   9 ++-
 Resources/UK/Ursula/!Run,feb   |   9 ++-
 Resources/UK/Ursula/!RunD,feb  |   9 ++-
 c/Reformat                     |  59 +++++++--------
 c/Trace                        | 128 +++++++++++++++++----------------
 8 files changed, 138 insertions(+), 103 deletions(-)

diff --git a/Resources/UK/Browse/!Run,feb b/Resources/UK/Browse/!Run,feb
index 487252d..5291b55 100644
--- a/Resources/UK/Browse/!Run,feb
+++ b/Resources/UK/Browse/!Run,feb
@@ -33,8 +33,13 @@ RMEnsure AcornHTTP    0.41 RMLoad System:Modules.Network.URL.HTTP
 RMEnsure AcornHTTP    0.41 Error The browser requires version 0.41 or later of the HTTP module
 RMEnsure FileFetcher  0.23 RMLoad System:Modules.Network.URL.File
 RMEnsure FileFetcher  0.23 Error The browser requires version 0.23 or later of the File module
-RMEnsure FTPFetcher   0.13 RMLoad System:Modules.Network.URL.FTP
-RMEnsure FTPFetcher   0.13 Error The browser requires version 0.13 or later of the FTP module
+RMEnsure FTPFetcher   0.14 RMLoad System:Modules.Network.URL.FTP
+RMEnsure FTPFetcher   0.14 Error The browser requires version 0.14 or later of the FTP module
+
+RMEnsure Resolver     0.48 RMLoad System:Modules.Network.Resolver
+RMEnsure Resolver     0.48 Error The browser requires version 0.48 or later of the Resolver module
+RMEnsure MimeMap      0.04 RMLoad System:Modules.Network.MimeMap
+RMEnsure MimeMap      0.04 Error The browser requires version 0.04 or later of the MimeMap module
 
 | TaskModule for catching service calls (not required for
 | some UIs, so let it fail silently); also the URI handler,
diff --git a/Resources/UK/Browse/!RunD,feb b/Resources/UK/Browse/!RunD,feb
index 492fae4..2c38d36 100644
--- a/Resources/UK/Browse/!RunD,feb
+++ b/Resources/UK/Browse/!RunD,feb
@@ -40,8 +40,13 @@ RMEnsure AcornHTTP    0.41 RMLoad System:Modules.Network.URL.HTTP
 RMEnsure AcornHTTP    0.41 Error The browser requires version 0.41 or later of the HTTP module
 RMEnsure FileFetcher  0.23 RMLoad System:Modules.Network.URL.File
 RMEnsure FileFetcher  0.23 Error The browser requires version 0.23 or later of the File module
-RMEnsure FTPFetcher   0.13 RMLoad System:Modules.Network.URL.FTP
-RMEnsure FTPFetcher   0.13 Error The browser requires version 0.13 or later of the FTP module
+RMEnsure FTPFetcher   0.14 RMLoad System:Modules.Network.URL.FTP
+RMEnsure FTPFetcher   0.14 Error The browser requires version 0.14 or later of the FTP module
+
+RMEnsure Resolver     0.48 RMLoad System:Modules.Network.Resolver
+RMEnsure Resolver     0.48 Error The browser requires version 0.48 or later of the Resolver module
+RMEnsure MimeMap      0.04 RMLoad System:Modules.Network.MimeMap
+RMEnsure MimeMap      0.04 Error The browser requires version 0.04 or later of the MimeMap module
 
 | TaskModule for catching service calls (not required for
 | some UIs, so let it fail silently); also the URI handler,
diff --git a/Resources/UK/Phoenix/!Run,feb b/Resources/UK/Phoenix/!Run,feb
index 3dbf685..28a1596 100644
--- a/Resources/UK/Phoenix/!Run,feb
+++ b/Resources/UK/Phoenix/!Run,feb
@@ -33,8 +33,13 @@ RMEnsure AcornHTTP    0.41 RMLoad System:Modules.Network.URL.HTTP
 RMEnsure AcornHTTP    0.41 Error The browser requires version 0.41 or later of the HTTP module
 RMEnsure FileFetcher  0.23 RMLoad System:Modules.Network.URL.File
 RMEnsure FileFetcher  0.23 Error The browser requires version 0.23 or later of the File module
-RMEnsure FTPFetcher   0.13 RMLoad System:Modules.Network.URL.FTP
-RMEnsure FTPFetcher   0.13 Error The browser requires version 0.13 or later of the FTP module
+RMEnsure FTPFetcher   0.14 RMLoad System:Modules.Network.URL.FTP
+RMEnsure FTPFetcher   0.14 Error The browser requires version 0.14 or later of the FTP module
+
+RMEnsure Resolver     0.48 RMLoad System:Modules.Network.Resolver
+RMEnsure Resolver     0.48 Error The browser requires version 0.48 or later of the Resolver module
+RMEnsure MimeMap      0.04 RMLoad System:Modules.Network.MimeMap
+RMEnsure MimeMap      0.04 Error The browser requires version 0.04 or later of the MimeMap module
 
 | JPEG support for OS versions without this in SpriteExtend
 
diff --git a/Resources/UK/Phoenix/!RunD,feb b/Resources/UK/Phoenix/!RunD,feb
index f560bd7..9cb5fa3 100644
--- a/Resources/UK/Phoenix/!RunD,feb
+++ b/Resources/UK/Phoenix/!RunD,feb
@@ -40,8 +40,13 @@ RMEnsure AcornHTTP    0.41 RMLoad System:Modules.Network.URL.HTTP
 RMEnsure AcornHTTP    0.41 Error The browser requires version 0.41 or later of the HTTP module
 RMEnsure FileFetcher  0.23 RMLoad System:Modules.Network.URL.File
 RMEnsure FileFetcher  0.23 Error The browser requires version 0.23 or later of the File module
-RMEnsure FTPFetcher   0.13 RMLoad System:Modules.Network.URL.FTP
-RMEnsure FTPFetcher   0.13 Error The browser requires version 0.13 or later of the FTP module
+RMEnsure FTPFetcher   0.14 RMLoad System:Modules.Network.URL.FTP
+RMEnsure FTPFetcher   0.14 Error The browser requires version 0.14 or later of the FTP module
+
+RMEnsure Resolver     0.48 RMLoad System:Modules.Network.Resolver
+RMEnsure Resolver     0.48 Error The browser requires version 0.48 or later of the Resolver module
+RMEnsure MimeMap      0.04 RMLoad System:Modules.Network.MimeMap
+RMEnsure MimeMap      0.04 Error The browser requires version 0.04 or later of the MimeMap module
 
 | JPEG support for OS versions without this in SpriteExtend
 
diff --git a/Resources/UK/Ursula/!Run,feb b/Resources/UK/Ursula/!Run,feb
index 8105517..487c845 100644
--- a/Resources/UK/Ursula/!Run,feb
+++ b/Resources/UK/Ursula/!Run,feb
@@ -33,8 +33,13 @@ RMEnsure AcornHTTP    0.41 RMLoad System:Modules.Network.URL.HTTP
 RMEnsure AcornHTTP    0.41 Error The browser requires version 0.41 or later of the HTTP module
 RMEnsure FileFetcher  0.23 RMLoad System:Modules.Network.URL.File
 RMEnsure FileFetcher  0.23 Error The browser requires version 0.23 or later of the File module
-RMEnsure FTPFetcher   0.13 RMLoad System:Modules.Network.URL.FTP
-RMEnsure FTPFetcher   0.13 Error The browser requires version 0.13 or later of the FTP module
+RMEnsure FTPFetcher   0.14 RMLoad System:Modules.Network.URL.FTP
+RMEnsure FTPFetcher   0.14 Error The browser requires version 0.14 or later of the FTP module
+
+RMEnsure Resolver     0.48 RMLoad System:Modules.Network.Resolver
+RMEnsure Resolver     0.48 Error The browser requires version 0.48 or later of the Resolver module
+RMEnsure MimeMap      0.04 RMLoad System:Modules.Network.MimeMap
+RMEnsure MimeMap      0.04 Error The browser requires version 0.04 or later of the MimeMap module
 
 | TaskModule for catching service calls (not required for
 | some UIs, so let it fail silently); also the URI handler,
diff --git a/Resources/UK/Ursula/!RunD,feb b/Resources/UK/Ursula/!RunD,feb
index c83515f..913c3a0 100644
--- a/Resources/UK/Ursula/!RunD,feb
+++ b/Resources/UK/Ursula/!RunD,feb
@@ -40,8 +40,13 @@ RMEnsure AcornHTTP    0.41 RMLoad System:Modules.Network.URL.HTTP
 RMEnsure AcornHTTP    0.41 Error The browser requires version 0.41 or later of the HTTP module
 RMEnsure FileFetcher  0.23 RMLoad System:Modules.Network.URL.File
 RMEnsure FileFetcher  0.23 Error The browser requires version 0.23 or later of the File module
-RMEnsure FTPFetcher   0.13 RMLoad System:Modules.Network.URL.FTP
-RMEnsure FTPFetcher   0.13 Error The browser requires version 0.13 or later of the FTP module
+RMEnsure FTPFetcher   0.14 RMLoad System:Modules.Network.URL.FTP
+RMEnsure FTPFetcher   0.14 Error The browser requires version 0.14 or later of the FTP module
+
+RMEnsure Resolver     0.48 RMLoad System:Modules.Network.Resolver
+RMEnsure Resolver     0.48 Error The browser requires version 0.48 or later of the Resolver module
+RMEnsure MimeMap      0.04 RMLoad System:Modules.Network.MimeMap
+RMEnsure MimeMap      0.04 Error The browser requires version 0.04 or later of the MimeMap module
 
 | TaskModule for catching service calls (not required for
 | some UIs, so let it fail silently); also the URI handler,
diff --git a/c/Reformat b/c/Reformat
index 04259c1..80b1659 100644
--- a/c/Reformat
+++ b/c/Reformat
@@ -1379,7 +1379,22 @@ int reformat_y_offset (browser_data * b)
 static _kernel_oserror * reformat_check_height(int toplevel, browser_data * b, reformat_cell * d, int line, HStream * tp, HStream * tpLast, int offset)
 {
   _kernel_oserror * e;
-  int               top = 0, bot = 0;
+  int               spaced   = 0;
+  int               top      = 0;
+  int               bot      = 0;
+  int               fontsize = choices.font_size >> 4;
+  unsigned char     add      = (unsigned char) 3 * fontsize;
+
+  /* If the token represents a line break but there is no extra  */
+  /* data (so this is right at the top of the paragraph) include */
+  /* a gap for the break.                                        */
+
+  if ((!offset) && (tp->style & (P | UL)))
+  {
+    b->last_space += add, spaced = 1;
+    // if (b->last_space <= add) top += add;
+    top += add;
+  }
 
   /* Find out the height of an image */
 
@@ -1396,8 +1411,8 @@ static _kernel_oserror * reformat_check_height(int toplevel, browser_data * b, r
     e = reformat_get_image_size(b, tp, &box);
     if (e) return e;
 
-    top =  box.ymax;
-    bot = -box.ymin;
+    top +=  box.ymax;
+    bot  = -box.ymin;
   }
 
   /* Size of a horizontal rule; the rule is plotted */
@@ -1438,8 +1453,10 @@ static _kernel_oserror * reformat_check_height(int toplevel, browser_data * b, r
             HtmlINPUTtype(tp) == inputtype_CHECKBOX
           )
   {
-    read_sprite_size("fopton", NULL, &top);
-    top -= 8;
+    int size;
+
+    read_sprite_size("fopton", NULL, &size);
+    top += size - 8;
     bot = 8;
   }
 
@@ -1448,8 +1465,10 @@ static _kernel_oserror * reformat_check_height(int toplevel, browser_data * b, r
             HtmlINPUTtype(tp) == inputtype_RADIO
           )
   {
-    read_sprite_size("fradioon", NULL, &top);
-    top -= 8;
+    int size;
+
+    read_sprite_size("fradioon", NULL, &size);
+    top += size - 8;
     bot = 8;
   }
 
@@ -1457,7 +1476,7 @@ static _kernel_oserror * reformat_check_height(int toplevel, browser_data * b, r
 
   else if (ISBULLET(tp))
   {
-    top = reformat_bullet_height(tp->indent);
+    top += reformat_bullet_height(tp->indent);
   }
 
   else if (tp->tag == TABLE && ISBODY(tp))
@@ -1471,11 +1490,8 @@ static _kernel_oserror * reformat_check_height(int toplevel, browser_data * b, r
 
   else
   {
-    int           h;
-    int           spaced   = 0;
-    int           fontsize = choices.font_size >> 4;
-    unsigned char add;
-    BBox          box;
+    int  h;
+    BBox box;
 
     /* Get the bounding box of the font that should be used for the token */
 
@@ -1485,7 +1501,7 @@ static _kernel_oserror * reformat_check_height(int toplevel, browser_data * b, r
       e = fm_font_box(h, &box);
       if (e) return e;
 
-      top = box.ymax;
+      top += box.ymax;
 
 //    /* Account for leading. */
 // // /* Don't do for bold/italic due to font manager bug... */
@@ -1500,21 +1516,6 @@ static _kernel_oserror * reformat_check_height(int toplevel, browser_data * b, r
     }
 //    else top = bot = box.xmin = box.xmax = box.ymin = box.ymax = 0;
 
-    /* The amount to add to 'top' to give line break effects */
-
-    add = (unsigned char) 3 * fontsize;
-
-    /* If the token represents a line break but there is no extra  */
-    /* data (so this is right at the top of the paragraph) include */
-    /* a gap for the break.                                        */
-
-    if ((!offset) && (tp->style & (P | UL)))
-    {
-      b->last_space += add, spaced = 1;
-      // if (b->last_space <= add) top += add;
-      top += add;
-    }
-
     /* Leave a gap above any DT elements */
 
     if (!offset && (tp->style & DT))
diff --git a/c/Trace b/c/Trace
index 72cd334..9f0dad2 100644
--- a/c/Trace
+++ b/c/Trace
@@ -1140,69 +1140,73 @@ tdtbs_fo_err: /* If there's an error whilst writing to the file */
   {
     switch (tagno)
     {
-      case TAG_NONE: return "none";
-      case TAG_A: return "A";
-      case TAG_ADDRESS: return "ADDRESS";
-      case TAG_BOLD: return "BOLD";
-      case TAG_BASE: return "BASE";
-      case TAG_BASEFONT: return "BASEFONT";
+      case TAG_NONE:       return "none";
+      case TAG_A:          return "A";
+      case TAG_ADDRESS:    return "ADDRESS";
+      case TAG_BOLD:       return "BOLD";
+      case TAG_BASE:       return "BASE";
+      case TAG_BASEFONT:   return "BASEFONT";
       case TAG_BLOCKQUOTE: return "BLOCKQUOTE";
-      case TAG_BR: return "BR";
-      case TAG_CENTER: return "CENTER";
-      case TAG_CITE: return "CITE";
-      case TAG_CODE: return "CODE";
-      case TAG_DD: return "DD";
-      case TAG_DIR: return "DIR";
-      case TAG_DL: return "DL";
-      case TAG_DT: return "DT";
-      case TAG_EM: return "EM";
-      case TAG_FONT: return "FONT";
-      case TAG_FORM: return "FORM";
-      case TAG_H1: return "H1";
-      case TAG_H2: return "H2";
-      case TAG_H3: return "H3";
-      case TAG_H4: return "H4";
-      case TAG_H5: return "H5";
-      case TAG_H6: return "H6";
-      case TAG_HR: return "HR";
-      case TAG_ITALIC: return "ITALIC";
-      case TAG_IMG: return "IMG";
-      case TAG_INPUT: return "INPUT";
-      case TAG_ISINDEX: return "ISINDEX";
-      case TAG_KBD: return "KBD";
-      case TAG_LI: return "LI";
-      case TAG_LINK: return "LINK";
-      case TAG_MENU: return "MENU";
-      case TAG_META: return "META";
-      case TAG_OL: return "OL";
-      case TAG_OPTION: return "OPTION";
-      case TAG_P: return "P";
-      case TAG_PRE: return "PRE";
-      case TAG_SAMP: return "SAMP";
-      case TAG_SCRIPT: return "SCRIPT";
-      case TAG_SELECT: return "SELECT";
-      case TAG_STRONG: return "STRONG";
-      case TAG_STYLE: return "STYLE";
-      case TAG_TABLE: return "TABLE";
-      case TAG_TD: return "TD";
-      case TAG_TEXTAREA: return "TEXTAREA";
-      case TAG_TITLE: return "TITLE";
-      case TAG_TH: return "TH";
-      case TAG_TR: return "TR";
-      case TAG_TT: return "TT";
-      case TAG_UL: return "UL";
-      case TAG_VAR: return "VAR";
-      case TAG_XMP: return "XMP";
-      case TAG_FRAME: return "FRAME";
-      case TAG_BODY: return "BODY";
-      case TAG_FRAMESET: return "FRAMESET";
-      case TAG_HEAD: return "HEAD";
-      case TAG_NOFRAMES: return "NOFRAMES";
-      case TAG_SUB: return "SUB";
-      case TAG_SUP: return "SUP";
-      case TAG_AREA: return "AREA";
-      case TAG_MAP: return "MAP";
-      case TAG_OBJECT: return "OBJECT";
+      case TAG_BR:         return "BR";
+      case TAG_CENTER:     return "CENTER";
+      case TAG_CITE:       return "CITE";
+      case TAG_CODE:       return "CODE";
+      case TAG_DD:         return "DD";
+      case TAG_DIR:        return "DIR";
+      case TAG_DIV:        return "DIV";
+      case TAG_DL:         return "DL";
+      case TAG_DT:         return "DT";
+      case TAG_DUMMY:      return "DUMMY";
+      case TAG_EM:         return "EM";
+      case TAG_FONT:       return "FONT";
+      case TAG_FORM:       return "FORM";
+      case TAG_H1:         return "H1";
+      case TAG_H2:         return "H2";
+      case TAG_H3:         return "H3";
+      case TAG_H4:         return "H4";
+      case TAG_H5:         return "H5";
+      case TAG_H6:         return "H6";
+      case TAG_HR:         return "HR";
+      case TAG_ITALIC:     return "ITALIC";
+      case TAG_IMG:        return "IMG";
+      case TAG_INPUT:      return "INPUT";
+      case TAG_ISINDEX:    return "ISINDEX";
+      case TAG_KBD:        return "KBD";
+      case TAG_LI:         return "LI";
+      case TAG_LINK:       return "LINK";
+      case TAG_MENU:       return "MENU";
+      case TAG_META:       return "META";
+      case TAG_OL:         return "OL";
+      case TAG_OPTION:     return "OPTION";
+      case TAG_P:          return "P";
+      case TAG_PRE:        return "PRE";
+      case TAG_SAMP:       return "SAMP";
+      case TAG_SCRIPT:     return "SCRIPT";
+      case TAG_SELECT:     return "SELECT";
+      case TAG_STRIKE:     return "STRIKE";
+      case TAG_STRONG:     return "STRONG";
+      case TAG_STYLE:      return "STYLE";
+      case TAG_TABLE:      return "TABLE";
+      case TAG_TD:         return "TD";
+      case TAG_TEXTAREA:   return "TEXTAREA";
+      case TAG_TITLE:      return "TITLE";
+      case TAG_TH:         return "TH";
+      case TAG_TR:         return "TR";
+      case TAG_TT:         return "TT";
+      case TAG_U:          return "U";
+      case TAG_UL:         return "UL";
+      case TAG_VAR:        return "VAR";
+      case TAG_XMP:        return "XMP";
+      case TAG_FRAME:      return "FRAME";
+      case TAG_BODY:       return "BODY";
+      case TAG_FRAMESET:   return "FRAMESET";
+      case TAG_HEAD:       return "HEAD";
+      case TAG_NOFRAMES:   return "NOFRAMES";
+      case TAG_SUB:        return "SUB";
+      case TAG_SUP:        return "SUP";
+      case TAG_AREA:       return "AREA";
+      case TAG_MAP:        return "MAP";
+      case TAG_OBJECT:     return "OBJECT";
 
       default: return "unknown";
     }
-- 
GitLab