Patch title: Release 89 bulk changes
Abstract:
File: /protocol/lpr/spool.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/unsafe.pli"
module "/pliant/language/schedule/daemon.pli"
module "/pliant/language/schedule/resourcesem.pli"
module "/pliant/language/context.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/admin/file.pli"
submodule "database.pli"


module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/unsafe.pli"
module "/pliant/language/schedule/daemon.pli"
module "/pliant/language/schedule/resourcesem.pli"
module "/pliant/language/context.pli"
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/admin/file.pli"
submodule "database.pli"


  method stream atend_workaround -> c
    arg_rw Stream stream ; arg CBool c
    while not stream:atend and (stream:stream_read_cur map Char)="%"
      stream readline
    c := stream atend

  function lpr_print_postscript file job prn -> status
    arg Str file ; arg_rw Data:LprJob job ; arg_rw Stream pr
    var Data:LprQueue printer :> job printer
    if embedded
      var Str temp := replace file_temporary "file:/" "embed
      if (file_clone file temp)=failure
        file_copy file temp
    part rip
      stream_pipe (var Str in_pipe) (var Str out_pipe)
      var Str gs_resolution := (string printer:resolution_x*
      thread
        if embedded
          execute "gs -sDEVICE=ppmraw -r"+gs_resolution+" -s
        else
          execute "gs -sDEVICE=ppmraw -r"+gs_resolution+" -s
      var Link:Stream s :> new Stream
      s open in_pipe in+safe+bigcache ; var Int page := 0
  function lpr_print_postscript file job prn -> status
    arg Str file ; arg_rw Data:LprJob job ; arg_rw Stream pr
    var Data:LprQueue printer :> job printer
    if embedded
      var Str temp := replace file_temporary "file:/" "embed
      if (file_clone file temp)=failure
        file_copy file temp
    part rip
      stream_pipe (var Str in_pipe) (var Str out_pipe)
      var Str gs_resolution := (string printer:resolution_x*
      thread
        if embedded
          execute "gs -sDEVICE=ppmraw -r"+gs_resolution+" -s
        else
          execute "gs -sDEVICE=ppmraw -r"+gs_resolution+" -s
      var Link:Stream s :> new Stream
      s open in_pipe in+safe+bigcache ; var Int page := 0
      while not s:atend
      while not s:atend_workaround
        page += 1 ; job r_comment := "page "+string:page
        var Link:ImageLazy lazy :> new ImageLazy
        status := lazy bind s "filter [dq].ppm[dq] resolutio
        if lazy=failure
          leave rip
        var Link:ImageResampling rs
        if printer:margin_left<>0 or printer:margin_top<>0 o
          var Int ix0 := lazy index_x printer:margin_left
          var Float fx0 := lazy:x0+(lazy:x1-lazy:x0)*ix0/laz
          var Int iy0 := lazy index_y printer:margin_left
          var Float fy0 := lazy:y0+(lazy:y1-lazy:y0)*iy0/laz
          var Int ix1 := lazy index_x printer:size_x-printer
          var Float fx1 := lazy:x0+(lazy:x1-lazy:x0)*ix1/laz
          var Int iy1 := lazy index_y printer:size_y-printer
          var Float fy1 := lazy:y0+(lazy:y1-lazy:y0)*iy1/laz
          var Link:ImageResampling rs :> new ImageResampling
          status := rs bind lazy fx0 fy0 fx1 fy1 ix1-ix0 iy1
          if status=failure
            leave rip
        else
          rs :> addressof:lazy map ImageResampling
        status := lpr_print rs "" job prn
        if status=failure
          leave rip
        lazy read 0 lazy:size_y-1 1 addressof:(var ColorBuff
      status := success
    if embedded
      file_delete temp


export lpr_filename lpr_open lpr_close lpr_error lpr_cancel 
export lpr_init lpr_spool lpr_stop lpr_restart lpr_rip_slot
        page += 1 ; job r_comment := "page "+string:page
        var Link:ImageLazy lazy :> new ImageLazy
        status := lazy bind s "filter [dq].ppm[dq] resolutio
        if lazy=failure
          leave rip
        var Link:ImageResampling rs
        if printer:margin_left<>0 or printer:margin_top<>0 o
          var Int ix0 := lazy index_x printer:margin_left
          var Float fx0 := lazy:x0+(lazy:x1-lazy:x0)*ix0/laz
          var Int iy0 := lazy index_y printer:margin_left
          var Float fy0 := lazy:y0+(lazy:y1-lazy:y0)*iy0/laz
          var Int ix1 := lazy index_x printer:size_x-printer
          var Float fx1 := lazy:x0+(lazy:x1-lazy:x0)*ix1/laz
          var Int iy1 := lazy index_y printer:size_y-printer
          var Float fy1 := lazy:y0+(lazy:y1-lazy:y0)*iy1/laz
          var Link:ImageResampling rs :> new ImageResampling
          status := rs bind lazy fx0 fy0 fx1 fy1 ix1-ix0 iy1
          if status=failure
            leave rip
        else
          rs :> addressof:lazy map ImageResampling
        status := lpr_print rs "" job prn
        if status=failure
          leave rip
        lazy read 0 lazy:size_y-1 1 addressof:(var ColorBuff
      status := success
    if embedded
      file_delete temp


export lpr_filename lpr_open lpr_close lpr_error lpr_cancel 
export lpr_init lpr_spool lpr_stop lpr_restart lpr_rip_slot