/* 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 */