]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - monop/misc.c
Add (unsigned char) cast to ctype functions
[bsdgames-darwin.git] / monop / misc.c
index f031cad07cf81057e801d0665ba057c68178cb4f..1d3a5669d5586bc6d81a515494c7a3bc9fe47317 100644 (file)
@@ -1,6 +1,8 @@
+/*     $NetBSD: misc.c,v 1.13 2004/11/05 21:30:32 dsl Exp $    */
+
 /*
- * Copyright (c) 1980 Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1980, 1993
+ *     The 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
  * 2. 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
  * SUCH DAMAGE.
  */
 
+#include <sys/cdefs.h>
 #ifndef lint
-/*static char sccsid[] = "from: @(#)misc.c     5.5 (Berkeley) 2/28/91";*/
-static char rcsid[] = "$Id: misc.c,v 1.2 1993/08/01 18:53:37 mycroft Exp $";
+#if 0
+static char sccsid[] = "@(#)misc.c     8.1 (Berkeley) 5/31/93";
+#else
+__RCSID("$NetBSD: misc.c,v 1.13 2004/11/05 21:30:32 dsl Exp $");
+#endif
 #endif /* not lint */
 
-# include      "monop.ext"
-# include      <ctype.h>
-# include      <signal.h>
-
-# define       execsh(sh)      execl(sh, shell_name[roll(1, num_names)-1], 0)
-
-static char    *shell_def      = "/bin/csh",
-               *shell_name[]   = {
-                       ".Hi Mom!",
-                       ".Kick Me",
-                       ".I'm really the next process down",
-                       ".Hi Kids!",
-                       ".This space for rent",
-                       ".Singin' in the rain....",
-                       ".I am but a Cog in the Wheel of Life",
-                       ".Look out!!! Behind you!!!!!",
-                       ".Looking for a good time, sailor?",
-                       ".I don't get NO respect...",
-                       ".Augghh!  You peeked!"
-               };
-
-static int     num_names       = sizeof shell_name / sizeof (char *);;
-
-char   *shell_in();
+#include "monop.ext"
+#include <ctype.h>
+#include <signal.h>
 
 /*
  *     This routine executes a truncated set of commands until a
  * "yes or "no" answer is gotten.
  */
+int
 getyn(prompt)
-reg char       *prompt; {
-
-       reg int com;
+       const char *prompt;
+{
+       int com;
 
        for (;;)
-               if ((com=getinp(prompt, yn)) < 2)
+               if ((com=getinp(prompt, yncoms)) < 2)
                        return com;
                else
                        (*func[com-2])();
 }
+
 /*
  *     This routine tells the player if he's out of money.
  */
-notify() {
-
+void
+notify()
+{
        if (cur_p->money < 0)
                printf("That leaves you $%d in debt\n", -cur_p->money);
        else if (cur_p->money == 0)
@@ -90,38 +74,44 @@ notify() {
                told_em = TRUE;
        }
 }
+
 /*
  *     This routine switches to the next player
  */
-next_play() {
-
-       player = ++player % num_play;
+void
+next_play()
+{
+       player = (player + 1) % num_play;
        cur_p = &play[player];
        num_doub = 0;
 }
+
 /*
  *     This routine gets an integer from the keyboard after the
  * given prompt.
  */
+int
 get_int(prompt)
-reg char       *prompt; {
-
-       reg int         num;
-       reg char        *sp;
-       char            buf[257];
+       const char *prompt;
+{
+       int num;
+       char *sp;
+       int c;
+       char buf[257];
 
        for (;;) {
 inter:
                printf(prompt);
                num = 0;
-               for (sp = buf; (*sp=getchar()) != '\n'; sp++)
-                       if (*sp == -1)  /* check for interrupted system call */
+               for (sp = buf; (c=getchar()) != '\n'; *sp++ = c)
+                       if (c == -1)    /* check for interrupted system call */
                                goto inter;
+               *sp = c;
                if (sp == buf)
                        continue;
-               for (sp = buf; isspace(*sp); sp++)
+               for (sp = buf; isspace((unsigned char)*sp); sp++)
                        continue;
-               for (; isdigit(*sp); sp++)
+               for (; isdigit((unsigned char)*sp); sp++)
                        num = num * 10 + *sp - '0';
                if (*sp == '\n')
                        return num;
@@ -129,16 +119,18 @@ inter:
                        printf("I can't understand that\n");
        }
 }
+
 /*
  *     This routine sets the monopoly flag from the list given.
  */
+void
 set_ownlist(pl)
-int    pl; {
-
-       reg int num;            /* general counter              */
-       reg MON *orig;          /* remember starting monop ptr  */
-       reg OWN *op;            /* current owned prop           */
-       OWN     *orig_op;               /* origianl prop before loop    */
+       int pl;
+{
+       int num;                /* general counter              */
+       MON *orig;              /* remember starting monop ptr  */
+       OWN *op;                /* current owned prop           */
+       OWN *orig_op;           /* origianl prop before loop    */
 
        op = play[pl].own_list;
 #ifdef DEBUG
@@ -153,7 +145,8 @@ int pl; {
 #ifdef DEBUG
                        printf("  case UTIL:\n");
 #endif
-                       for (num = 0; op && op->sqr->type == UTIL; op = op->next)
+                       for (num = 0; op && op->sqr->type == UTIL;
+                           op = op->next)
                                num++;
                        play[pl].num_util = num;
 #ifdef DEBUG
@@ -164,10 +157,13 @@ int       pl; {
 #ifdef DEBUG
                        printf("  case RR:\n");
 #endif
-                       for (num = 0; op && op->sqr->type == RR; op = op->next) {
+                       for (num = 0; op && op->sqr->type == RR;
+                           op = op->next) {
 #ifdef DEBUG
                                printf("iter: %d\n", num);
-                               printf("op = %d, op->sqr = %d, op->sqr->type = %d\n", op, op->sqr, op->sqr->type);
+                               printf("op = %d, op->sqr = %d, "
+                                   "op->sqr->type = %d\n", op, op->sqr,
+                                   op->sqr->type);
 #endif
                                num++;
                        }
@@ -200,17 +196,21 @@ int       pl; {
                        printf("num = %d\n");
 #endif
                        if (orig == 0) {
-                               printf("panic:  bad monopoly descriptor: orig = %d\n", orig);
+                               printf("panic:  bad monopoly descriptor: "
+                                   "orig = %p\n", orig);
                                printf("player # %d\n", pl+1);
                                printhold(pl);
-                               printf("orig_op = %d\n", orig_op);
-                               printf("orig_op->sqr->type = %d (PRPTY)\n", op->sqr->type);
-                               printf("orig_op->next = %d\n", op->next);
-                               printf("orig_op->sqr->desc = %d\n", op->sqr->desc);
-                               printf("op = %d\n", op);
-                               printf("op->sqr->type = %d (PRPTY)\n", op->sqr->type);
-                               printf("op->next = %d\n", op->next);
-                               printf("op->sqr->desc = %d\n", op->sqr->desc);
+                               printf("orig_op = %p\n", orig_op);
+                               printf("orig_op->sqr->type = %d (PRPTY)\n",
+                                   op->sqr->type);
+                               printf("orig_op->next = %p\n", op->next);
+                               printf("orig_op->sqr->desc = %p\n",
+                                   op->sqr->desc);
+                               printf("op = %p\n", op);
+                               printf("op->sqr->type = %d (PRPTY)\n",
+                                   op->sqr->type);
+                               printf("op->next = %p\n", op->next);
+                               printf("op->sqr->desc = %p\n", op->sqr->desc);
                                printf("num = %d\n", num);
                        }
 #ifdef DEBUG
@@ -219,20 +219,21 @@ int       pl; {
                        if (num == orig->num_in)
                                is_monop(orig, pl);
                        else
-                               isnot_monop(orig);
+                               is_not_monop(orig);
                        break;
                }
        }
 }
+
 /*
  *     This routine sets things up as if it is a new monopoly
  */
+void
 is_monop(mp, pl)
-reg MON        *mp;
-int    pl; {
-
-       reg char        *sp;
-       reg int         i;
+       MON *mp;
+       int pl;
+{
+       int i;
 
        mp->owner = pl;
        mp->num_own = mp->num_in;
@@ -240,121 +241,51 @@ int      pl; {
                mp->sq[i]->desc->monop = TRUE;
        mp->name = mp->mon_n;
 }
+
 /*
  *     This routine sets things up as if it is no longer a monopoly
  */
-isnot_monop(mp)
-reg MON        *mp; {
-
-       reg char        *sp;
-       reg int         i;
+void
+is_not_monop(mp)
+       MON *mp;
+{
+       int i;
 
        mp->owner = -1;
        for (i = 0; i < mp->num_in; i++)
                mp->sq[i]->desc->monop = FALSE;
        mp->name = mp->not_m;
 }
+
 /*
  *     This routine gives a list of the current player's routine
  */
-list() {
-
+void
+list()
+{
        printhold(player);
 }
+
 /*
  *     This routine gives a list of a given players holdings
  */
-list_all() {
-
-       reg int pl;
+void
+list_all()
+{
+       int pl;
 
-       while ((pl=getinp("Whose holdings do you want to see? ", name_list)) < num_play)
+       while ((pl = getinp("Whose holdings do you want to see? ", name_list))
+           < num_play)
                printhold(pl);
 }
+
 /*
  *     This routine gives the players a chance before it exits.
  */
 void
-quit() {
-
+quit()
+{
        putchar('\n');
-       if (getyn("Do you all really want to quit? ", yn) == 0)
+       if (getyn("Do you all really want to quit? ") == 0)
                exit(0);
-       signal(SIGINT, quit);
-}
-/*
- *     This routine copies one structure to another
- */
-cpy_st(s1, s2, size)
-reg int        *s1, *s2, size; {
-
-       size /= 2;
-       while (size--)
-               *s1++ = *s2++;
-}
-/*
- *     This routine forks off a shell.  It uses the users login shell
- */
-shell_out() {
-
-       static char     *shell = NULL;
-
-       printline();
-       if (shell == NULL)
-               shell = shell_in();
-       fflush(stdout);
-       if (!fork()) {
-               signal(SIGINT, SIG_DFL);
-               execsh(shell);
-       }
-       ignoresigs();
-       wait();
-       resetsigs();
-       putchar('\n');
-       printline();
-}
-/*
- *     This routine looks up the users login shell
- */
-# include      <sys/types.h>
-# include      <pwd.h>
-
-char           *getenv();
-
-char *
-shell_in() {
-
-       reg struct passwd       *pp;
-       reg char                *sp;
-
-       if ((sp = getenv("SHELL")) == NULL) {
-               pp = getpwuid(getuid());
-               if (pp->pw_shell[0] != '\0')
-                       return pp->pw_shell;
-               else
-                       return shell_def;
-               /*return (*(pp->pw_shell) != '\0' ? pp->pw_shell : shell_def);*/
-       }
-       return sp;
-}
-/*
- *     This routine sets things up to ignore all the signals.
- */
-ignoresigs() {
-
-       reg int i;
-
-       for (i = 0; i < NSIG; i++)
-               signal(i, SIG_IGN);
-}
-/*
- *     This routine sets up things as they were before.
- */
-resetsigs() {
-
-       reg int i;
-
-       for (i = 0; i < NSIG; i++)
-               signal(i, SIG_DFL);
-       signal(SIGINT, quit);
 }