Patch title: Release 91 bulk changes
Abstract:
File: /appli/backup/engraving.remote
Key:
    Removed line
    Added line
module "/pliant/language/unsafe.pli"
module "/pliant/language/stream.pli"
module "/pliant/util/crypto/channel.pli"
module "/pliant/util/remote/client.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/admin/execute.pli"
module "/pliant/linux/kernel/module.pli"
module "/pliant/linux/storage/filesystem.pli"
module "/pliant/admin/file.pli"
module "/pliant/admin/md5.pli"
module "/pliant/language/stream/pipe.pli"
module "/pliant/linux/storage/cdrom.pli"


function cdrom_remote_engrave files options server engraver -> status
  arg List:FileInfo files ; arg Str options server engraver ; arg ExtendedStatus status
  var Str err
  remote server
    control c (c is_one_of this_computer:env:"hardware":("engraver"+engraver):"export")
    ignore files
  local_streaming s
    var Pointer:FileInfo f :> files first
    while exists:f
      s:channel_support writeline "file "+string:(f:options option "cdname" Str)
      s:channel_support file_send f:name "recover"
      f :> files next f
    s:channel_support writeline "end of backup files list"
    err := s:channel_support readline
    if err="" and s:channel_support=failure
      err := "broken remote execution connection"
  remote_streaming s
    var Str temp := file_temporary+"/"
    while { var Str l := s:channel_support:readline ; l parse word:"file" (var Str filename) }
      file_tree_create temp+filename
      s:channel_support file_receive temp+filename "recover"
    if l="end of backup files list"
      var ExtendedStatus rstatus := cdrom_engrave temp options
      s:channel_support writeline (shunt rstatus=success "success" rstatus:message<>"" rstatus:message "no error message provided by 'cdrom_engrave' function")
    else
      s:channel_support writeline "CD engraver handler remote computer failed to receive the files to engrave"
    file_tree_delete temp
  failure msg
    err := "failed to execute remote instruction: "+msg
  status := shunt err="success" success failure:err


function cdrom_remote_record isofile options server engraver
  arg Str isofile options server engraver
  remote server
    control c (c is_one_of this_computer:env:"hardware":("engraver"+engraver):"export")
  local_streaming s
    s:channel_support file_send isofile
  remote_streaming s
    stream_pipe (var Str pipe_in) (var Str pipe_out)
    thread
      cdrom_record pipe_in options
    s:channel_support file_receive pipe_out


function cdrom_remote_mount server engraver
  arg Str server engraver
  remote server
    control c (c is_one_of this_computer:env:"hardware":("engraver"+engraver):"export")
    execute "insmod isofs" quiet
    kernel_load_module "isofs"
    filesystem_mount this_computer:env:"hardware":("engraver"+engraver):"device" "file:/mnt/backup"+engraver+"/" "filesystem [dq]iso9660[dq] readonly"

function cdrom_remote_control server engraver file size sign
  arg Str server engraver file ; arg_w Intn size ; arg_w Str sign
  remote server
    control c (c is_one_of this_computer:env:"hardware":("engraver"+engraver):"export")
    modify size sign
    size := (file_query "file:/mnt/backup"+engraver+"/"+file standard) size
    sign := file_md5_hexa_signature "file:/mnt/backup"+engraver+"/"+file

function cdrom_remote_dismount server engraver
  arg Str server engraver
  remote server
    control c (c is_one_of this_computer:env:"hardware":("engraver"+engraver):"export")
    filesystem_dismount "file:/mnt/backup"+engraver+"/"


export cdrom_remote_engrave
export cdrom_remote_record
export cdrom_remote_mount cdrom_remote_control cdrom_remote_dismount