diff options
author | christos <christos@NetBSD.org> | 1997-10-19 16:56:41 +0000 |
---|---|---|
committer | christos <christos@NetBSD.org> | 1997-10-19 16:56:41 +0000 |
commit | 84e7d0704483ce39bbdeacd5e676168db6fa664f (patch) | |
tree | f9ffeffa1a4342e749494bc3f5618552435839af /hack/hack.tty.c | |
parent | f73f1009084e75624e3bc00fef9cf4749de80dcc (diff) | |
download | bsdgames-darwin-84e7d0704483ce39bbdeacd5e676168db6fa664f.tar.gz bsdgames-darwin-84e7d0704483ce39bbdeacd5e676168db6fa664f.tar.zst bsdgames-darwin-84e7d0704483ce39bbdeacd5e676168db6fa664f.zip |
WARNsify...
Diffstat (limited to 'hack/hack.tty.c')
-rw-r--r-- | hack/hack.tty.c | 234 |
1 files changed, 142 insertions, 92 deletions
diff --git a/hack/hack.tty.c b/hack/hack.tty.c index 727fea0d..5259258e 100644 --- a/hack/hack.tty.c +++ b/hack/hack.tty.c @@ -1,3 +1,5 @@ +/* $NetBSD: hack.tty.c,v 1.6 1997/10/19 16:59:17 christos Exp $ */ + /*- * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. @@ -31,22 +33,25 @@ * SUCH DAMAGE. */ +#include <sys/cdefs.h> #ifndef lint #if 0 -static char sccsid[] = "@(#)hack.tty.c 8.1 (Berkeley) 5/31/93"; +static char sccsid[] = "@(#)hack.tty.c 8.1 (Berkeley) 5/31/93"; #else -static char rcsid[] = "$NetBSD: hack.tty.c,v 1.5 1995/04/29 01:08:54 mycroft Exp $"; +__RCSID("$NetBSD: hack.tty.c,v 1.6 1997/10/19 16:59:17 christos Exp $"); #endif -#endif /* not lint */ +#endif /* not lint */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* hack.tty.c - version 1.0.3 */ -/* With thanks to the people who sent code for SYSV - hpscdi!jon, - arnold@ucsf-cgl, wcs@bo95b, cbcephus!pds and others. */ +/* + * With thanks to the people who sent code for SYSV - hpscdi!jon, + * arnold@ucsf-cgl, wcs@bo95b, cbcephus!pds and others. + */ -#include "hack.h" -#include <stdio.h> -#include <termios.h> +#include <termios.h> +#include "hack.h" +#include "extern.h" /* * Some systems may have getchar() return EOF for various reasons, and @@ -54,20 +59,22 @@ static char rcsid[] = "$NetBSD: hack.tty.c,v 1.5 1995/04/29 01:08:54 mycroft Exp */ #ifndef BSD #define NR_OF_EOFS 20 -#endif BSD +#endif /* BSD */ -extern speed_t ospeed; -static char erase_char, kill_char; -static boolean settty_needed = FALSE; -struct termios inittyb, curttyb; +static char erase_char, kill_char; +static boolean settty_needed = FALSE; +struct termios inittyb, curttyb; /* * Get initial state of terminal, set ospeed (for termcap routines) * and switch off tab expansion if necessary. * Called by startup() in termcap.c and after returning from ! or ^Z */ -gettty(){ - if(tcgetattr(0, &inittyb) < 0) +void +gettty() +{ + extern speed_t ospeed; + if (tcgetattr(0, &inittyb) < 0) perror("Hack (gettty)"); curttyb = inittyb; ospeed = cfgetospeed(&inittyb); @@ -76,7 +83,7 @@ gettty(){ getioctls(); /* do not expand tabs - they might be needed inside a cm sequence */ - if(curttyb.c_oflag & OXTABS) { + if (curttyb.c_oflag & OXTABS) { curttyb.c_oflag &= ~OXTABS; setctty(); } @@ -84,41 +91,49 @@ gettty(){ } /* reset terminal to original state */ -settty(s) char *s; { +void +settty(s) + char *s; +{ clear_screen(); end_screen(); - if(s) printf(s); + if (s) + printf(s); (void) fflush(stdout); - if(tcsetattr(0, TCSADRAIN, &inittyb) < 0) + if (tcsetattr(0, TCSADRAIN, &inittyb) < 0) perror("Hack (settty)"); flags.echo = (inittyb.c_lflag & ECHO) ? ON : OFF; flags.cbreak = (inittyb.c_lflag & ICANON) ? OFF : ON; setioctls(); } -setctty(){ - if(tcsetattr(0, TCSADRAIN, &curttyb) < 0) +void +setctty() +{ + if (tcsetattr(0, TCSADRAIN, &curttyb) < 0) perror("Hack (setctty)"); } -setftty(){ -register int change = 0; +void +setftty() +{ + int change = 0; flags.cbreak = ON; flags.echo = OFF; /* Should use (ECHO|CRMOD) here instead of ECHO */ - if(curttyb.c_lflag & ECHO){ + if (curttyb.c_lflag & ECHO) { curttyb.c_lflag &= ~ECHO; change++; } - if(curttyb.c_lflag & ICANON){ + if (curttyb.c_lflag & ICANON) { curttyb.c_lflag &= ~ICANON; /* be satisfied with one character; no timeout */ curttyb.c_cc[VMIN] = 1; curttyb.c_cc[VTIME] = 0; change++; } - if(change){ + if (change) { setctty(); } start_screen(); @@ -126,11 +141,28 @@ register int change = 0; /* fatal error */ -/*VARARGS1*/ -error(s,x,y) char *s; { - if(settty_needed) +/* VARARGS1 */ +void +#ifdef __STDC__ +error(const char *fmt, ...) +#else +error(va_alist) + va_dcl +#endif +{ + va_list ap; +#ifndef __STDC__ + const char *fmt; + + va_start(ap); + fmt = va_arg(ap, const char *); +#else + va_start(ap, fmt); +#endif + if (settty_needed) settty((char *) 0); - printf(s,x,y); + vprintf(fmt, ap); + va_end(ap); putchar('\n'); exit(1); } @@ -141,43 +173,47 @@ error(s,x,y) char *s; { * Reading can be interrupted by an escape ('\033') - now the * resulting string is "\033". */ +void getlin(bufp) -register char *bufp; + char *bufp; { - register char *obufp = bufp; - register int c; + char *obufp = bufp; + int c; - flags.toplin = 2; /* nonempty, no --More-- required */ - for(;;) { + flags.toplin = 2; /* nonempty, no --More-- required */ + for (;;) { (void) fflush(stdout); - if((c = getchar()) == EOF) { + if ((c = getchar()) == EOF) { *bufp = 0; return; } - if(c == '\033') { + if (c == '\033') { *obufp = c; obufp[1] = 0; return; } - if(c == erase_char || c == '\b') { - if(bufp != obufp) { + if (c == erase_char || c == '\b') { + if (bufp != obufp) { bufp--; - putstr("\b \b"); /* putsym converts \b */ - } else bell(); - } else if(c == '\n') { + putstr("\b \b"); /* putsym converts \b */ + } else + bell(); + } else if (c == '\n') { *bufp = 0; return; - } else if(' ' <= c && c < '\177') { - /* avoid isprint() - some people don't have it - ' ' is not always a printing char */ + } else if (' ' <= c && c < '\177') { + /* + * avoid isprint() - some people don't have it ' ' is + * not always a printing char + */ *bufp = c; bufp[1] = 0; putstr(bufp); - if(bufp-obufp < BUFSZ-1 && bufp-obufp < COLNO) + if (bufp - obufp < BUFSZ - 1 && bufp - obufp < COLNO) bufp++; - } else if(c == kill_char || c == '\177') { /* Robert Viduya */ - /* this test last - @ might be the kill_char */ - while(bufp != obufp) { + } else if (c == kill_char || c == '\177') { /* Robert Viduya */ + /* this test last - @ might be the kill_char */ + while (bufp != obufp) { bufp--; putstr("\b \b"); } @@ -186,104 +222,118 @@ register char *bufp; } } -getret() { +void +getret() +{ cgetret(""); } +void cgetret(s) -register char *s; + char *s; { putsym('\n'); - if(flags.standout) + if (flags.standout) standoutbeg(); putstr("Hit "); putstr(flags.cbreak ? "space" : "return"); putstr(" to continue: "); - if(flags.standout) + if (flags.standout) standoutend(); xwaitforspace(s); } -char morc; /* tell the outside world what char he used */ +char morc; /* tell the outside world what char he used */ +void xwaitforspace(s) -register char *s; /* chars allowed besides space or return */ + char *s; /* chars allowed besides space or return */ { -register int c; + int c; morc = 0; - while((c = readchar()) != '\n') { - if(flags.cbreak) { - if(c == ' ') break; - if(s && index(s,c)) { - morc = c; - break; + while ((c = readchar()) != '\n') { + if (flags.cbreak) { + if (c == ' ') + break; + if (s && strchr(s, c)) { + morc = c; + break; + } + bell(); } - bell(); - } } } -char * +char * parse() { - static char inputline[COLNO]; - register foo; + static char inputline[COLNO]; + int foo; flags.move = 1; - if(!Invisible) curs_on_u(); else home(); - while((foo = readchar()) >= '0' && foo <= '9') - multi = 10*multi+foo-'0'; - if(multi) { + if (!Invisible) + curs_on_u(); + else + home(); + while ((foo = readchar()) >= '0' && foo <= '9') + multi = 10 * multi + foo - '0'; + if (multi) { multi--; save_cm = inputline; } inputline[0] = foo; inputline[1] = 0; - if(foo == 'f' || foo == 'F'){ + if (foo == 'f' || foo == 'F') { inputline[1] = getchar(); #ifdef QUEST - if(inputline[1] == foo) inputline[2] = getchar(); else -#endif QUEST - inputline[2] = 0; + if (inputline[1] == foo) + inputline[2] = getchar(); + else +#endif /* QUEST */ + inputline[2] = 0; } - if(foo == 'm' || foo == 'M'){ + if (foo == 'm' || foo == 'M') { inputline[1] = getchar(); inputline[2] = 0; } clrlin(); - return(inputline); + return (inputline); } char -readchar() { - register int sym; +readchar() +{ + int sym; (void) fflush(stdout); - if((sym = getchar()) == EOF) + if ((sym = getchar()) == EOF) #ifdef NR_OF_EOFS - { /* - * Some SYSV systems seem to return EOFs for various reasons - * (?like when one hits break or for interrupted systemcalls?), - * and we must see several before we quit. - */ - register int cnt = NR_OF_EOFS; + { /* + * Some SYSV systems seem to return EOFs for various reasons + * (?like when one hits break or for interrupted systemcalls?), + * and we must see several before we quit. + */ + int cnt = NR_OF_EOFS; while (cnt--) { - clearerr(stdin); /* omit if clearerr is undefined */ - if((sym = getchar()) != EOF) goto noteof; + clearerr(stdin); /* omit if clearerr is + * undefined */ + if ((sym = getchar()) != EOF) + goto noteof; } end_of_input(); - noteof: ; +noteof: ; } #else end_of_input(); -#endif NR_OF_EOFS - if(flags.toplin == 1) +#endif /* NR_OF_EOFS */ + if (flags.toplin == 1) flags.toplin = 2; - return((char) sym); + return ((char) sym); } +void end_of_input() { settty("End of input?\n"); |