Annotation of 43BSDReno/games/warp/warp.h, revision 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.