Patch title: Release 94 bulk changes
Abstract:
File: /pliant/language/ui/ansi_terminal.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 


# 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 


  function keyboard_raw_readchar -> c
    arg Int c
  function keyboard_raw_readchar timeout -> c
    arg Float timeout ; arg Int c
    var os_TermIOs current wished
    os_tcgetattr 0 current
    memory_copy addressof:current addressof:wished os_TermIO
    os_cfmakeraw wished
    os_tcsetattr 0 0 wished
    var os_TermIOs current wished
    os_tcgetattr 0 current
    memory_copy addressof:current addressof:wished os_TermIO
    os_cfmakeraw wished
    os_tcsetattr 0 0 wished
    c := 0 ; os_read 0 addressof:c 1
    if timeout<>undefined
      var os_pollfd fd
      fd fd := 0
      fd events := os_POLLIN
      if (os_poll addressof:fd 1 (cast timeout*1000 Int))<1
        os_tcsetattr 0 0 current
        return undefined
    c := 0
    if (os_read 0 addressof:c 1)<>1
      c := undefined
    if c=current:c_cc:2
      c := keyboard_rubout
    os_tcsetattr 0 0 current

    if c=current:c_cc:2
      c := keyboard_rubout
    os_tcsetattr 0 0 current

  function keyboard_raw_readchar -> c
    arg Int c
    c := keyboard_raw_readchar undefined

eif os_api="win32"


export console_move
eif os_api="win32"


export console_move