/*********************************************************************/
/* file: echo.c - funtions to turn keyboard echo on/off              */
/*                             TINTIN III                            */
/*          (T)he K(I)cki(N) (T)ickin D(I)kumud Clie(N)t             */
/*                     coded by peter unold 1992                     */
/*********************************************************************/
/* This might not work on some exotic unix versions. Nothin I can do */
/* about it, coz most of this was lifted from other programs...      */
/*********************************************************************/
#include "tintin.h"

#if defined(aix) || defined(hpux) || defined(_SEQUENT_) || defined(DO_TERMIO)
  #include <sys/termio.h>
#else
  #include <sgtty.h>
  #if DIRTY_REDEFINE
    #undef TIOCGETP
    #undef TIOCSETP
    #define TIOCGETP 0x40067408
    #define TIOCSETP 0x80067409
  #endif
#endif

#if defined(hpux) || defined(aix) || defined(_SEQUENT_)

/********************************/
/* turn echo on - HP-UX version */
/********************************/
void term_echo()
{
  struct  termio io;

  if(ioctl(0, TCGETA, &io)<0)
    syserr("ioctl");
  io.c_lflag|=ECHO; 
  if(ioctl(0, TCSETA, &io)<0)
    syserr("ioctl");
}

/*********************************/
/* turn echo off - HP-UX version */
/*********************************/
void term_noecho()
{
  struct  termio io;

  if(ioctl(0, TCGETA, &io)<0)
    syserr("ioctl");
  io.c_lflag &= ~ECHO; 
  if(ioctl(0, TCSETA, &io)<0)
    syserr("ioctl");
}

#else
/********************************/
/* turn echo on - SunOS version */
/********************************/
void term_echo()
{
  struct  sgttyb sgbuf;
  if(ioctl(0, TIOCGETP, &sgbuf)<0)
    syserr("ioctl");
  sgbuf.sg_flags |= ECHO;
  if(ioctl(0, TIOCSETP, &sgbuf)<0)
    syserr("ioctl");
}

/**********************************/
/* turn echo off  - SunOS version */
/**********************************/
void term_noecho()
{
  struct  sgttyb sgbuf;

  if(ioctl(0, TIOCGETP, &sgbuf)<0)
    syserr("ioctl");
  sgbuf.sg_flags &= ~ECHO;
  if(ioctl(0, TIOCSETP, &sgbuf)<0)
    syserr("opctl");
}
#endif