]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - hunt/huntd/terminal.c
Fix merge conflicts
[bsdgames-darwin.git] / hunt / huntd / terminal.c
index 13d34850d9135035bd845d6e80d31d7b31159b59..29a58ebb494b34e3a876397309e4d77efa8ae4c3 100644 (file)
@@ -1,20 +1,51 @@
+/*     $NetBSD: terminal.c,v 1.8 2021/05/02 12:50:45 rillig 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"
-# define       TERM_WIDTH      80      /* Assume terminals are 80-char wide */
+#include <sys/cdefs.h>
+#ifndef lint
+__RCSID("$NetBSD: terminal.c,v 1.8 2021/05/02 12:50:45 rillig Exp $");
+#endif /* not lint */
+
+#include <stdarg.h>
+#include "hunt.h"
+#define TERM_WIDTH     80      /* Assume terminals are 80-char wide */
 
 /*
  * cgoto:
  *     Move the cursor to the given position on the given player's
  *     terminal.
  */
 
 /*
  * cgoto:
  *     Move the cursor to the given position on the given player's
  *     terminal.
  */
-cgoto(pp, y, x)
-register PLAYER        *pp;
-register int   y, x;
+void
+cgoto(PLAYER *pp, int y, int x)
 {
        if (x == pp->p_curx && y == pp->p_cury)
                return;
 {
        if (x == pp->p_curx && y == pp->p_cury)
                return;
@@ -27,9 +58,8 @@ register int  y, x;
  * outch:
  *     Put out a single character.
  */
  * outch:
  *     Put out a single character.
  */
-outch(pp, ch)
-register PLAYER        *pp;
-char           ch;
+void
+outch(PLAYER *pp, int ch)
 {
        if (++pp->p_curx >= TERM_WIDTH) {
                pp->p_curx = 0;
 {
        if (++pp->p_curx >= TERM_WIDTH) {
                pp->p_curx = 0;
@@ -42,10 +72,8 @@ char         ch;
  * outstr:
  *     Put out a string of the given length.
  */
  * outstr:
  *     Put out a string of the given length.
  */
-outstr(pp, str, len)
-register PLAYER        *pp;
-register char  *str;
-register int   len;
+void
+outstr(PLAYER *pp, const char *str, int len)
 {
        pp->p_curx += len;
        pp->p_cury += (pp->p_curx / TERM_WIDTH);
 {
        pp->p_curx += len;
        pp->p_cury += (pp->p_curx / TERM_WIDTH);
@@ -58,8 +86,8 @@ register int  len;
  * clrscr:
  *     Clear the screen, and reset the current position on the screen.
  */
  * clrscr:
  *     Clear the screen, and reset the current position on the screen.
  */
-clrscr(pp)
-register PLAYER        *pp;
+void
+clrscr(PLAYER *pp)
 {
        sendcom(pp, CLEAR);
        pp->p_cury = 0;
 {
        sendcom(pp, CLEAR);
        pp->p_cury = 0;
@@ -70,41 +98,49 @@ register PLAYER     *pp;
  * ce:
  *     Clear to the end of the line
  */
  * ce:
  *     Clear to the end of the line
  */
-ce(pp)
-PLAYER *pp;
+void
+ce(PLAYER *pp)
 {
        sendcom(pp, CLRTOEOL);
 }
 
 {
        sendcom(pp, CLRTOEOL);
 }
 
+#if 0          /* XXX lukem */
 /*
  * ref;
  *     Refresh the screen
  */
 /*
  * ref;
  *     Refresh the screen
  */
-ref(pp)
-register PLAYER        *pp;
+void
+ref(PLAYER *pp)
 {
        sendcom(pp, REFRESH);
 }
 {
        sendcom(pp, REFRESH);
 }
+#endif
 
 /*
  * sendcom:
  *     Send a command to the given user
  */
 
 /*
  * sendcom:
  *     Send a command to the given user
  */
-/* VARARGS2 */
-sendcom(pp, command, arg1, arg2)
-register PLAYER                *pp;
-register int   command;
-int                    arg1, arg2;
+void
+sendcom(PLAYER *pp, int command, ...)
 {
 {
+       va_list ap;
+       int arg1, arg2;
+
+       va_start(ap, command);
        (void) putc(command, pp->p_output);
        switch (command & 0377) {
        (void) putc(command, pp->p_output);
        switch (command & 0377) {
-         case MOVE:
+       case MOVE:
+               arg1 = va_arg(ap, int);
+               arg2 = va_arg(ap, int);
                (void) putc(arg1, pp->p_output);
                (void) putc(arg2, pp->p_output);
                break;
                (void) putc(arg1, pp->p_output);
                (void) putc(arg2, pp->p_output);
                break;
-         case ADDCH:
-         case READY:
+       case ADDCH:
+       case READY:
+               arg1 = va_arg(ap, int);
                (void) putc(arg1, pp->p_output);
                break;
        }
                (void) putc(arg1, pp->p_output);
                break;
        }
+
+       va_end(ap);             /* No return needed for void functions. */
 }
 }