]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - larn/main.c
cgram: adjust style to survive lint's strict bool mode
[bsdgames-darwin.git] / larn / main.c
index f0dcaf1b4d7988bb621d609717baf3678100a404..977c17d9b35547ee6de3f045190301b1d142e1d7 100644 (file)
@@ -1,9 +1,9 @@
-/*     $NetBSD: main.c,v 1.17 2006/04/24 18:00:53 snj Exp $    */
+/*     $NetBSD: main.c,v 1.26 2019/02/03 03:19:25 mrg Exp $    */
 
 /* main.c               */
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: main.c,v 1.17 2006/04/24 18:00:53 snj Exp $");
+__RCSID("$NetBSD: main.c,v 1.26 2019/02/03 03:19:25 mrg Exp $");
 #endif                         /* not lint */
 
 #include <sys/types.h>
@@ -15,12 +15,36 @@ __RCSID("$NetBSD: main.c,v 1.17 2006/04/24 18:00:53 snj Exp $");
 #include "header.h"
 #include "extern.h"
 
+static void showstr(void);
+static void t_setup(int);
+static void t_endup(int);
+static void showwear(void);
+static void showwield(void);
+static void showread(void);
+static void showeat(void);
+static void showquaff(void);
+static void show1(int, const char *[]);
+static void randmonst(void);
+static void parse(void);
+static void run(int);
+static void wield(void);
+static void ydhi(int);
+static void ycwi(int);
+static void wear(void);
+static void dropobj(void);
+static void readscr(void);
+static void eatcookie(void);
+static void quaff(void);
+static int whatitem(const char *);
+
+#define __unreachable() __builtin_unreachable()
+
 static char     copyright[] = "\nLarn is copyrighted 1986 by Noah Morgan.\n";
 int             srcount = 0;   /* line counter for showstr()    */
 int             dropflag = 0;  /* if 1 then don't lookforobject() next round */
 int             rmst = 80;     /* random monster creation counter               */
 int             userid;                /* the players login user id number */
-uid_t           uid, euid;     /* used for security */
+gid_t           gid, egid;     /* used for security */
 u_char          nowelcome = 0, nomove = 0;     /* if (nomove) then don't
                                                 * count next iteration as a
                                                 * move */
@@ -53,9 +77,7 @@ static char    *termtypes[] = {"vt100", "vt101", "vt102", "vt103", "vt125",
        ************
  */
 int
-main(argc, argv)
-       int             argc;
-       char          **argv;
+main(int argc, char **argv)
 {
        int    i;
        int             hard;
@@ -63,9 +85,9 @@ main(argc, argv)
        struct passwd  *pwe;
 
        i = 0;
-       euid = geteuid();
-       uid = getuid();
-       seteuid(uid);           /* give up "games" if we have it */
+       egid = getegid();
+       gid = getgid();
+       setegid(gid);           /* give up "games" if we have it */
        /*
         *      first task is to identify the player
         */
@@ -307,8 +329,8 @@ main(argc, argv)
 
        show character's inventory
  */
-void
-showstr()
+static void
+showstr(void)
 {
        int    i, number;
        for (number = 3, i = 0; i < 26; i++)
@@ -320,14 +342,14 @@ showstr()
 }
 
 void
-qshowstr()
+qshowstr(void)
 {
        int    i, j, k, sigsav;
        srcount = 0;
        sigsav = nosignal;
        nosignal = 1;           /* don't allow ^c etc */
        if (c[GOLD]) {
-               lprintf(".)   %d gold pieces", (long) c[GOLD]);
+               lprintf(".)   %ld gold pieces", (long) c[GOLD]);
                srcount++;
        }
        for (k = 26; k >= 0; k--)
@@ -338,7 +360,7 @@ qshowstr()
                                                show3(j);
                        k = 0;
                }
-       lprintf("\nElapsed time is %d.  You have %d mobuls left", (long) ((gltime + 99) / 100 + 1), (long) ((TIMELIMIT - gltime) / 100));
+       lprintf("\nElapsed time is %ld.  You have %ld mobuls left", (long) ((gltime + 99) / 100 + 1), (long) ((TIMELIMIT - gltime) / 100));
        more();
        nosignal = sigsav;
 }
@@ -346,9 +368,8 @@ qshowstr()
 /*
  *     subroutine to clear screen depending on # lines to display
  */
-void
-t_setup(count)
-       int    count;
+static void
+t_setup(int count)
 {
        if (count < 20) {       /* how do we clear the screen? */
                cl_up(79, count);
@@ -362,9 +383,8 @@ t_setup(count)
 /*
  *     subroutine to restore normal display screen depending on t_setup()
  */
-void
-t_endup(count)
-       int    count;
+static void
+t_endup(int count)
 {
        if (count < 18)         /* how did we clear the screen? */
                draws(0, MAXX, 0, (count > MAXY) ? MAXY : count);
@@ -377,8 +397,8 @@ t_endup(count)
 /*
        function to show the things player is wearing only
  */
-void
-showwear()
+static void
+showwear(void)
 {
        int    i, j, sigsav, count;
        sigsav = nosignal;
@@ -426,8 +446,8 @@ showwear()
 /*
        function to show the things player can wield only
  */
-void
-showwield()
+static void
+showwield(void)
 {
        int    i, j, sigsav, count;
        sigsav = nosignal;
@@ -484,8 +504,8 @@ showwield()
 /*
  *     function to show the things player can read only
  */
-void
-showread()
+static void
+showread(void)
 {
        int    i, j, sigsav, count;
        sigsav = nosignal;
@@ -516,8 +536,8 @@ showread()
 /*
  *     function to show the things player can eat only
  */
-void
-showeat()
+static void
+showeat(void)
 {
        int    i, j, sigsav, count;
        sigsav = nosignal;
@@ -546,8 +566,8 @@ showeat()
 /*
        function to show the things player can quaff only
  */
-void
-showquaff()
+static void
+showquaff(void)
 {
        int    i, j, sigsav, count;
        sigsav = nosignal;
@@ -573,10 +593,8 @@ showquaff()
        t_endup(count);
 }
 
-void
-show1(idx, str2)
-       int    idx;
-       char  *str2[];
+static void
+show1(int idx, const char *str2[])
 {
        lprintf("\n%c)   %s", idx + 'a', objectname[iven[idx]]);
        if (str2 != 0 && str2[ivenarg[idx]][0] != 0)
@@ -584,15 +602,14 @@ show1(idx, str2)
 }
 
 void
-show3(index)
-       int    index;
+show3(int indx)
 {
-       switch (iven[index]) {
+       switch (iven[indx]) {
        case OPOTION:
-               show1(index, potionname);
+               show1(indx, potionname);
                break;
        case OSCROLL:
-               show1(index, scrollname);
+               show1(indx, scrollname);
                break;
 
        case OLARNEYE:
@@ -606,20 +623,20 @@ show3(index)
        case OCOOKIE:
        case OSAPPHIRE:
        case ONOTHEFT:
-               show1(index, (char **) 0);
+               show1(indx, NULL);
                break;
 
        default:
-               lprintf("\n%c)   %s", index + 'a', objectname[iven[index]]);
-               if (ivenarg[index] > 0)
-                       lprintf(" + %d", (long) ivenarg[index]);
-               else if (ivenarg[index] < 0)
-                       lprintf(" %d", (long) ivenarg[index]);
+               lprintf("\n%c)   %s", indx + 'a', objectname[iven[indx]]);
+               if (ivenarg[indx] > 0)
+                       lprintf(" + %ld", (long) ivenarg[indx]);
+               else if (ivenarg[indx] < 0)
+                       lprintf(" %ld", (long) ivenarg[indx]);
                break;
        }
-       if (c[WIELD] == index)
+       if (c[WIELD] == indx)
                lprcat(" (weapon in hand)");
-       if ((c[WEAR] == index) || (c[SHIELD] == index))
+       if ((c[WEAR] == indx) || (c[SHIELD] == indx))
                lprcat(" (being worn)");
        if (++srcount >= 22) {
                srcount = 0;
@@ -631,8 +648,8 @@ show3(index)
 /*
        subroutine to randomly create monsters if needed
  */
-void
-randmonst()
+static void
+randmonst(void)
 {
        if (c[TIMESTOP])
                return;         /* don't make monsters if time is stopped        */
@@ -649,8 +666,8 @@ randmonst()
 
        get and execute a command
  */
-void
-parse()
+static void
+parse(void)
 {
        int    i, j, k, flag;
        while (1) {
@@ -778,6 +795,7 @@ parse()
                        savegame(savefilename);
                        wizard = 1;
                        died(-257);     /* save the game - doesn't return        */
+                       __unreachable();
 
                case 'Z':
                        yrepcount = 0;
@@ -808,7 +826,7 @@ parse()
                                        case ODARTRAP:
                                        case OTRAPARROW:
                                        case OTELEPORTER:
-                                               lprcat("\nIts ");
+                                               lprcat("\nIt's ");
                                                lprcat(objectname[item[i][j]]);
                                                flag++;
                                        };
@@ -902,7 +920,8 @@ parse()
 
                case 'g':
                        cursors();
-                       lprintf("\nThe stuff you are carrying presently weighs %d pounds", (long) packweight());
+                       lprintf("\nThe stuff you are carrying presently weighs %ld pounds", (long) packweight());
+                       /* FALLTHROUGH */
                case ' ':
                        yrepcount = 0;
                        nomove = 1;
@@ -911,7 +930,9 @@ parse()
                case 'v':
                        yrepcount = 0;
                        cursors();
-                       lprintf("\nCaverns of Larn, Version %d.%d, Diff=%d", (long) VERSION, (long) SUBVERSION, (long) c[HARDGAME]);
+                       lprintf("\nCaverns of Larn, Version %ld.%ld, Diff=%ld",
+                               (long) VERSION, (long) SUBVERSION,
+                               (long) c[HARDGAME]);
                        if (wizard)
                                lprcat(" Wizard");
                        nomove = 1;
@@ -947,7 +968,8 @@ parse()
                case 'P':
                        cursors();
                        if (outstanding_taxes > 0)
-                               lprintf("\nYou presently owe %d gp in taxes.", (long) outstanding_taxes);
+                               lprintf("\nYou presently owe %ld gp in taxes.",
+                                       (long) outstanding_taxes);
                        else
                                lprcat("\nYou do not owe any taxes.");
                        return;
@@ -956,7 +978,7 @@ parse()
 }
 
 void
-parse2()
+parse2(void)
 {
        if (c[HASTEMONST])
                movemonst();
@@ -965,9 +987,8 @@ parse2()
        regen();
 }
 
-void
-run(dir)
-       int             dir;
+static void
+run(int dir)
 {
        int    i;
        i = 1;
@@ -990,8 +1011,8 @@ run(dir)
 /*
        function to wield a weapon
  */
-void
-wield()
+static void
+wield(void)
 {
        int    i;
        while (1) {
@@ -1028,16 +1049,14 @@ wield()
 /*
        common routine to say you don't have an item
  */
-void
-ydhi(x)
-       int             x;
+static void
+ydhi(int x)
 {
        cursors();
        lprintf("\nYou don't have item %c!", x);
 }
-void
-ycwi(x)
-       int             x;
+static void
+ycwi(int x)
 {
        cursors();
        lprintf("\nYou can't wield item %c!", x);
@@ -1046,8 +1065,8 @@ ycwi(x)
 /*
        function to wear armor
  */
-void
-wear()
+static void
+wear(void)
 {
        int    i;
        while (1) {
@@ -1098,11 +1117,11 @@ wear()
 /*
        function to drop an object
  */
-void
-dropobj()
+static void
+dropobj(void)
 {
        int    i;
-       char  *p;
+       unsigned char  *p;
        long            amt;
        p = &item[playerx][playery];
        while (1) {
@@ -1146,7 +1165,7 @@ dropobj()
                                        amt = 32767000L;
                                }
                                c[GOLD] -= amt;
-                               lprintf("You drop %d gold pieces", (long) amt);
+                               lprintf("You drop %ld gold pieces", (long)amt);
                                iarg[playerx][playery] = i;
                                bottomgold();
                                know[playerx][playery] = 0;
@@ -1162,8 +1181,8 @@ dropobj()
 /*
  *     readscr()               Subroutine to read a scroll one is carrying
  */
-void
-readscr()
+static void
+readscr(void)
 {
        int    i;
        while (1) {
@@ -1197,11 +1216,12 @@ readscr()
 /*
  *     subroutine to eat a cookie one is carrying
  */
-void
-eatcookie()
+static void
+eatcookie(void)
 {
-       int    i;
-       char           *p;
+       const char *p;
+       int i;
+
        while (1) {
                if ((i = whatitem("eat")) == '\33')
                        return;
@@ -1234,8 +1254,8 @@ eatcookie()
 /*
  *     subroutine to quaff a potion one is carrying
  */
-void
-quaff()
+static void
+quaff(void)
 {
        int    i;
        while (1) {
@@ -1264,16 +1284,15 @@ quaff()
 /*
        function to ask what player wants to do
  */
-int
-whatitem(str)
-       char           *str;
+static int
+whatitem(const char *str)
 {
        int             i;
        cursors();
        lprintf("\nWhat do you want to %s [* for all] ? ", str);
        i = 0;
        while (i > 'z' || (i < 'a' && i != '*' && i != '\33' && i != '.'))
-               i = lgetchar();
+               i = ttgetch();
        if (i == '\33')
                lprcat(" aborted");
        return (i);
@@ -1284,13 +1303,12 @@ whatitem(str)
        and allow * to mean return amt, else return the number entered
  */
 unsigned long 
-readnum(mx)
-       long            mx;
+readnum(long mx)
 {
        int    i;
        unsigned long amt = 0;
        sncbr();
-       if ((i = lgetchar()) == '*')
+       if ((i = ttgetch()) == '*')
                amt = mx;       /* allow him to say * for all gold */
        else
                while (i != '\n') {
@@ -1301,7 +1319,7 @@ readnum(mx)
                        }
                        if ((i <= '9') && (i >= '0') && (amt < 99999999))
                                amt = amt * 10 + i - '0';
-                       i = lgetchar();
+                       i = ttgetch();
                }
        scbr();
        return (amt);