Patch title: Release 84 bulk changes
Abstract:
File: /pliant/protocol/http/server.pli
Key:
    Removed line
    Added line
   
abstract
  [Pliant HTTP server implementation, according to RFC2616] 
  [This implementation also contains a very powerfull mecani



meta style_setup e
  if e:size<>1
    return
  var Link:Module m :> e module
  if (exists m:external)
    m :> m external
abstract
  [Pliant HTTP server implementation, according to RFC2616] 
  [This implementation also contains a very powerfull mecani



meta style_setup e
  if e:size<>1
    return
  var Link:Module m :> e module
  if (exists m:external)
    m :> m external
  e compile_as (expression duplicate style_setup_prototype s
  var Link:Expression ee :> expression duplicate style_setup_prototype substitute body e:0 substitute name (expression mapped_constant m:name near e)
  e compile_as ee
  var Link:Expression f :> null map Expression
  var Bool ok := track_expression style_setup_prototype "body" ee f
  check ok
  copy_properties f e:0
  


method server compile_dynamic_page pagename filename -> err
  arg_rw HttpServer server ; arg Str pagename filename ; arg
  var Str ext := filename (filename search_last "." filename
  var Link:Function filter :> query_mime_dynamic_filter ext
  if not exists:filter
    return "?"
  var Str physical := shunt ext<>".html" filename (filename 
  var FileInfo info := file_query physical standard
  if info=failure or info:is_directory
    return "?"


method server compile_dynamic_page pagename filename -> err
  arg_rw HttpServer server ; arg Str pagename filename ; arg
  var Str ext := filename (filename search_last "." filename
  var Link:Function filter :> query_mime_dynamic_filter ext
  if not exists:filter
    return "?"
  var Str physical := shunt ext<>".html" filename (filename 
  var FileInfo info := file_query physical standard
  if info=failure or info:is_directory
    return "?"
  dynamic_pages_sem rd_request
  var Link:DynamicPage dp :> (dynamic_pages first filename) 
  dynamic_pages_sem rd_release
  if exists:dp and not dp:changed
  var Link:DynamicPage dp :> server find_dynamic_page filename
  if exists:dp
    return ""
  var Stream data ; data open physical in+safe
  if data=failure
    return "?"
    return ""
  var Stream data ; data open physical in+safe
  if data=failure
    return "?"
  # try again with the compile semaphore locked in order to avoid compiling several times the same thing
  pliant_compiler_semaphore request
  var Link:DynamicPage dp :> server find_dynamic_page filename
  if exists:dp
    pliant_compiler_semaphore release
    return ""
  var Str temp := file_temporary
  (var Stream tmp) open temp out
  var Str opt := ""
  mime_filter data tmp opt filter
  data close
  tmp open temp in
  var List:Str lines
  while not tmp:atend
    lines += tmp readline
  tmp close
  file_delete temp
  err := server do_compile_dynamic_page pagename physical ph
  if exists:function
    http_record_dynamic_page filename filename function (nul
  var Str temp := file_temporary
  (var Stream tmp) open temp out
  var Str opt := ""
  mime_filter data tmp opt filter
  data close
  tmp open temp in
  var List:Str lines
  while not tmp:atend
    lines += tmp readline
  tmp close
  file_delete temp
  err := server do_compile_dynamic_page pagename physical ph
  if exists:function
    http_record_dynamic_page filename filename function (nul
  pliant_compiler_semaphore release