From 6ce818072646bb39787b26f73eaf9f32f92ad032 Mon Sep 17 00:00:00 2001 From: lukem Date: Mon, 13 Oct 1997 02:18:06 +0000 Subject: WARNSify, KNFify (inc. removing extremely verbose & useless comments), ... --- phantasia/io.c | 541 +++++++++++++++++++-------------------------------------- 1 file changed, 175 insertions(+), 366 deletions(-) (limited to 'phantasia/io.c') diff --git a/phantasia/io.c b/phantasia/io.c index 047c0542..40fd952f 100644 --- a/phantasia/io.c +++ b/phantasia/io.c @@ -1,4 +1,4 @@ -/* $NetBSD: io.c,v 1.2 1995/03/24 03:58:50 cgd Exp $ */ +/* $NetBSD: io.c,v 1.3 1997/10/13 02:18:25 lukem Exp $ */ /* * io.c - input/output routines for Phantasia @@ -6,433 +6,242 @@ #include "include.h" -/************************************************************************ -/ -/ FUNCTION NAME: getstring() -/ -/ FUNCTION: read a string from operator -/ -/ AUTHOR: E. A. Estes, 12/4/85 -/ -/ ARGUMENTS: -/ char *cp - pointer to buffer area to fill -/ int mx - maximum number of characters to put in buffer -/ -/ RETURN VALUE: none -/ -/ MODULES CALLED: wmove(), _filbuf(), clearok(), waddstr(), wrefresh(), -/ wclrtoeol() -/ -/ GLOBAL INPUTS: Echo, _iob[], Wizard, *stdscr -/ -/ GLOBAL OUTPUTS: _iob[] -/ -/ DESCRIPTION: -/ Read a string from the keyboard. -/ This routine is specially designed to: -/ -/ - strip non-printing characters (unless Wizard) -/ - echo, if desired -/ - redraw the screen if CH_REDRAW is entered -/ - read in only 'mx - 1' characters or less characters -/ - nul-terminate string, and throw away newline -/ -/ 'mx' is assumed to be at least 2. -/ -/************************************************************************/ - +void getstring(cp, mx) -register char *cp; -register int mx; + char *cp; + int mx; { -register char *inptr; /* pointer into string for next string */ -int x, y; /* original x, y coordinates on screen */ -int ch; /* input */ + char *inptr; /* pointer into string for next string */ + int x, y; /* original x, y coordinates on screen */ + int ch; /* input */ - getyx(stdscr, y, x); /* get coordinates on screen */ - inptr = cp; - *inptr = '\0'; /* clear string to start */ - --mx; /* reserve room in string for nul terminator */ + getyx(stdscr, y, x); /* get coordinates on screen */ + inptr = cp; + *inptr = '\0'; /* clear string to start */ + --mx; /* reserve room in string for nul terminator */ - do - /* get characters and process */ + do + /* get characters and process */ { - if (Echo) - mvaddstr(y, x, cp); /* print string on screen */ - clrtoeol(); /* clear any data after string */ - refresh(); /* update screen */ - - ch = getchar(); /* get character */ - - switch (ch) - { - case CH_ERASE: /* back up one character */ - if (inptr > cp) - --inptr; - break; - - case CH_KILL: /* back up to original location */ - inptr = cp; - break; - - case CH_NEWLINE: /* terminate string */ - break; - - case CH_REDRAW: /* redraw screen */ - clearok(stdscr, TRUE); - continue; - - default: /* put data in string */ - if (ch >= ' ' || Wizard) - /* printing char; put in string */ - *inptr++ = ch; - } - - *inptr = '\0'; /* terminate string */ + if (Echo) + mvaddstr(y, x, cp); /* print string on screen */ + clrtoeol(); /* clear any data after string */ + refresh(); /* update screen */ + + ch = getchar(); /* get character */ + + switch (ch) { + case CH_ERASE: /* back up one character */ + if (inptr > cp) + --inptr; + break; + + case CH_KILL: /* back up to original location */ + inptr = cp; + break; + + case CH_NEWLINE: /* terminate string */ + break; + + case CH_REDRAW:/* redraw screen */ + clearok(stdscr, TRUE); + continue; + + default: /* put data in string */ + if (ch >= ' ' || Wizard) + /* printing char; put in string */ + *inptr++ = ch; + } + + *inptr = '\0'; /* terminate string */ } - while (ch != CH_NEWLINE && inptr < cp + mx); + while (ch != CH_NEWLINE && inptr < cp + mx); } -/* */ -/************************************************************************ -/ -/ FUNCTION NAME: more() -/ -/ FUNCTION: pause and prompt player -/ -/ AUTHOR: E. A. Estes, 12/4/85 -/ -/ ARGUMENTS: -/ int where - line on screen on which to pause -/ -/ RETURN VALUE: none -/ -/ MODULES CALLED: wmove(), waddstr(), getanswer() -/ -/ GLOBAL INPUTS: *stdscr -/ -/ GLOBAL OUTPUTS: none -/ -/ DESCRIPTION: -/ Print a message, and wait for a space character. -/ -/************************************************************************/ +void more(where) -int where; + int where; { - mvaddstr(where, 0, "-- more --"); - getanswer(" ", FALSE); + mvaddstr(where, 0, "-- more --"); + getanswer(" ", FALSE); } -/* */ -/************************************************************************ -/ -/ FUNCTION NAME: infloat() -/ -/ FUNCTION: input a floating point number from operator -/ -/ AUTHOR: E. A. Estes, 12/4/85 -/ -/ ARGUMENTS: none -/ -/ RETURN VALUE: floating point number from operator -/ -/ MODULES CALLED: sscanf(), getstring() -/ -/ GLOBAL INPUTS: Databuf[] -/ -/ GLOBAL OUTPUTS: none -/ -/ DESCRIPTION: -/ Read a string from player, and scan for a floating point -/ number. -/ If no valid number is found, return 0.0. -/ -/************************************************************************/ double infloat() { -double result; /* return value */ + double result; /* return value */ - getstring(Databuf, SZ_DATABUF); - if (sscanf(Databuf, "%lf", &result) < 1) - /* no valid number entered */ - result = 0.0; + getstring(Databuf, SZ_DATABUF); + if (sscanf(Databuf, "%lf", &result) < 1) + /* no valid number entered */ + result = 0.0; - return(result); + return (result); } -/* */ -/************************************************************************ -/ -/ FUNCTION NAME: inputoption() -/ -/ FUNCTION: input an option value from player -/ -/ AUTHOR: E. A. Estes, 12/4/85 -/ -/ ARGUMENTS: none -/ -/ RETURN VALUE: none -/ -/ MODULES CALLED: floor(), drandom(), getanswer() -/ -/ GLOBAL INPUTS: Player -/ -/ GLOBAL OUTPUTS: Player -/ -/ DESCRIPTION: -/ Age increases with every move. -/ Refresh screen, and get a single character option from player. -/ Return a random value if player's ring has gone bad. -/ -/************************************************************************/ +int inputoption() { - ++Player.p_age; /* increase age */ + ++Player.p_age; /* increase age */ - if (Player.p_ring.ring_type != R_SPOILED) - /* ring ok */ - return(getanswer("T ", TRUE)); - else - /* bad ring */ + if (Player.p_ring.ring_type != R_SPOILED) + /* ring ok */ + return (getanswer("T ", TRUE)); + else + /* bad ring */ { - getanswer(" ", TRUE); - return((int) ROLL(0.0, 5.0) + '0'); + getanswer(" ", TRUE); + return ((int) ROLL(0.0, 5.0) + '0'); } } -/* */ -/************************************************************************ -/ -/ FUNCTION NAME: interrupt() -/ -/ FUNCTION: handle interrupt from operator -/ -/ AUTHOR: E. A. Estes, 12/4/85 -/ -/ ARGUMENTS: none -/ -/ RETURN VALUE: none -/ -/ MODULES CALLED: fork(), exit(), wait(), death(), alarm(), execl(), wmove(), -/ getgid(), signal(), getenv(), wclear(), setuid(), getuid(), setgid(), -/ crmode(), clearok(), waddstr(), cleanup(), wrefresh(), leavegame(), -/ getanswer() -/ -/ GLOBAL INPUTS: Player, *stdscr -/ -/ GLOBAL OUTPUTS: none -/ -/ DESCRIPTION: -/ Allow player to quit upon hitting the interrupt key. -/ If the player wants to quit while in battle, he/she automatically -/ dies. -/ -/************************************************************************/ +void interrupt() { -char line[81]; /* a place to store data already on screen */ -register int loop; /* counter */ -int x, y; /* coordinates on screen */ -int ch; /* input */ -unsigned savealarm; /* to save alarm value */ + char line[81]; /* a place to store data already on screen */ + int loop; /* counter */ + int x, y; /* coordinates on screen */ + int ch; /* input */ + unsigned savealarm; /* to save alarm value */ #ifdef SYS3 - signal(SIGINT, SIG_IGN); + signal(SIGINT, SIG_IGN); #endif #ifdef SYS5 - signal(SIGINT, SIG_IGN); + signal(SIGINT, SIG_IGN); #endif - savealarm = alarm(0); /* turn off any alarms */ + savealarm = alarm(0); /* turn off any alarms */ - getyx(stdscr, y, x); /* save cursor location */ + getyx(stdscr, y, x); /* save cursor location */ - for (loop = 0; loop < 80; ++loop) /* save line on screen */ - { - move(4, loop); - line[loop] = inch(); + for (loop = 0; loop < 80; ++loop) { /* save line on screen */ + move(4, loop); + line[loop] = inch(); } - line[80] = '\0'; /* nul terminate */ + line[80] = '\0'; /* nul terminate */ - if (Player.p_status == S_INBATTLE || Player.p_status == S_MONSTER) - /* in midst of fighting */ - { - mvaddstr(4, 0, "Quitting now will automatically kill your character. Still want to ? "); - ch = getanswer("NY", FALSE); - if (ch == 'Y') - death("Bailing out"); - /*NOTREACHED*/ - } - else + if (Player.p_status == S_INBATTLE || Player.p_status == S_MONSTER) + /* in midst of fighting */ { - mvaddstr(4, 0, "Do you really want to quit ? "); - ch = getanswer("NY", FALSE); - if (ch == 'Y') - leavegame(); - /*NOTREACHED*/ + mvaddstr(4, 0, "Quitting now will automatically kill your character. Still want to ? "); + ch = getanswer("NY", FALSE); + if (ch == 'Y') + death("Bailing out"); + /* NOTREACHED */ + } else { + mvaddstr(4, 0, "Do you really want to quit ? "); + ch = getanswer("NY", FALSE); + if (ch == 'Y') + leavegame(); + /* NOTREACHED */ } - mvaddstr(4, 0, line); /* restore data on screen */ - move(y, x); /* restore cursor */ - refresh(); + mvaddstr(4, 0, line); /* restore data on screen */ + move(y, x); /* restore cursor */ + refresh(); #ifdef SYS3 - signal(SIGINT, interrupt); + signal(SIGINT, interrupt); #endif #ifdef SYS5 - signal(SIGINT, interrupt); + signal(SIGINT, interrupt); #endif - alarm(savealarm); /* restore alarm */ + alarm(savealarm); /* restore alarm */ } -/* */ -/************************************************************************ -/ -/ FUNCTION NAME: getanswer() -/ -/ FUNCTION: get an answer from operator -/ -/ AUTHOR: E. A. Estes, 12/4/85 -/ -/ ARGUMENTS: -/ char *choices - string of (upper case) valid choices -/ bool def - set if default answer -/ -/ RETURN VALUE: none -/ -/ MODULES CALLED: alarm(), wmove(), waddch(), signal(), setjmp(), strchr(), -/ _filbuf(), clearok(), toupper(), wrefresh(), mvprintw(), wclrtoeol() -/ -/ GLOBAL INPUTS: catchalarm(), Echo, _iob[], _ctype[], *stdscr, Timeout, -/ Timeoenv[] -/ -/ GLOBAL OUTPUTS: _iob[] -/ -/ DESCRIPTION: -/ Get a single character answer from operator. -/ Timeout waiting for response. If we timeout, or the -/ answer in not in the list of valid choices, print choices, -/ and wait again, otherwise return the first character in ths -/ list of choices. -/ Give up after 3 tries. -/ -/************************************************************************/ +int getanswer(choices, def) -char *choices; -bool def; + char *choices; + bool def; { -int ch; /* input */ -int loop; /* counter */ -int oldx, oldy; /* original coordinates on screen */ + int ch; /* input */ + int loop; /* counter */ + int oldx, oldy; /* original coordinates on screen */ - getyx(stdscr, oldy, oldx); - alarm(0); /* make sure alarm is off */ + getyx(stdscr, oldy, oldx); + alarm(0); /* make sure alarm is off */ - for (loop = 3; loop; --loop) - /* try for 3 times */ +#if __GNUC__ + (void)&loop; /* XXX quiet gcc */ +#endif + for (loop = 3; loop; --loop) + /* try for 3 times */ { - if (setjmp(Timeoenv) != 0) - /* timed out waiting for response */ - { - if (def || loop <= 1) - /* return default answer */ - break; - else - /* prompt, and try again */ - goto YELL; - } - else - /* wait for response */ - { - clrtoeol(); - refresh(); + if (setjmp(Timeoenv) != 0) + /* timed out waiting for response */ + { + if (def || loop <= 1) + /* return default answer */ + break; + else + /* prompt, and try again */ + goto YELL; + } else + /* wait for response */ + { + clrtoeol(); + refresh(); #ifdef BSD41 - sigset(SIGALRM, catchalarm); + sigset(SIGALRM, catchalarm); #else - signal(SIGALRM, catchalarm); + signal(SIGALRM, catchalarm); #endif - /* set timeout */ - if (Timeout) - alarm(7); /* short */ - else - alarm(600); /* long */ - - ch = getchar(); - - alarm(0); /* turn off timeout */ - - if (ch < 0) - /* caught some signal */ - { - ++loop; - continue; - } - else if (ch == CH_REDRAW) - /* redraw screen */ - { - clearok(stdscr, TRUE); /* force clear screen */ - ++loop; /* don't count this input */ - continue; - } - else if (Echo) - { - addch(ch); /* echo character */ - refresh(); - } - - if (islower(ch)) - /* convert to upper case */ - ch = toupper(ch); - - if (def || strchr(choices, ch) != NULL) - /* valid choice */ - return(ch); - else if (!def && loop > 1) - /* bad choice; prompt, and try again */ - { -YELL: mvprintw(oldy + 1, 0, "Please choose one of : [%s]\n", choices); - move(oldy, oldx); - clrtoeol(); - continue; + /* set timeout */ + if (Timeout) + alarm(7); /* short */ + else + alarm(600); /* long */ + + ch = getchar(); + + alarm(0); /* turn off timeout */ + + if (ch < 0) + /* caught some signal */ + { + ++loop; + continue; + } else + if (ch == CH_REDRAW) + /* redraw screen */ + { + clearok(stdscr, TRUE); /* force clear screen */ + ++loop; /* don't count this input */ + continue; + } else + if (Echo) { + addch(ch); /* echo character */ + refresh(); + } + if (islower(ch)) + /* convert to upper case */ + ch = toupper(ch); + + if (def || strchr(choices, ch) != NULL) + /* valid choice */ + return (ch); + else + if (!def && loop > 1) + /* bad choice; prompt, and try again */ + { + YELL: mvprintw(oldy + 1, 0, "Please choose one of : [%s]\n", choices); + move(oldy, oldx); + clrtoeol(); + continue; + } else + /* return default answer */ + break; } - else - /* return default answer */ - break; - } } - return(*choices); + return (*choices); } -/* */ -/************************************************************************ -/ -/ FUNCTION NAME: catchalarm() -/ -/ FUNCTION: catch timer when waiting for input -/ -/ AUTHOR: E. A. Estes, 12/4/85 -/ -/ ARGUMENTS: none -/ -/ RETURN VALUE: none -/ -/ MODULES CALLED: longjmp() -/ -/ GLOBAL INPUTS: Timeoenv[] -/ -/ GLOBAL OUTPUTS: none -/ -/ DESCRIPTION: -/ Come here when the alarm expires while waiting for input. -/ Simply longjmp() into getanswer(). -/ -/************************************************************************/ void -catchalarm() +catchalarm(dummy) + int dummy; { - longjmp(Timeoenv, 1); + longjmp(Timeoenv, 1); } -- cgit v1.2.3-56-ge451