Patch title: Release 92 bulk changes
Abstract:
File: /protocol/lpr/client.pli
Key:
    Removed line
    Added line
   
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


method fs open name options flags stream support -> status
  arg_rw LprFileSystem fs ; arg Str name options ; arg Int f
  if (name eparse "//" any:(var Str server) "/" any:(var Str
    void
  eif (name eparse "//" any:(var Str server) "/" any:(var St
    file := ""
  else
    return failure:"Incorrect name"
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


method fs open name options flags stream support -> status
  arg_rw LprFileSystem fs ; arg Str name options ; arg Int f
  if (name eparse "//" any:(var Str server) "/" any:(var Str
    void
  eif (name eparse "//" any:(var Str server) "/" any:(var St
    file := ""
  else
    return failure:"Incorrect name"
  var Int port
  if (server parse any:(var Str remain) ":" port)
    server := remain
  else
    port := 515
  if (flags .and. in_out)<>out
    return failure:"The only supported mode for LPR client i
  var Intn size := options option "file_size" Intn
  var Link:Stream tcp :> new Stream
  var Int lap := 1
  part select_id
  if (flags .and. in_out)<>out
    return failure:"The only supported mode for LPR client i
  var Intn size := options option "file_size" Intn
  var Link:Stream tcp :> new Stream
  var Int lap := 1
  part select_id
    tcp open "tcp://"+server+"/client/515" in+out+safe
    tcp open "tcp://"+server+"/client/"+string:port in+out+safe
    if tcp=failure
      lpr_trace trace "Failed to connect to '" server "' LPR
      return (failure "Failed to connect to '"+server+"' LPR
    tcp configure "timeout "+string:(options option "timeout
    var uInt8 cmd8 := 2 ; tcp raw_write addressof:cmd8 1
    tcp writeline (shunt queue<>"" queue "lp")
    tcp raw_read addressof:(var uInt8 ack) 1
    if ack<>0
      lpr_trace trace "'" server "' does not want to receive
      return (failure "'"+server+"' does not want to receive
    counter := (counter+1)%1000
    var Str id := right string:counter 3 "0"
    var Str control := "H"+computer_name+"[lf]P"+(options op
    var uInt8 cmd8 := 2 ; tcp raw_write addressof:cmd8 1
    tcp writeline (string control:len)+" cfa"+id+computer_na
    tcp raw_read addressof:(var uInt8 ack) 1
    if ack<>0 and lap<1000
      lap += 1
      restart select_id
    if ack<>0
      lpr_trace trace "'" server "' does not want to receive
      return (failure "'"+server+"' does not want to receive
    tcp writechars control
    var uInt8 cmd8 := 0 ; tcp raw_write addressof:cmd8 1
    tcp raw_read addressof:(var uInt8 ack) 1
    if ack<>0
      lpr_trace trace "'" server "' failed to receive print 
      return (failure "'"+server+"' failed to receive print 
    var Link:LprStreamDriver lpr :> new LprStreamDriver
    lpr tcp :> tcp
    if tcp=failure
      lpr_trace trace "Failed to connect to '" server "' LPR
      return (failure "Failed to connect to '"+server+"' LPR
    tcp configure "timeout "+string:(options option "timeout
    var uInt8 cmd8 := 2 ; tcp raw_write addressof:cmd8 1
    tcp writeline (shunt queue<>"" queue "lp")
    tcp raw_read addressof:(var uInt8 ack) 1
    if ack<>0
      lpr_trace trace "'" server "' does not want to receive
      return (failure "'"+server+"' does not want to receive
    counter := (counter+1)%1000
    var Str id := right string:counter 3 "0"
    var Str control := "H"+computer_name+"[lf]P"+(options op
    var uInt8 cmd8 := 2 ; tcp raw_write addressof:cmd8 1
    tcp writeline (string control:len)+" cfa"+id+computer_na
    tcp raw_read addressof:(var uInt8 ack) 1
    if ack<>0 and lap<1000
      lap += 1
      restart select_id
    if ack<>0
      lpr_trace trace "'" server "' does not want to receive
      return (failure "'"+server+"' does not want to receive
    tcp writechars control
    var uInt8 cmd8 := 0 ; tcp raw_write addressof:cmd8 1
    tcp raw_read addressof:(var uInt8 ack) 1
    if ack<>0
      lpr_trace trace "'" server "' failed to receive print 
      return (failure "'"+server+"' failed to receive print 
    var Link:LprStreamDriver lpr :> new LprStreamDriver
    lpr tcp :> tcp
    if size<>undefined or (options option "lprng")
    if (size<>undefined or (options option "lprng")) and (flags .and. seek)=0
      lpr direct := true
      lpr remain := size
      lpr nosize := size=undefined
      var uInt8 cmd8 := 3 ; tcp raw_write addressof:cmd8 1
      tcp writeline string:(shunt size=undefined 0 size)+" d
      tcp raw_read addressof:(var uInt8 ack) 1
      if ack<>0 and lap<1000
        var uInt8 cmd8 := 1 ; tcp raw_write addressof:cmd8 1
        tcp writeline ""
        tcp raw_read addressof:(var uInt8 ack) 1
        if ack=0
          lap += 1
          restart select_id
      if ack<>0
        lpr_trace trace "'" server "' does not want to recei
        return (failure "'"+server+"' does not want to recei
    else
      lpr direct := false
      lpr nosize := false
      lpr filename := file_temporary
      lpr temp :> new Stream
      lpr:temp open lpr:filename out+(flags .and. safe)
      lpr server := server
      lpr id := id
  stream stream_driver :> lpr
  lpr_trace trace "print job queued on '"+server+"' in queue
  status := success
    
gvar LprFileSystem lpr_file_system
pliant_multi_file_system mount "lpr:" "" lpr_file_system
pliant_multi_file_system mount "lprng:" "" "lprng" lpr_file_
      lpr direct := true
      lpr remain := size
      lpr nosize := size=undefined
      var uInt8 cmd8 := 3 ; tcp raw_write addressof:cmd8 1
      tcp writeline string:(shunt size=undefined 0 size)+" d
      tcp raw_read addressof:(var uInt8 ack) 1
      if ack<>0 and lap<1000
        var uInt8 cmd8 := 1 ; tcp raw_write addressof:cmd8 1
        tcp writeline ""
        tcp raw_read addressof:(var uInt8 ack) 1
        if ack=0
          lap += 1
          restart select_id
      if ack<>0
        lpr_trace trace "'" server "' does not want to recei
        return (failure "'"+server+"' does not want to recei
    else
      lpr direct := false
      lpr nosize := false
      lpr filename := file_temporary
      lpr temp :> new Stream
      lpr:temp open lpr:filename out+(flags .and. safe)
      lpr server := server
      lpr id := id
  stream stream_driver :> lpr
  lpr_trace trace "print job queued on '"+server+"' in queue
  status := success
    
gvar LprFileSystem lpr_file_system
pliant_multi_file_system mount "lpr:" "" lpr_file_system
pliant_multi_file_system mount "lprng:" "" "lprng" lpr_file_