/* Autoconf patching by David Hedbor, neotron@lysator.liu.se */
/*********************************************************************/
/* file: ticks.c - functions for the ticker stuff                    */
/*                             TINTIN III                            */
/*          (T)he K(I)cki(N) (T)ickin D(I)kumud Clie(N)t             */
/*                     coded by peter unold 1992                     */
/*********************************************************************/
#include <ctype.h>
#ifdef HAVE_STRING_H
#include <string.h>
#else
#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
#endif
#include <signal.h>
#include "tintin.h"

#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_TIME_H
#include <time.h>
#endif

#ifndef BADSIG
#define BADSIG (void (*)())-1
#endif

/* externs */
struct session *sessionlist;

/* local globals */
int sec_to_tick, time0=-1, tick_size=75;
int ticker_interrupted;

/*********************/
/* the #tick command */
/*********************/
void tick_command(ses)
     struct session *ses;
{
  if(ses) {
    if(ses->tickstatus) {
      char buf[100];
      sprintf(buf, "#THERE'S ABOUT %d SECONDS TO THE TICK.", timetilltick());
      tintin_puts(buf, ses);
    }
    else
      tintin_puts("#MY TICKER IS OFF! DUNNO SECONDS TO TICK", ses);
  }
  else
    tintin_puts("#NO SESSION ACTIVE => NO TICKER!", ses);
}

/************************/
/* the #tickoff command */
/************************/
void tickoff_command(ses)
     struct session *ses;
{
  if(ses) {
    ses->tickstatus=FALSE;
    tintin_puts("#TICKER IS NOW OFF.", ses);
  }
  else
   tintin_puts("#NO SESSION ACTIVE => NO TICKER!", ses);
}

/***********************/
/* the #tickon command */
/***********************/
void tickon_command(ses)
     struct session *ses;
{
  if(ses) {
    ses->tickstatus=TRUE;
    if (time0 < 0)
      time0 = time(NULL);
    tintin_puts("#TICKER IS NOW ON.", ses);
  }
  else
    tintin_puts("#NO SESSION ACTIVE => NO TICKER!", ses);
}

/************************/
/* the #tickset command */
/************************/
void tickset_command(ses)
     struct session *ses;
{
  if(ses) 
    time0=time(NULL); /* we don't prompt! too many ticksets... */
  else
    tintin_puts("#NO SESSION ACTIVE => NO TICKER!", ses);
}

/*************************/
/* the #ticksize command */
/*************************/
void ticksize_command(arg, ses)
     char *arg;
     struct session *ses;
{
  if(*arg!='\0') {
    if(isdigit(*arg)) {
      tick_size=atoi(arg);
      time0=time(NULL);
      tintin_puts("#OK NEW TICKSIZE SET", ses);        
    }
    else
      tintin_puts("#SPECIFY A NUMBER!!!!TRYING TO CRASH ME EH?", ses);
  }
  else
    tintin_puts("#SET THE TICK-SIZE TO WHAT?", ses);
}     

/* obsolete */

/* tick_func() is obsolete and deleted; see rltick.c */