Annotation of sbbs/src/sbbs3/sbbsdefs.h, revision 1.1.1.1

1.1       root        1: /* sbbsdefs.h */
                      2: 
                      3: /* Synchronet constants, macros, and structure definitions */
                      4: 
                      5: /* $Id: sbbsdefs.h,v 1.146 2006/09/25 06:09:37 deuce Exp $ */
                      6: 
                      7: /****************************************************************************
                      8:  * @format.tab-size 4          (Plain Text/Source Code File Header)                    *
                      9:  * @format.use-tabs true       (see http://www.synchro.net/ptsc_hdr.html)              *
                     10:  *                                                                                                                                                     *
                     11:  * Copyright 2006 Rob Swindell - http://www.synchro.net/copyright.html         *
                     12:  *                                                                                                                                                     *
                     13:  * This program is free software; you can redistribute it and/or                       *
                     14:  * modify it under the terms of the GNU General Public License                         *
                     15:  * as published by the Free Software Foundation; either version 2                      *
                     16:  * of the License, or (at your option) any later version.                                      *
                     17:  * See the GNU General Public License for more details: gpl.txt or                     *
                     18:  * http://www.fsf.org/copyleft/gpl.html                                                                                *
                     19:  *                                                                                                                                                     *
                     20:  * Anonymous FTP access to the most recent released source is available at     *
                     21:  * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net     *
                     22:  *                                                                                                                                                     *
                     23:  * Anonymous CVS access to the development source and modification history     *
                     24:  * is available at cvs.synchro.net:/cvsroot/sbbs, example:                                     *
                     25:  * cvs -d :pserver:[email protected]:/cvsroot/sbbs login                       *
                     26:  *     (just hit return, no password is necessary)                                                     *
                     27:  * cvs -d :pserver:[email protected]:/cvsroot/sbbs checkout src                *
                     28:  *                                                                                                                                                     *
                     29:  * For Synchronet coding style and modification guidelines, see                                *
                     30:  * http://www.synchro.net/source.html                                                                          *
                     31:  *                                                                                                                                                     *
                     32:  * You are encouraged to submit any modifications (preferably in Unix diff     *
                     33:  * format) via e-mail to [email protected]                                                                      *
                     34:  *                                                                                                                                                     *
                     35:  * Note: If this box doesn't appear square, then you need to fix your tabs.    *
                     36:  ****************************************************************************/
                     37: 
                     38: #ifndef _SBBSDEFS_H
                     39: #define _SBBSDEFS_H
                     40: 
                     41: #include <time.h>
                     42: 
                     43: #include "gen_defs.h"  /* uchar, ushort, uint, ulong, etc. */
                     44: #include "nodedefs.h"  /* node_t */
                     45: #include "fidodefs.h"  /* fmsghdr_t, fpkthdr_t, FIDO_*, etc. */
                     46: #include "xpbeep.h"            /* BEEP() */
                     47: #include "str_list.h"  /* str_list_t */
                     48: 
                     49: /*************/
                     50: /* Constants */
                     51: /*************/
                     52: 
                     53: #define VERSION        "3.14"  /* Version: Major.minor  */
                     54: #define REVISION       'a'     /* Revision: lowercase letter */
                     55: #define VERSION_NUM    (31400   + (tolower(REVISION)-'a'))
                     56: #define VERSION_HEX    (0x31400 + (tolower(REVISION)-'a'))
                     57: 
                     58: #define VERSION_NOTICE         "Synchronet BBS for "PLATFORM_DESC\
                     59:                                                                "  Version " VERSION
                     60: #define SYNCHRONET_CRC         0x9BCDD162
                     61: #define COPYRIGHT_NOTICE       "Copyright 2006 Rob Swindell"
                     62: #define COPYRIGHT_CRC          0xE16A6CC1
                     63: 
                     64: #define Y2K_2DIGIT_WINDOW      70
                     65: 
                     66: #define FNOPEN_BUF_SIZE                (2*1024)
                     67: 
                     68: #define ILLEGAL_FILENAME_CHARS "\\/|<>+[]:=\";,%"
                     69: 
                     70: #define BIND_FAILURE_HELP      "!Another application or service may be using this port"
                     71: #define UNKNOWN_LOAD_ERROR     "Unknown load error - Library mismatch?"
                     72: 
                     73: #define        JAVASCRIPT_MAX_BYTES            (8*1024*1024)
                     74: #define JAVASCRIPT_CONTEXT_STACK       (16*1024)
                     75: #define JAVASCRIPT_THREAD_STACK                (256*1024)
                     76: #define JAVASCRIPT_BRANCH_LIMIT                99999999
                     77: #define JAVASCRIPT_YIELD_INTERVAL      10000
                     78: #define JAVASCRIPT_GC_INTERVAL         100 
                     79: 
                     80: typedef struct {
                     81:        ulong   counter;
                     82:        ulong   limit;
                     83:        ulong   yield_interval;
                     84:        ulong   gc_interval;
                     85:        ulong   gc_attempts;
                     86:        BOOL    auto_terminate;
                     87:        BOOL*   terminated;
                     88:        str_list_t      exit_func;
                     89: } js_branch_t;
                     90: 
                     91: #define JSVAL_NULL_OR_VOID(val)                (JSVAL_IS_NULL(val) || JSVAL_IS_VOID(val))
                     92: 
                     93: /************/
                     94: /* Maximums */
                     95: /************/
                     96: 
                     97: #define MAX_NODES              250
                     98: 
                     99: #define MAX_FILES        10000 /* Maximum number of files per dir                      */
                    100: #define MAX_USERXFER   500 /* Maximum number of dest. users of usrxfer */
                    101: 
                    102: 
                    103: #define LEN_DIR                63              /* Maximum length of directory paths            */
                    104: #define LEN_CMD                63              /* Maximum length of command lines                      */
                    105: 
                    106:                                                        /* MS-DOS limited values                                        */
                    107: #define LEN_CODE       8               /* Maximum length of internal codes                     */
                    108: #define LEN_QWKID      8               /* Maximum length of QWK-ID                                     */
                    109: #define LEN_MODNAME 8          /* Maximum length of loadable module name       */
                    110: #define LEN_SIFNAME 8          /* Maximum length of SIF filename                       */
                    111: #define LEN_EXTCODE (LEN_CODE*2)       /* Code prefix + suffix */
                    112: 
                    113:                                                        /* Lengths of various strings                           */
                    114: #define LEN_GSNAME     15              /* Group/Lib short name                                         */
                    115: #define LEN_GLNAME     40              /* Group/Lib long name                                          */
                    116: #define LEN_SSNAME     25              /* Sub/Dir short name                                           */
                    117: #define LEN_SLNAME     40              /* Sub/Dir long name                                            */
                    118:                                                
                    119:                                                                        /* User Questions                                               */
                    120: #define UQ_ALIASES             (1L<<0)         /* Ask for alias                                                */
                    121: #define UQ_LOCATION            (1L<<1)         /* Ask for location                                     */
                    122: #define UQ_ADDRESS             (1L<<2)         /* Ask for address                                              */
                    123: #define UQ_PHONE               (1L<<3)         /* Ask for phone number                                 */
                    124: #define UQ_HANDLE              (1L<<4)         /* Ask for chat handle                                  */
                    125: #define UQ_DUPHAND             (1L<<5)         /* Search for duplicate handles                 */
                    126: #define UQ_SEX                 (1L<<6)         /* Ask for sex :)                                               */
                    127: #define UQ_BIRTH               (1L<<7)         /* Ask for birth date                                   */
                    128: #define UQ_COMP                (1L<<8)         /* Ask for computer type                                */
                    129: #define UQ_MC_COMP             (1L<<9)         /* Multiple choice computer type                */
                    130: #define UQ_REALNAME            (1L<<10)        /* Ask for real name                                    */
                    131: #define UQ_DUPREAL             (1L<<11)        /* Search for duplicate real names              */
                    132: #define UQ_COMPANY             (1L<<12)        /* Ask for company name                                 */
                    133: #define UQ_NOEXASC             (1L<<13)        /* Don't allow ex-ASCII in user text    */
                    134: #define UQ_CMDSHELL            (1L<<14)        /* Ask for command shell                                */
                    135: #define UQ_XEDIT               (1L<<15)        /* Ask for external editor                              */
                    136: #define UQ_NODEF               (1L<<16)        /* Don't ask for default settings       */
                    137: #define UQ_NOCOMMAS            (1L<<17)        /* Do not require commas in location    */
                    138: #define UQ_NONETMAIL   (1L<<18)        /* Don't ask for e-mail/netmail address */
                    139: #define UQ_NOUPRLWR            (1L<<19)        /* Don't force upper/lower case strings */
                    140:                                                
                    141:                                                
                    142:                                                                        /* Different bits in sys_misc                           */
                    143: #define SM_CLOSED              (1L<<0)         /* System is clsoed to New Users                        */
                    144: #define SM_SYSSTAT             (1L<<1)         /* Sysops activity included in statistics       */
                    145: #define SM_NOSYSINFO   (1L<<2)         /* Suppress system info display at logon        */
                    146: #define SM_PWEDIT              (1L<<3)         /* Allow users to change their passwords        */
                    147: #define SM_RA_EMU              (1L<<4)         /* Reverse R/A commands at msg read prompt      */
                    148: #define SM_ANON_EM             (1L<<5)         /* Allow anonymous e-mail                                       */
                    149: #define SM_LISTLOC             (1L<<6)         /* Use location of caller in user lists         */
                    150: #define SM_WILDCAT             (1L<<7)         /* Expand Wildcat color codes in messages       */
                    151: #define SM_PCBOARD             (1L<<8)         /* Expand PCBoard color codes in messages       */
                    152: #define SM_WWIV                (1L<<9)         /* Expand WWIV color codes in messages          */
                    153: #define SM_CELERITY            (1L<<10)        /* Expand Celerity color codes in messages      */
                    154: #define SM_RENEGADE            (1L<<11)        /* Expand Renegade color codes in messages      */
                    155: #define SM_ECHO_PW             (1L<<12)        /* Echo passwords locally                                       */
                    156: #define SM_LOCAL_TZ            (1L<<13)        /* Use local timezone representations           */
                    157: #define SM_AUTO_DST            (1L<<14)        /* Automatic Daylight Savings Toggle (US)   */
                    158: #define SM_R_SYSOP             (1L<<15)        /* Allow remote sysop logon/commands            */
                    159: #define SM_QUOTE_EM            (1L<<16)        /* Allow quoting of e-mail                                      */
                    160: #define SM_EURODATE            (1L<<17)        /* Europian date format (DD/MM/YY)                      */
                    161: #define SM_MILITARY            (1L<<18)        /* Military time format                                         */
                    162: #define SM_TIMEBANK            (1L<<19)        /* Allow time bank functions                            */
                    163: #define SM_FILE_EM             (1L<<20)        /* Allow file attachments in E-mail             */
                    164: #define SM_SHRTPAGE            (1L<<21)        /* Short sysop page                                             */
                    165: #define SM_TIME_EXP            (1L<<22)        /* Set to expired values if out-of-time         */
                    166: #define SM_FASTMAIL            (1L<<23)        /* Fast e-mail storage mode                             */
                    167: #define SM_NONODELIST  (1L<<24)        /* Suppress active node list during logon       */
                    168: #define SM_ERRALARM            (1L<<25)        /* Error beeps on                                                       */
                    169: #define SM_FWDTONET            (1L<<26)        /* Allow forwarding of e-mail to netmail        */
                    170: #define SM_DELREADM            (1L<<27)        /* Delete read mail automatically                       */
                    171: #define SM_NOCDTCVT            (1L<<28)        /* No credit to minute conversions allowed      */
                    172: #define SM_DELEMAIL            (1L<<29)        /* Physically remove deleted e-mail immed.      */
                    173: #define SM_USRVDELM            (1L<<30)        /* Users can see deleted msgs                           */
                    174: #define SM_SYSVDELM            (1L<<31)        /* Sysops can see deleted msgs                          */
                    175:                                                
                    176:                                                                        /* Different bits in node_misc                          */
                    177: #define NM_NO_NUM              (1<<8)          /* Don't allow logons by user number        */
                    178: #define NM_LOGON_R             (1<<9)          /* Allow logons by user real name                       */
                    179: #define NM_LOGON_P             (1<<10)         /* Secure logons (always ask for password)      */
                    180: #define NM_LOWPRIO             (1<<15)         /* Always use low priority input                        */
                    181: #define NM_7BITONLY            (1L<<16)        /* Except 7-bit input only (E71 terminals)      */
                    182: #define NM_NOPAUSESPIN (1L<<18)        /* No spinning cursor at pause prompt           */
                    183: #define NM_CLOSENODEDAB        (1L<<19)        /* Keep node.dab file closed (for Samba)        */
                    184: 
                    185:                                                                        /* Miscellaneous Modem Settings (mdm_misc)  */
                    186: #define MDM_CTS                (1<<0)          /* Use hardware send flow control                       */
                    187: #define MDM_RTS                (1<<1)          /* Use hardware recv flow control                       */
                    188: #define MDM_STAYHIGH   (1<<2)          /* Stay at highest DTE rate                             */
                    189: #define MDM_CALLERID   (1<<3)          /* Supports Caller ID                                           */
                    190: #define MDM_DUMB               (1<<4)          /* Just watch DCD for answer - dumb modem       */
                    191: #define MDM_NODTR              (1<<5)          /* Don't drop DTR for hang-up               */
                    192: #define MDM_KNOWNRES   (1<<6)          /* Allow known result codes only                        */
                    193: #define MDM_VERBAL             (1<<7)          /* Use verbal result codes                                      */
                    194: 
                    195:                                                
                    196:                                                                        /* Bit values for level_misc[x]         */
                    197: #define LEVEL_EXPTOLVL (1<<0)          /* Expire to level_expireto[x]          */
                    198: #define LEVEL_EXPTOVAL (1<<1)          /* Expire to val[level_expireto[x]] */
                    199: 
                    200:                                                                        /* Bit values for prot[x].misc */
                    201: #define PROT_DSZLOG            (1<<0)      /* Supports DSZ Log */
                    202: #define PROT_NATIVE            (1<<1)          /* Native (32-bit) executable */
                    203: #define PROT_SOCKET            (1<<2)          /* Use socket I/O, not stdio on *nix */
                    204: 
                    205:                                                                        /* Bit values in netmail_misc */
                    206: 
                    207: #define NMAIL_ALLOW    (1<<0)          /* Allow NetMail */
                    208: #define NMAIL_CRASH    (1<<1)          /* Default netmail to crash */
                    209: #define NMAIL_HOLD             (1<<2)          /* Default netmail to hold */
                    210: #define NMAIL_KILL             (1<<3)          /* Default netmail to kill after sent */
                    211: #define NMAIL_ALIAS    (1<<4)          /* Use Aliases in NetMail */
                    212: #define NMAIL_FILE             (1<<5)          /* Allow file attachments */
                    213: #define NMAIL_DIRECT   (1<<6)          /* Default netmail to direct */
                    214: 
                    215:                                                                        /* Bit values for subscan_t.cfg and sav_cfg     */
                    216: #define SUB_CFG_NSCAN  0x0005          /* Auto-scan for new messages                           */
                    217: #define SUB_CFG_SSCAN  0x0002          /* Auto-scan for unread messages to you         */
                    218: #define SUB_CFG_YSCAN  0x0100          /* Auto-scan for new messages to you only       */
                    219:                                                                        /* (bits 8-15 default to off)                           */
                    220: 
                    221:                                                                        /* Bit values for sub[x].misc */
                    222: #define SUB_QNET               (1L<<3)         /* Sub-board is netted via QWK network */
                    223: #define SUB_PNET               (1L<<4)         /* Sub-board is netted via PostLink */
                    224: #define SUB_FIDO               (1L<<5)         /* Sub-board is netted via FidoNet */
                    225: #define SUB_PRIV               (1L<<6)         /* Allow private posts on sub */
                    226: #define SUB_PONLY              (1L<<7)         /* Private posts only */
                    227: #define SUB_ANON               (1L<<8)         /* Allow anonymous posts on sub */
                    228: #define SUB_AONLY              (1L<<9)         /* Anonymous only */
                    229: #define SUB_NAME               (1L<<10)        /* Must use real names */
                    230: #define SUB_DEL                (1L<<11)        /* Allow users to delete messages */
                    231: #define SUB_DELLAST            (1L<<12)        /* Allow users to delete last msg only */
                    232: #define SUB_FORCED             (1L<<13)        /* Sub-board is forced scanning */
                    233: #define SUB_NOTAG              (1L<<14)        /* Don't add tag or origin lines */
                    234: #define SUB_TOUSER             (1L<<15)        /* Prompt for to user on posts */
                    235: #define SUB_ASCII              (1L<<16)        /* ASCII characters only */
                    236: #define SUB_QUOTE              (1L<<17)        /* Allow online quoting */
                    237: #define SUB_NSDEF              (1L<<18)        /* New-Scan on by default */
                    238: #define SUB_INET               (1L<<19)        /* Sub-board is netted via Internet */
                    239: #define SUB_FAST               (1L<<20)        /* Fast storage mode */
                    240: #define SUB_KILL               (1L<<21)        /* Kill read messages automatically */
                    241: #define SUB_KILLP              (1L<<22)        /* Kill read pvt messages automatically */
                    242: #define SUB_SYSPERM            (1L<<23)        /* Sysop messages are permament */
                    243: #define SUB_GATE               (1L<<24)        /* Gateway between Network types */
                    244: #define SUB_LZH                (1L<<25)        /* Use LZH compression for msgs */
                    245: #define SUB_SSDEF              (1L<<26)        /* Default ON for Scan for Your msgs */
                    246: #define SUB_HYPER              (1L<<27)        /* Hyper allocation */
                    247: #define SUB_EDIT               (1L<<28)        /* Users can edit message text after posting */
                    248: #define SUB_EDITLAST   (1L<<29)        /* Users can edit last message only */
                    249: #define SUB_NOUSERSIG  (1L<<30)        /* Suppress user signatures */
                    250: #define SUB_HDRMOD             (1L<<31)        /* Modified sub-board header info (SCFG) */
                    251: 
                    252:                                     /* Bit values for dir[x].misc */
                    253: #define DIR_FCHK       (1<<0)                  /* Check for file existance */
                    254: #define DIR_RATE       (1<<1)                  /* Force uploads to be rated G,R, or X */
                    255: #define DIR_MULT       (1<<2)                  /* Ask for multi-disk numbering */
                    256: #define DIR_DUPES      (1<<3)                  /* Search this dir for upload dupes */
                    257: #define DIR_FREE       (1<<4)                  /* Free downloads */
                    258: #define DIR_TFREE      (1<<5)                  /* Time to download is free */
                    259: #define DIR_CDTUL      (1<<6)                  /* Credit Uploads */
                    260: #define DIR_CDTDL      (1<<7)                  /* Credit Downloads */
                    261: #define DIR_ANON       (1<<8)                  /* Anonymous uploads */
                    262: #define DIR_AONLY      (1<<9)                  /* Anonymous only */
                    263: #define DIR_ULDATE     (1<<10)                 /* Include upload date in listing */
                    264: #define DIR_DIZ        (1<<11)                 /* FILE_ID.DIZ and DESC.SDI support */
                    265: #define DIR_NOSCAN     (1<<12)                 /* Don't new-scan this directory */
                    266: #define DIR_NOAUTO     (1<<13)                 /* Don't auto-add this directory */
                    267: #define DIR_ULTIME     (1<<14)                 /* Deduct time during uploads */
                    268: #define DIR_CDTMIN     (1<<15)                 /* Give uploader minutes instead of cdt */
                    269: #define DIR_SINCEDL (1<<16)                    /* Purge based on days since last dl */
                    270: #define DIR_MOVENEW (1<<17)                    /* Files marked as new when moved */
                    271: #define DIR_QUIET      (1<<18)                 /* Do not notify uploader of downloads */
                    272: #define DIR_NOSTAT     (1<<19)                 /* Do not include transfers in system stats */
                    273: 
                    274:                                     /* Bit values for file_t.misc */
                    275: #define FM_EXTDESC  (1<<0)          /* Extended description exists */
                    276: #define FM_ANON        (1<<1)                  /* Anonymous upload */
                    277: 
                    278:                                                                        /* Bit values for cfg.file_misc                         */
                    279: #define FM_NO_LFN      (1<<0)                  /* No long filenames in listings                        */
                    280: 
                    281:                                                                        /* Bit values for cfg.msg_misc                          */
                    282: #define MM_REALNAME    (1<<16)                 /* Allow receipt of e-mail using real names     */
                    283: 
                    284:                                                                        /* errormsg() codes */
                    285: #define ERR_OPEN       "opening"               /* opening a file */
                    286: #define ERR_CLOSE      "closing"               /* close a file */
                    287: #define ERR_FDOPEN     "fdopen"                /* associating a stream with fd */
                    288: #define ERR_READ       "reading"               /* reading from file */
                    289: #define ERR_WRITE      "writing"               /* writing to file */
                    290: #define ERR_REMOVE     "removing"              /* removing a file */
                    291: #define ERR_ALLOC      "allocating"    /* allocating memory */
                    292: #define ERR_CHK                "checking"              /* checking */
                    293: #define ERR_LEN                "checking length"
                    294: #define ERR_EXEC       "executing"             /* executing */
                    295: #define ERR_CREATE     "creating"              /* creating */
                    296: #define ERR_LOCK       "locking"               /* locking */
                    297: #define ERR_UNLOCK     "unlocking"             /* unlocking */
                    298: #define ERR_TIMEOUT    "timeout"               /* timeout waiting for resource */      
                    299: #define ERR_IOCTL      "sending IOCTL" /* IOCTL error */
                    300: #define ERR_SEEK       "seeking"               /* SEEKing error */
                    301: 
                    302: enum {                              /* Values for dir[x].sort */
                    303:      SORT_NAME_A                    /* Sort by filename, ascending */
                    304:     ,SORT_NAME_D                    /* Sort by filename, descending */
                    305:     ,SORT_DATE_A                    /* Sort by upload date, ascending */
                    306:     ,SORT_DATE_D                    /* Sort by upload date, descending */
                    307:     };
                    308: 
                    309: enum {
                    310:         clr_mnehigh
                    311:        ,clr_mnelow
                    312:        ,clr_mnecmd
                    313:        ,clr_inputline
                    314:        ,clr_err
                    315:        ,clr_nodenum
                    316:        ,clr_nodeuser
                    317:        ,clr_nodestatus
                    318:        ,clr_filename
                    319:        ,clr_filecdt
                    320:        ,clr_filedesc
                    321:        ,clr_filelsthdrbox
                    322:        ,clr_filelstline
                    323:        ,clr_chatlocal
                    324:        ,clr_chatremote
                    325:        ,clr_multichat
                    326:        ,clr_external
                    327:        ,MIN_COLORS 
                    328: };
                    329: 
                    330: enum {                                                         /* Values for xtrn_t.type                               */
                    331:         XTRN_NONE                                              /* No data file needed                                  */
                    332:        ,XTRN_SBBS                                              /* Synchronet external                                  */
                    333:        ,XTRN_WWIV                                              /* WWIV external                                                */
                    334:        ,XTRN_GAP                                               /* Gap door                                                     */
                    335:        ,XTRN_RBBS                                              /* RBBS, QBBS, or Remote Access                 */
                    336:        ,XTRN_WILDCAT                                   /* Wildcat                                                              */
                    337:        ,XTRN_PCBOARD                                   /* PCBoard                                                              */
                    338:        ,XTRN_SPITFIRE                                  /* SpitFire                                                     */
                    339:        ,XTRN_UTI                                               /* UTI Doors - MegaMail                                 */
                    340:        ,XTRN_SR                                                /* Solar Realms                                                 */
                    341:        ,XTRN_RBBS1                                     /* DORINFO1.DEF always                                  */
                    342:        ,XTRN_TRIBBS                                    /* TRIBBS.SYS                                                   */
                    343:        ,XTRN_DOOR32                                    /* DOOR32.SYS                                                   */
                    344:        };                                                                                                                                              
                    345:                                                                                                                                                        
                    346: typedef enum {                                         /* Values for xtrn_t.event                              */
                    347:         EVENT_NONE                                     /* Only accessible by menu                              */
                    348:        ,EVENT_LOGON                                    /* Execute during logon sequence                */
                    349:        ,EVENT_LOGOFF                                   /* Execute during logoff sequence               */
                    350:        ,EVENT_NEWUSER                                  /* Execute during newuser app.                  */
                    351:        ,EVENT_BIRTHDAY                                 /* Execute on birthday                                  */
                    352:        ,EVENT_POST                                             /* Execute after posting a message              */
                    353:        ,EVENT_UPLOAD                                   /* Execute after uploading a file               */
                    354:        ,EVENT_DOWNLOAD                                 /* Execute after downloading a file             */
                    355: } user_event_t;                                                                                                                                
                    356:                                                                                                                                                        
                    357:                                                                        /* Misc bits for event_t.misc                   */
                    358: #define EVENT_EXCL             (1<<0)          /* Exclusive                                                    */
                    359: #define EVENT_FORCE            (1<<1)          /* Force users off-line for event               */
                    360: #define EVENT_INIT             (1<<2)          /* Always run event after init                  */
                    361: #define EVENT_DISABLED (1<<3)          /* Disabled                                                             */
                    362:                                                                                                                                                        
                    363:                                                                        /* Mode bits for QWK stuff */                   
                    364: #define A_EXPAND               (1<<0)          /* Expand to ANSI sequences */                  
                    365: #define A_LEAVE                (1<<1)          /* Leave in */                                                  
                    366: #define A_STRIP                (1<<2)          /* Strip out */                                                 
                    367:                                                                                                                                                        
                    368:                                                                        /* Bits in xtrn_t.misc                                  */
                    369: #define MULTIUSER              (1<<0)          /* allow multi simultaneous users               */
                    370: #define XTRN_ANSI              (1<<1)          /* user must have ANSI, same as ^^^             */
                    371: #define IO_INTS                (1<<2)          /* Intercept I/O interrupts                     */
                    372: #define MODUSERDAT             (1<<3)          /* Program can modify user data                 */
                    373: #define WWIVCOLOR              (1<<4)          /* Program uses WWIV color codes                */
                    374: #define EVENTONLY              (1<<5)          /* Program executes as event only               */
                    375: #define STARTUPDIR             (1<<6)          /* Create drop file in start-up dir             */
                    376: #define REALNAME               (1<<7)          /* Use real name in drop file                   */
                    377: #define SWAP                   (1<<8)          /* Swap for this door                                   */
                    378: #define FREETIME               (1<<9)          /* Free time while in this door                 */
                    379: #define QUICKBBS               (1<<10)         /* QuickBBS style editor                                */
                    380: #define EXPANDLF               (1<<11)         /* Expand LF to CRLF editor                     */
                    381: #define QUOTEALL               (1<<12)         /* Automatically quote all of msg               */
                    382: #define QUOTENONE              (1<<13)         /* Automatically quote none of msg              */
                    383: #define XTRN_NATIVE            (1<<14)         /* Native application (EX_NATIVE)               */
                    384: #define STRIPKLUDGE            (1<<15)         /* Strip FTN Kludge lines from msg              */
                    385: #define XTRN_CHKTIME   (1<<16)         /* Check time online (EX_CHKTIME)               */
                    386: #define XTRN_LWRCASE   (1<<17)         /* Use lowercase drop-file names                */
                    387: #define XTRN_SH                        (1<<18)         /* Use command shell to execute                 */
                    388: #define XTRN_PAUSE             (1<<19)         /* Force a screen pause on exit                 */
                    389: #define XTRN_NOECHO            (1<<20)         /* Don't echo stdin to stdout                   */
                    390: 
                    391:                                                                        /* Bits in cfg.xtrn_misc                                */
                    392: #define XTRN_NO_MUTEX  (1<<0)          /* Do not use exec_mutex for FOSSIL VXD */
                    393: 
                    394:                                                                        /* Bits in user.qwk                                     */
                    395: #define QWK_FILES      (1L<<0)                 /* Include new files list                               */
                    396: #define QWK_EMAIL      (1L<<1)                 /* Include unread e-mail                                */
                    397: #define QWK_ALLMAIL (1L<<2)            /* Include ALL e-mail                                   */
                    398: #define QWK_DELMAIL (1L<<3)            /* Delete e-mail after download                 */
                    399: #define QWK_BYSELF     (1L<<4)                 /* Include messages from self                   */
                    400: #define QWK_UNUSED     (1L<<5)                 /* Currently unused                                     */
                    401: #define QWK_EXPCTLA (1L<<6)            /* Expand ctrl-a codes to ascii                 */
                    402: #define QWK_RETCTLA (1L<<7)            /* Retain ctrl-a codes                                  */
                    403: #define QWK_ATTACH     (1L<<8)                 /* Include file attachments                     */
                    404: #define QWK_NOINDEX (1L<<9)            /* Do not create index files in QWK             */
                    405: #define QWK_TZ         (1L<<10)                /* Include "@TZ" time zone in msgs              */
                    406: #define QWK_VIA        (1L<<11)                /* Include "@VIA" seen-bys in msgs              */
                    407: #define QWK_NOCTRL     (1L<<12)                /* No extraneous control files                  */
                    408: #define QWK_EXT                (1L<<13)                /* QWK Extended (QWKE) format                   */
                    409: #define QWK_MSGID      (1L<<14)                /* Include "@MSGID" in msgs                             */
                    410: 
                    411: #define QWK_DEFAULT    (QWK_FILES|QWK_ATTACH|QWK_EMAIL|QWK_DELMAIL)
                    412:                                                                                                                                                        
                    413:                                                        /* Bits in user.chat                                                    */
                    414: #define CHAT_ECHO      (1<<0)  /* Multinode chat echo                                                  */
                    415: #define CHAT_ACTION (1<<1)     /* Chat actions                                                                 */
                    416: #define CHAT_NOPAGE (1<<2)     /* Can't be paged                                                               */
                    417: #define CHAT_NOACT     (1<<3)  /* No activity alerts                                                   */
                    418: #define CHAT_SPLITP (1<<4)     /* Split screen private chat                                    */
                    419:                                                                                                                                                        
                    420:                                                                                                                                                        
                    421: #define INVALID_DIR 0xffff     /* Invalid directory value                                              */
                    422: #define INVALID_SUB 0xffff     /* Invalid sub-board value                                              */
                    423:                                                                                                                                                        
                    424: #define KEY_BUFSIZE 1024       /* Size of keyboard input buffer                                */
                    425: #define SAVE_LINES      4              /* Maximum number of lines to save                              */
                    426: #define LINE_BUFSIZE 512       /* Size of line output buffer                                   */
                    427:                                                                                                                                                        
                    428:                                                                                                                                                        
                    429: #define EDIT_TABSIZE 4         /* Tab size for internal message/line editor    */
                    430:                                                                                                                                                        
                    431: #define SWAP_NONE      0x80    /* Allow no swapping for executables                    */
                    432:                                                                                                                                                        
                    433: #define DSTSDABLEN     50              /* Length of dsts.dab file                                              */
                    434:                                                                                                                                                        
                    435:                                                                /* Console I/O Bits     (console)                               */
                    436: #define CON_R_ECHO             (1<<0)  /* Echo remotely                                                        */
                    437: #define CON_R_ECHOX            (1<<1)  /* Echo X's to remote user                                      */
                    438: #define CON_R_INPUT            (1<<2)  /* Accept input remotely                                        */
                    439: #define CON_L_ECHO             (1<<3)  /* Echo locally                                         */
                    440: #define CON_L_ECHOX            (1<<4)  /* Echo X's locally                                                     */
                    441: #define CON_L_INPUT            (1<<5)  /* Accept input locally                                         */
                    442: #define CON_RAW_IN             (1<<8)  /* Raw input mode - no editing capabilities     */
                    443: #define CON_ECHO_OFF   (1<<10) /* Remote & Local echo disabled for ML/MF       */
                    444: #define CON_UPARROW            (1<<11) /* Up arrow hit - move up one line                      */
                    445: #define CON_DOWNARROW  (1<<12) /* Down arrow hit, exiting from getstr()        */
                    446: #define CON_NO_INACT   (1<<13) /* Console inactivity detection disabled        */
                    447: #define CON_BACKSPACE  (1<<14) /* Backspace hit, exiting from getstr()         */
                    448: #define CON_LEFTARROW  (1<<15) /* Left arrow hit, exiting from getstr()        */
                    449: #define CON_INSERT             (1<<16) /* Insert mode, for getstr()                            */
                    450: #define CON_DELETELINE (1<<17) /* Deleted line, exiting from getstr()          */
                    451:                                                                                                                                                        
                    452:                                                        /* Number of milliseconds                                               */
                    453: #define DELAY_AUTOHG 1500      /* Delay for auto-hangup (xfer)                                 */
                    454:                                                                                                                                                        
                    455: #define SEC_LOGON      1800    /* 30 minutes allowed to logon                                  */
                    456: #define SEC_BILLING   90       /* under 2 minutes per billing call                     */
                    457: #define SEC_OK            5    /* Attempt to get an OK response from modem             */
                    458: #define SEC_ANSI          5    /* Attempt to get a valid ANSI response                 */
                    459: #define SEC_ANSWER       30    /* Retries to get an answer code from modem             */
                    460: #define SEC_CID          10    /* Ten second pause for caller ID                               */
                    461: #define SEC_RING          6    /* Maximum seconds between rings                                */
                    462:                                                                                                                                                        
                    463: #define LOOP_NOPEN       50    /* Retries before file access denied                    */
                    464: #define LOOP_NODEDAB  50       /* Retries on node.dab locking/unlocking                */
                    465:                                                                                                                                                        
                    466:                                                        /* String lengths                                                               */
                    467: #define LEN_ALIAS              25      /* User alias                                                                   */
                    468: #define LEN_NAME               25      /* User name                                                                    */
                    469: #define LEN_HANDLE             8       /* User chat handle                                                     */
                    470: #define LEN_NOTE               30      /* User note                                                                    */
                    471: #define LEN_COMP               30      /* User computer description                                    */
                    472: #define LEN_COMMENT    60      /* User comment                                                                 */
                    473: #define LEN_NETMAIL    60      /* NetMail forwarding address                                   */
                    474: #define LEN_PASS                8      /* User password                                                                */
                    475: #define LEN_PHONE              12      /* User phone number                                                    */
                    476: #define LEN_BIRTH               8      /* Birthday in MM/DD/YY format                                  */
                    477: #define LEN_ADDRESS    30      /* User address                                                                 */
                    478: #define LEN_LOCATION   30      /* Location (City, State)                                               */
                    479: #define LEN_ZIPCODE    10      /* Zip/Postal code                                                              */
                    480: #define LEN_MODEM               8      /* User modem type description                                  */
                    481: #define LEN_FDESC              58      /* File description                                                     */
                    482: #define LEN_FCDT                9      /* 9 digits for file credit values                              */
                    483: #define LEN_TITLE              70      /* Message title                                                                */
                    484: #define LEN_MAIN_CMD   34      /* Storage in user.dat for custom commands              */
                    485: #define LEN_XFER_CMD   40                                                                                                      
                    486: #define LEN_SCAN_CMD   40                                                                                                      
                    487: #define LEN_MAIL_CMD   40                                                                                                      
                    488: #define LEN_CID                25      /* Caller ID (phone number)                                     */
                    489: #define LEN_ARSTR              40      /* Max length of Access Requirement string              */
                    490: #define LEN_CHATACTCMD  9      /* Chat action command                                                  */
                    491: #define LEN_CHATACTOUT 65      /* Chat action output string                                    */
                    492: 
                    493: /****************************************************************************/
                    494: /* This is a list of offsets into the USER.DAT file for different variables */
                    495: /* that are stored (for each user)                                                                                     */
                    496: /****************************************************************************/
                    497: #define U_ALIAS        0                                       /* Offset to alias */
                    498: #define U_NAME         U_ALIAS+LEN_ALIAS  /* Offset to name */
                    499: #define U_HANDLE       U_NAME+LEN_NAME 
                    500: #define U_NOTE         U_HANDLE+LEN_HANDLE+2 
                    501: #define U_COMP         U_NOTE+LEN_NOTE 
                    502: #define U_COMMENT      U_COMP+LEN_COMP+2 
                    503: 
                    504: #define U_NETMAIL      U_COMMENT+LEN_COMMENT+2 
                    505: 
                    506: #define U_ADDRESS      U_NETMAIL+LEN_NETMAIL+2 
                    507: #define U_LOCATION     U_ADDRESS+LEN_ADDRESS 
                    508: #define U_ZIPCODE      U_LOCATION+LEN_LOCATION 
                    509: 
                    510: #define U_PASS         U_ZIPCODE+LEN_ZIPCODE+2 
                    511: #define U_PHONE        U_PASS+8                        /* Offset to phone-number */
                    512: #define U_BIRTH        U_PHONE+12              /* Offset to users birthday     */
                    513: #define U_MODEM     U_BIRTH+8 
                    514: #define U_LASTON       U_MODEM+8 
                    515: #define U_FIRSTON      U_LASTON+8 
                    516: #define U_EXPIRE    U_FIRSTON+8 
                    517: #define U_PWMOD     U_EXPIRE+8 
                    518: 
                    519: #define U_LOGONS    U_PWMOD+8+2 
                    520: #define U_LTODAY    U_LOGONS+5 
                    521: #define U_TIMEON    U_LTODAY+5 
                    522: #define U_TEXTRA       U_TIMEON+5 
                    523: #define U_TTODAY    U_TEXTRA+5 
                    524: #define U_TLAST     U_TTODAY+5 
                    525: #define U_POSTS     U_TLAST+5 
                    526: #define U_EMAILS    U_POSTS+5 
                    527: #define U_FBACKS    U_EMAILS+5 
                    528: #define U_ETODAY       U_FBACKS+5 
                    529: #define U_PTODAY       U_ETODAY+5 
                    530: 
                    531: #define U_ULB       U_PTODAY+5+2 
                    532: #define U_ULS       U_ULB+10 
                    533: #define U_DLB       U_ULS+5 
                    534: #define U_DLS       U_DLB+10 
                    535: #define U_CDT          U_DLS+5 
                    536: #define U_MIN          U_CDT+10 
                    537: 
                    538: #define U_LEVEL        U_MIN+10+2      /* Offset to Security Level    */
                    539: #define U_FLAGS1       U_LEVEL+2       /* Offset to Flags */
                    540: #define U_TL           U_FLAGS1+8      /* Offset to unused field */
                    541: #define U_FLAGS2       U_TL+2 
                    542: #define U_EXEMPT       U_FLAGS2+8 
                    543: #define U_REST         U_EXEMPT+8 
                    544: #define U_ROWS         U_REST+8+2      /* Number of Rows on user's monitor */
                    545: #define U_SEX          U_ROWS+2                /* Sex, Del, ANSI, color etc.           */
                    546: #define U_MISC         U_SEX+1                 /* Miscellaneous flags in 8byte hex */
                    547: #define U_OLDXEDIT     U_MISC+8                /* External editor (Version 1 method  */
                    548: #define U_LEECH        U_OLDXEDIT+2    /* two hex digits - leech attempt count */
                    549: #define U_CURSUB       U_LEECH+2       /* Current sub (internal code)  */
                    550: #define U_CURXTRN      U_CURSUB+16 /* Current xtrn (internal code) */
                    551: #define U_MAIN_CMD     U_CURXTRN+8+2   /* unused */
                    552: #define U_XFER_CMD     U_MAIN_CMD+LEN_MAIN_CMD                 /* unused */
                    553: #define U_SCAN_CMD     U_XFER_CMD+LEN_XFER_CMD+2       /* unused */
                    554: #define U_MAIL_CMD     U_SCAN_CMD+LEN_SCAN_CMD                 /* unused */
                    555: #define U_FREECDT      U_MAIL_CMD+LEN_MAIL_CMD+2 
                    556: #define U_FLAGS3       U_FREECDT+10    /* Flag set #3 */
                    557: #define U_FLAGS4       U_FLAGS3+8      /* Flag set #4 */
                    558: #define U_XEDIT        U_FLAGS4+8      /* External editor (code  */
                    559: #define U_SHELL        U_XEDIT+8       /* Command shell (code  */
                    560: #define U_QWK          U_SHELL+8       /* QWK settings */
                    561: #define U_TMPEXT       U_QWK+8                 /* QWK extension */
                    562: #define U_CHAT         U_TMPEXT+3      /* Chat settings */
                    563: #define U_NS_TIME      U_CHAT+8                /* New-file scan date/time */
                    564: #define U_PROT         U_NS_TIME+8     /* Default transfer protocol */
                    565: #define U_LOGONTIME    U_PROT+1
                    566: #define U_CURDIR       U_LOGONTIME+8   /* Current dir (internal code  */
                    567: #define U_UNUSED       U_CURDIR+16
                    568: #define U_LEN          (U_UNUSED+4+2)
                    569: 
                    570: /****************************************************************************/
                    571: /* Offsets into DIR .DAT file for different fields for each file                       */
                    572: /****************************************************************************/
                    573: #define F_CDT          0                               /* Offset in DIR#.DAT file for cdts             */
                    574: #define F_DESC         (F_CDT+LEN_FCDT)/* Description                                                  */
                    575: #define F_ULER         (F_DESC+LEN_FDESC+2)   /* Uploader                                              */
                    576: #define F_TIMESDLED (F_ULER+30+2)      /* Number of times downloaded                   */
                    577: #define F_OPENCOUNT    (F_TIMESDLED+5+2)                                                                               
                    578: #define F_MISC         (F_OPENCOUNT+3+2)                                                                               
                    579: #define F_ALTPATH      (F_MISC+1)              /* Two hex digit alternate path */              
                    580: #define F_LEN          (F_ALTPATH+2+2) /* Total length of all fdat in file             */
                    581:                                                                                                                                                        
                    582: #define F_IXBSIZE      22                              /* Length of each index entry                   */
                    583:                                                                                                                                                        
                    584: #define F_EXBSIZE      512                             /* Length of each ext-desc entry                */
                    585:                                                                                                                                                        
                    586:                                                                                                                                                        
                    587: #define SIF_MAXBUF  0x7000                     /* Maximum buffer size of SIF data              */
                    588:                                                                                                                                                        
                    589: /* NOTE: Do not change the values of the following block of defines!           */
                    590:                                                                                                                                                        
                    591: #define DELETED        (1L<<0)                 /* Bit values for user.misc                     */
                    592: #define ANSI           (1L<<1)                 /* Supports ANSI terminal emulation             */
                    593: #define COLOR          (1L<<2)                 /* Send color codes                                     */
                    594: #define RIP            (1L<<3)                 /* Supports RIP terminal emulation              */
                    595: #define UPAUSE         (1L<<4)                 /* Pause on every screen full                   */
                    596: #define SPIN           (1L<<5)                 /* Spinning cursor - Same as K_SPIN             */
                    597: #define INACTIVE       (1L<<6)                 /* Inactive user slot                                   */
                    598: #define EXPERT         (1L<<7)                 /* Expert menu mode                                     */
                    599: #define ANFSCAN        (1L<<8)                 /* Auto New file scan                                   */
                    600: #define CLRSCRN        (1L<<9)                 /* Clear screen before each message             */
                    601: #define QUIET          (1L<<10)                /* Quiet mode upon logon                                */
                    602: #define BATCHFLAG      (1L<<11)                /* File list allow batch dl flags               */
                    603: #define NETMAIL        (1L<<12)                /* Forward e-mail to fidonet addr               */
                    604: #define CURSUB         (1L<<13)                /* Remember current sub-board/dir               */
                    605: #define ASK_NSCAN      (1L<<14)                /* Ask for newscanning upon logon               */
                    606: #define NO_EXASCII     (1L<<15)                /* Don't send extended ASCII                    */
                    607: #define ASK_SSCAN      (1L<<16)                /* Ask for messages to you at logon             */
                    608: #define AUTOTERM       (1L<<17)                /* Autodetect terminal type                     */
                    609: #define COLDKEYS       (1L<<18)                /* No hot-keys                                                  */
                    610: #define EXTDESC        (1L<<19)                /* Extended file descriptions                   */
                    611: #define AUTOHANG       (1L<<20)                /* Auto-hang-up after transfer                  */
                    612: #define WIP            (1L<<21)                /* Supports WIP terminal emulation              */
                    613: #define AUTOLOGON      (1L<<22)                /* AutoLogon via IP                                             */
                    614: #define HTML           (1L<<23)                /* Using Deuce's HTML terminal                  */
                    615: #define NOPAUSESPIN    (1L<<24)                /* No spinning cursor at pause prompt   */
                    616: 
                    617: #define TERM_FLAGS     (ANSI|COLOR|NO_EXASCII|RIP|WIP|HTML)
                    618:                                                                                                                                                        
                    619: #define CLREOL      256     /* Character to erase to end of line                       */
                    620:                                                                                                                                                        
                    621:                                                        /* Online status (online)                                               */
                    622: #define ON_LOCAL       1               /* Online locally                                                               */
                    623: #define ON_REMOTE   2                  /* Online remotely                                                              */
                    624:                                                                                                                                                        
                    625:                                                        /* Various SYSTEM parameters for sys_status             */
                    626: #define SS_UNUSED      (1L<<0) /* Unused                                                                       */
                    627: #define SS_INITIAL  (1L<<1)    /* The bbs data has been initialized.                   */
                    628: #define SS_TMPSYSOP (1L<<2)    /* Temporary Sysop Status                                               */
                    629: #define SS_USERON   (1L<<3)    /* A User is logged on to the BBS                               */
                    630: #define SS_LCHAT    (1L<<4) /* Local chat in progress                                          */
                    631: #define SS_CAP         (1L<<5) /* Capture is on                                                                */
                    632: #define SS_ANSCAP      (1L<<6) /* Capture ANSI codes too                                               */
                    633: #define SS_FINPUT      (1L<<7) /* Using file for input                                                 */
                    634: #define SS_COMISR      (1L<<8) /* Com port ISR is installed                                    */
                    635: #define SS_DAILY       (1L<<9) /* Execute System Daily Event on logoff                 */
                    636: #define SS_INUEDIT     (1L<<10) /* Inside Alt-Useredit section                                 */
                    637: #define SS_ABORT       (1L<<11) /* Global abort input or output flag                   */
                    638: #define SS_SYSPAGE     (1L<<12) /* Paging sysop                                                                */
                    639: #define SS_SYSALERT (1L<<13) /* Notify sysop when users hangs up                       */
                    640: #define SS_GURUCHAT (1L<<14) /* Guru chat in progress                                          */
                    641: #define SS_UNUSED2     (1L<<15) /* not used in v3 (used to be SS_NODEDAB)              */
                    642: #define SS_EVENT       (1L<<16) /* Time shortened due to upcoming event                */
                    643: #define SS_PAUSEON     (1L<<17) /* Pause on, overriding user default                   */
                    644: #define SS_PAUSEOFF (1L<<18) /* Pause off, overriding user default                     */
                    645: #define SS_IN_CTRLP (1L<<19) /* Inside ctrl-p send node message func           */
                    646: #define SS_NEWUSER     (1L<<20) /* New User online                                                     */
                    647: #define SS_MDMDEBUG (1L<<21) /* Modem debug output                                                     */
                    648: #define SS_NEST_PF     (1L<<22) /* Nested in printfile function                                */
                    649: #define SS_DCDHIGH     (1L<<23) /* Assume DCD is high always                                   */
                    650: #define SS_SPLITP      (1L<<24) /* Split-screen private chat                                   */
                    651: #define SS_NEWDAY      (1L<<25) /* Date changed while online                                   */
                    652: #define SS_RLOGIN      (1L<<26) /* Current login via BSD RLogin                                */
                    653: #define SS_FILEXFER    (1L<<27) /* File transfer in progress, halt spy                 */
                    654: #define SS_SSH         (1L<<28) /* Current login via SSH                                               */
                    655: 
                    656:                                                                /* Bits in 'mode' for getkey and getstr     */
                    657: #define K_NONE         0                       /* Use as a place holder for no mode flags      */
                    658: #define K_UPPER        (1L<<0)         /* Converts all letters to upper case           */
                    659: #define K_UPRLWR       (1L<<1)         /* Upper/Lower case automatically                       */
                    660: #define K_NUMBER       (1L<<2)         /* Allow numbers only                                           */
                    661: #define K_WRAP         (1L<<3)         /* Allows word wrap                                             */
                    662: #define K_MSG          (1L<<4)         /* Allows ANSI, ^N ^A ^G                                        */
                    663: #define K_SPIN         (1L<<5)         /* Spinning cursor (same as SPIN)                       */
                    664: #define K_LINE         (1L<<6)         /* Input line (inverse color)                           */
                    665: #define K_EDIT         (1L<<7)         /* Edit string passed                                           */
                    666: #define K_CHAT         (1L<<8)         /* In chat multi-chat                                           */
                    667: #define K_NOCRLF       (1L<<9)         /* Don't print CRLF after string input      */
                    668: #define K_ALPHA        (1L<<10)        /* Only allow alphabetic characters             */
                    669: #define K_GETSTR       (1L<<11)        /* getkey called from getstr()                          */
                    670: #define K_LOWPRIO      (1L<<12)        /* low priority input                                           */
                    671: #define K_NOEXASC      (1L<<13)        /* No extended ASCII allowed                            */
                    672: #define K_E71DETECT (1L<<14)   /* Detect E-7-1 terminal type                           */
                    673: #define K_AUTODEL      (1L<<15)        /* Auto-delete text (used with K_EDIT)          */
                    674: #define K_COLD         (1L<<16)        /* Possible cold key mode                                       */
                    675: #define K_NOECHO       (1L<<17)        /* Don't echo input                         */
                    676: #define K_TAB          (1L<<18)        /* Treat TAB key as CR                                          */
                    677: #define K_LEFTEXIT     (1L<<19)        /* Allow exit by backspacing/arrowing left      */
                    678: #define K_USEOFFSET    (1L<<20)        /* Use getstr_offset for cursor position        */
                    679: #define K_NOSPIN       (1L<<21)        /* Do not honor the user's spinning cursor      */
                    680: 
                    681:                                                                /* Bits in 'mode' for putmsg and printfile  */
                    682: #define P_NOABORT      (1<<0)          /* Disallows abortion of a message          */
                    683: #define P_SAVEATR   (1<<1)             /* Save the new current attributres after       */
                    684:                                                                /* msg has printed. */
                    685: #define P_NOATCODES (1<<2)             /* Don't allow @ codes                      */
                    686: #define P_OPENCLOSE (1<<3)             /* Open and close the file                                      */
                    687: #define P_NOPAUSE      (1<<4)          /* Disable screen pause                                         */
                    688: #define P_HTML         (1<<5)          /* Message is HTML                                                      */
                    689: #define P_NOCRLF       (1<<6)          /* Don't prepend a CRLF in printfile()          */
                    690:                                                                
                    691:                                                                /* Bits in 'mode' for listfiles             */
                    692: #define FL_ULTIME   (1<<0)             /* List files by upload time                */
                    693: #define FL_DLTIME   (1<<1)             /* List files by download time              */
                    694: #define FL_NO_HDR   (1<<2)             /* Don't list directory header              */
                    695: #define FL_FINDDESC (1<<3)             /* Find text in description                 */
                    696: #define FL_EXFIND   (1<<4)             /* Find text in description - extended info */
                    697: #define FL_VIEW     (1<<5)             /* View ZIP/ARC/GIF etc. info               */
                    698:                                                                
                    699:                                                                /* Bits in the mode of writemsg and email() */
                    700: #define WM_EXTDESC     (1<<0)          /* Writing extended file description            */
                    701: #define WM_EMAIL       (1<<1)          /* Writing e-mail                                                       */
                    702: #define WM_NETMAIL     (1<<2)          /* Writing NetMail                                                      */
                    703: #define WM_ANON        (1<<3)          /* Writing anonymous message                            */
                    704: #define WM_FILE        (1<<4)          /* Attaching a file to the message                      */
                    705: #define WM_NOTOP       (1<<5)          /* Don't add top because we need top line   */
                    706: #define WM_QUOTE       (1<<6)          /* Quote file available                                         */
                    707: #define WM_QWKNET      (1<<7)          /* Writing QWK NetMail (25 char title)          */
                    708: #define WM_PRIVATE     (1<<8)          /* Private (for creating MSGINF file)           */
                    709: #define WM_SUBJ_RO     (1<<9)          /* Subject/title is read-only                           */
                    710:                                                                
                    711:                                                                /* Bits in the mode of loadposts()                      */
                    712: #define LP_BYSELF      (1<<0)          /* Include messages sent by self                        */
                    713: #define LP_OTHERS      (1<<1)          /* Include messages sent to others                      */
                    714: #define LP_UNREAD      (1<<2)          /* Un-read messages only                                        */
                    715: #define LP_PRIVATE     (1<<3)          /* Include all private messages                         */
                    716: #define LP_REP         (1<<4)          /* Packing REP packet                                           */
                    717:                                                                
                    718:                                                                /* Bits in the mode of loadmail()                       */
                    719: #define LM_UNREAD      (1<<0)          /* Include un-read mail only                            */
                    720: #define LM_INCDEL      (1<<1)          /* Include deleted mail                                         */
                    721:                                                                
                    722: enum {                                                 /* readmail and delmailidx which types          */
                    723:         MAIL_YOUR                                      /* mail sent to you                                                     */
                    724:        ,MAIL_SENT                                      /* mail you have sent                                           */
                    725:        ,MAIL_ANY                                       /* mail sent to or from you                                     */
                    726:        ,MAIL_ALL                                       /* all mail (ignores usernumber arg)            */
                    727:        };                                                      
                    728:                                                                
                    729:                                                                /* Bits in the mode of external()           */
                    730: #define EX_SH       (1<<0)             /* Use command shell to load other process  */
                    731: #define EX_OUTR     (1<<1)             /* Copy DOS output to remote                */
                    732: #define EX_OUTL        (1<<2)          /* Use _lputc() for local DOS output            */
                    733: #define EX_INR         (1<<3)          /* Trap int 16h keyboard input requests     */
                    734: #define EX_WWIV        WWIVCOLOR       /* Expand WWIV color codes to ANSI sequence */
                    735: #define EX_SWAP        (1<<5)          /* Swap out for this external (*legacy*)        */
                    736: #define EX_POPEN       (1<<7)          /* Leave COM port open  (*legacy*)                      */
                    737: #define EX_OFFLINE     (1<<8)          /* Run this program offline                                     */
                    738: #define EX_BG          (1<<10)         /* Back-ground/detached process                         */
                    739: #define EX_BIN         (1<<11)         /* Binary mode (no Unix LF to CRLF)                     */
                    740: #define EX_NATIVE      XTRN_NATIVE             /* Native 32-bit application                    */
                    741: #define EX_CHKTIME     XTRN_CHKTIME    /* Check time left                                              */
                    742: #define EX_NOECHO      XTRN_NOECHO             /* Don't echo stdin to stdout                   */
                    743: 
                    744: #if defined(__unix)
                    745: #define EX_WILDCARD    EX_SH           /* Expand wildcards using 'sh' on Unix          */
                    746: #else
                    747: #define EX_WILDCARD    0
                    748: #endif
                    749:                                                                
                    750:                                                                /* telnet_gate() mode bits                                      */                                                      
                    751: #define TG_ECHO                        (1<<0)  /* Turn on telnet echo                                          */
                    752: #define TG_CRLF                        (1<<1)  /* Expand sole CR to CRLF                                       */
                    753: #define TG_LINEMODE            (1<<2)  /* Send entire lines only                                       */
                    754: #define TG_NODESYNC            (1<<3)  /* Call Nodesync, get msgs, etc.                        */
                    755: #define TG_CTRLKEYS            (1<<4)  /* Interpret ^P ^U ^T, etc locally                      */
                    756: #define TG_PASSTHRU            (1<<5)  /* Pass-through telnet commands/responses       */
                    757: #define TG_RLOGIN              (1<<6)  /* Use BSD RLogin protocol                                      */
                    758: #define TG_NOCHKTIME   (1<<7)  /* Don't check time left while gated            */
                    759: #define TG_NOTERMTYPE  (1<<8)  /* Request client "DONT TERM_TYPE"                      */
                    760:                                                                
                    761: enum {                                                 /* Values for 'mode' in listfileinfo        */
                    762:         FI_INFO                        /* Just list file information               */
                    763:        ,FI_REMOVE                      /* Remove/Move/Edit file information        */
                    764:        ,FI_DOWNLOAD                    /* Download files                           */
                    765:        ,FI_OLD                         /* Search/Remove files not downloaded since */
                    766:        ,FI_OLDUL                                       /* Search/Remove files uploaded before      */
                    767:        ,FI_OFFLINE                             /* Search/Remove files not online                       */
                    768:        ,FI_USERXFER                            /* User Xfer Download                       */
                    769:        ,FI_CLOSE                                       /* Close any open records                                       */
                    770:        };                                                      
                    771: 
                    772: enum XFER_TYPE {                               /* Values for type in xfer_prot_select()        */
                    773:         XFER_UPLOAD
                    774:        ,XFER_DOWNLOAD
                    775:        ,XFER_BATCH_UPLOAD
                    776:        ,XFER_BATCH_DOWNLOAD
                    777:        ,XFER_BIDIR
                    778: };
                    779:        
                    780: #define L_LOGON     1                  /* Logon List maintenance                   */
                    781: #define LOL_SIZE    81                 /* Length of each logon list entry          */
                    782:                                                                
                    783:                                                                /* Bits in mode of scanposts() function         */
                    784: #define SCAN_CONST     (1<<0)          /* Continuous message scanning                          */
                    785: #define SCAN_NEW       (1<<1)          /* New scanning                                                         */
                    786: #define SCAN_BACK      (1<<2)          /* Scan the last message if no new                      */
                    787: #define SCAN_TOYOU     (1<<3)          /* Scan for messages to you                             */
                    788: #define SCAN_FIND      (1<<4)          /* Scan for text in messages                            */
                    789: #define SCAN_UNREAD (1<<5)             /* Find un-read messages to you                         */
                    790:                                                                
                    791:                                                                /* Bits in misc of chan_t                                       */
                    792: #define CHAN_PW        (1<<0)          /* Can be password protected                            */
                    793: #define CHAN_GURU      (1<<1)          /* Guru joins empty channel                             */
                    794:                                                                
                    795: enum {                                                 /* Values of mode for userlist function     */
                    796:         UL_ALL                                         /* List all users in userlist                           */
                    797:        ,UL_SUB                                 /* List all users with access to cursub     */
                    798:        ,UL_DIR                                         /* List all users with access to curdir         */
                    799:        };                                                      
                    800:                                                                
                    801:                                                                
                    802: #define BO_LEN         16                      /* backout.dab record length                            */
                    803:                                                                
                    804: #define BO_OPENFILE 0                  /* Backout types */
                    805: 
                    806: /**********/
                    807: /* Macros */
                    808: /**********/
                    809: 
                    810: #define CRLF                   { outchar(CR); outchar(LF); }
                    811: #define SYSOP_LEVEL            90
                    812: #define SYSOP                  (useron.level>=SYSOP_LEVEL || sys_status & SS_TMPSYSOP)
                    813: #define REALSYSOP              (useron.level>=SYSOP_LEVEL)
                    814: #define FLAG(x)                (ulong)(1UL<<(x-'A'))
                    815: #define CLS            outchar(FF)
                    816: #define WHERE          __LINE__,__FILE__
                    817: #define SAVELINE               { slatr[slcnt]=latr; \
                    818:                                                        slcuratr[slcnt]=curatr; \
                    819:                                                        sprintf(slbuf[slcnt],"%.*s",lbuflen,lbuf); \
                    820:                                                        if(slcnt<SAVE_LINES) slcnt++; \
                    821:                                                        lbuflen=0; }
                    822: #define RESTORELINE    { lbuflen=0; if(slcnt) --slcnt; \
                    823:                                                        attr(slatr[slcnt]); \
                    824:                                                        rputs(slbuf[slcnt]); \
                    825:                                                        curatr=slcuratr[slcnt]; }
                    826: #define SYNC                   { getnodedat(cfg.node_num,&thisnode,0); \
                    827:                                                  nodesync(); }
                    828: #define ASYNC                  { getnodedat(cfg.node_num,&thisnode,0); \
                    829:                                                  nodesync(); }
                    830: #define ANSI_SAVE()    rputs("\x1b[s")
                    831: #define ANSI_RESTORE() rputs("\x1b[u")
                    832: #define GOTOXY(x,y)     rprintf("\x1b[%d;%dH",y,x);
                    833: #define TM_YEAR(yy)            ((yy)%100)
                    834: #define sbbs_beep(f,d) BEEP(f,d)
                    835: #define mswait(x)              SLEEP(x)
                    836: 
                    837: /**************************************/
                    838: /* Text Attribute (color) Definitions */
                    839: /**************************************/
                    840: #define HIGH  0x08      /* High intensity foreground text */
                    841: #ifndef BLINK
                    842: #define BLINK 0x80             /* Blinking text */
                    843: #endif
                    844: 
                    845: #ifndef __COLORS
                    846: #define __COLORS
                    847: 
                    848: enum COLORS {
                    849:        BLACK,                  /* dark colors (HIGH bit unset) */
                    850:        BLUE,
                    851:        GREEN,
                    852:        CYAN,
                    853:        RED,
                    854:        MAGENTA,
                    855:        BROWN,
                    856:        LIGHTGRAY,
                    857:        DARKGRAY,               /* light colors (HIGH bit set) */
                    858:        LIGHTBLUE,
                    859:        LIGHTGREEN,
                    860:        LIGHTCYAN,
                    861:        LIGHTRED,
                    862:        LIGHTMAGENTA,
                    863:        YELLOW,
                    864:        WHITE
                    865: };
                    866: 
                    867: #endif /* __COLORS */
                    868: 
                    869: #define ANSI_NORMAL            0x100
                    870: #define BG_BLACK               0x200
                    871: #define BG_BLUE                        (BLUE<<4)
                    872: #define BG_GREEN               (GREEN<<4)
                    873: #define BG_CYAN                        (CYAN<<4)
                    874: #define BG_RED                 (RED<<4)
                    875: #define BG_MAGENTA             (MAGENTA<<4)
                    876: #define BG_BROWN               (BROWN<<4)
                    877: #define BG_LIGHTGRAY   (LIGHTGRAY<<4)
                    878: 
                    879: /********************/
                    880: /* Type Definitions */
                    881: /********************/
                    882: 
                    883: typedef struct {                                               /* Users information */
                    884:        ushort  number,                                         /* Number */
                    885:                        uls,                                            /* Number of uploads */
                    886:                        dls,                                            /* Number of downloads */
                    887:                        posts,                                          /* Number of posts */
                    888:                        emails,                                         /* Number of emails */
                    889:                        fbacks,                                         /* Number of emails sent to sysop */
                    890:                        etoday,                                         /* Emails today */
                    891:                        ptoday,                                         /* Posts today */
                    892:                        timeon,                                         /* Total time on */
                    893:                        textra,                                         /* Extra time for today */
                    894:                        logons,                                         /* Total logons */
                    895:                        ttoday,                                         /* Time on today */
                    896:                        tlast,                                          /* Time on last call */
                    897:                        ltoday,                                         /* Logons today */
                    898:                        xedit,                                          /* External editor (1 based) */
                    899:                        shell;                                          /* Command shell */
                    900: 
                    901:        char    alias[LEN_ALIAS+1],             /* Alias */
                    902:                        name[LEN_NAME+1],                       /* Name - Real */
                    903:                        handle[LEN_HANDLE+1],           /* Chat handle */
                    904:                        comp[LEN_COMP+1],                       /* Computer type */
                    905:                        note[LEN_NOTE+1],                       /* Public notice about this user */
                    906:                        address[LEN_ADDRESS+1],         /* Street Address */
                    907:                        location[LEN_LOCATION+1],       /* Location of user */
                    908:                        zipcode[LEN_ZIPCODE+1],         /* Zip/Postal code */
                    909:                        pass[LEN_PASS+1],                       /* Password - not case sensitive */
                    910:                        birth[LEN_BIRTH+1],             /* Birthday in MM/DD/YY format */
                    911:                        phone[LEN_PHONE+1],                     /* Phone number xxx-xxx-xxxx format */
                    912:                        modem[LEN_MODEM+1],                     /* Modem type - 8 chars max */
                    913:                        netmail[LEN_NETMAIL+1],         /* NetMail forwarding address */
                    914:                        tmpext[4],                                      /* QWK Packet extension */
                    915:                        comment[LEN_COMMENT+1],         /* Private comment about user */
                    916:                        cursub[LEN_EXTCODE+1],          /* Current sub-board internal code */
                    917:                        curdir[LEN_EXTCODE+1],          /* Current directory internal code */
                    918:                        curxtrn[9];                                     /* Current external program internal code */
                    919: 
                    920:        uchar   level,                                          /* Security level */
                    921:                        sex,                                            /* Sex - M or F */
                    922:                        rows,                           /* Rows of text */
                    923:                        prot,                                           /* Default transfer protocol */
                    924:                        leech;                                          /* Leech attempt counter */
                    925: 
                    926:        ulong   misc,                                           /* Misc. bits - ANSI, Deleted etc. */
                    927:                        qwk,                                            /* QWK settings */
                    928:                        chat,                                           /* Chat defaults */
                    929:                        flags1,                                         /* Flag set #1 */
                    930:                        flags2,                                         /* Flag set #2 */
                    931:                        flags3,                                         /* Flag set #3 */
                    932:                        flags4,                                         /* Flag set #4 */
                    933:                        exempt,                                         /* Exemption Flags */
                    934:                        rest,                                           /* Restriction Flags */
                    935:                        ulb,                                            /* Total bytes uploaded */
                    936:                        dlb,                                            /* Total bytes downloaded */
                    937:                        cdt,                                            /* Credits */
                    938:                        min,                                            /* Minutes */
                    939:                        freecdt;                                        /* Free credits (renewed daily) */
                    940:        time_t  firston,                                        /* Date/Time first called */
                    941:                        laston,                                         /* Last logoff date/time */
                    942:                        expire,                                         /* Expiration date */
                    943:                        pwmod,                                          /* Password last modified */
                    944:                        ns_time,                                        /* Date/Time of last new file scan */
                    945:                        logontime;                                      /* Time of current logon */
                    946: 
                    947: } user_t;
                    948: 
                    949: typedef struct {                                               /* File (transfers) Data */
                    950:        char    name[13],                                       /* Name of file FILENAME.EXT */
                    951:                        desc[LEN_FDESC+1],                      /* Uploader's Description */
                    952:                        uler[LEN_ALIAS+1];                      /* User who uploaded */
                    953:        uchar   opencount;                                      /* Times record is currently open */
                    954:        time_t  date,                                           /* File date/time */
                    955:                        dateuled,                                       /* Date/Time (Unix) Uploaded */
                    956:                        datedled;                                       /* Date/Time (Unix) Last downloaded */
                    957:        ushort  dir,                                            /* Directory file is in */
                    958:                        altpath,
                    959:                        timesdled,                                      /* Total times downloaded */
                    960:                        timetodl;                                       /* How long transfer time */
                    961:        long    datoffset,                                      /* Offset into .DAT file */
                    962:                        size,                                           /* Size of file */
                    963:                        misc;                                           /* Miscellaneous bits */
                    964:        ulong   cdt;                                            /* Credit value for this file */
                    965: 
                    966: } file_t;
                    967: 
                    968: typedef idxrec_t post_t;                               /* defined in smbdefs.h */
                    969: typedef idxrec_t mail_t;                               /* defined in smbdefs.h */
                    970: typedef fidoaddr_t faddr_t;                            /* defined in smbdefs.h */
                    971: 
                    972: typedef struct {                                               /* System/Node Statistics */
                    973:        ulong   logons,                                         /* Total Logons on System */
                    974:                        ltoday,                                         /* Total Logons Today */
                    975:                        timeon,                                         /* Total Time on System */
                    976:                        ttoday,                                         /* Total Time Today */
                    977:                        uls,                                            /* Total Uploads Today */
                    978:                        ulb,                                            /* Total Upload Bytes Today */
                    979:                        dls,                                            /* Total Downloads Today */
                    980:                        dlb,                                            /* Total Download Bytes Today */
                    981:                        ptoday,                                         /* Total Posts Today */
                    982:                        etoday,                                         /* Total Emails Today */
                    983:                        ftoday;                                         /* Total Feedbacks Today */
                    984:        ushort  nusers;                                         /* Total New Users Today */
                    985: 
                    986: } stats_t;
                    987: 
                    988: typedef struct {                                               /* Sub-board scan information */
                    989:        ushort  cfg;                                            /* User's configuration */
                    990:        ulong   ptr;                                            /* New-message pointer */
                    991:        ulong   last;                                           /* Last read message number */
                    992:        ushort  sav_cfg;                                        /* Saved configuration */
                    993:        ulong   sav_ptr;                                        /* Saved New-message pointer */
                    994:        ulong   sav_last;                                       /* Saved Last read message number */
                    995: } subscan_t;
                    996: 
                    997: #endif /* Don't add anything after this #endif statement */

unix.superglobalmegacorp.com

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