Patch title: Release 93 bulk changes
Abstract:
File: /protocol/http/console.page
Key:
    Removed line
    Added line
module "/pliant/language/compiler.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/debug/trace.pli"


type HttpTrace
  field List:Str paths
  field Link:Stream stream ; field CBool flushed
  field Sem sem ; field CBool locked

TraceHandler maybe HttpTrace

method h line path message
  arg_rw HttpTrace h ; arg Str path message
  part check_path
    var Pointer:Str p :> h:paths first
    while exists:p
      if (path 0 p:len)=p
        leave check_path
      p :> h:paths next p
    if (exists h:paths:first)
      return
  var Link:Stream s :> h stream
  s writeline path+"   "+message
  h flushed := false
  if h:stream=failure and h:locked
    ((addressof h:sem) map Sem) release
    h locked := false

method h flush
  arg_rw HttpTrace h
  if not h:flushed
    var Link:Stream s :> h stream
    s flush anytime
    h flushed := true
    if h:stream=failure and h:locked
      ((addressof h:sem) map Sem) release
      h locked := false


if not allowed:"administrator"
  return

text_input "Path to trace: " (var Str paths) columns 40 rows 3 noeol
button "Display"
  dynamic
page button "Display"
  var Link:HttpTrace h :> new HttpTrace
  var Str p := paths
  while p<>""
    if not (p parse any:(var Str p1) "[lf]" any:(var Str remain))
      p1 := p ; remain := ""
    if p1<>""
      h paths += p1
    p := remain
  h stream :> http_request stream ; h flushed := true
  http_request answer_mime_type := "text/plain"
  http_request send_header
  h:sem request ; h locked := true
  h start
  h:sem request ; h:sem release
  h stop
  http_request send_footer