]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - gomoku/bdinit.c
properly terminate after using strncpy().
[bsdgames-darwin.git] / gomoku / bdinit.c
index 2a803297449287829d336124aed52df4a5cf7cb6..2fb2f85b7954247d914a903c39aca6809e76ebdb 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: bdinit.c,v 1.4 1997/10/10 13:36:01 lukem Exp $ */
+/*     $NetBSD: bdinit.c,v 1.9 2012/10/13 20:57:35 dholland Exp $      */
 
 /*
  * Copyright (c) 1994
  * 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.
  *
 #if 0
 static char sccsid[] = "from: @(#)bdinit.c     8.2 (Berkeley) 5/3/95";
 #else
-__RCSID("$NetBSD: bdinit.c,v 1.4 1997/10/10 13:36:01 lukem Exp $");
+__RCSID("$NetBSD: bdinit.c,v 1.9 2012/10/13 20:57:35 dholland Exp $");
 #endif
 #endif /* not lint */
 
 #include <string.h>
 #include "gomoku.h"
 
+static void init_overlap(void);
+
 void
-bdinit(bp)
-       struct spotstr *bp;
+bdinit(struct spotstr *bp)
 {
        int i, j, r;
        struct spotstr *sp;
@@ -62,7 +59,7 @@ bdinit(bp)
        sp = bp;
        for (i = BSZ2; --i >= 0; sp++) {
                sp->s_occ = BORDER;             /* top border */
-               sp->s_flg = BFLAGALL;
+               sp->s_flags = BFLAGALL;
        }
 
        /* fill entire board with EMPTY spots */
@@ -71,11 +68,11 @@ bdinit(bp)
        for (j = 0; ++j < BSZ1; sp++) {                 /* for each row */
                for (i = 0; ++i < BSZ1; sp++) {         /* for each column */
                        sp->s_occ = EMPTY;
-                       sp->s_flg = 0;
+                       sp->s_flags = 0;
                        sp->s_wval = 0;
                        if (j < 5) {
                                /* directions 1, 2, 3 are blocked */
-                               sp->s_flg |= (BFLAG << 1) | (BFLAG << 2) |
+                               sp->s_flags |= (BFLAG << 1) | (BFLAG << 2) |
                                        (BFLAG << 3);
                                sp->s_fval[BLACK][1].s = MAXCOMBO;
                                sp->s_fval[BLACK][2].s = MAXCOMBO;
@@ -102,7 +99,7 @@ bdinit(bp)
                        }
                        if (i > (BSZ - 4)) {
                                /* directions 0, 1 are blocked */
-                               sp->s_flg |= BFLAG | (BFLAG << 1);
+                               sp->s_flags |= BFLAG | (BFLAG << 1);
                                sp->s_fval[BLACK][0].s = MAXCOMBO;
                                sp->s_fval[BLACK][1].s = MAXCOMBO;
                                sp->s_fval[WHITE][0].s = MAXCOMBO;
@@ -111,7 +108,7 @@ bdinit(bp)
                                sp->s_fval[BLACK][0].s = 0x500;
                                sp->s_fval[WHITE][0].s = 0x500;
                                /* if direction 1 is not blocked */
-                               if (!(sp->s_flg & (BFLAG << 1))) {
+                               if (!(sp->s_flags & (BFLAG << 1))) {
                                        sp->s_fval[BLACK][1].s = 0x500;
                                        sp->s_fval[WHITE][1].s = 0x500;
                                }
@@ -120,11 +117,11 @@ bdinit(bp)
                                sp->s_fval[WHITE][0].s = 0x401;
                                if (i < 5) {
                                        /* direction 3 is blocked */
-                                       sp->s_flg |= (BFLAG << 3);
+                                       sp->s_flags |= (BFLAG << 3);
                                        sp->s_fval[BLACK][3].s = MAXCOMBO;
                                        sp->s_fval[WHITE][3].s = MAXCOMBO;
                                } else if (i == 5 &&
-                                   !(sp->s_flg & (BFLAG << 3))) {
+                                   !(sp->s_flags & (BFLAG << 3))) {
                                        sp->s_fval[BLACK][3].s = 0x500;
                                        sp->s_fval[WHITE][3].s = 0x500;
                                }
@@ -133,7 +130,7 @@ bdinit(bp)
                         * Allocate a frame structure for non blocked frames.
                         */
                        for (r = 4; --r >= 0; ) {
-                               if (sp->s_flg & (BFLAG << r))
+                               if (sp->s_flags & (BFLAG << r))
                                        continue;
                                cbp->c_combo.s = sp->s_fval[BLACK][r].s;
                                cbp->c_vertex = sp - board;
@@ -144,13 +141,13 @@ bdinit(bp)
                        }
                }
                sp->s_occ = BORDER;             /* left & right border */
-               sp->s_flg = BFLAGALL;
+               sp->s_flags = BFLAGALL;
        }
 
        /* mark the borders as such */
        for (i = BSZ1; --i >= 0; sp++) {
                sp->s_occ = BORDER;             /* bottom border */
-               sp->s_flg = BFLAGALL;
+               sp->s_flags = BFLAGALL;
        }
 
        sortframes[BLACK] = (struct combostr *)0;
@@ -175,11 +172,12 @@ bdinit(bp)
  * As pieces are played, it can make frames not overlap if there are no
  * common open spaces shared between the two frames.
  */
-void
-init_overlap()
+static void
+init_overlap(void)
 {
        struct spotstr *sp1, *sp2;
        struct combostr *cbp;
+       unsigned frameix;
        int i, f, r, n, d1, d2;
        int mask, bmask, vertex, s;
        u_char *str;
@@ -189,7 +187,8 @@ init_overlap()
        memset(intersect, 0, sizeof(intersect));
        str = &overlap[FAREA * FAREA];
        ip = &intersect[FAREA * FAREA];
-       for (cbp = frames + FAREA; --cbp >= frames; ) {         /* each frame */
+       for (frameix = FAREA; frameix-- > 0; ) {        /* each frame */
+           cbp = &frames[frameix];
            str -= FAREA;
            ip -= FAREA;
            sp1 = &board[vertex = cbp->c_vertex];
@@ -212,7 +211,7 @@ init_overlap()
                    for (f = 0; f < 6; f++, sp2 -= d2) {
                        if (sp2->s_occ == BORDER)
                            break;
-                       if (sp2->s_flg & bmask)
+                       if (sp2->s_flags & bmask)
                            continue;
                        n = sp2->s_frame[r] - frames;
                        ip[n] = vertex;