]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - mille/mille.c
A revision of "The purpose of computing is insight, not numbers" by
[bsdgames-darwin.git] / mille / mille.c
index 0bd9010d518dceaede7412593c88e6ad6abc1056..10857a8da804f2d2dfa05fa6bba085b58d616d59 100644 (file)
@@ -1,6 +1,8 @@
+/*     $NetBSD: mille.c,v 1.20 2011/08/31 16:24:56 plunky Exp $        */
+
 /*
- * Copyright (c) 1982 Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1982, 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
-char copyright[] =
-"@(#) Copyright (c) 1982 Regents of the University of California.\n\
- All rights reserved.\n";
+__COPYRIGHT("@(#) Copyright (c) 1982, 1993\
+ The Regents of the University of California.  All rights reserved.");
 #endif /* not lint */
 
 #ifndef lint
-static char sccsid[] = "@(#)mille.c    5.5 (Berkeley) 2/28/91";
+#if 0
+static char sccsid[] = "@(#)mille.c    8.1 (Berkeley) 5/31/93";
+#else
+__RCSID("$NetBSD: mille.c,v 1.20 2011/08/31 16:24:56 plunky Exp $");
+#endif
 #endif /* not lint */
 
-# include      "mille.h"
-# include      <signal.h>
-# ifdef attron
-#      include <term.h>
-# endif        attron
+#include <time.h>
+#include "mille.h"
+#include <signal.h>
 
 /*
  * @(#)mille.c 1.3 (Berkeley) 5/10/83
  */
 
-void   rub();
-
-main(ac, av)
-reg int                ac;
-reg char       *av[]; {
+int
+main(int ac, char *av[])
+{
+       bool    restore;
 
-       reg bool        restore;
-
-       /* run as the user */
-       setuid(getuid());
+       /* Revoke setgid privileges */
+       setgid(getgid());
 
        if (strcmp(av[0], "a.out") == 0) {
                outf = fopen("q", "w");
-               setbuf(outf, (char *)NULL);
+               setbuf(outf, NULL);
                Debug = TRUE;
        }
        restore = FALSE;
@@ -76,18 +73,12 @@ reg char    *av[]; {
                break;
          default:
                printf("usage: milles [ restore_file ]\n");
-               exit(-1);
+               exit(1);
                /* NOTREACHED */
        }
        Play = PLAYER;
-       initscr();
-# ifdef attron
-#      define  CA      cursor_address
-# endif
-       if (!CA) {
-               printf("Sorry.  Need cursor addressing to play mille\n");
-               exit(-1);
-       }
+       if (!initscr())
+               errx(0, "couldn't initialize screen");
        delwin(stdscr);
        stdscr = Board = newwin(BOARD_Y, BOARD_X, 0, 0);
        Score = newwin(SCORE_Y, SCORE_X, 0, 40);
@@ -100,12 +91,12 @@ reg char   *av[]; {
        leaveok(Score, TRUE);
        leaveok(Miles, TRUE);
        clearok(curscr, TRUE);
-# ifndef PROF
-       srandom(getpid());
-# else
+#ifndef PROF
+       srandom((long) time(NULL));
+#else
        srandom(0);
-# endif
-       crmode();
+#endif
+       cbreak();
        noecho();
        signal(SIGINT, rub);
        for (;;) {
@@ -147,24 +138,25 @@ reg char  *av[]; {
  * quit.
  */
 void
-rub() {
-
+rub(int dummy __unused)
+{
        (void)signal(SIGINT, SIG_IGN);
        if (getyn(REALLYPROMPT))
-               die();
+               die(0);
        (void)signal(SIGINT, rub);
 }
 
 /*
  *     Time to go beddy-by
  */
-die() {
+void
+die(int code)
+{
 
        (void)signal(SIGINT, SIG_IGN);
        if (outf)
                fflush(outf);
        mvcur(0, COLS - 1, LINES - 1, 0);
        endwin();
-       exit(1);
+       exit(code);
 }
-