X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/e9152f6d21d5a8b1e02922e0fc95b71fc21cbd92..68d82673282bfd2baa3f9533c92be6121d346cd9:/hunt/huntd/answer.c diff --git a/hunt/huntd/answer.c b/hunt/huntd/answer.c index 0de92027..40b099ef 100644 --- a/hunt/huntd/answer.c +++ b/hunt/huntd/answer.c @@ -1,33 +1,68 @@ +/* $NetBSD: answer.c,v 1.6 2003/06/11 12:00:22 wiz Exp $ */ /* - * Hunt - * Copyright (c) 1985 Conrad C. Huang, Gregory S. Couch, Kenneth C.R.C. Arnold - * San Francisco, California + * Copyright (c) 1983-2003, Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * + Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + Neither the name of the University of California, San Francisco nor + * the names of its contributors may be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -# include "hunt.h" +#include +#ifndef lint +__RCSID("$NetBSD: answer.c,v 1.6 2003/06/11 12:00:22 wiz Exp $"); +#endif /* not lint */ + # include # include # include +# include +# include +# include "hunt.h" # define SCOREDECAY 15 static char Ttyname[NAMELEN]; +int answer() { - register PLAYER *pp; - register int newsock; + PLAYER *pp; + int newsock; static u_long mode; static char name[NAMELEN]; static char team; static int enter_status; static int socklen; static u_long machine; - static u_long uid; + static u_int32_t uid; static SOCKET sockstruct; - register char *cp1, *cp2; + char *cp1, *cp2; int flags; - long version; + u_int32_t version; + int i; # ifdef INTERNET socklen = sizeof sockstruct; @@ -54,7 +89,7 @@ answer() if (machine == 0) machine = gethostid(); # endif - version = htonl((unsigned long) HUNT_VERSION); + version = htonl((u_int32_t) HUNT_VERSION); (void) write(newsock, (char *) &version, LONGLEN); (void) read(newsock, (char *) &uid, LONGLEN); uid = ntohl((unsigned long) uid); @@ -114,9 +149,10 @@ answer() # endif # ifdef MONITOR if (mode == C_MONITOR) - if (End_monitor < &Monitor[MAXMON]) + if (End_monitor < &Monitor[MAXMON]) { pp = End_monitor++; - else { + i = pp - Monitor + MAXPL + 3; + } else { socklen = 0; (void) write(newsock, (char *) &socklen, sizeof socklen); @@ -125,9 +161,10 @@ answer() } else # endif - if (End_player < &Player[MAXPL]) + if (End_player < &Player[MAXPL]) { pp = End_player++; - else { + i = pp - Player + 3; + } else { socklen = 0; (void) write(newsock, (char *) &socklen, sizeof socklen); @@ -143,10 +180,8 @@ answer() pp->p_output = fdopen(newsock, "w"); pp->p_death[0] = '\0'; pp->p_fd = newsock; - pp->p_mask = (1 << pp->p_fd); - Fds_mask |= pp->p_mask; - if (pp->p_fd >= Num_fds) - Num_fds = pp->p_fd + 1; + fdset[i].fd = newsock; + fdset[i].events = POLLIN; pp->p_y = 0; pp->p_x = 0; @@ -161,11 +196,12 @@ answer() } # ifdef MONITOR +void stmonitor(pp) -register PLAYER *pp; + PLAYER *pp; { - register int line; - register PLAYER *npp; + int line; + PLAYER *npp; memcpy(pp->p_maze, Maze, sizeof Maze); @@ -189,12 +225,13 @@ register PLAYER *pp; } # endif +void stplayer(newpp, enter_status) -register PLAYER *newpp; -int enter_status; + PLAYER *newpp; + int enter_status; { - register int x, y; - register PLAYER *pp; + int x, y; + PLAYER *pp; Nplayer++; @@ -315,6 +352,7 @@ int enter_status; * rand_dir: * Return a random direction */ +int rand_dir() { switch (rand_num(4)) { @@ -328,6 +366,7 @@ rand_dir() return ABOVE; } /* NOTREACHED */ + return(-1); } /* @@ -336,12 +375,12 @@ rand_dir() */ IDENT * get_ident(machine, uid, name, team) -u_long machine; -u_long uid; -char *name; -char team; + u_long machine; + u_long uid; + char *name; + char team; { - register IDENT *ip; + IDENT *ip; static IDENT punt; for (ip = Scores; ip != NULL; ip = ip->i_next)