Annotation of 43BSDReno/games/warp/warp.h, revision 1.1.1.1

1.1       root        1: /* $Header: warp.h,v 7.0.1.2 86/12/12 17:08:42 lwall Exp $ */
                      2: 
                      3: /* $Log:       warp.h,v $
                      4:  * Revision 7.0.1.2  86/12/12  17:08:42  lwall
                      5:  * Baseline for net release.
                      6:  * 
                      7:  * Revision 7.0.1.1  86/10/16  10:54:26  lwall
                      8:  * Added Damage.  Fixed random bugs.
                      9:  * 
                     10:  * Revision 7.0  86/10/08  15:17:55  lwall
                     11:  * Split into separate files.  Added amoebas and pirates.
                     12:  * 
                     13:  */
                     14: 
                     15: extern int errno;
                     16: 
                     17: #include "config.h"    /* generated by Configure script */
                     18: 
                     19: #include <stdio.h>
                     20: #include <signal.h>
                     21: #include <ctype.h>
                     22: #include <sys/types.h>
                     23: #include <sys/stat.h>
                     24: #include <errno.h> 
                     25: 
                     26: /* WARPLIB must be readable and writeable by warp, but not by anyone who you
                     27:  * don't trust.  In other words, to set up warp so everyone can play and
                     28:  * no one can cheat, give warp a uid of its own and make warp setuid to
                     29:  * that uid.  WARPLIB must then NOT be made writeable by the world,
                     30:  * since no attempt is made to encrypt saved games or anything.
                     31:  * (It must be readable by the world, however, due to a strangeness in
                     32:  * access.)
                     33:  */
                     34: 
                     35: #define SAVEDIR "./"
                     36: #define NEWSFILE "warp.news"
                     37: #define HELPFILE "warp.doc"
                     38: #define LOCKFILE ".warp.lock"
                     39: #define LOGFILE "warp.log"
                     40: #define SCOREBOARD "warp.top"
                     41: #define LSCOREBOARD "warp.lowtop"
                     42: #define FSCOREBOARD "warp.funtop"
                     43: #define TMPSCOREBOARD "warp.topnew"
                     44: #define WARPMACRO "%X/Kbmap.%{TERM}"
                     45: 
                     46: /* warp library */
                     47: #ifndef WARPLIB                /* ~ and %l only ("~%l" is permissable) */
                     48: #   ifdef PRIVLIB
                     49: #      define WARPLIB PRIVLIB
                     50: #   else
                     51: #      define WARPLIB "/usr/games/warp"
                     52: #   endif
                     53: #endif
                     54: 
                     55: EXT char *warplib;
                     56: 
                     57: #define PERMMAPS 8     /* how many starmaps are permanent */
                     58: #define MAPS 20                /* how many starmaps to choose from */
                     59:                        /* (MAPS - PERMMAPS is # of half-gone universes) */
                     60: 
                     61: /*
                     62:  * Screen size info, minimum screen size is 23x40 (actually 24x80).
                     63:  * YSIZE and XSIZE should be relatively prime so that a torpedo launched
                     64:  * at an angle will eventually cover the whole screen.
                     65:  * To calculate a new position for something:
                     66:  * new_position = (current_position + delta + ?SIZE00) % ?SIZE
                     67:  * This allows for negative deltas of up to ?SIZE00 (% doesn't work right
                     68:  * on negative numbers).
                     69:  * ?SIZE01, etc. are fudges for efficiency--they already include a delta.
                     70:  */
                     71: 
                     72: #define XYSIZE 920
                     73: #define XYSIZEx4 3680
                     74: 
                     75: #define YSIZE   23
                     76: #define YSIZE00 2300
                     77: #define YSIZE01 2301
                     78: #define YSIZE99 2299
                     79: 
                     80: #define XSIZE   40
                     81: #define XSIZE00 4000
                     82: #define XSIZE01 4001
                     83: #define XSIZE99 3999
                     84: #define XSIZE02 4002
                     85: #define XSIZE98 3998
                     86: #define XSIZE03 4003
                     87: #define XSIZE97 3997
                     88: #define XSIZE08 4008
                     89: #define XSIZE92 3992
                     90: 
                     91: EXT char amb[YSIZE][XSIZE];
                     92: 
                     93: #ifdef WHOAMI
                     94: #    include <whoami.h>
                     95: #endif
                     96: 
                     97: #ifndef isalnum
                     98: #   define isalnum(c) (isalpha(c) || isdigit(c))
                     99: #endif
                    100: 
                    101: #ifdef TERMIO
                    102: #   include <termio.h>
                    103: #else
                    104: #   include <sgtty.h>
                    105: #endif
                    106: 
                    107: #include <sys/timeb.h>
                    108: 
                    109: #   include <pwd.h>
                    110: 
                    111: #define BITSPERBYTE 8
                    112: #define LBUFLEN 512    /* line buffer length */
                    113: 
                    114: #ifdef pdp11
                    115: #   define CBUFLEN 256 /* command buffer length */
                    116: #   define PUSHSIZE 128
                    117: #else
                    118: #   define CBUFLEN 512 /* command buffer length */
                    119: #   define PUSHSIZE 256
                    120: #endif
                    121: #ifdef pdp11
                    122: #   define MAXFILENAME 128
                    123: #else
                    124: #   define MAXFILENAME 512
                    125: #endif
                    126: #define FINISHCMD 0177
                    127: 
                    128: /* some handy defs */
                    129: 
                    130: #define bool char
                    131: #define TRUE (1)
                    132: #define FALSE (0)
                    133: #define Null(t) ((t)0)
                    134: #define Nullch Null(char *)
                    135: #define Nullfp Null(FILE *)
                    136: 
                    137: #define Ctl(ch) (ch & 037)
                    138: 
                    139: #define strNE(s1,s2) (strcmp(s1,s2))
                    140: #define strEQ(s1,s2) (!strcmp(s1,s2))
                    141: #define strnNE(s1,s2,l) (strncmp(s1,s2,l))
                    142: #define strnEQ(s1,s2,l) (!strncmp(s1,s2,l))
                    143: 
                    144: #define sgn(x) ((x) < 0 ? -1 : (x) > 0)
                    145: 
                    146: /* Things we can figure out ourselves */
                    147: 
                    148: #ifdef SIGPROF
                    149: #   define BSD42               /* do we have Berkeley 4.2? */
                    150: #endif
                    151: 
                    152: #ifdef FIONREAD
                    153: #   define PENDING
                    154: #else
                    155: #   ifdef O_NDELAY
                    156: #      define PENDING
                    157: #   else
                    158: #      ifdef RDCHK
                    159: #          define PENDING
                    160: #      endif
                    161: #   endif
                    162: #endif
                    163: 
                    164: #define UNLINK(victim) unlink(victim)
                    165: 
                    166: /* Valid substitutions for strings marked with % comment are:
                    167:  *     %H      Host name (yours)
                    168:  *     %L      Login name (yours)
                    169:  *     %N      Full name (yours)
                    170:  *     %O      Original working directory (where you ran warp from)
                    171:  *     %X      Warp library directory
                    172:  *     %~      Home directory
                    173:  *     %.      Directory containing . files
                    174:  *     %$      current process number
                    175:  *     %{name} Environment variable "name".  %{name-default} form allowed.
                    176:  *     %"prompt"
                    177:  *             Print prompt and insert what is typed.
                    178:  *     %`command`
                    179:  *             Insert output of command.
                    180:  *     %(test_text=pattern?if_text:else_text)
                    181:  *             Substitute if_text if test_text matches pattern, otherwise
                    182:  *             substitute else_text.  Use != for negated match.
                    183:  *             % substitutions are done on test_text, if_text, and else_text.
                    184:  *             (Note: %() only works if CONDSUB defined.)
                    185:  */
                    186: 
                    187: /* *** System Dependent Stuff *** */
                    188: 
                    189: /* NOTE: many of these are defined in the config.h file */
                    190: 
                    191: #ifndef ROOTID
                    192: #   define ROOTID 0        /* uid of superuser */
                    193: #endif
                    194: 
                    195: #   define sigset Signal
                    196: #   define sigignore(sig) Signal(sig,SIG_IGN)
                    197: 
                    198: #ifndef LOGDIRFIELD
                    199: #   define LOGDIRFIELD 6               /* Which field (origin 1) is the */
                    200:                                        /* login directory in /etc/passwd? */
                    201:                                        /* (If it is not kept in passwd, */
                    202:                                        /* but getpwnam() returns it, */
                    203:                                        /* define the symbol GETPWENT) */
                    204: #endif
                    205: #ifndef GCOSFIELD
                    206: #   define GCOSFIELD 5
                    207: #endif
                    208: 
                    209: /* Undefine any of the following features to save both I and D space */
                    210: /* In general, earlier ones are easier to get along without */
                    211: /* Pdp11's without split I and D may have to undefine them all */
                    212: #define DEBUGGING      /* include debugging code */
                    213: #define PUSHBACK       /* macros and keymaps using pushback buffer */
                    214: #define CONDSUB                /* allow %(cond?text:text) */
                    215: #define BACKTICK       /* allow %`command` */
                    216: #define PROMPTTTY      /* allow %"prompt" */
                    217: #define GETLOGIN       /* use getlogin() routine as backup to environment */
                    218:                        /* variables USER or LOGNAME */
                    219: #define TILDENAME      /* allow ~logname expansion */
                    220: #define GETWD          /* use our getwd() instead of piped in pwd */
                    221: #define SETUIDGID      /* substitute eaccess() for access() so that rn */
                    222:                        /* can run setuid or setgid */
                    223:                        /* if not setuid or setgid, you don't need it */
                    224: #define VERBOSE                /* compile in more informative messages */
                    225: #define TERSE          /* compile in shorter messages */
                    226: 
                    227: /* some dependencies among options */
                    228: 
                    229: #ifndef SETUIDGID
                    230: #   define eaccess access
                    231: #endif
                    232: 
                    233: #ifdef VERBOSE
                    234: #   ifdef TERSE
                    235: #      define IF(c) if (c)
                    236: #      define ELSE else
                    237: #   else /* !TERSE */
                    238: #      define IF(c)
                    239: #      define ELSE
                    240: #   endif
                    241: #else /* !VERBOSE */
                    242: #   ifndef TERSE
                    243: #      define TERSE
                    244: #   endif
                    245: #   define IF(c) "IF" outside of VERBOSE???
                    246: #   define ELSE "ELSE" outside of VERBOSE???
                    247: #endif
                    248: 
                    249: #ifdef DEBUGGING
                    250: #   define assert(ex) {if (!(ex)){fprintf(stderr,"Assertion failed: file %s, line %d\r\n", __FILE__, __LINE__);sig_catcher(0);}}
                    251: #else
                    252: #   define assert(ex) ;
                    253: #endif
                    254: 
                    255: #define TCSIZE 512     /* capacity for termcap strings */
                    256: 
                    257: /* End of Space Conservation Section */
                    258: 
                    259: /* More System Dependencies */
                    260: 
                    261: /* preferred shell for use in doshell routine */
                    262: /*  ksh or sh would be okay here */
                    263: #ifndef PREFSHELL
                    264: #   define PREFSHELL "/bin/csh"
                    265: #endif
                    266: 
                    267: /* path to fastest starting shell */
                    268: #ifndef SH
                    269: #   define SH "/bin/sh"
                    270: #endif
                    271: 
                    272: /* location of macro file */
                    273: #ifndef WARPMACRO
                    274: #   ifdef PUSHBACK
                    275: #      define WARPMACRO "%./.warpmac"
                    276: #   endif
                    277: #endif
                    278: 
                    279: /* location of full name */
                    280: #ifndef FULLNAMEFILE
                    281: #   ifndef PASSNAMES
                    282: #      define FULLNAMEFILE "%./.fullname"
                    283: #   endif
                    284: #endif
                    285: 
                    286: /* a motd-like file for warp */
                    287: #ifndef WARPNEWSNAME           /* % and ~ */
                    288: #   define WARPNEWSNAME "%X/warp.news"
                    289: #endif
                    290: 
                    291: /* typedefs */
                    292: 
                    293: typedef unsigned int   MEM_SIZE;       /* for passing to malloc */
                    294: 
                    295: /* *** end of the machine dependent stuff *** */
                    296: 
                    297: /* GLOBAL THINGS */
                    298: 
                    299: /* file statistics area */
                    300: 
                    301: EXT struct stat filestat;
                    302: 
                    303: /* various things of type char */
                    304: 
                    305: char   *index();
                    306: char   *rindex();
                    307: char   *getenv();
                    308: char   *strcat();
                    309: char   *strcpy();
                    310: 
                    311: EXT char buf[LBUFLEN+1];       /* general purpose line buffer */
                    312: 
                    313: EXT char *cwd INIT(Nullch);            /* current working directory */
                    314: 
                    315: /* switches */
                    316: 
                    317: #ifdef DEBUGGING
                    318:     EXT int debug INIT(0);                             /* -D */
                    319: #   define DEB_FILEXP 64 
                    320: #endif
                    321: 
                    322: #ifdef VERBOSE
                    323: #   ifdef TERSE
                    324:        EXT bool verbose INIT(TRUE);                    /* +t */
                    325: #   endif
                    326: #endif
                    327: 
                    328: /* miscellania */
                    329: 
                    330: EXT FILE *tmpfp INIT(Nullfp);  /* scratch fp */
                    331: 
                    332: #define NOMARKING 0
                    333: #define STANDOUT 1
                    334: #define UNDERLINE 2
                    335: 
                    336: /* Factored strings */
                    337: 
                    338: EXT char nullstr[] INIT("");
                    339: EXT char readerr[] INIT("warp read error");
                    340: EXT char cantopen[] INIT("Can't open %s\r\n");
                    341: 
                    342: #ifdef VERBOSE
                    343:     EXT char nocd[] INIT("Can't chdir to directory %s\r\n");
                    344: #else
                    345:     EXT char nocd[] INIT("Can't find %s\r\n");
                    346: #endif
                    347: 
                    348: extern int errno;
                    349: 
                    350: EXT bool justonemoretime INIT(TRUE);
                    351: EXT bool keepgoing INIT(TRUE);
                    352: 
                    353: EXT bool friendspec INIT(FALSE);
                    354: EXT bool piratespec INIT(FALSE);
                    355: EXT bool amoebaspec INIT(FALSE);
                    356: EXT bool starspec INIT(FALSE);
                    357: EXT bool klingspec INIT(FALSE);
                    358: EXT bool apolspec INIT(FALSE);
                    359: EXT bool crushspec INIT(FALSE);
                    360: EXT bool romspec INIT(FALSE);
                    361: EXT bool prespec INIT(FALSE);
                    362: EXT bool tholspec INIT(FALSE);
                    363: EXT bool gornspec INIT(FALSE);
                    364: EXT bool beginner INIT(FALSE);
                    365: EXT bool massacre INIT(FALSE);
                    366: EXT bool lowspeed INIT(FALSE);
                    367: EXT bool debugging INIT(FALSE);
                    368: EXT bool didkill INIT(FALSE);
                    369: EXT bool experimenting INIT(FALSE);
                    370: EXT bool scorespec INIT(FALSE);
                    371: EXT bool metakey INIT(FALSE);
                    372: 
                    373: EXT bool bombed_out;
                    374: EXT bool panic INIT(FALSE);
                    375: EXT bool madgorns;
                    376: 
                    377: EXT int madfriends;
                    378: 
                    379: EXT int inumpirates;
                    380: EXT int numpirates;
                    381: EXT int inumfriends;
                    382: EXT int numfriends;
                    383: EXT int inumamoebas;
                    384: EXT int numamoebas;
                    385: EXT int inumstars;
                    386: EXT int numstars;
                    387: EXT int inumenemies;
                    388: EXT int numenemies;
                    389: EXT int inumroms;
                    390: EXT int inumthols;
                    391: EXT int inumapollos;
                    392: EXT int numapollos;
                    393: EXT int apolloflag;
                    394: EXT int inumcrushes;
                    395: EXT int numcrushes;
                    396: EXT int inumgorns;
                    397: EXT int numgorns;
                    398: EXT int deados;
                    399: EXT int deadmudds;
                    400: EXT int smarts;
                    401: EXT int ismarts INIT(0);
                    402: EXT int numos INIT(0);
                    403: EXT int numxes INIT(0);
                    404: EXT int ient;
                    405: EXT int numents;
                    406: EXT int ibase;
                    407: EXT int numbases;
                    408: EXT int inuminhab;
                    409: EXT int numinhab;
                    410: EXT int wave;
                    411: EXT int cumsmarts;
                    412: EXT int prescene INIT(-1);
                    413: EXT int scandist;
                    414: EXT int antibase;
                    415: EXT int sm35;
                    416: EXT int sm45;
                    417: EXT int sm50;
                    418: EXT int sm55;
                    419: EXT int sm80;
                    420: EXT int sm95;
                    421: EXT int entmax;
                    422: EXT int basemax;
                    423: EXT int enemshields;
                    424: EXT int super;
                    425: EXT int whenok;
                    426: EXT int yamblast;
                    427: EXT int xamblast;
                    428: EXT int ambsize;
                    429: 
                    430: EXT char spbuf[512];
                    431: 
                    432: char *index(), *ttyname(), *malloc(), *ctime(), *strcpy();
                    433: char *getenv(), cmstore(), *tgoto();
                    434: long atol();
                    435: 
                    436: #define Fclose (void)fclose
                    437: #define Fflush (void)fflush
                    438: #define Fgets (void)fgets
                    439: #define Sprintf (void)sprintf
                    440: #define Signal (void)signal
                    441: #define Safecpy (void)safecpy
                    442: #define Cpytill (void)cpytill
                    443: #define Tract (void)tract
                    444: #define Make_object (void)make_object
                    445: #define Read_tty (void)read_tty

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.