/pliant/language/ui/console.pli
 
 1  submodule "/pliant/language/misc/hooks.pli" 
 2   
 3  module "/pliant/language/unsafe.pli" 
 4  module "/pliant/language/context.pli" 
 5  module "/pliant/language/stream/light.pli" 
 6  module "/pliant/language/os.pli" 
 7  module "/pliant/admin/file.pli" 
 8   
 9  if os_api="linux" or os_api="posix" 
 10    gvar Int old_handle := -1 
 11   
 12  function console_redirect name 
 13    arg Str name 
 14    if os_api="linux" or os_api="posix" 
 15      if old_handle=(-1) 
 16        old_handle := os_dup 1 
 17      var Int handle := file_open file_os_name:name 2 
 18      os_dup2 handle 1 
 19      file_close handle 
 20    eif os_api="win32" 
 21      if win32_console_handle<>(-1) 
 22        file_close win32_console_handle 
 23      win32_console_handle := file_open file_os_name:name 2 
 24   
 25  function console_restore 
 26    if os_api="linux" or os_api="posix" 
 27      if old_handle<>(-1) 
 28        os_dup2 old_handle 1 
 29    eif os_api="win32" 
 30      if win32_console_handle<>(-1) 
 31        file_close win32_console_handle 
 32      win32_console_handle := -1 
 33   
 34  export console_redirect console_restore