Patch title: Release 92 bulk changes
Abstract:
File: /protocol/http/style/common.style
Key:
    Removed line
    Added line
   
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


method p replace_content replace with -> status
  arg_rw HtmlPage p ; arg Str replace with ; arg Status stat
  var Pointer:Stream stream :> p http_stream
  var Address start := stream stream_write_buf
  var Address cur := stream stream_write_cur
  var Address stop := stream stream_write_stop
  if (cast stop Int).-.(cast cur Int) >= with:len-replace:le
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


method p replace_content replace with -> status
  arg_rw HtmlPage p ; arg Str replace with ; arg Status stat
  var Pointer:Stream stream :> p http_stream
  var Address start := stream stream_write_buf
  var Address cur := stream stream_write_cur
  var Address stop := stream stream_write_stop
  if (cast stop Int).-.(cast cur Int) >= with:len-replace:le
    var Address a := memory_search start (cast cur Int).-.(c
    var Address a := memory_search start (cast cur Int).-.(cast start Int) replace:characters replace:len
    if a<>null
      memory_move (a translate Byte replace:len) (a translat
      memory_copy with:characters a with:len
      stream stream_write_cur := cur translate Byte with:len
      return success
  status := failure


method page goto_hyperlink target autoext section options
  arg_rw HtmlPage page ; arg Str target ; arg CBool autoext 
  var Str without_path := target (target search_last "/" -1)
    if a<>null
      memory_move (a translate Byte replace:len) (a translat
      memory_copy with:characters a with:len
      stream stream_write_cur := cur translate Byte with:len
      return success
  status := failure


method page goto_hyperlink target autoext section options
  arg_rw HtmlPage page ; arg Str target ; arg CBool autoext 
  var Str without_path := target (target search_last "/" -1)
  var Str t := target
  var Str t := http_encode target
  if autoext and without_path:len<>0 and (without_path searc
    t += ".html"
  if section<>""
    t += "#"+http_encode:section
  if options<>""
    t += "?"+http_encode:options
  page:http_request answer_is_dynamic := true
  page html "<script language=[dq]JavaScript[dq]>[lf]"
  page html "  location.replace([dq]"+t+"[dq])[lf]"
  page html "</script>[lf]"
  page html "Your browser is not very smart. You should sele
  
meta '. goto_url' e
  if e:size<2 or not (e:0 cast HtmlPage) or not (e:1 cast St
    return
  e suckup e:0 ; e suckup e:1
  var Link:Argument autoext :> argument constant CBool true
  var Link:Argument section :> argument constant Str ""
  var Link:Argument options :> argument constant Str ""
  var Int i := 2
  while i<e:size
    if e:i:ident="no_extension"
      autoext :> argument constant CBool false
      i += 1
    eif e:i:ident="section" and i+1<e:size and (e:(i+1) cast
      e suckup e:(i+1)
      section :> e:(i+1):result
      i += 2
    eif e:i:ident="options" and i+1<e:size and (e:(i+1) cast
      e suckup e:(i+1)
      options :> e:(i+1):result
      i += 2
    else
      return
  e add (instruction (the_function '. goto_hyperlink' HtmlPa
  e set_void_result



  if autoext and without_path:len<>0 and (without_path searc
    t += ".html"
  if section<>""
    t += "#"+http_encode:section
  if options<>""
    t += "?"+http_encode:options
  page:http_request answer_is_dynamic := true
  page html "<script language=[dq]JavaScript[dq]>[lf]"
  page html "  location.replace([dq]"+t+"[dq])[lf]"
  page html "</script>[lf]"
  page html "Your browser is not very smart. You should sele
  
meta '. goto_url' e
  if e:size<2 or not (e:0 cast HtmlPage) or not (e:1 cast St
    return
  e suckup e:0 ; e suckup e:1
  var Link:Argument autoext :> argument constant CBool true
  var Link:Argument section :> argument constant Str ""
  var Link:Argument options :> argument constant Str ""
  var Int i := 2
  while i<e:size
    if e:i:ident="no_extension"
      autoext :> argument constant CBool false
      i += 1
    eif e:i:ident="section" and i+1<e:size and (e:(i+1) cast
      e suckup e:(i+1)
      section :> e:(i+1):result
      i += 2
    eif e:i:ident="options" and i+1<e:size and (e:(i+1) cast
      e suckup e:(i+1)
      options :> e:(i+1):result
      i += 2
    else
      return
  e add (instruction (the_function '. goto_hyperlink' HtmlPa
  e set_void_result