Patch title: Release 92 bulk changes
Abstract:
File: /language/stream/tcp.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 TcpClientFileSystem fs ; arg Str name options ; arg
  var uInt ipaddress ; var Int port
  if (name eparse "//" (var Int i1) "." (var Int i2) "." (va
    ipaddress := (cast i1 uInt)*256^3 + (cast i2 uInt)*256^2
  eif (name eparse "//" any:(var Str hostname) "/client/" po
    var Str ip := dns_query_prototype hostname dns_query_fun
    if (ip parse (var Int i1) "." (var Int i2) "." (var Int 
      ipaddress := (cast i1 uInt)*256^3 + (cast i2 uInt)*256
    else
      if debug
        console "failed to get ip address of "+hostname+"[lf
      return failure
    if trace
      console name+" ip address is "+(string ipaddress "radi
  eif (name eparse "/client/" port)
    ipaddress := 127*256^3+1
  else
    if debug
      console "invalid tcp client name: "+name+"[lf]"
    return failure
  stream_lock_handle
  var Int s := os_socket os_AF_INET os_SOCK_STREAM 0
  stream_unlock_handle s
  if s<0
    if debug
      console "failed to create the TCP client socket[lf]"
    return failure
  if changesettings
    var Int optvalue := 1
    if (os_setsockopt s os_SOL_SOCKET os_SO_KEEPALIVE addres
      if debug
        console "failed set client socket os_SO_KEEPALIVE at
      os_close s
      return failure
  var os_sockaddr_in addr
  addr sin_family := os_AF_INET
  addr sin_addr := ipaddress
  addr sin_port := port
# 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 TcpClientFileSystem fs ; arg Str name options ; arg
  var uInt ipaddress ; var Int port
  if (name eparse "//" (var Int i1) "." (var Int i2) "." (va
    ipaddress := (cast i1 uInt)*256^3 + (cast i2 uInt)*256^2
  eif (name eparse "//" any:(var Str hostname) "/client/" po
    var Str ip := dns_query_prototype hostname dns_query_fun
    if (ip parse (var Int i1) "." (var Int i2) "." (var Int 
      ipaddress := (cast i1 uInt)*256^3 + (cast i2 uInt)*256
    else
      if debug
        console "failed to get ip address of "+hostname+"[lf
      return failure
    if trace
      console name+" ip address is "+(string ipaddress "radi
  eif (name eparse "/client/" port)
    ipaddress := 127*256^3+1
  else
    if debug
      console "invalid tcp client name: "+name+"[lf]"
    return failure
  stream_lock_handle
  var Int s := os_socket os_AF_INET os_SOCK_STREAM 0
  stream_unlock_handle s
  if s<0
    if debug
      console "failed to create the TCP client socket[lf]"
    return failure
  if changesettings
    var Int optvalue := 1
    if (os_setsockopt s os_SOL_SOCKET os_SO_KEEPALIVE addres
      if debug
        console "failed set client socket os_SO_KEEPALIVE at
      os_close s
      return failure
  var os_sockaddr_in addr
  addr sin_family := os_AF_INET
  addr sin_addr := ipaddress
  addr sin_port := port
  if (os_connect s addr os_sockaddr_in:size)<>0
    if debug
      console "failed connect TCP client socket to "+name+"[
    os_close s
    return failure
  var Float timeout := options option "timeout" Float
  if timeout<>undefined
    os_fcntl s os_F_SETFL os_O_NONBLOCK
    if (os_connect s addr os_sockaddr_in:size)<>0
      os_socket_wait s out timeout
      if (os_connect s addr os_sockaddr_in:size)<>0
        if debug
          console "failed connect TCP client socket to "+name+" (timeout "+string:timeout+")[lf]"
        os_close s
        return failure
    os_fcntl s os_F_SETFL 0
  else
    if (os_connect s addr os_sockaddr_in:size)<>0
      if debug
        console "failed connect TCP client socket to "+name+"[lf]"
      os_close s
      return failure
  var Link:TcpStreamDriver drv :> new TcpStreamDriver
  drv s := s
  drv cs := -1
  var Link:TcpStreamDriver drv :> new TcpStreamDriver
  drv s := s
  drv cs := -1
  drv timeout := undefined
  drv timeout := timeout
  stream stream_driver :> drv
  stream stream_handle := s
  status := success



gvar TcpServerFileSystem tcp_server_file_system
pliant_multi_file_system mount "tcp:/server/" "/server/" tcp
  stream stream_driver :> drv
  stream stream_handle := s
  status := success



gvar TcpServerFileSystem tcp_server_file_system
pliant_multi_file_system mount "tcp:/server/" "/server/" tcp