]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - tetris/tetris.c
Sort and remove duplicates.
[bsdgames-darwin.git] / tetris / tetris.c
index 3cf9f3601f97b89c18989dda76166473a439ad92..24204132d26fc39013908b875e3fb965fae577b8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: tetris.c,v 1.11 1999/09/08 21:45:31 jsm Exp $  */
+/*     $NetBSD: tetris.c,v 1.15 2002/06/02 22:17:38 wiz Exp $  */
 
 /*-
  * Copyright (c) 1992, 1993
@@ -50,6 +50,8 @@ __COPYRIGHT("@(#) Copyright (c) 1992, 1993\n\
 
 #include <sys/time.h>
 
+#include <err.h>
+#include <fcntl.h>
 #include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -61,6 +63,21 @@ __COPYRIGHT("@(#) Copyright (c) 1992, 1993\n\
 #include "screen.h"
 #include "tetris.h"
 
+cell   board[B_SIZE];          /* 1 => occupied, 0 => empty */
+
+int    Rows, Cols;             /* current screen size */
+
+const struct shape *curshape;
+const struct shape *nextshape;
+
+long   fallrate;               /* less than 1 million; smaller => faster */
+
+int    score;                  /* the obvious thing */
+gid_t  gid, egid;
+
+char   key_msg[100];
+int    showpreview;
+
 static void    elide __P((void));
 static void    setup_board __P((void));
        int     main __P((int, char **));
@@ -75,8 +92,8 @@ static        void    setup_board __P((void));
 static void
 setup_board()
 {
-       register int i;
-       register cell *p;
+       int i;
+       cell *p;
 
        p = board;
        for (i = B_SIZE; i; i--)
@@ -89,8 +106,8 @@ setup_board()
 static void
 elide()
 {
-       register int i, j, base;
-       register cell *p;
+       int i, j, base;
+       cell *p;
 
        for (i = A_FIRST; i < A_LAST; i++) {
                base = i * B_COLS + 1;
@@ -116,11 +133,21 @@ main(argc, argv)
        int argc;
        char *argv[];
 {
-       register int pos, c;
-       register const char *keys;
-       register int level = 2;
+       int pos, c;
+       const char *keys;
+       int level = 2;
        char key_write[6][10];
        int ch, i, j;
+       int fd;
+
+       gid = getgid();
+       egid = getegid();
+       setegid(gid);
+
+       fd = open("/dev/null", O_RDONLY);
+       if (fd < 3)
+               exit(1);
+       close(fd);
 
        keys = "jkl pq";
 
@@ -133,10 +160,8 @@ main(argc, argv)
                case 'l':
                        level = atoi(optarg);
                        if (level < MINLEVEL || level > MAXLEVEL) {
-                               (void)fprintf(stderr,
-                                   "tetris: level must be from %d to %d\n",
-                                   MINLEVEL, MAXLEVEL);
-                               exit(1);
+                               errx(1, "level must be from %d to %d",
+                                    MINLEVEL, MAXLEVEL);
                        }
                        break;
                case 'p':
@@ -161,10 +186,7 @@ main(argc, argv)
        for (i = 0; i <= 5; i++) {
                for (j = i+1; j <= 5; j++) {
                        if (keys[i] == keys[j]) {
-                               (void)fprintf(stderr,
-                                   "%s: duplicate command keys specified.\n",
-                                   argv[0]);
-                               exit (1);
+                               errx(1, "duplicate command keys specified.");
                        }
                }
                if (keys[i] == ' ')