/* Autoconf patching by David Hedbor, neotron@lysator.liu.se */
/*********************************************************************/
/* file: new.c - new misc commands */
/* TINTIN III */
/* (T)he K(I)cki(N) (T)ickin D(I)kumud Clie(N)t */
/* coded by peter unold 1992 */
/*********************************************************************/
/* file @@@added -- perry */
#ifdef HAVE_STRING_H
#include <string.h>
#else
#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
#endif
#include <ctype.h>
#include "tintin.h"
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
/* externs */
extern int case_insensitive;
/*
* Sleeps tintin. You will be frozen during the sleep.
*/
void delay_command(arg)
char *arg;
{
int delay;
if ((delay = atoi(arg)) <= 0)
delay = 1;
sleep(delay);
}
/*
* Toggles whether or not case matters in checking for actions.
*/
void case_command(ses)
struct session *ses;
{
case_insensitive = !case_insensitive;
if (case_insensitive)
tintin_puts2("#Ok. Actions no longer check for case matching.", NULL);
else
tintin_puts2("#Ok. Actions are checked for case.", NULL);
}
int mygets(buf, size, fp)
char *buf;
int size;
FILE *fp;
{
char *ptr = buf;
char c;
int cmt, brace;
cmt = FALSE;
brace = 0;
do {
c = getc(fp);
} while (isspace(c));
if (c == EOF)
return 0;
while (1) {
switch (c) {
case '{':
*ptr++ = c;
brace++;
break;
case '}':
*ptr++ = c;
brace--;
break;
case '/':
if ((c = getc(fp)) == '*') {
while (1) {
if ((c = getc(fp)) == '*') {
if ((c = getc(fp)) == '/')
break;
}
if (c == EOF) {
*ptr++ = '\0';
return 1;
}
}
}
else if (c == '/') {
while ((c = getc(fp)) != '\n') {
if (c == EOF) {
*ptr++ = '\0';
return 1;
}
}
}
else {
*ptr++ = '/';
ungetc(c, fp);
}
break;
case '\\':
switch ((c = getc(fp))) {
case '[':
*ptr++ = '\033';
break;
default:
*ptr++ = '\\';
ungetc(c, fp);
break;
}
break;
case '\n':
case '\r':
if (brace <= 0) {
*ptr++ = '\0';
return 1;
}
do {
c = getc(fp);
} while (isspace(c));
ungetc(c, fp);
break;
case '\0':
*ptr++ = c;
return 1;
case EOF:
*ptr++ = '\0';
return 1;
default:
*ptr++ = c;
break;
}
if (ptr - buf >= size)
return 1;
c = getc(fp);
}
return 0;
}