]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - hack/hack.invent.c
caesar: WARNS=6, strict bool mode
[bsdgames-darwin.git] / hack / hack.invent.c
index 8b1e7cc800b458bbf368a04274f1d8ae3cc2cb84..82284f101765c48b4985e3baa70327798e4c15b4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: hack.invent.c,v 1.12 2009/06/07 20:13:18 dholland Exp $        */
+/*     $NetBSD: hack.invent.c,v 1.18 2011/08/07 06:03:45 dholland Exp $        */
 
 /*
  * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica,
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: hack.invent.c,v 1.12 2009/06/07 20:13:18 dholland Exp $");
+__RCSID("$NetBSD: hack.invent.c,v 1.18 2011/08/07 06:03:45 dholland Exp $");
 #endif                         /* not lint */
 
+#include <assert.h>
 #include <stdlib.h>
 #include "hack.h"
 #include "extern.h"
@@ -78,8 +79,9 @@ __RCSID("$NetBSD: hack.invent.c,v 1.12 2009/06/07 20:13:18 dholland Exp $");
 
 static int      lastinvnr = 51;        /* 0 ... 51 */
 
-static void assigninvlet(struct obj *);
 static char *xprname(struct obj *, char);
+static void doinv(const char *);
+static int merged(struct obj *, struct obj *, int);
 
 static void
 assigninvlet(struct obj *otmp)
@@ -235,7 +237,7 @@ freegold(struct gold *gold)
                }
                gtmp->ngold = gold->ngold;
        }
-       free((char *) gold);
+       free(gold);
 }
 
 void
@@ -249,7 +251,7 @@ deltrap(struct trap *trap)
                for (ttmp = ftrap; ttmp->ntrap != trap; ttmp = ttmp->ntrap);
                ttmp->ntrap = trap->ntrap;
        }
-       free((char *) trap);
+       free(trap);
 }
 
 struct wseg    *m_atseg;
@@ -358,7 +360,7 @@ g_at(int x, int y)
 }
 
 /* make dummy object structure containing gold - for temporary use only */
-struct obj     *
+static struct obj *
 mkgoldobj(long q)
 {
        struct obj     *otmp;
@@ -497,7 +499,7 @@ getobj(const char *let, const char *word)
                                continue;
                        /* he typed a letter (not a space) to more() */
                } else if (ilet == '*') {
-                       doinv((char *) 0);
+                       doinv(NULL);
                        if (!(ilet = morc))
                                continue;
                        /* ... */
@@ -541,7 +543,7 @@ getobj(const char *let, const char *word)
        return (otmp);
 }
 
-int
+static int
 ckunpaid(struct obj *otmp)
 {
        return (otmp->unpaid);
@@ -555,7 +557,7 @@ ggetobj(const char *word, int (*fn)(struct obj *), int max)
        char            buf[BUFSZ];
        char           *ip;
        char            sym;
-       int             oletct = 0, iletct = 0;
+       unsigned        oletct = 0, iletct = 0;
        boolean         allflag = FALSE;
        char            olets[20], ilets[20];
        int           (*ckfn)(struct obj *) =
@@ -586,6 +588,7 @@ ggetobj(const char *word, int (*fn)(struct obj *), int max)
                if (invent)
                        ilets[iletct++] = 'a';
                ilets[iletct] = 0;
+               assert(iletct < sizeof(ilets));
        }
        pline("What kinds of thing do you want to %s? [%s] ",
              word, ilets);
@@ -614,6 +617,7 @@ ggetobj(const char *word, int (*fn)(struct obj *), int max)
                                olets[oletct++] = sym;
                                olets[oletct] = 0;
                        }
+                       assert(oletct < sizeof(olets));
                } else
                        pline("You don't have any %c's.", sym);
        }
@@ -651,7 +655,7 @@ askchain(struct obj *objchn, char *olets, int allflag,
                if (ckfn && !(*ckfn) (otmp))
                        continue;
                if (!allflag) {
-                       pline(xprname(otmp, ilet));
+                       pline("%s", xprname(otmp, ilet));
                        addtopl(" [nyaq]? ");
                        sym = readchar();
                } else
@@ -660,10 +664,12 @@ askchain(struct obj *objchn, char *olets, int allflag,
                switch (sym) {
                case 'a':
                        allflag = 1;
+                       /* FALLTHROUGH */
                case 'y':
                        cnt += (*fn) (otmp);
                        if (--max == 0)
                                goto ret;
+                       break;
                case 'n':
                default:
                        break;
@@ -677,7 +683,7 @@ ret:
 }
 
 /* should of course only be called for things in invent */
-char
+static char
 obj_to_let(struct obj *obj)
 {
        struct obj     *otmp;
@@ -695,10 +701,10 @@ obj_to_let(struct obj *obj)
 void
 prinv(struct obj *obj)
 {
-       pline(xprname(obj, obj_to_let(obj)));
+       pline("%s", xprname(obj, obj_to_let(obj)));
 }
 
-static char    *
+static char *
 xprname(struct obj *obj, char let)
 {
        static char     li[BUFSZ];
@@ -712,18 +718,18 @@ xprname(struct obj *obj, char let)
 int
 ddoinv(void)
 {
-       doinv((char *) 0);
+       doinv(NULL);
        return (0);
 }
 
 /* called with 0 or "": all objects in inventory */
 /* otherwise: all objects with (serial) letter in lets */
-void
-doinv(char *lets)
+static void
+doinv(const char *lets)
 {
        struct obj     *otmp;
        char            ilet;
-       int             ct = 0;
+       unsigned        ct = 0;
        char            any[BUFSZ];
 
        morc = 0;               /* just to be sure */
@@ -732,7 +738,7 @@ doinv(char *lets)
                pline("Not carrying anything.");
                return;
        }
-       cornline(0, (char *) 0);
+       cornline(0, NULL);
        ilet = 'a';
        for (otmp = invent; otmp; otmp = otmp->nobj) {
                if (flags.invlet_constant)
@@ -746,6 +752,7 @@ doinv(char *lets)
                                ilet = 'A';
        }
        any[ct] = 0;
+       assert(ct < sizeof(any));
        cornline(2, any);
 }
 
@@ -755,7 +762,7 @@ dotypeinv(void)
        /* Changed to one type only, so he doesnt have to type cr */
        char            c, ilet;
        char            stuff[BUFSZ];
-       int             stct;
+       unsigned        stct;
        struct obj     *otmp;
        boolean         billx = inshop() && doinvbill(0);
        boolean         unpd = FALSE;
@@ -781,6 +788,7 @@ dotypeinv(void)
        if (billx)
                stuff[stct++] = 'x';
        stuff[stct] = 0;
+       assert(stct < sizeof(stuff));
 
        if (stct > 1) {
                pline("What type of object [%s] do you want an inventory of? ",
@@ -817,6 +825,8 @@ dotypeinv(void)
                                ilet = 'A';
        }
        stuff[stct] = '\0';
+       assert(stct < sizeof(stuff));
+
        if (stct == 0)
                pline("You have no such objects.");
        else
@@ -875,10 +885,10 @@ dolook(void)
        }
        if (ct == 1 && !gold) {
                pline("You %s here %s.", verb, doname(otmp0));
-               cornline(3, (char *) 0);
+               cornline(3, NULL);
        }
        if (ct > 1)
-               cornline(2, (char *) 0);
+               cornline(2, NULL);
        return (!!Blind);
 }
 
@@ -894,7 +904,7 @@ stackobj(struct obj *obj)
 }
 
 /* merge obj with otmp and delete obj if types agree */
-int
+static int
 merged(struct obj *otmp, struct obj *obj, int lose)
 {
        if (obj->otyp == otmp->otyp &&
@@ -921,7 +931,7 @@ static long goldcounted;
  * it may take a while before you have counted it all.
  * [Bug: d$ and pickup still tell you how much it was.]
  */
-int
+static int
 countgold(void)
 {
        if ((goldcounted += 100 * (u.ulevel + 1)) >= u.ugold) {