]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - atc/input.c
don't install in /usr/share if NOSHARE is defined
[bsdgames-darwin.git] / atc / input.c
index 054e02fd000af2ef0e8a83ef84d2c82cdb286ec4..eb0fa9e6955aa4a802e74ff203984f8de55d71c9 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: input.c,v 1.5 1997/01/13 06:50:25 tls Exp $    */
+/*     $NetBSD: input.c,v 1.10 1998/09/13 15:20:31 hubertf Exp $       */
 
 /*-
  * Copyright (c) 1990, 1993
  * For more info on this and all of my stuff, mail edjames@berkeley.edu.
  */
 
+#include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)input.c    8.1 (Berkeley) 5/31/93";
 #else
-static char rcsid[] = "$NetBSD: input.c,v 1.5 1997/01/13 06:50:25 tls Exp $";
+__RCSID("$NetBSD: input.c,v 1.10 1998/09/13 15:20:31 hubertf Exp $");
 #endif
 #endif not lint
 
@@ -60,9 +61,6 @@ static char rcsid[] = "$NetBSD: input.c,v 1.5 1997/01/13 06:50:25 tls Exp $";
 #define MAXDEPTH       15
 
 #define RETTOKEN       '\n'
-#ifdef SYSV
-#define CRTOKEN                '\r'
-#endif
 #define REDRAWTOKEN    '\014'  /* CTRL(L) */
 #define        SHELLTOKEN      '!'
 #define HELPTOKEN      '?'
@@ -73,7 +71,7 @@ typedef struct {
        int     token;
        int     to_state;
        char    *str;
-       char    *(*func)();
+       char    *(*func) __P((char));
 } RULE;
 
 typedef struct {
@@ -99,16 +97,9 @@ typedef struct {
 
 #define NUMSTATES      NUMELS(st)
 
-char   *setplane(), *circle(), *left(), *right(), *Left(), *Right(), 
-       *beacon(), *ex_it(), *climb(), *descend(), *setalt(), *setrelalt(), 
-       *benum(), *to_dir(), *rel_dir(), *delayb(), *mark(), *unmark(),
-       *airport(), *turn(), *ignore();
 
 RULE   state0[] = {    { ALPHATOKEN,   1,      "%c:",          setplane},
                        { RETTOKEN,     -1,     "",             NULL    },
-#ifdef SYSV
-                       { CRTOKEN,      -1,     "",             NULL    },
-#endif
                        { HELPTOKEN,    12,     " [a-z]<ret>",  NULL    }},
        state1[] = {    { 't',          2,      " turn",        turn    },      
                        { 'a',          3,      " altitude:",   NULL    },      
@@ -140,9 +131,6 @@ RULE        state0[] = {    { ALPHATOKEN,   1,      "%c:",          setplane},
        state4[] = {    { '@',          9,      " at",          NULL    },      
                        { 'a',          9,      " at",          NULL    },      
                        { RETTOKEN,     -1,     "",             NULL    },
-#ifdef SYSV
-                       { CRTOKEN,      -1,     "",             NULL    },
-#endif
                        { HELPTOKEN,    12,     " @a<ret>",     NULL    }},
        state5[] = {    { NUMTOKEN,     7,      "%c",           delayb  },
                        { HELPTOKEN,    12,     " [0-9]",       NULL    }},
@@ -157,14 +145,8 @@ RULE       state0[] = {    { ALPHATOKEN,   1,      "%c:",          setplane},
                        { 'a',          4,      " 270",         rel_dir },
                        { 'q',          4,      " 315",         rel_dir },
                        { RETTOKEN,     -1,     "",             NULL    },      
-#ifdef SYSV
-                       { CRTOKEN,      -1,     "",             NULL    },      
-#endif
                        { HELPTOKEN,    12,     " @a<dir><ret>",NULL    }},
        state7[] = {    { RETTOKEN,     -1,     "",             NULL    },
-#ifdef SYSV
-                       { CRTOKEN,      -1,     "",             NULL    },
-#endif
                        { HELPTOKEN,    12,     " <ret>",       NULL    }},
        state8[] = {    { NUMTOKEN,     4,      "%c",           benum   },
                        { HELPTOKEN,    12,     " [0-9]",       NULL    }},
@@ -196,6 +178,7 @@ int level;
 int    tval;
 int    dest_type, dest_no, dir;
 
+int
 pop()
 {
        if (level == 0)
@@ -210,6 +193,7 @@ pop()
        return (0);
 }
 
+void
 rezero()
 {
        iomove(0);
@@ -222,7 +206,9 @@ rezero()
        strcpy(T_STR, "");
 }
 
+void
 push(ruleno, ch)
+       int ruleno, ch;
 {
        int     newstate, newpos;
 
@@ -243,10 +229,11 @@ push(ruleno, ch)
        strcpy(T_STR, "");
 }
 
+int
 getcommand()
 {
        int     c, i, done;
-       char    *s, *(*func)();
+       char    *s, *(*func) __P((char));
        PLANE   *pp;
 
        rezero();
@@ -301,12 +288,14 @@ getcommand()
        return (0);
 }
 
+void
 noise()
 {
        putchar('\07');
        fflush(stdout);
 }
 
+int
 gettoken()
 {
        while ((tval = getAChar()) == REDRAWTOKEN || tval == SHELLTOKEN)
@@ -325,7 +314,7 @@ gettoken()
 #endif
                        if (fork() == 0)        /* child */
                        {
-                               char *shell, *base, *getenv(), *strrchr();
+                               char *shell, *base;
 
                                setuid(getuid()); /* turn off setuid bit */
                                done_screen();
@@ -372,6 +361,7 @@ gettoken()
 
 char   *
 setplane(c)
+       char c;
 {
        PLANE   *pp;
 
@@ -385,6 +375,7 @@ setplane(c)
 
 char   *
 turn(c)
+       char c;
 {
        if (p.altitude == 0)
                return ("Planes at airports may not change direction");
@@ -393,6 +384,7 @@ turn(c)
 
 char   *
 circle(c)
+       char c;
 {
        if (p.altitude == 0)
                return ("Planes cannot circle on the ground");
@@ -402,6 +394,7 @@ circle(c)
 
 char   *
 left(c)
+       char c;
 {
        dir = D_LEFT;
        p.new_dir = p.dir - 1;
@@ -412,16 +405,18 @@ left(c)
 
 char   *
 right(c)
+       char c;
 {
        dir = D_RIGHT;
        p.new_dir = p.dir + 1;
-       if (p.new_dir > MAXDIR)
+       if (p.new_dir >= MAXDIR)
                p.new_dir -= MAXDIR;
        return (NULL);
 }
 
 char   *
 Left(c)
+       char c;
 {
        p.new_dir = p.dir - 2;
        if (p.new_dir < 0)
@@ -431,15 +426,17 @@ Left(c)
 
 char   *
 Right(c)
+       char c;
 {
        p.new_dir = p.dir + 2;
-       if (p.new_dir > MAXDIR)
+       if (p.new_dir >= MAXDIR)
                p.new_dir -= MAXDIR;
        return (NULL);
 }
 
 char   *
 delayb(c)
+       char c;
 {
        int     xdiff, ydiff;
 
@@ -447,9 +444,9 @@ delayb(c)
 
        if (c >= sp->num_beacons)
                return ("Unknown beacon");
-       xdiff = sp->beacon[c].x - p.xpos;
+       xdiff = sp->beacon[(int)c].x - p.xpos;
        xdiff = SGN(xdiff);
-       ydiff = sp->beacon[c].y - p.ypos;
+       ydiff = sp->beacon[(int)c].y - p.ypos;
        ydiff = SGN(ydiff);
        if (xdiff != displacement[p.dir].dx || ydiff != displacement[p.dir].dy)
                return ("Beacon is not in flight path");
@@ -459,16 +456,16 @@ delayb(c)
        if (dest_type != T_NODEST) {
                switch (dest_type) {
                case T_BEACON:
-                       xdiff = sp->beacon[dest_no].x - sp->beacon[c].x;
-                       ydiff = sp->beacon[dest_no].y - sp->beacon[c].y;
+                       xdiff = sp->beacon[dest_no].x - sp->beacon[(int)c].x;
+                       ydiff = sp->beacon[dest_no].y - sp->beacon[(int)c].y;
                        break;
                case T_EXIT:
-                       xdiff = sp->exit[dest_no].x - sp->beacon[c].x;
-                       ydiff = sp->exit[dest_no].y - sp->beacon[c].y;
+                       xdiff = sp->exit[dest_no].x - sp->beacon[(int)c].x;
+                       ydiff = sp->exit[dest_no].y - sp->beacon[(int)c].y;
                        break;
                case T_AIRPORT:
-                       xdiff = sp->airport[dest_no].x - sp->beacon[c].x;
-                       ydiff = sp->airport[dest_no].y - sp->beacon[c].y;
+                       xdiff = sp->airport[dest_no].x - sp->beacon[(int)c].x;
+                       ydiff = sp->airport[dest_no].y - sp->beacon[(int)c].y;
                        break;
                default:
                        return ("Bad case in delayb!  Get help!");
@@ -485,6 +482,7 @@ delayb(c)
 
 char   *
 beacon(c)
+       char c;
 {
        dest_type = T_BEACON;
        return (NULL);
@@ -492,6 +490,7 @@ beacon(c)
 
 char   *
 ex_it(c)
+       char c;
 {
        dest_type = T_EXIT;
        return (NULL);
@@ -499,6 +498,7 @@ ex_it(c)
 
 char   *
 airport(c)
+       char c;
 {
        dest_type = T_AIRPORT;
        return (NULL);
@@ -506,6 +506,7 @@ airport(c)
 
 char   *
 climb(c)
+       char c;
 {
        dir = D_UP;
        return (NULL);
@@ -513,6 +514,7 @@ climb(c)
 
 char   *
 descend(c)
+       char c;
 {
        dir = D_DOWN;
        return (NULL);
@@ -520,6 +522,7 @@ descend(c)
 
 char   *
 setalt(c)
+       char c;
 {
        if ((p.altitude == c - '0') && (p.new_altitude == p.altitude))
                return ("Already at that altitude");
@@ -529,6 +532,7 @@ setalt(c)
 
 char   *
 setrelalt(c)
+       char c;
 {
        if (c == 0)
                return ("altitude not changed");
@@ -553,6 +557,7 @@ setrelalt(c)
 
 char   *
 benum(c)
+       char c;
 {
        dest_no = c -= '0';
 
@@ -560,20 +565,20 @@ benum(c)
        case T_BEACON:
                if (c >= sp->num_beacons)
                        return ("Unknown beacon");
-               p.new_dir = DIR_FROM_DXDY(sp->beacon[c].x - p.xpos,
-                       sp->beacon[c].y - p.ypos);
+               p.new_dir = DIR_FROM_DXDY(sp->beacon[(int)c].x - p.xpos,
+                       sp->beacon[(int)c].y - p.ypos);
                break;
        case T_EXIT:
                if (c >= sp->num_exits)
                        return ("Unknown exit");
-               p.new_dir = DIR_FROM_DXDY(sp->exit[c].x - p.xpos,
-                       sp->exit[c].y - p.ypos);
+               p.new_dir = DIR_FROM_DXDY(sp->exit[(int)c].x - p.xpos,
+                       sp->exit[(int)c].y - p.ypos);
                break;
        case T_AIRPORT:
                if (c >= sp->num_airports)
                        return ("Unknown airport");
-               p.new_dir = DIR_FROM_DXDY(sp->airport[c].x - p.xpos,
-                       sp->airport[c].y - p.ypos);
+               p.new_dir = DIR_FROM_DXDY(sp->airport[(int)c].x - p.xpos,
+                       sp->airport[(int)c].y - p.ypos);
                break;
        default:
                return ("Unknown case in benum!  Get help!");
@@ -584,6 +589,7 @@ benum(c)
 
 char   *
 to_dir(c)
+       char c;
 {
        p.new_dir = dir_no(c);
        return (NULL);
@@ -591,6 +597,7 @@ to_dir(c)
 
 char   *
 rel_dir(c)
+       char c;
 {
        int     angle;
 
@@ -615,6 +622,7 @@ rel_dir(c)
 
 char   *
 mark(c)
+       char c;
 {
        if (p.altitude == 0)
                return ("Cannot mark planes on the ground");
@@ -626,6 +634,7 @@ mark(c)
 
 char   *
 unmark(c)
+       char c;
 {
        if (p.altitude == 0)
                return ("Cannot unmark planes on the ground");
@@ -637,6 +646,7 @@ unmark(c)
 
 char   *
 ignore(c)
+       char c;
 {
        if (p.altitude == 0)
                return ("Cannot ignore planes on the ground");
@@ -646,11 +656,13 @@ ignore(c)
        return (NULL);
 }
 
+int
 dir_no(ch)
        char    ch;
 {
        int     dir;
 
+       dir = -1;
        switch (ch) {
        case 'w':       dir = 0;        break;
        case 'e':       dir = 1;        break;