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