]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - hack/hack.u_init.c
games/hack: Fix -Wstringop-truncation warning.
[bsdgames-darwin.git] / hack / hack.u_init.c
index 9f7ba082f56e721563e3fc42d04e3b46012bfd02..d284911579f02b906179e216092be78939d6ec91 100644 (file)
@@ -1,12 +1,69 @@
-/*     $NetBSD: hack.u_init.c,v 1.5 1997/10/19 16:59:19 christos Exp $ */
+/*     $NetBSD: hack.u_init.c,v 1.13 2011/08/06 19:32:58 dholland Exp $        */
 
 /*
- * Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985.
+ * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica,
+ * Amsterdam
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * - 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.
+ *
+ * - Neither the name of the Stichting Centrum voor Wiskunde en
+ * Informatica, nor the names of its contributors may be used to endorse or
+ * promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Copyright (c) 1982 Jay Fenlason <hack@gnu.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 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. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: hack.u_init.c,v 1.5 1997/10/19 16:59:19 christos Exp $");
+__RCSID("$NetBSD: hack.u_init.c,v 1.13 2011/08/06 19:32:58 dholland Exp $");
 #endif                         /* not lint */
 
 #include <ctype.h>
@@ -20,15 +77,16 @@ __RCSID("$NetBSD: hack.u_init.c,v 1.5 1997/10/19 16:59:19 christos Exp $");
 #define        UNDEF_TYP       0
 #define        UNDEF_SPE       '\177'
 
-struct you      zerou;
-char            pl_character[PL_CSIZ];
-char           *(roles[]) = {  /* must all have distinct first letter */
+char pl_character[PL_CSIZ];
+
+static const struct you zerou;
+static const char *(roles[]) = {      /* must all have distinct first letter */
        /* roles[4] may be changed to -woman */
        "Tourist", "Speleologist", "Fighter", "Knight",
        "Cave-man", "Wizard"
 };
 #define        NR_OF_ROLES     SIZE(roles)
-char            rolesyms[NR_OF_ROLES + 1];     /* filled by u_init() */
+static char rolesyms[NR_OF_ROLES + 1]; /* filled by u_init() */
 
 struct trobj {
        uchar           trotyp;
@@ -39,13 +97,13 @@ struct trobj {
 };
 
 #ifdef WIZARD
-struct trobj    Extra_objs[] = {
+static struct trobj Extra_objs[] = {
        {0, 0, 0, 0, 0},
        {0, 0, 0, 0, 0}
 };
 #endif /* WIZARD */
 
-struct trobj    Cave_man[] = {
+static struct trobj Cave_man[] = {
        {MACE, 1, WEAPON_SYM, 1, 1},
        {BOW, 1, WEAPON_SYM, 1, 1},
        {ARROW, 0, WEAPON_SYM, 25, 1},  /* quan is variable */
@@ -53,13 +111,13 @@ struct trobj    Cave_man[] = {
        {0, 0, 0, 0, 0}
 };
 
-struct trobj    Fighter[] = {
+static struct trobj Fighter[] = {
        {TWO_HANDED_SWORD, 0, WEAPON_SYM, 1, 1},
        {RING_MAIL, 0, ARMOR_SYM, 1, 1},
        {0, 0, 0, 0, 0}
 };
 
-struct trobj    Knight[] = {
+static struct trobj Knight[] = {
        {LONG_SWORD, 0, WEAPON_SYM, 1, 1},
        {SPEAR, 2, WEAPON_SYM, 1, 1},
        {RING_MAIL, 1, ARMOR_SYM, 1, 1},
@@ -69,7 +127,7 @@ struct trobj    Knight[] = {
        {0, 0, 0, 0, 0}
 };
 
-struct trobj    Speleologist[] = {
+static struct trobj Speleologist[] = {
        {STUDDED_LEATHER_ARMOR, 0, ARMOR_SYM, 1, 1},
        {UNDEF_TYP, 0, POTION_SYM, 2, 0},
        {FOOD_RATION, 0, FOOD_SYM, 3, 1},
@@ -78,12 +136,12 @@ struct trobj    Speleologist[] = {
        {0, 0, 0, 0, 0}
 };
 
-struct trobj    Tinopener[] = {
+static struct trobj Tinopener[] = {
        {CAN_OPENER, 0, TOOL_SYM, 1, 1},
        {0, 0, 0, 0, 0}
 };
 
-struct trobj    Tourist[] = {
+static struct trobj Tourist[] = {
        {UNDEF_TYP, 0, FOOD_SYM, 10, 1},
        {POT_EXTRA_HEALING, 0, POTION_SYM, 2, 0},
        {EXPENSIVE_CAMERA, 0, TOOL_SYM, 1, 1},
@@ -91,7 +149,7 @@ struct trobj    Tourist[] = {
        {0, 0, 0, 0, 0}
 };
 
-struct trobj    Wizard[] = {
+static struct trobj Wizard[] = {
        {ELVEN_CLOAK, 0, ARMOR_SYM, 1, 1},
        {UNDEF_TYP, UNDEF_SPE, WAND_SYM, 2, 0},
        {UNDEF_TYP, UNDEF_SPE, RING_SYM, 2, 0},
@@ -100,8 +158,12 @@ struct trobj    Wizard[] = {
        {0, 0, 0, 0, 0}
 };
 
+static void ini_inv(struct trobj *);
+static void wiz_inv(void);
+static int role_index(int);
+
 void
-u_init()
+u_init(void)
 {
        int    i;
        char            exper = 'y', pc;
@@ -112,8 +174,8 @@ u_init()
        rolesyms[i] = 0;
 
        if ((pc = pl_character[0]) != '\0') {
-               if (islower(pc))
-                       pc = toupper(pc);
+               if (islower((unsigned char)pc))
+                       pc = toupper((unsigned char)pc);
                if ((i = role_index(pc)) >= 0)
                        goto got_suffix;        /* implies experienced */
                printf("\nUnknown role: %c\n", pc);
@@ -122,7 +184,7 @@ u_init()
        printf("\nAre you an experienced player? [ny] ");
 
        while (!strchr("ynYN \n\004", (exper = readchar())))
-               bell();
+               sound_bell();
        if (exper == '\004')    /* Give him an opportunity to get out */
                end_of_input();
        printf("%c\n", exper);  /* echo */
@@ -144,8 +206,8 @@ u_init()
        printf("? [%s] ", rolesyms);
 
        while ((pc = readchar()) != '\0') {
-               if (islower(pc))
-                       pc = toupper(pc);
+               if (islower((unsigned char)pc))
+                       pc = toupper((unsigned char)pc);
                if ((i = role_index(pc)) >= 0) {
                        printf("%c\n", pc);     /* echo */
                        (void) fflush(stdout);  /* should be seen */
@@ -156,7 +218,7 @@ u_init()
                if (pc == '\004')       /* Give him the opportunity to get
                                         * out */
                        end_of_input();
-               bell();
+               sound_bell();
        }
        if (pc == '\n')
                pc = 0;
@@ -254,9 +316,9 @@ got_suffix:
        }
        find_ac();
        if (!rn2(20)) {
-               int    d = rn2(7) - 2;  /* biased variation */
-               u.ustr += d;
-               u.ustrmax += d;
+               int    dr = rn2(7) - 2; /* biased variation */
+               u.ustr += dr;
+               u.ustrmax += dr;
        }
 #ifdef WIZARD
        if (wizard)
@@ -269,8 +331,7 @@ got_suffix:
 }
 
 void
-ini_inv(trop)
-       struct trobj *trop;
+ini_inv(struct trobj *trop)
 {
        struct obj *obj;
        while (trop->trolet) {
@@ -316,23 +377,15 @@ ini_inv(trop)
                if (obj->olet == WEAPON_SYM)
                        if (!uwep)
                                setuwep(obj);
-#ifndef PYRAMID_BUG
                if (--trop->trquan)
                        continue;       /* make a similar object */
-#else
-               if (trop->trquan) {     /* check if zero first */
-                       --trop->trquan;
-                       if (trop->trquan)
-                               continue;       /* make a similar object */
-               }
-#endif /* PYRAMID_BUG */
                trop++;
        }
 }
 
 #ifdef WIZARD
 void
-wiz_inv()
+wiz_inv(void)
 {
        struct trobj *trop = &Extra_objs[0];
        char  *ep = getenv("INVENT");
@@ -363,7 +416,7 @@ wiz_inv()
 #endif /* WIZARD */
 
 void
-plnamesuffix()
+plnamesuffix(void)
 {
        char  *p;
        if ((p = strrchr(plname, '-')) != NULL) {
@@ -378,8 +431,7 @@ plnamesuffix()
 }
 
 int
-role_index(pc)
-       char            pc;
+role_index(int pc)
 {                              /* must be called only from u_init() */
        /* so that rolesyms[] is defined */
        char  *cp;