Patch title: Release 92 bulk changes
Abstract:
File: /language/stream/tmp.pli
Key:
    Removed line
    Added line
module "ring.pli"
module "/pliant/admin/file.pli"


type TmpStreamDriver
  field Link:StreamDriver driver
  field Str temp final options
StreamDriver maybe TmpStreamDriver

method t read buf mini maxi -> red
  arg_rw TmpStreamDriver t ; arg Address buf ; arg Int mini maxi red
  red := t:driver read buf mini maxi

method t write buf mini maxi -> written
  arg_rw TmpStreamDriver t ; arg Address buf ; arg Int mini maxi written
  written := t:driver write buf mini maxi

method t flush level -> status
  arg_rw TmpStreamDriver t ; arg Int level ; arg Status status
  status := t:driver flush level

method t close -> status
  arg_rw TmpStreamDriver t ; arg ExtendedStatus status
  status := t:driver close
  if status=success and t:final<>""
    status := file_copy t:temp t:final reduced
  file_delete t:temp

method t query command stream answer -> status
  oarg_rw TmpStreamDriver t ; arg Str command ; arg_rw Stream stream ; arg_w Str answer ; arg ExtendedStatus status
  status := t:driver query command stream answer

method t configure command stream -> status
  arg_rw TmpStreamDriver t ; arg Str command ; arg_rw Stream stream ; arg ExtendedStatus status
  status := t:driver configure command stream

pliant_multi_file_system mount "/" pliant_root_path pliant_os_file_system


type TmpFileSystem
  void
FileSystem maybe TmpFileSystem

method tfs open name options flags stream support -> status
  oarg_rw TmpFileSystem tfs ; arg Str name options ; arg Int flags ; arg_rw Stream stream support ; arg ExtendedStatus status
  var Link:TmpStreamDriver t :> new TmpStreamDriver
  t temp := file_temporary
  if (flags .and. in)<>0
    file_copy (shunt options<>"" string:name+" "+options name) t:temp reduced
  status := pliant_default_file_system open t:temp options flags stream support
  if status=success
    t driver :> stream stream_driver
    stream stream_driver :> t
    if (flags .and. out)<>0
      t final := shunt options<>"" string:name+" "+options name
  else
    file_delete t:temp

gvar TmpFileSystem tmp_file_system
pliant_multi_file_system mount "tmp:" "" "seek" tmp_file_system