1*091d139dStb /* $OpenBSD: init.c,v 1.11 2015/12/02 20:05:01 tb Exp $ */ 2df930be7Sderaadt 3df930be7Sderaadt /* 4df930be7Sderaadt * Copyright (c) 1980, 1993 5df930be7Sderaadt * The Regents of the University of California. All rights reserved. 6df930be7Sderaadt * 7df930be7Sderaadt * Redistribution and use in source and binary forms, with or without 8df930be7Sderaadt * modification, are permitted provided that the following conditions 9df930be7Sderaadt * are met: 10df930be7Sderaadt * 1. Redistributions of source code must retain the above copyright 11df930be7Sderaadt * notice, this list of conditions and the following disclaimer. 12df930be7Sderaadt * 2. Redistributions in binary form must reproduce the above copyright 13df930be7Sderaadt * notice, this list of conditions and the following disclaimer in the 14df930be7Sderaadt * documentation and/or other materials provided with the distribution. 157a09557bSmillert * 3. Neither the name of the University nor the names of its contributors 16df930be7Sderaadt * may be used to endorse or promote products derived from this software 17df930be7Sderaadt * without specific prior written permission. 18df930be7Sderaadt * 19df930be7Sderaadt * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20df930be7Sderaadt * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21df930be7Sderaadt * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22df930be7Sderaadt * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23df930be7Sderaadt * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24df930be7Sderaadt * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25df930be7Sderaadt * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26df930be7Sderaadt * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27df930be7Sderaadt * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28df930be7Sderaadt * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29df930be7Sderaadt * SUCH DAMAGE. 30df930be7Sderaadt */ 31df930be7Sderaadt 32df930be7Sderaadt /* 33df930be7Sderaadt * variable initialization. 34df930be7Sderaadt */ 35df930be7Sderaadt 3653da1682Spjanzen #ifdef DEBUG 3753da1682Spjanzen #include <stdio.h> 385ded4e00Smartin FILE *ftrace; 3953da1682Spjanzen #endif 4042b6d459Spjanzen #include <back.h> 4153da1682Spjanzen 42df930be7Sderaadt /* name of executable object programs */ 437341125dSpjanzen const char EXEC[] = "/usr/games/backgammon"; 447341125dSpjanzen const char TEACH[] = "/usr/games/teachgammon"; 45df930be7Sderaadt 46df930be7Sderaadt int pnum = 2; /* color of player: 47df930be7Sderaadt -1 = white 48df930be7Sderaadt 1 = red 49df930be7Sderaadt 0 = both 50df930be7Sderaadt 2 = not yet init'ed */ 51df930be7Sderaadt int aflag = 1; /* flag to ask for rules or instructions */ 52df930be7Sderaadt int cflag = 0; /* case conversion flag */ 53df930be7Sderaadt int hflag = 1; /* flag for cleaning screen */ 54df930be7Sderaadt int mflag = 0; /* backgammon flag */ 55df930be7Sderaadt int raflag = 0; /* 'roll again' flag for recovered game */ 56df930be7Sderaadt int rflag = 0; /* recovered game flag */ 57df930be7Sderaadt int iroll = 0; /* special flag for inputting rolls */ 58c8e1bdacSmartin int dflag = 1; /* doubling enabled */ 59df930be7Sderaadt int rfl = 0; 60df930be7Sderaadt 617341125dSpjanzen const char *const color[] = {"White", "Red", "white", "red"}; 6253da1682Spjanzen 6353da1682Spjanzen 647341125dSpjanzen const char *const *Colorptr; 657341125dSpjanzen const char *const *colorptr; 6653da1682Spjanzen int *inopp; 6753da1682Spjanzen int *inptr; 6853da1682Spjanzen int *offopp; 6953da1682Spjanzen int *offptr; 7053da1682Spjanzen int bar; 7153da1682Spjanzen int begscr; 7253da1682Spjanzen int board[26]; 7342b6d459Spjanzen char cin[CIN_SIZE]; 7453da1682Spjanzen int colen; 7553da1682Spjanzen int cturn; 7653da1682Spjanzen int d0; 7753da1682Spjanzen int dice[2]; 7853da1682Spjanzen int dlast; 7953da1682Spjanzen int g[5]; 8053da1682Spjanzen int gvalue; 8153da1682Spjanzen int h[4]; 8253da1682Spjanzen int home; 8353da1682Spjanzen int in[2]; 8453da1682Spjanzen int mvl; 8553da1682Spjanzen int mvlim; 8653da1682Spjanzen int ncin; 8753da1682Spjanzen int off[2]; 8853da1682Spjanzen int p[5]; 8953da1682Spjanzen int rscore; 9053da1682Spjanzen int table[6][6]; 9153da1682Spjanzen int wscore; 92