Annotation of sbbs/sbbs2/sbbsdefs.h, revision 1.1

1.1     ! root        1: /* SBBSDEFS.H */
        !             2: 
        !             3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
        !             4: 
        !             5: /************************************************************/
        !             6: /* Constants, macros, and typedefs for use ONLY with SBBS      */
        !             7: /************************************************************/
        !             8: 
        !             9: #ifndef _SBBSDEFS_H
        !            10: #define _SBBSDEFS_H
        !            11: 
        !            12: #include "gen_defs.h"
        !            13: #include "nodedefs.h"
        !            14: #include <time.h>
        !            15: 
        !            16: /*************/
        !            17: /* Constants */
        !            18: /*************/
        !            19: 
        !            20: #define VERSION        "2.30"  /* Version: Major.minor  */
        !            21: #define REVISION       'A'
        !            22: #define BETA           " "     /* Space if non-beta, " �eta" otherwise */
        !            23: 
        !            24: /************/
        !            25: /* Maximums */
        !            26: /************/
        !            27: 
        !            28: #define DEMO_NODES               2
        !            29: #define MAX_NODES              250
        !            30: 
        !            31: #ifdef __FLAT__
        !            32: #define MAX_FILES        10000 /* Maximum number of files per dir                      */
        !            33: #define MAX_SYSMAIL   50000 /* Maximum number of total emails in system */
        !            34: #else
        !            35: #define MAX_FILES         1000 /* Maximum number of files per dir                      */
        !            36: #define MAX_SYSMAIL    5000 /* Maximum number of total emails in system */
        !            37: #endif
        !            38: #define MAX_USERXFER   500 /* Maximum number of dest. users of usrxfer */
        !            39: 
        !            40: 
        !            41: #define LEN_DIR 63                     /* Maximum length of directory paths            */
        !            42: #define LEN_CMD 63                     /* Maximum length of command lines                      */
        !            43: 
        !            44:                                                        /* Lengths of various strings                           */
        !            45: #define LEN_GSNAME     15              /* Group/Lib short name                                         */
        !            46: #define LEN_GLNAME     40              /* Group/Lib long name                                          */
        !            47: #define LEN_SSNAME     25              /* Sub/Dir short name                                           */
        !            48: #define LEN_SLNAME     40              /* Sub/Dir long name                                            */
        !            49: 
        !            50:                                                                /* User Questions                                               */
        !            51: #define UQ_ALIASES     (1L<<0)         /* Ask for alias                                                */
        !            52: #define UQ_LOCATION (1L<<1)    /* Ask for location                                     */
        !            53: #define UQ_ADDRESS     (1L<<2)         /* Ask for address                                              */
        !            54: #define UQ_PHONE       (1L<<3)         /* Ask for phone number                                 */
        !            55: #define UQ_HANDLE      (1L<<4)         /* Ask for chat handle                                  */
        !            56: #define UQ_DUPHAND     (1L<<5)         /* Search for duplicate handles                 */
        !            57: #define UQ_SEX         (1L<<6)         /* Ask for sex :)                                               */
        !            58: #define UQ_BIRTH       (1L<<7)         /* Ask for birth date                                   */
        !            59: #define UQ_COMP        (1L<<8)         /* Ask for computer type                                */
        !            60: #define UQ_MC_COMP     (1L<<9)         /* Multiple choice computer type                */
        !            61: #define UQ_REALNAME (1L<<10)   /* Ask for real name                                    */
        !            62: #define UQ_DUPREAL     (1L<<11)        /* Search for duplicate real names              */
        !            63: #define UQ_COMPANY     (1L<<12)        /* Ask for company name                                 */
        !            64: #define UQ_NOEXASC     (1L<<13)        /* Don't allow ex-ASCII in user text    */
        !            65: #define UQ_CMDSHELL (1L<<14)   /* Ask for command shell                                */
        !            66: #define UQ_XEDIT       (1L<<15)        /* Ask for external editor                              */
        !            67: #define UQ_NODEF       (1L<<16)        /* Don't ask for default settings       */
        !            68: #define UQ_NOCOMMAS (1L<<17)   /* Do not require commas in location    */
        !            69: 
        !            70: 
        !            71:                                                                /* Different bits in sys_misc                           */
        !            72: #define SM_CLOSED      (1L<<0)         /* System is clsoed to New Users                        */
        !            73: #define SM_SYSSTAT     (1L<<1)         /* Sysops activity included in statistics       */
        !            74: #define SM_NOBEEP      (1L<<2)         /* No beep sound locally                                        */
        !            75: #define SM_PWEDIT      (1L<<3)         /* Allow users to change their passwords        */
        !            76: #define SM_TIMED_EX (1L<<4)    /* Timed event must run exclusively             */
        !            77: #define SM_ANON_EM     (1L<<5)         /* Allow anonymous e-mail                                       */
        !            78: #define SM_LISTLOC     (1L<<6)         /* Use location of caller in user lists         */
        !            79: #define SM_WILDCAT     (1L<<7)         /* Expand Wildcat color codes in messages       */
        !            80: #define SM_PCBOARD     (1L<<8)         /* Expand PCBoard color codes in messages       */
        !            81: #define SM_WWIV        (1L<<9)         /* Expand WWIV color codes in messages          */
        !            82: #define SM_CELERITY (1L<<10)   /* Expand Celerity color codes in messages      */
        !            83: #define SM_RENEGADE (1L<<11)   /* Expand Renegade color codes in messages */
        !            84: #define SM_ECHO_PW     (1L<<12)        /* Echo passwords locally                                       */
        !            85: #define SM_REQ_PW      (1L<<13)        /* Require passwords locally                            */
        !            86: #define SM_L_SYSOP     (1L<<14)        /* Allow local sysop logon/commands             */
        !            87: #define SM_R_SYSOP     (1L<<15)        /* Allow remote sysop logon/commands            */
        !            88: #define SM_QUOTE_EM (1L<<16)   /* Allow quoting of e-mail                                      */
        !            89: #define SM_EURODATE (1L<<17)   /* Europian date format (DD/MM/YY)                      */
        !            90: #define SM_MILITARY (1L<<18)   /* Military time format                                         */
        !            91: #define SM_TIMEBANK (1L<<19)   /* Allow time bank functions                            */
        !            92: #define SM_FILE_EM     (1L<<20)        /* Allow file attachments in E-mail             */
        !            93: #define SM_SHRTPAGE (1L<<21)   /* Short sysop page                                             */
        !            94: #define SM_TIME_EXP (1L<<22)   /* Set to expired values if out-of-time         */
        !            95: #define SM_FASTMAIL (1L<<23)   /* Fast e-mail storage mode                             */
        !            96: #define SM_QVALKEYS (1L<<24)   /* Quick validation keys enabled                        */
        !            97: #define SM_ERRALARM (1L<<25)   /* Error beeps on                                                       */
        !            98: #define SM_FWDTONET (1L<<26)   /* Allow forwarding of e-mail to netmail        */
        !            99: #define SM_DELREADM (1L<<27)   /* Delete read mail automatically                       */
        !           100: #define SM_NOCDTCVT (1L<<28)   /* No credit to minute conversions allowed      */
        !           101: #define SM_DELEMAIL (1L<<29)   /* Physically remove deleted e-mail immed.      */
        !           102: #define SM_USRVDELM (1L<<30)   /* Users can see deleted msgs                           */
        !           103: #define SM_SYSVDELM (1L<<31)   /* Sysops can see deleted msgs                          */
        !           104: 
        !           105:                                                        /* Different bits in node_misc                          */
        !           106: #define NM_ANSALARM (1<<0)     /* Alarm locally on answer                                      */
        !           107: #define NM_WFCSCRN  (1<<1)     /* Wait for call screen                     */
        !           108: #define NM_WFCMSGS     (1<<2)  /* Include total messages/files on WFC          */
        !           109: #define NM_LCL_EDIT (1<<3)     /* Use local editor to create messages          */
        !           110: #define NM_EMSOVL      (1<<4)  /* Use expanded memory of overlays                      */
        !           111: #define NM_WINOS2      (1<<5)  /* Use Windows/OS2 time slice API call          */
        !           112: #define NM_INT28       (1<<6)  /* Make int 28 DOS idle calls                           */
        !           113: #define NM_NODV        (1<<7)  /* Don't detect and use DESQview API        */
        !           114: #define NM_NO_NUM      (1<<8)  /* Don't allow logons by user number        */
        !           115: #define NM_LOGON_R     (1<<9)  /* Allow logons by user real name                       */
        !           116: #define NM_LOGON_P     (1<<10) /* Secure logons (always ask for password)      */
        !           117: #define NM_NO_LKBRD (1<<11) /* No local keyboard (at all)                              */
        !           118: #define NM_SYSPW       (1<<12) /* Protect WFC keys and Alt keys with SY:       */
        !           119: #define NM_NO_INACT (1<<13) /* No local inactivity alert/logoff                */
        !           120: #define NM_NOBEEP      (1<<14) /* Don't beep locally                       */
        !           121: #define NM_LOWPRIO     (1<<15) /* Always use low priority input                        */
        !           122: #define NM_7BITONLY (1L<<16) /* Except 7-bit input only (E71 terminals) */
        !           123: #define NM_RESETVID (1L<<17) /* Reset video mode between callers?              */
        !           124: 
        !           125:                                                        /* Miscellaneous Modem Settings (mdm_misc)  */
        !           126: #define MDM_CTS         (1<<0) /* Use hardware send flow control                       */
        !           127: #define MDM_RTS         (1<<1) /* Use hardware recv flow control                       */
        !           128: #define MDM_STAYHIGH (1<<2) /* Stay at highest DTE rate                                */
        !           129: #define MDM_CALLERID (1<<3) /* Supports Caller ID                                              */
        !           130: #define MDM_DUMB        (1<<4) /* Just watch DCD for answer - dumb modem       */
        !           131: #define MDM_NODTR       (1<<5) /* Don't drop DTR for hang-up               */
        !           132: #define MDM_KNOWNRES (1<<6) /* Allow known result codes only                   */
        !           133: #define MDM_VERBAL      (1<<7) /* Use verbal result codes                                      */
        !           134: 
        !           135:                                                                        /* Bit values for level_misc[x]         */
        !           136: #define LEVEL_EXPTOLVL (1<<0)          /* Expire to level_expireto[x]          */
        !           137: #define LEVEL_EXPTOVAL (1<<1)          /* Expire to val[level_expireto[x]] */
        !           138: 
        !           139:                                                                        /* Bit values for prot[x].misc */
        !           140: #define PROT_DSZLOG (1<<0)          /* Supports DSZ Log */
        !           141: 
        !           142:                                                                        /* Bit values in netmail_misc */
        !           143: 
        !           144: #define NMAIL_ALLOW    (1<<0)          /* Allow NetMail */
        !           145: #define NMAIL_CRASH    (1<<1)          /* Default netmail to crash */
        !           146: #define NMAIL_HOLD             (1<<2)          /* Default netmail to hold */
        !           147: #define NMAIL_KILL             (1<<3)          /* Default netmail to kill after sent */
        !           148: #define NMAIL_ALIAS    (1<<4)          /* Use Aliases in NetMail */
        !           149: #define NMAIL_FILE             (1<<5)          /* Allow file attachments */
        !           150: #define NMAIL_DIRECT   (1<<6)          /* Default netmail to direct */
        !           151: 
        !           152:                                                                        /* Attribute bits for fido msg header */
        !           153: #define FIDO_PRIVATE   (1<<0)          /* Private message */
        !           154: #define FIDO_CRASH             (1<<1)          /* Crash-mail (send immediately) */
        !           155: #define FIDO_RECV              (1<<2)          /* Received successfully */
        !           156: #define FIDO_SENT              (1<<3)          /* Sent successfully */
        !           157: #define FIDO_FILE              (1<<4)          /* File attached */
        !           158: #define FIDO_INTRANS   (1<<5)          /* In transit */
        !           159: #define FIDO_ORPHAN    (1<<6)          /* Orphan */
        !           160: #define FIDO_KILLSENT  (1<<7)          /* Kill it after sending it */
        !           161: #define FIDO_LOCAL             (1<<8)          /* Created locally - on this system */
        !           162: #define FIDO_HOLD              (1<<9)          /* Hold - don't send it yet */
        !           163: #define FIDO_FREQ              (1<<11)         /* File request */
        !           164: #define FIDO_RRREQ             (1<<12)         /* Return receipt request */
        !           165: #define FIDO_RR                (1<<13)         /* This is a return receipt */
        !           166: #define FIDO_AUDIT             (1<<14)         /* Audit request */
        !           167: #define FIDO_FUPREQ    (1<<15)         /* File update request */
        !           168: 
        !           169:                                                                        /* Bit values for sub[x].misc */
        !           170: #define SUB_NSCAN      (1L<<0)                 /* Scan this sub-board for new msgs */
        !           171: #define SUB_YSCAN      (1L<<1)                 /* Scan for new messages to you only */
        !           172: #define SUB_SSCAN      (1L<<2)                 /* Scan this sub-board for msgs to you */
        !           173: #define SUB_QNET       (1L<<3)                 /* Sub-board is netted via QWK network */
        !           174: #define SUB_PNET       (1L<<4)                 /* Sub-board is netted via PostLink */
        !           175: #define SUB_FIDO       (1L<<5)                 /* Sub-board is netted via FidoNet */
        !           176: #define SUB_PRIV       (1L<<6)                 /* Allow private posts on sub */
        !           177: #define SUB_PONLY      (1L<<7)                 /* Private posts only */
        !           178: #define SUB_ANON       (1L<<8)                 /* Allow anonymous posts on sub */
        !           179: #define SUB_AONLY      (1L<<9)                 /* Anonymous only */
        !           180: #define SUB_NAME       (1L<<10)                /* Must use real names */
        !           181: #define SUB_DEL        (1L<<11)                /* Allow users to delete messages */
        !           182: #define SUB_DELLAST (1L<<12)           /* Allow users to delete last msg only */
        !           183: #define SUB_FORCED     (1L<<13)                /* Sub-board is forced scanning */
        !           184: #define SUB_NOTAG      (1L<<14)                /* Don't add tag or origin lines */
        !           185: #define SUB_TOUSER     (1L<<15)                /* Prompt for to user on posts */
        !           186: #define SUB_ASCII      (1L<<16)                /* ASCII characters only */
        !           187: #define SUB_QUOTE      (1L<<17)                /* Allow online quoting */
        !           188: #define SUB_NSDEF      (1L<<18)                /* New-Scan on by default */
        !           189: #define SUB_INET       (1L<<19)                /* Sub-board is netted via Internet */
        !           190: #define SUB_FAST       (1L<<20)                /* Fast storage mode */
        !           191: #define SUB_KILL       (1L<<21)                /* Kill read messages automatically */
        !           192: #define SUB_KILLP      (1L<<22)                /* Kill read pvt messages automatically */
        !           193: #define SUB_SYSPERM (1L<<23)           /* Sysop messages are permament */
        !           194: #define SUB_GATE       (1L<<24)                /* Gateway between Network types */
        !           195: #define SUB_LZH        (1L<<25)                /* Use LZH compression for msgs */
        !           196: #define SUB_SSDEF      (1L<<26)                /* Default ON for Scan for Your msgs */
        !           197: #define SUB_HYPER      (1L<<27)                /* Hyper allocation */
        !           198: 
        !           199:                                     /* Bit values for dir[x].misc */
        !           200: #define DIR_FCHK       (1L<<0)                 /* Check for file existance */
        !           201: #define DIR_RATE       (1L<<1)                 /* Force uploads to be rated G,R, or X */
        !           202: #define DIR_MULT       (1L<<2)                 /* Ask for multi-disk numbering */
        !           203: #define DIR_DUPES      (1L<<3)                 /* Search this dir for upload dupes */
        !           204: #define DIR_FREE       (1L<<4)                 /* Free downloads */
        !           205: #define DIR_TFREE      (1L<<5)                 /* Time to download is free */
        !           206: #define DIR_CDTUL      (1L<<6)                 /* Credit Uploads */
        !           207: #define DIR_CDTDL      (1L<<7)                 /* Credit Downloads */
        !           208: #define DIR_ANON       (1L<<8)                 /* Anonymous uploads */
        !           209: #define DIR_AONLY      (1L<<9)                 /* Anonymous only */
        !           210: #define DIR_ULDATE     (1L<<10)                /* Include upload date in listing */
        !           211: #define DIR_DIZ        (1L<<11)                /* FILE_ID.DIZ and DESC.SDI support */
        !           212: #define DIR_NOSCAN     (1L<<12)                /* Don't new-scan this directory */
        !           213: #define DIR_NOAUTO     (1L<<13)                /* Don't auto-add this directory */
        !           214: #define DIR_ULTIME     (1L<<14)                /* Deduct time during uploads */
        !           215: #define DIR_CDTMIN     (1L<<15)                /* Give uploader minutes instead of cdt */
        !           216: #define DIR_SINCEDL (1L<<16)           /* Purge based on days since last dl */
        !           217: #define DIR_MOVENEW (1L<<17)           /* Files marked as new when moved */
        !           218: 
        !           219:                                     /* Bit values for file_t.misc */
        !           220: #define FM_EXTDESC  (1<<0)          /* Extended description exists */
        !           221: #define FM_ANON        (1<<1)                  /* Anonymous upload */
        !           222: 
        !           223: enum {                                                         /* errormsg() codes */
        !           224:         ERR_OPEN                                               /* opening a file */
        !           225:        ,ERR_CLOSE                                              /* close a file */
        !           226:        ,ERR_FDOPEN                                     /* associating a stream with fd */
        !           227:        ,ERR_READ                                               /* reading from file */
        !           228:        ,ERR_WRITE                                              /* writing to file */
        !           229:        ,ERR_REMOVE                                     /* removing a file */
        !           230:        ,ERR_ALLOC                                              /* allocating memory */
        !           231:        ,ERR_CHK                                                /* checking */
        !           232:        ,ERR_LEN                                                /* file length */
        !           233:        ,ERR_EXEC                                               /* executing */
        !           234:        ,ERR_CHDIR                                              /* changing directory */
        !           235:        ,ERR_CREATE                                     /* creating */
        !           236:        ,ERR_LOCK                                               /* locking */
        !           237:        ,ERR_UNLOCK                                     /* unlocking */
        !           238:        };
        !           239: 
        !           240: enum {                              /* Values for dir[x].sort */
        !           241:      SORT_NAME_A                    /* Sort by filename, ascending */
        !           242:     ,SORT_NAME_D                    /* Sort by filename, descending */
        !           243:     ,SORT_DATE_A                    /* Sort by upload date, ascending */
        !           244:     ,SORT_DATE_D                    /* Sort by upload date, descending */
        !           245:     };
        !           246: 
        !           247: enum {
        !           248:         clr_mnehigh
        !           249:        ,clr_mnelow
        !           250:        ,clr_mnecmd
        !           251:        ,clr_inputline
        !           252:        ,clr_err
        !           253:        ,clr_nodenum
        !           254:        ,clr_nodeuser
        !           255:        ,clr_nodestatus
        !           256:        ,clr_filename
        !           257:        ,clr_filecdt
        !           258:        ,clr_filedesc
        !           259:        ,clr_filelsthdrbox
        !           260:        ,clr_filelstline
        !           261:        ,clr_chatlocal
        !           262:        ,clr_chatremote
        !           263:        ,clr_multichat
        !           264:        ,TOTAL_COLORS };
        !           265: 
        !           266: enum {                                                         /* Values for xtrn_t.type                       */
        !           267:         XTRN_NONE                                              /* No data file needed                          */
        !           268:        ,XTRN_SBBS                                              /* Synchronet external                          */
        !           269:        ,XTRN_WWIV                                              /* WWIV external                                        */
        !           270:        ,XTRN_GAP                                               /* Gap door                                             */
        !           271:        ,XTRN_RBBS                                              /* RBBS, QBBS, or Remote Access         */
        !           272:        ,XTRN_WILDCAT                                   /* Wildcat                                                      */
        !           273:        ,XTRN_PCBOARD                                   /* PCBoard                                                      */
        !           274:        ,XTRN_SPITFIRE                                  /* SpitFire                                             */
        !           275:        ,XTRN_UTI                                               /* UTI Doors - MegaMail                         */
        !           276:        ,XTRN_SR                                                /* Solar Realms                                         */
        !           277:        ,XTRN_RBBS1                                     /* DORINFO1.DEF always                          */
        !           278:        ,XTRN_TRIBBS                                    /* TRIBBS.SYS                                           */
        !           279:        };
        !           280: 
        !           281: enum {                                                         /* Values for xtrn_t.event                      */
        !           282:         EVENT_NONE                                     /* Only accessible by menu                      */
        !           283:        ,EVENT_LOGON                                    /* Execute during logon sequence        */
        !           284:        ,EVENT_LOGOFF                                   /* Execute during logoff sequence       */
        !           285:        ,EVENT_NEWUSER                                  /* Execute during newuser app.          */
        !           286:        ,EVENT_BIRTHDAY                                 /* Execute on birthday                          */
        !           287:        };
        !           288: 
        !           289:                                                                        /* Misc bits for event_t.misc           */
        !           290: #define EVENT_EXCL     (1L<<0)                 /* Exclusive                                            */
        !           291: #define EVENT_FORCE (1L<<1)            /* Force users off-line for event       */
        !           292: 
        !           293:                                                                        /* Mode bits for QWK stuff */
        !           294: #define A_EXPAND       (1<<0)                  /* Expand to ANSI sequences */
        !           295: #define A_LEAVE        (1<<1)                  /* Leave in */
        !           296: #define A_STRIP        (1<<2)                  /* Strip out */
        !           297: 
        !           298:                                                                        /* Bits in xtrn_t.misc                          */
        !           299: #define MULTIUSER      (1L<<0)                 /* allow multi simultaneous users       */
        !           300: #define ANSI           (1L<<1)                 /* user must have ANSI, same as ^^^ */
        !           301: #define IO_INTS        (1L<<2)                 /* Intercept I/O interrupts             */
        !           302: #define MODUSERDAT     (1L<<3)                 /* Program can modify user data         */
        !           303: #define WWIVCOLOR      (1L<<4)                 /* Program uses WWIV color codes        */
        !           304: #define EVENTONLY      (1L<<5)                 /* Program executes as event only       */
        !           305: #define STARTUPDIR     (1L<<6)                 /* Create drop file in start-up dir */
        !           306: #define REALNAME       (1L<<7)                 /* Use real name in drop file           */
        !           307: #define SWAP           (1L<<8)                 /* Swap for this door                           */
        !           308: #define FREETIME       (1L<<9)                 /* Free time while in this door         */
        !           309: #define QUICKBBS       (1L<<10)                /* QuickBBS style editor                        */
        !           310: #define EXPANDLF       (1L<<11)                /* Expand LF to CRLF editor             */
        !           311: #define QUOTEALL       (1L<<12)                /* Automatically quote all of msg       */
        !           312: #define QUOTENONE      (1L<<13)                /* Automatically quote none of msg      */
        !           313: 
        !           314:                                                                        /* Bits in user.qwk                             */
        !           315: #define QWK_FILES      (1L<<0)                 /* Include new files list                       */
        !           316: #define QWK_EMAIL      (1L<<1)                 /* Include unread e-mail                        */
        !           317: #define QWK_ALLMAIL (1L<<2)            /* Include ALL e-mail                           */
        !           318: #define QWK_DELMAIL (1L<<3)            /* Delete e-mail after download         */
        !           319: #define QWK_BYSELF     (1L<<4)                 /* Include messages from self           */
        !           320: #define QWK_UNUSED     (1L<<5)                 /* Currently unused                             */
        !           321: #define QWK_EXPCTLA (1L<<6)            /* Expand ctrl-a codes to ascii         */
        !           322: #define QWK_RETCTLA (1L<<7)            /* Retain ctrl-a codes                          */
        !           323: #define QWK_ATTACH     (1L<<8)                 /* Include file attachments             */
        !           324: #define QWK_NOINDEX (1L<<9)            /* Do not create index files in QWK */
        !           325: #define QWK_TZ         (1L<<10)                /* Include "@TZ" time zone in msgs  */
        !           326: #define QWK_VIA        (1L<<11)                /* Include "@VIA" seen-bys in msgs  */
        !           327: #define QWK_NOCTRL     (1L<<12)                /* No extraneous control files          */
        !           328: 
        !           329: #define INVALID_DIR 0xffff          /* Invalid directory value          */
        !           330: #define INVALID_SUB 0xffff                     /* Invalid sub-board value                      */
        !           331: 
        !           332: #define KEY_BUFSIZE 1024       /* Size of keyboard input buffer                        */
        !           333: #define SAVE_LINES      4              /* Maximum number of lines to save                      */
        !           334: #define LINE_BUFSIZE 512       /* Size of line output buffer               */
        !           335: 
        !           336: 
        !           337: #define TABSIZE                4               /* Tab Size                                                                     */
        !           338: 
        !           339: #define SWAP_NONE      0x80    /* Allow no swapping for executables            */
        !           340: 
        !           341: #define DSTSDABLEN     50              /* Length of DSTS.DAB file                                      */
        !           342: 
        !           343:                                                        /* Console I/O Bits     (console)                               */
        !           344: #define CON_R_ECHO      (1<<0) /* Echo remotely                                                        */
        !           345: #define CON_R_ECHOX     (1<<1) /* Echo X's to remote user                                      */
        !           346: #define CON_R_INPUT  (1<<2)    /* Accept input remotely                                        */
        !           347: #define CON_L_ECHO      (1<<3) /* Echo locally                                         */
        !           348: #define CON_L_ECHOX     (1<<4) /* Echo X's locally                                                     */
        !           349: #define CON_L_INPUT  (1<<5)    /* Accept input locally                                         */
        !           350: #define CON_RAW_IN   (1<<8) /* Raw input mode - no editing capabilities */
        !           351: #define CON_ECHO_OFF (1<<10)/* Remote & Local echo disabled for ML/MF  */
        !           352: #define CON_UPARROW  (1<<11)/* Up arrow hit - move up one line                 */
        !           353: 
        !           354:                                                        /* Number of milliseconds                   */
        !           355: #define DELAY_HANGUP 250    /* Delay before modem drops carrier         */
        !           356: #define DELAY_MDMTLD 500    /* Delay to give each ~ in modem strings    */
        !           357: #define DELAY_SPIN   10     /* Delay for the spinning cursor            */
        !           358: #define DELAY_AUTOHG 1500      /* Delay for auto-hangup (xfer)                         */
        !           359: 
        !           360: #define SEC_LOGON      1800    /* 30 minutes allowed to logon                          */
        !           361: #define SEC_BILLING   90       /* under 2 minutes per billing call             */
        !           362: #define SEC_OK            5    /* Attempt to get an OK response from modem */
        !           363: #define SEC_ANSI          5    /* Attempt to get a valid ANSI response         */
        !           364: #define SEC_ANSWER       30    /* Retries to get an answer code from modem */
        !           365: #define SEC_CID          10    /* Ten second pause for caller ID                       */
        !           366: #define SEC_RING          6    /* Maximum seconds between rings                        */
        !           367: 
        !           368: #define LOOP_NOPEN      500    /* Retries before file access denied            */
        !           369: #define LOOP_NODEDAB 500       /* Retries on NODE.DAB locking/unlocking        */
        !           370: 
        !           371:                                                        /* String lengths                                                       */
        !           372: #define LEN_ALIAS              25      /* User alias                                                           */
        !           373: #define LEN_NAME               25      /* User name                                                            */
        !           374: #define LEN_HANDLE             8       /* User chat handle                                             */
        !           375: #define LEN_NOTE               30      /* User note                                                            */
        !           376: #define LEN_COMP               30      /* User computer description                            */
        !           377: #define LEN_COMMENT    60      /* User comment                                                         */
        !           378: #define LEN_NETMAIL    60      /* NetMail forwarding address                           */
        !           379: #define LEN_PASS                8      /* User password                                                        */
        !           380: #define LEN_PHONE              12      /* User phone number                                            */
        !           381: #define LEN_BIRTH               8      /* Birthday in MM/DD/YY format                          */
        !           382: #define LEN_ADDRESS    30      /* User address                                                         */
        !           383: #define LEN_LOCATION   30      /* Location (City, State)                                       */
        !           384: #define LEN_ZIPCODE    10      /* Zip/Postal code                                                      */
        !           385: #define LEN_MODEM               8      /* User modem type description                          */
        !           386: #define LEN_FDESC              58      /* File description                                             */
        !           387: #define LEN_FCDT                9      /* 9 digits for file credit values                      */
        !           388: #define LEN_TITLE              70      /* Message title                                                        */
        !           389: #define LEN_MAIN_CMD   40      /* Storage in user.dat for custom commands      */
        !           390: #define LEN_XFER_CMD   40
        !           391: #define LEN_SCAN_CMD   40
        !           392: #define LEN_MAIL_CMD   40
        !           393: #define LEN_CID                25      /* Caller ID (phone number)                             */
        !           394: #define LEN_ARSTR              40      /* Max length of Access Requirement string      */
        !           395: #define LEN_CHATACTCMD  9      /* Chat action command                                          */
        !           396: #define LEN_CHATACTOUT 65      /* Chat action output string                            */
        !           397: 
        !           398: /****************************************************************************/
        !           399: /* This is a list of offsets into the USER.DAT file for different variables */
        !           400: /* that are stored (for each user)                                                                                     */
        !           401: /****************************************************************************/
        !           402: #define U_ALIAS        0                                       /* Offset to alias */
        !           403: #define U_NAME         (U_ALIAS+LEN_ALIAS) /* Offset to name */
        !           404: #define U_HANDLE       (U_NAME+LEN_NAME)
        !           405: #define U_NOTE         (U_HANDLE+LEN_HANDLE+2)
        !           406: #define U_COMP         (U_NOTE+LEN_NOTE)
        !           407: #define U_COMMENT      (U_COMP+LEN_COMP+2)
        !           408: 
        !           409: #define U_NETMAIL      (U_COMMENT+LEN_COMMENT+2)
        !           410: 
        !           411: #define U_ADDRESS      (U_NETMAIL+LEN_NETMAIL+2)
        !           412: #define U_LOCATION     (U_ADDRESS+LEN_ADDRESS)
        !           413: #define U_ZIPCODE      (U_LOCATION+LEN_LOCATION)
        !           414: 
        !           415: #define U_PASS         (U_ZIPCODE+LEN_ZIPCODE+2)
        !           416: #define U_PHONE        (U_PASS+8)                      /* Offset to phone-number */
        !           417: #define U_BIRTH        (U_PHONE+12)            /* Offset to users birthday     */
        !           418: #define U_MODEM     (U_BIRTH+8)
        !           419: #define U_LASTON       (U_MODEM+8)
        !           420: #define U_FIRSTON      (U_LASTON+8)
        !           421: #define U_EXPIRE    (U_FIRSTON+8)
        !           422: #define U_PWMOD     (U_EXPIRE+8)
        !           423: 
        !           424: #define U_LOGONS    (U_PWMOD+8+2)
        !           425: #define U_LTODAY    (U_LOGONS+5)
        !           426: #define U_TIMEON    (U_LTODAY+5)
        !           427: #define U_TEXTRA       (U_TIMEON+5)
        !           428: #define U_TTODAY    (U_TEXTRA+5)
        !           429: #define U_TLAST     (U_TTODAY+5)
        !           430: #define U_POSTS     (U_TLAST+5)
        !           431: #define U_EMAILS    (U_POSTS+5)
        !           432: #define U_FBACKS    (U_EMAILS+5)
        !           433: #define U_ETODAY       (U_FBACKS+5)
        !           434: #define U_PTODAY       (U_ETODAY+5)
        !           435: 
        !           436: #define U_ULB       (U_PTODAY+5+2)
        !           437: #define U_ULS       (U_ULB+10)
        !           438: #define U_DLB       (U_ULS+5)
        !           439: #define U_DLS       (U_DLB+10)
        !           440: #define U_CDT          (U_DLS+5)
        !           441: #define U_MIN          (U_CDT+10)
        !           442: 
        !           443: #define U_LEVEL        (U_MIN+10+2)    /* Offset to Security Level    */
        !           444: #define U_FLAGS1       (U_LEVEL+2)     /* Offset to Flags */
        !           445: #define U_TL           (U_FLAGS1+8)    /* Offset to unused field */
        !           446: #define U_FLAGS2       (U_TL+2)
        !           447: #define U_EXEMPT       (U_FLAGS2+8)
        !           448: #define U_REST         (U_EXEMPT+8)
        !           449: #define U_ROWS         (U_REST+8+2)    /* Number of Rows on user's monitor */
        !           450: #define U_SEX          (U_ROWS+2)              /* Sex, Del, ANSI, color etc.           */
        !           451: #define U_MISC         (U_SEX+1)               /* Miscellaneous flags in 8byte hex */
        !           452: #define U_OLDXEDIT     (U_MISC+8)              /* External editor (Version 1 method) */
        !           453: #define U_LEECH        (U_OLDXEDIT+2)  /* two hex digits - leech attempt count */
        !           454: #define U_CURSUB       (U_LEECH+2)     /* Current sub (internal code) */
        !           455: #define U_CURDIR       (U_CURSUB+8)    /* Current dir (internal code) */
        !           456: #define U_CMDSET       (U_CURDIR+8)    /* unused */
        !           457: #define U_MAIN_CMD     (U_CMDSET+2+2)  /* unused */
        !           458: #define U_XFER_CMD     (U_MAIN_CMD+LEN_MAIN_CMD)               /* unused */
        !           459: #define U_SCAN_CMD     (U_XFER_CMD+LEN_XFER_CMD+2)     /* unused */
        !           460: #define U_MAIL_CMD     (U_SCAN_CMD+LEN_SCAN_CMD)               /* unused */
        !           461: #define U_FREECDT      (U_MAIL_CMD+LEN_MAIL_CMD+2)
        !           462: #define U_FLAGS3       (U_FREECDT+10)  /* Flag set #3 */
        !           463: #define U_FLAGS4       (U_FLAGS3+8)    /* Flag set #4 */
        !           464: #define U_XEDIT        (U_FLAGS4+8)    /* External editor (code) */
        !           465: #define U_SHELL        (U_XEDIT+8)     /* Command shell (code) */
        !           466: #define U_QWK          (U_SHELL+8)     /* QWK settings */
        !           467: #define U_TMPEXT       (U_QWK+8)               /* QWK extension */
        !           468: #define U_CHAT         (U_TMPEXT+3)    /* Chat settings */
        !           469: #define U_NS_TIME      (U_CHAT+8)              /* New-file scan date/time */
        !           470: #define U_PROT         (U_NS_TIME+8)   /* Default transfer protocol */
        !           471: #define U_UNUSED       (U_PROT+1)
        !           472: #define U_LEN          (U_UNUSED+28+2)
        !           473: 
        !           474: /****************************************************************************/
        !           475: /* Offsets into DIR .DAT file for different fields for each file                       */
        !           476: /****************************************************************************/
        !           477: #define F_CDT          0                               /* Offset in DIR#.DAT file for cdts */
        !           478: #define F_DESC         (F_CDT+LEN_FCDT)/* Description                                          */
        !           479: #define F_ULER         (F_DESC+LEN_FDESC+2)   /* Uploader                                      */
        !           480: #define F_TIMESDLED (F_ULER+30+2)      /* Number of times downloaded           */
        !           481: #define F_OPENCOUNT    (F_TIMESDLED+5+2)
        !           482: #define F_MISC         (F_OPENCOUNT+3+2)
        !           483: #define F_ALTPATH      (F_MISC+1)              /* Two hex digit alternate path */
        !           484: #define F_LEN          (F_ALTPATH+2+2) /* Total length of all fdat in file */
        !           485: 
        !           486: #define F_IXBSIZE      22                              /* Length of each index entry           */
        !           487: 
        !           488: 
        !           489: #define SIF_MAXBUF  0x7000                     /* Maximum buffer size of SIF data */
        !           490: 
        !           491: /* NOTE: Do not change the values of the following block of defines!   */
        !           492: 
        !           493: #define DELETED        (1L<<0)                 /* Bit values for user.misc             */
        !           494: #define ANSI           (1L<<1)                 /* Supports ANSI terminal emulation */
        !           495: #define COLOR          (1L<<2)                 /* Send color codes                             */
        !           496: #define RIP            (1L<<3)                 /* Supports RIP terminal emulation      */
        !           497: #define UPAUSE         (1L<<4)                 /* Pause on every screen full           */
        !           498: #define SPIN           (1L<<5)                 /* Spinning cursor - Same as K_SPIN */
        !           499: #define INACTIVE       (1L<<6)                 /* Inactive user slot                           */
        !           500: #define EXPERT         (1L<<7)                 /* Expert menu mode                             */
        !           501: #define ANFSCAN        (1L<<8)                 /* Auto New file scan                           */
        !           502: #define CLRSCRN        (1L<<9)                 /* Clear screen before each message */
        !           503: #define QUIET          (1L<<10)                /* Quiet mode upon logon                        */
        !           504: #define BATCHFLAG      (1L<<11)                /* File list allow batch dl flags       */
        !           505: #define NETMAIL        (1L<<12)                /* Forward e-mail to fidonet addr       */
        !           506: #define CURSUB         (1L<<13)                /* Remember current sub-board/dir       */
        !           507: #define ASK_NSCAN      (1L<<14)                /* Ask for newscanning upon logon       */
        !           508: #define NO_EXASCII     (1L<<15)                /* Don't send extended ASCII        */
        !           509: #define ASK_SSCAN      (1L<<16)                /* Ask for messages to you at logon */
        !           510: #define AUTOTERM       (1L<<17)                /* Autodetect terminal type             */
        !           511: #define COLDKEYS       (1L<<18)                /* No hot-keys                                          */
        !           512: #define EXTDESC        (1L<<19)                /* Extended file descriptions           */
        !           513: #define AUTOHANG       (1L<<20)                /* Auto-hang-up after transfer          */
        !           514: #define WIP            (1L<<21)                /* Supports WIP terminal emulation      */
        !           515: 
        !           516: #define CLREOL      256     /* Character to erase to end of line               */
        !           517: #define HIGH        8       /* High intensity for curatr             */
        !           518: 
        !           519:                                                        /* Online status (online)                                       */
        !           520: #define ON_LOCAL       1               /* Online locally                                                       */
        !           521: #define ON_REMOTE   2                  /* Online remotely                                                      */
        !           522: #define ON_XFER                3               /* Online remotely - transferring file          */
        !           523: #define ON_WFC         4               /* Online waiting for a call                            */
        !           524: 
        !           525:                                                        /* Varios SYSTEM parameters for sys_status      */
        !           526: #define SS_LOGOPEN     (1L<<0) /* Node's Log file is open                      */
        !           527: #define SS_INITIAL  (1L<<1)    /* The bbs data has been initialized.       */
        !           528: #define SS_TMPSYSOP (1L<<2)    /* Temporary Sysop Status                                       */
        !           529: #define SS_USERON   (1L<<3)    /* A User is logged on to the BBS                       */
        !           530: #define SS_LCHAT    (1L<<4) /* Local chat in progress                                  */
        !           531: #define SS_CAP         (1L<<5) /* Capture is on                                                        */
        !           532: #define SS_ANSCAP      (1L<<6) /* Capture ANSI codes too                                       */
        !           533: #define SS_FINPUT      (1L<<7) /* Using file for input                                         */
        !           534: #define SS_COMISR      (1L<<8) /* Com port ISR is installed                            */
        !           535: #define SS_DAILY       (1L<<9) /* Execute System Daily Event on logoff         */
        !           536: #define SS_INUEDIT     (1L<<10) /* Inside Alt-Useredit section                         */
        !           537: #define SS_ABORT       (1L<<11) /* Global abort input or output flag           */
        !           538: #define SS_SYSPAGE     (1L<<12) /* Paging sysop                                                        */
        !           539: #define SS_SYSALERT (1L<<13) /* Notify sysop when users hangs up               */
        !           540: #define SS_GURUCHAT (1L<<14) /* Guru chat in progress                                  */
        !           541: #define SS_NODEDAB     (1L<<15) /* NODE.DAB operations are okay                        */
        !           542: #define SS_EVENT       (1L<<16) /* Time shortened due to upcoming event        */
        !           543: #define SS_PAUSEON     (1L<<17) /* Pause on, overriding user default           */
        !           544: #define SS_PAUSEOFF (1L<<18) /* Pause off, overriding user default             */
        !           545: #define SS_IN_CTRLP (1L<<19) /* Inside ctrl-p send node message func   */
        !           546: #define SS_NEWUSER     (1L<<20) /* New User online                                             */
        !           547: #define SS_MDMDEBUG (1L<<21) /* Modem debug output                                             */
        !           548: #define SS_NEST_PF     (1L<<22) /* Nested in printfile function                        */
        !           549: #define SS_DCDHIGH     (1L<<23) /* Assume DCD is high always                           */
        !           550: #define SS_SPLITP      (1L<<24) /* Split-screen private chat                           */
        !           551: #define SS_NEWDAY      (1L<<25) /* Date changed while online                           */
        !           552: 
        !           553:                                                                /* Bits in 'mode' for getkey and getstr     */
        !           554: #define K_UPPER        (1L<<0)         /* Converts all letters to upper case           */
        !           555: #define K_UPRLWR       (1L<<1)         /* Upper/Lower case automatically                       */
        !           556: #define K_NUMBER       (1L<<2)         /* Allow numbers only                                           */
        !           557: #define K_WRAP         (1L<<3)         /* Allows word wrap                                             */
        !           558: #define K_MSG          (1L<<4)         /* Allows ANSI, ^N ^A ^G                                        */
        !           559: #define K_SPIN         (1L<<5)         /* Spinning cursor (same as SPIN)                       */
        !           560: #define K_LINE         (1L<<6)         /* Input line (inverse color)                           */
        !           561: #define K_EDIT         (1L<<7)         /* Edit string passed                                           */
        !           562: #define K_CHAT         (1L<<8)         /* In chat multi-chat                                           */
        !           563: #define K_NOCRLF       (1L<<9)         /* Don't print CRLF after string input      */
        !           564: #define K_ALPHA        (1L<<10)        /* Only allow alphabetic characters             */
        !           565: #define K_GETSTR       (1L<<11)        /* getkey called from getstr()                          */
        !           566: #define K_LOWPRIO      (1L<<12)        /* low priority input                                           */
        !           567: #define K_NOEXASC      (1L<<13)        /* No extended ASCII allowed                            */
        !           568: #define K_E71DETECT (1L<<14)   /* Detect E-7-1 terminal type                           */
        !           569: #define K_AUTODEL      (1L<<15)        /* Auto-delete text (used with K_EDIT)          */
        !           570: #define K_COLD         (1L<<16)        /* Possible cold key mode                                       */
        !           571: #define K_NOECHO       (1L<<17)        /* Don't echo input                         */
        !           572: 
        !           573:                                                        /* Bits in 'mode' for putmsg and printfile  */
        !           574: #define P_NOABORT      (1<<0)  /* Disallows abortion of a message          */
        !           575: #define P_SAVEATR   (1<<1)  /* Save the new current attributres after  */
        !           576:                                                        /* msg has printed. */
        !           577: #define P_NOATCODES (1<<2)     /* Don't allow @ codes                      */
        !           578: #define P_OPENCLOSE (1<<3)     /* Open and close the file                                      */
        !           579: 
        !           580:                                                        /* Bits in 'mode' for listfiles             */
        !           581: #define FL_ULTIME   (1<<0)  /* List files by upload time                */
        !           582: #define FL_DLTIME   (1<<1)  /* List files by download time              */
        !           583: #define FL_NO_HDR   (1<<2)  /* Don't list directory header              */
        !           584: #define FL_FINDDESC (1<<3)  /* Find text in description                 */
        !           585: #define FL_EXFIND   (1<<4)     /* Find text in description - extended info */
        !           586: #define FL_VIEW     (1<<5)     /* View ZIP/ARC/GIF etc. info               */
        !           587: 
        !           588:                                                        /* Bits in the mode of writemsg and email() */
        !           589: #define WM_EXTDESC     (1<<0)  /* Writing extended file description            */
        !           590: #define WM_EMAIL       (1<<1)  /* Writing e-mail                                                       */
        !           591: #define WM_NETMAIL     (1<<2)  /* Writing NetMail                                                      */
        !           592: #define WM_ANON        (1<<3)  /* Writing anonymous message                            */
        !           593: #define WM_FILE        (1<<4)  /* Attaching a file to the message                      */
        !           594: #define WM_NOTOP       (1<<5)  /* Don't add top because we need top line   */
        !           595: #define WM_QUOTE       (1<<6)  /* Quote file available                                         */
        !           596: #define WM_QWKNET      (1<<7)  /* Writing QWK NetMail (25 char title)          */
        !           597: #define WM_PRIVATE     (1<<8)  /* Private (for creating MSGINF file)           */
        !           598: 
        !           599:                                                        /* Bits in the mode of loadposts()                      */
        !           600: #define LP_BYSELF      (1<<0)  /* Include messages sent by self                        */
        !           601: #define LP_OTHERS      (1<<1)  /* Include messages sent to others                      */
        !           602: #define LP_UNREAD      (1<<2)  /* Un-read messages only                                        */
        !           603: #define LP_PRIVATE     (1<<3)  /* Include all private messages                         */
        !           604: #define LP_REP         (1<<4)  /* Packing REP packet                                           */
        !           605: 
        !           606:                                                        /* Bits in the mode of loadmail()                       */
        !           607: #define LM_UNREAD      (1<<0)  /* Include un-read mail only                            */
        !           608: #define LM_QWK         (1<<1)  /* Loading for a QWK packet                             */
        !           609: 
        !           610: enum {                                         /* readmail and delmailidx which types          */
        !           611:         MAIL_YOUR                              /* mail sent to you */
        !           612:        ,MAIL_SENT                              /* mail you have sent */
        !           613:        ,MAIL_ANY                               /* mail sent to or from you */
        !           614:        ,MAIL_ALL                               /* all mail (ignores usernumber arg) */
        !           615:        };
        !           616: 
        !           617: #if 0
        !           618:                                                        /* Message mode bits                                            */
        !           619: #define MSG_PERM       1               /* Permanent - non-purgable message (post)  */
        !           620: #define MSG_FORWARD 1       /* Forwarded message (mail)                 */
        !           621: #define MSG_ANON       2               /* Anonymous message                                            */
        !           622: #define MSG_PRIVATE 4          /* Private posted message                                       */
        !           623: #define MSG_READ       8               /* Private post has been read                           */
        !           624: #define MSG_FILE       16              /* File attached                                                        */
        !           625: 
        !           626: #endif
        !           627: 
        !           628:                                                        /* Bits in the mode of external()           */
        !           629: #define EX_CC       (1<<0)     /* Use command.com to load other process    */
        !           630: #define EX_OUTR     (1<<1)  /* Copy DOS output to remote                */
        !           631: #define EX_OUTL        (1<<2)  /* Use _lputc() for local DOS output            */
        !           632: #define EX_INR         (1<<3)  /* Trap int 16h keyboard input requests     */
        !           633: #define EX_WWIV        (1<<4)  /* Expand WWIV color codes to ANSI sequence */
        !           634: #define EX_SWAP        (1<<5)  /* Swap out for this external                           */
        !           635: #define EX_OS2         (1<<6)  /* Executing an OS/2 pgm from SBBS4OS2          */
        !           636: #define EX_POPEN       (1<<7)  /* Leave COM port open                                          */
        !           637: 
        !           638: #define OS2_POPEN      (1<<0)  /* Leave COM port open                                          */
        !           639: 
        !           640: enum {                                         /* Values for 'mode' in listfileinfo        */
        !           641:         FI_INFO                /* Just list file information               */
        !           642:        ,FI_REMOVE              /* Remove/Move/Edit file information        */
        !           643:        ,FI_DOWNLOAD            /* Download files                           */
        !           644:        ,FI_OLD                 /* Search/Remove files not downloaded since */
        !           645:        ,FI_OLDUL                               /* Search/Remove files uploaded before      */
        !           646:        ,FI_OFFLINE                     /* Search/Remove files not online                       */
        !           647:        ,FI_USERXFER                    /* User Xfer Download                       */
        !           648:        ,FI_CLOSE                               /* Close any open records                                       */
        !           649:        };
        !           650: 
        !           651: #define L_LOGON     1       /* Logon List maintenance                   */
        !           652: #define LOL_SIZE    81      /* Length of each logon list entry          */
        !           653: 
        !           654: #define CHAT_ECHO      (1<<0)  /* Multinode chat echo                                          */
        !           655: #define CHAT_ACTION (1<<1)     /* Chat actions                                                         */
        !           656: #define CHAT_NOPAGE (1<<2)     /* Can't be paged                           */
        !           657: #define CHAT_NOACT     (1<<3)  /* No activity alerts                                           */
        !           658: #define CHAT_SPLITP (1<<4)     /* Split screen private chat                            */
        !           659: 
        !           660:                                                        /* Bits in mode of scanposts() function         */
        !           661: #define SCAN_CONST     (1<<0)  /* Continuous message scanning                          */
        !           662: #define SCAN_NEW       (1<<1)  /* New scanning                                                         */
        !           663: #define SCAN_BACK      (1<<2)  /* Scan the last message if no new                      */
        !           664: #define SCAN_TOYOU     (1<<3)  /* Scan for messages to you                             */
        !           665: #define SCAN_FIND      (1<<4)  /* Scan for text in messages                            */
        !           666: #define SCAN_UNREAD (1<<5)     /* Find un-read messages to you                         */
        !           667: 
        !           668:                                                        /* Bits in misc of chan_t                                       */
        !           669: #define CHAN_PW        (1<<0)  /* Can be password protected                            */
        !           670: #define CHAN_GURU      (1<<1)  /* Guru joins empty channel                             */
        !           671: 
        !           672: enum {                                         /* Values of mode for userlist function     */
        !           673:         UL_ALL                                 /* List all users in userlist                           */
        !           674:        ,UL_SUB                         /* List all users with access to cursub     */
        !           675:        ,UL_DIR                                 /* List all users with access to curdir         */
        !           676:        };
        !           677: 
        !           678: 
        !           679: #define BO_LEN         16              /* BACKOUT.DAB record length                            */
        !           680: 
        !           681: #define BO_OPENFILE 0          /* Backout types */
        !           682: 
        !           683: 
        !           684: /**********/
        !           685: /* Macros */
        !           686: /**********/
        !           687: 
        !           688: #define CRLF                   { outchar(CR); outchar(LF); }
        !           689: #define SYSOP                  (useron.level>=90 || sys_status & SS_TMPSYSOP)
        !           690: #define REALSYSOP              (useron.level>=90)
        !           691: #define FLAG(x)                (long)(1L<<(x-'A'))
        !           692: #define CLS            outchar(FF)
        !           693: #define WHERE          __LINE__,__FILE__
        !           694: #define SAVELINE               { slatr[slcnt]=latr; \
        !           695:                                                        sprintf(slbuf[slcnt<SAVE_LINES ? slcnt++ : slcnt] \
        !           696:                                                        ,"%.*s",lbuflen,lbuf); \
        !           697:                                                        lbuflen=0; }
        !           698: #define RESTORELINE    { lbuflen=0; attr(slatr[--slcnt]); \
        !           699:                                                        bputs(slbuf[slcnt]); \
        !           700:                                                        curatr=lclatr(-1); }
        !           701: #define RIOSYNC(x)             { if(online==ON_REMOTE) riosync(x); }
        !           702: #define SYNC                   { getnodedat(node_num,&thisnode,0); \
        !           703:                                                  RIOSYNC(0); \
        !           704:                                                  nodesync(); }
        !           705: #define ASYNC                  { getnodedat(node_num,&thisnode,0); \
        !           706:                                                  RIOSYNC(1); \
        !           707:                                                  nodesync(); }
        !           708: #define DCDHIGH                (sys_status&SS_DCDHIGH || rioctl(IOSTATE)&DCD)
        !           709: #define ANSI_SAVE()    bputs("\x1b[s")
        !           710: #define ANSI_RESTORE() bputs("\x1b[u")
        !           711: #define GOTOXY(x,y)     bprintf("\x1b[%d;%dH",y,x)
        !           712: 
        !           713: extern long crc32tbl[];
        !           714: #define ucrc32(ch,crc) (crc32tbl[(crc^ch)&0xff]^(crc>>8))
        !           715: 
        !           716: #ifdef __FLAT__
        !           717: #define TEXTWINDOW             window(1,1,80,node_scrnlen-1)
        !           718: #define STATUSLINE             window(1,node_scrnlen,80,node_scrnlen)
        !           719: #else
        !           720: #define TEXTWINDOW
        !           721: #define STATUSLINE
        !           722: #endif
        !           723: 
        !           724: #define ucrc32(ch,crc) (crc32tbl[(crc^ch)&0xff]^(crc>>8))
        !           725: 
        !           726: #ifdef __WATCOMC__
        !           727: 
        !           728:        #if !defined(__COLORS)
        !           729:        #define __COLORS
        !           730: 
        !           731:        enum COLORS {
        !           732:                BLACK,                  /* dark colors */
        !           733:                BLUE,
        !           734:                GREEN,
        !           735:                CYAN,
        !           736:                RED,
        !           737:                MAGENTA,
        !           738:                BROWN,
        !           739:                LIGHTGRAY,
        !           740:                DARKGRAY,               /* light colors */
        !           741:                LIGHTBLUE,
        !           742:                LIGHTGREEN,
        !           743:                LIGHTCYAN,
        !           744:                LIGHTRED,
        !           745:                LIGHTMAGENTA,
        !           746:                YELLOW,
        !           747:                WHITE
        !           748:        };
        !           749:        #endif
        !           750: 
        !           751:        #define BLINK           128 /* blink bit */
        !           752: 
        !           753:        #define ffblk find_t
        !           754:     #define findfirst(x,y,z) _dos_findfirst(x,z,y)
        !           755:        #define findnext(x) _dos_findnext(x)
        !           756: #endif
        !           757: 
        !           758: #if DEBUG      /* if DEBUG, call function */
        !           759: #define DLOG(where,txt) dlog(where,txt)
        !           760: #else          /* else, do nothing - function isn't even valid */
        !           761: #define DLOG(where,txt)
        !           762: #endif
        !           763: 
        !           764: 
        !           765: /********************/
        !           766: /* Type Definitions */
        !           767: /********************/
        !           768: 
        !           769: typedef struct {                                               /* Users information */
        !           770:        ushort  number,                                         /* Number */
        !           771:                        uls,                                            /* Number of uploads */
        !           772:                        dls,                                            /* Number of downloads */
        !           773:                        posts,                                          /* Number of posts */
        !           774:                        emails,                                         /* Number of emails */
        !           775:                        fbacks,                                         /* Number of emails sent to sysop */
        !           776:                        etoday,                                         /* Emails today */
        !           777:                        ptoday,                                         /* Posts today */
        !           778:                        timeon,                                         /* Total time on */
        !           779:                        textra,                                         /* Extra time for today */
        !           780:                        logons,                                         /* Total logons */
        !           781:                        ttoday,                                         /* Time on today */
        !           782:                        tlast,                                          /* Time on last call */
        !           783:                        ltoday,                                         /* Logons today */
        !           784:                        xedit,                                          /* External editor (1 based) */
        !           785:                        shell;                                          /* Command shell */
        !           786:        uchar   level,                                          /* Security level */
        !           787:                        sex,                                            /* Sex - M or F */
        !           788:                        rows,                           /* Rows of text */
        !           789:                        prot,                                           /* Default transfer protocol */
        !           790:                        alias[LEN_ALIAS+1],             /* Alias */
        !           791:                        name[LEN_NAME+1],                       /* Name - Real */
        !           792:                        handle[LEN_HANDLE+1],           /* Chat handle */
        !           793:                        comp[LEN_COMP+1],                       /* Computer type */
        !           794:                        note[LEN_NOTE+1],                       /* Public notice about this user */
        !           795:                        address[LEN_ADDRESS+1],         /* Street Address */
        !           796:                        location[LEN_LOCATION+1],       /* Location of user */
        !           797:                        zipcode[LEN_ZIPCODE+1],         /* Zip/Postal code */
        !           798:                        pass[LEN_PASS+1],                       /* Password - not case sensitive */
        !           799:                        birth[LEN_BIRTH+1],             /* Birthday in MM/DD/YY format */
        !           800:                        phone[LEN_PHONE+1],                     /* Phone number xxx-xxx-xxxx format */
        !           801:                        modem[LEN_MODEM+1],                     /* Modem type - 8 chars max */
        !           802:                        netmail[LEN_NETMAIL+1],         /* NetMail forwarding address */
        !           803:                        leech,                                          /* Leech attempt counter */
        !           804:                        tmpext[4],                                      /* QWK Packet extension */
        !           805:                        comment[LEN_COMMENT+1],         /* Private comment about user */
        !           806:                        cursub[9],                                      /* Current sub-board internal code */
        !           807:                        curdir[9];                                      /* Current directory internal code */
        !           808:        ulong   misc,                                           /* Misc. bits - ANSI, Deleted etc. */
        !           809:                        qwk,                                            /* QWK settings */
        !           810:                        chat,                                           /* Chat defaults */
        !           811:                        flags1,                                         /* Flag set #1 */
        !           812:                        flags2,                                         /* Flag set #2 */
        !           813:                        flags3,                                         /* Flag set #3 */
        !           814:                        flags4,                                         /* Flag set #4 */
        !           815:                        exempt,                                         /* Exemption Flags */
        !           816:                        rest,                                           /* Restriction Flags */
        !           817:                        ulb,                                            /* Total bytes uploaded */
        !           818:                        dlb,                                            /* Total bytes downloaded */
        !           819:                        cdt,                                            /* Credits */
        !           820:                        min,                                            /* Minutes */
        !           821:                        freecdt;                                        /* Free credits (renewed daily) */
        !           822:        time_t  firston,                                        /* Date/Time first called */
        !           823:                        laston,                                         /* Last logoff date/time */
        !           824:                        expire,                                         /* Expiration date */
        !           825:                        pwmod,                                          /* Password last modified */
        !           826:                        ns_time;                                        /* Date/Time of last new file scan */
        !           827:                        } user_t;
        !           828: 
        !           829: typedef struct {                                               /* File (transfers) Data */
        !           830:        uchar   name[13],                                       /* Name of file FILENAME.EXT */
        !           831:                        desc[LEN_FDESC+1],                      /* Uploader's Description */
        !           832:                        uler[LEN_ALIAS+1],                      /* User who uploaded */
        !           833:                        opencount,                                      /* Times record is currently open */
        !           834:                        path[LEN_DIR+1];                        /* Alternate DOS path */
        !           835:        time_t  date,                                           /* File date/time */
        !           836:                        dateuled,                                       /* Date/Time (Unix) Uploaded */
        !           837:                        datedled;                                       /* Date/Time (Unix) Last downloaded */
        !           838:        ushort  dir,                                            /* Directory file is in */
        !           839:                        altpath,
        !           840:                        timesdled,                                      /* Total times downloaded */
        !           841:                        timetodl;                                       /* How long transfer time */
        !           842:        long    datoffset,                                      /* Offset into .DAT file */
        !           843:                        size,                                           /* Size of file */
        !           844:                        misc;                                           /* Miscellaneous bits */
        !           845:        ulong   cdt;                                            /* Credit value for this file */
        !           846:                        } file_t;
        !           847: 
        !           848: typedef struct {                                               /* Mail data (taken from index) */
        !           849:        ulong   offset,                                         /* Offset to header (in bytes) */
        !           850:                        number,                                         /* Number of message */
        !           851:                        time;                                           /* Time imported */
        !           852:        ushort  to,                                             /* To user # */
        !           853:                        from,                                           /* From user # */
        !           854:                        subj,                                           /* CRC-16 of subject */
        !           855:                        attr;                                           /* Attributes */
        !           856:                        } mail_t;
        !           857: 
        !           858: typedef struct {                                               /* System/Node Statistics */
        !           859:        ulong   logons,                                         /* Total Logons on System */
        !           860:                        ltoday,                                         /* Total Logons Today */
        !           861:                        timeon,                                         /* Total Time on System */
        !           862:                        ttoday,                                         /* Total Time Today */
        !           863:                        uls,                                            /* Total Uploads Today */
        !           864:                        ulb,                                            /* Total Upload Bytes Today */
        !           865:                        dls,                                            /* Total Downloads Today */
        !           866:                        dlb,                                            /* Total Download Bytes Today */
        !           867:                        ptoday,                                         /* Total Posts Today */
        !           868:                        etoday,                                         /* Total Emails Today */
        !           869:                        ftoday;                                         /* Total Feedbacks Today */
        !           870:        ushort  nusers;                                         /* Total New Users Today */
        !           871:                        } stats_t;
        !           872: 
        !           873: typedef struct {                                               /* FidoNet address */
        !           874:        ushort  zone,                                           /* Zone */
        !           875:                        net,                                            /* Network */
        !           876:                        node,                                           /* Node */
        !           877:                        point;                                          /* Point */
        !           878:                        } faddr_t;
        !           879: 
        !           880: typedef struct {                        /* Message sub board info */
        !           881:        uchar   
        !           882: #ifdef SCFG
        !           883:                        lname[LEN_SLNAME+1],            /* Short name - used for prompts */
        !           884:                        sname[LEN_SSNAME+1],            /* Long name - used for listing */
        !           885:                        ar[LEN_ARSTR+1],                        /* Access requirements */
        !           886:                        read_ar[LEN_ARSTR+1],           /* Read requirements */
        !           887:                        post_ar[LEN_ARSTR+1],           /* Post requirements */
        !           888:                        op_ar[LEN_ARSTR+1],             /* Operator requirements */
        !           889:                        mod_ar[LEN_ARSTR+1],            /* Moderated user requirements */
        !           890:                        qwkname[11],                            /* QWK name - only 10 chars */
        !           891:                        data_dir[LEN_DIR+1],            /* Data file directory */
        !           892:                        origline[51],                           /* Optional EchoMail origin line */
        !           893:                        echomail_sem[LEN_DIR+1],        /* EchoMail semaphore for this sub */
        !           894:                        tagline[81],                            /* Optional QWK net tag line */
        !           895: #else
        !           896:                        *lname,
        !           897:                        *sname,
        !           898:                        *ar,
        !           899:                        *read_ar,
        !           900:                        *post_ar,
        !           901:                        *op_ar,
        !           902:                        *mod_ar,
        !           903:                        *qwkname,
        !           904:                        *data_dir,
        !           905:                        *origline,
        !           906:                        *echomail_sem,
        !           907:                        *tagline,
        !           908: #endif
        !           909:                        code[9];                                        /* Eight character code */
        !           910: #ifndef SBBS
        !           911:        uchar   echopath[LEN_DIR+1];            /* EchoMail path */
        !           912: #endif
        !           913:        ushort  grp,                                            /* Which group this sub belongs to */
        !           914:                        ptridx,                                         /* Index into pointer file */
        !           915:                        qwkconf,                                        /* QWK conference number */
        !           916:                        maxage;                                         /* Max age of messages (in days) */
        !           917:        ulong   misc,                                           /* Miscellaneous flags */
        !           918:                        maxmsgs,                                        /* Max number of messages allowed */
        !           919:                        maxcrcs;                                        /* Max number of CRCs to keep */
        !           920: #ifdef SBBS
        !           921:        ulong   ptr,                                            /* Highest read message */
        !           922:                        last;                                           /* Last read message */
        !           923: #endif
        !           924:        faddr_t faddr;                                          /* FidoNet address */
        !           925:                        } sub_t;
        !           926: 
        !           927: typedef struct {                        /* Message group info */
        !           928:        uchar
        !           929: #ifdef SCFG
        !           930:                        lname[LEN_GLNAME+1],            /* Short name */
        !           931:                        sname[LEN_GSNAME+1],            /* Long name */
        !           932:                        ar[LEN_ARSTR+1];                        /* Access requirements */
        !           933:                        
        !           934: #else
        !           935:                        *lname,
        !           936:                        *sname,
        !           937:                        *ar;
        !           938: #endif
        !           939:                        } grp_t;
        !           940: 
        !           941: typedef struct {                        /* Transfer Directory Info */
        !           942:        uchar                                                           /* Eight character code */
        !           943: #ifdef SCFG
        !           944:                        lname[LEN_SLNAME+1],            /* Short name - used for prompts */
        !           945:                        sname[LEN_SSNAME+1],            /* Long name - used for listing */
        !           946:                        ar[LEN_ARSTR+1],                        /* Access Requirements */
        !           947:                        ul_ar[LEN_ARSTR+1],             /* Upload Requirements */
        !           948:                        dl_ar[LEN_ARSTR+1],             /* Download Requirements */
        !           949:                        ex_ar[LEN_ARSTR+1],             /* Exemption Requirements (credits) */
        !           950:                        op_ar[LEN_ARSTR+1],             /* Operator Requirements */
        !           951:                        path[LEN_DIR+1],                        /* Path to directory for files */
        !           952:                        exts[41],                       /* Extensions allowed */
        !           953:                        upload_sem[LEN_DIR+1],          /* Upload semaphore file */
        !           954:                        data_dir[LEN_DIR+1],            /* Directory where data is stored */
        !           955: #else
        !           956:                        *lname,
        !           957:                        *sname,
        !           958:                        *ar,
        !           959:                        *ul_ar,
        !           960:                        *dl_ar,
        !           961:                        *ex_ar,
        !           962:                        *op_ar,
        !           963:                        *path,
        !           964:                        *exts,
        !           965:                        *upload_sem,
        !           966:                        *data_dir,
        !           967: #endif
        !           968:                        code[9],
        !           969:                        seqdev,                                         /* Sequential access device number */
        !           970:                        sort;                                           /* Sort type */
        !           971:        ushort  maxfiles,                                       /* Max number of files allowed */
        !           972:                        maxage,                                         /* Max age of files (in days) */
        !           973:                        up_pct,                                         /* Percentage of credits on uloads */
        !           974:                        dn_pct,                                         /* Percentage of credits on dloads */
        !           975:                        lib;                                            /* Which library this dir is in */
        !           976:        ulong   misc;                                           /* Miscellaneous bits */
        !           977:                        } dir_t;
        !           978: 
        !           979: typedef struct {                        /* Transfer Library Information */
        !           980:        uchar
        !           981: #ifdef SCFG
        !           982:                        lname[LEN_GLNAME+1],            /* Short Name - used for prompts */
        !           983:                        sname[LEN_GSNAME+1],            /* Long Name - used for listings */
        !           984:                        ar[LEN_ARSTR+1];                        /* Access Requirements */
        !           985: #else
        !           986:                        *lname,
        !           987:                        *sname,
        !           988:                        *ar;
        !           989: #endif
        !           990:        ushort  offline_dir;                            /* Offline file directory */
        !           991:                        } lib_t;
        !           992: 
        !           993: typedef struct {                        /* Gfile Section Information */
        !           994:        uchar                                                           /* Eight character code */
        !           995: #ifdef SCFG
        !           996:                        name[41],                                       /* Name of section */
        !           997:                        ar[LEN_ARSTR+1],                        /* Access requirements */
        !           998: #else
        !           999:                        *name,
        !          1000:                        *ar,
        !          1001: #endif
        !          1002:                        code[9];
        !          1003:                        } txtsec_t;
        !          1004: 
        !          1005: typedef struct {                                               /* External Section Information */
        !          1006:        uchar
        !          1007: #ifdef SCFG
        !          1008:                        name[41],                                       /* Name of section */
        !          1009:                        ar[LEN_ARSTR+1],                        /* Access requirements */
        !          1010: #else
        !          1011:                        *name,
        !          1012:                        *ar,
        !          1013: #endif
        !          1014:                        code[9];                                        /* Eight character code */
        !          1015:                        } xtrnsec_t;
        !          1016: 
        !          1017: typedef struct {                                               /* Swappable executable */
        !          1018: #ifdef SCFG
        !          1019:        uchar   cmd[LEN_CMD+1];                         /* Program name */
        !          1020: #else
        !          1021:        uchar   *cmd;
        !          1022: #endif
        !          1023:                        } swap_t;
        !          1024: 
        !          1025: typedef struct {                                               /* OS/2 executable */
        !          1026: #ifdef SCFG
        !          1027:        uchar   name[13];                                       /* Program name */
        !          1028: #else
        !          1029:        uchar   *name;
        !          1030: #endif
        !          1031:        ulong   misc;                                           /* See OS2PGM_* */
        !          1032: 
        !          1033:                        } os2pgm_t;
        !          1034: 
        !          1035: typedef struct {                                               /* External Program Information */
        !          1036:        uchar
        !          1037: #ifdef SCFG
        !          1038:                        name[41],                                       /* Name of External */
        !          1039:                        ar[LEN_ARSTR+1],                        /* Access Requirements */
        !          1040:                        run_ar[LEN_ARSTR+1],            /* Run Requirements */
        !          1041:                        cmd[LEN_CMD+1],                         /* Command line */
        !          1042:                        clean[LEN_CMD+1],                       /* Clean-up command line */
        !          1043:                        path[LEN_DIR+1],                        /* Start-up path */
        !          1044: #else
        !          1045:                        *name,
        !          1046:                        *ar,
        !          1047:                        *run_ar,
        !          1048:                        *cmd,
        !          1049:                        *clean,
        !          1050:                        *path,
        !          1051: #endif
        !          1052:                        type,                                           /* What type of external program */
        !          1053:             event,                      /* Execute upon what event */
        !          1054:                        textra,                                         /* Extra time while in this program */
        !          1055:                        maxtime,                                        /* Maximum time allowed in this door */
        !          1056:                        code[9];                                        /* Internal code for program */
        !          1057:        ushort  sec;                                            /* Section this program belongs to */
        !          1058:        ulong   cost,                                           /* Cost to run in credits */
        !          1059:                        misc;                                           /* Misc. bits - ANSI, DOS I/O etc. */
        !          1060:                        } xtrn_t;
        !          1061: 
        !          1062: typedef struct {                                               /* External Page program info */
        !          1063: #ifdef SCFG
        !          1064:        uchar   cmd[LEN_CMD+1],                         /* Command line */
        !          1065:                        ar[LEN_ARSTR+1];                        /* ARS for this chat page */
        !          1066: #else
        !          1067:        uchar   *cmd,
        !          1068:                        *ar;
        !          1069: #endif
        !          1070:        ulong   misc;                                           /* Intercept I/O */
        !          1071:                        } page_t;
        !          1072: 
        !          1073: 
        !          1074: typedef struct {                                               /* Chat action set */
        !          1075: #ifdef SCFG
        !          1076:        uchar   name[26];                                       /* Name of set */
        !          1077: #else
        !          1078:        uchar   *name;
        !          1079: #endif
        !          1080:                        } actset_t;
        !          1081: 
        !          1082: typedef struct {                                               /* Chat action info */
        !          1083: #ifdef SCFG
        !          1084:        uchar   cmd[LEN_CHATACTCMD+1],          /* Command word */
        !          1085:                        out[LEN_CHATACTOUT+1];          /* Output */
        !          1086: #else
        !          1087:        uchar   *cmd,
        !          1088:                        *out;
        !          1089: #endif
        !          1090:        ushort  actset;                                         /* Set this action belongs to */
        !          1091:                        } chatact_t;
        !          1092: 
        !          1093: typedef struct {                                               /* Gurus */
        !          1094:        uchar
        !          1095: #ifdef SCFG
        !          1096:                        name[26],
        !          1097:                        ar[LEN_ARSTR+1],
        !          1098: #else
        !          1099:                        *name,
        !          1100:                        *ar,
        !          1101: #endif
        !          1102:                        code[9];
        !          1103: 
        !          1104:                        } guru_t;
        !          1105: 
        !          1106: typedef struct {                                               /* Chat Channel Information */
        !          1107:        uchar
        !          1108: #ifdef SCFG
        !          1109:                        ar[LEN_ARSTR+1],                        /* Access requirements */
        !          1110:                        name[26],                                       /* Channel description */
        !          1111: #else
        !          1112:                        *ar,
        !          1113:                        *name,
        !          1114: #endif
        !          1115:                        code[9];
        !          1116:        ushort  actset,                                         /* Set of actions used in this chan */
        !          1117:                        guru;                                           /* Guru file number */
        !          1118:        ulong   cost,                                           /* Cost to join */
        !          1119:                        misc;                                           /* Misc. bits CHAN_* definitions */
        !          1120:                        } chan_t;
        !          1121: 
        !          1122: typedef struct {                        /* Modem Result codes info */
        !          1123:        ushort  code,                                           /* Numeric Result Code */
        !          1124:                        cps,                                /* Average Transfer CPS */
        !          1125:                        rate;                               /* DCE Rate (Modem to Modem) */
        !          1126: #ifdef SCFG
        !          1127:        uchar   str[LEN_MODEM+1];               /* String to use for description */
        !          1128: #else
        !          1129:        uchar   *str;
        !          1130: #endif
        !          1131:                        } mdm_result_t;
        !          1132: 
        !          1133: typedef struct {                        /* Transfer Protocol information */
        !          1134:        uchar   mnemonic,                                       /* Letter to select this protocol */
        !          1135: #ifdef SCFG
        !          1136:                        name[26],                                       /* Name of protocol */
        !          1137:                        ar[LEN_ARSTR+1],                        /* ARS */
        !          1138:                        ulcmd[LEN_CMD+1],                       /* Upload command line */
        !          1139:                        dlcmd[LEN_CMD+1],                       /* Download command line */
        !          1140:                        batulcmd[LEN_CMD+1],            /* Batch upload command line */
        !          1141:                        batdlcmd[LEN_CMD+1],            /* Batch download command line */
        !          1142:                        blindcmd[LEN_CMD+1],            /* Blind upload command line */
        !          1143:                        bicmd[LEN_CMD+1];                       /* Bidirectional command line */
        !          1144: #else
        !          1145:                        *ar,
        !          1146:                        *name,
        !          1147:                        *ulcmd,
        !          1148:                        *dlcmd,
        !          1149:                        *batulcmd,
        !          1150:                        *batdlcmd,
        !          1151:                        *blindcmd,
        !          1152:                        *bicmd;
        !          1153: #endif
        !          1154:        ulong   misc;                                           /* Miscellaneous bits */
        !          1155:                        } prot_t;
        !          1156: 
        !          1157: typedef struct {                        /* Extractable file types */
        !          1158:        uchar   ext[4],                                         /* Extension */
        !          1159: #ifdef SCFG
        !          1160:                        ar[LEN_ARSTR+1],                        /* Access Requirements */
        !          1161:                        cmd[LEN_CMD+1];                         /* Command line */
        !          1162: #else
        !          1163:                        *ar,
        !          1164:                        *cmd;
        !          1165: #endif
        !          1166:                        } fextr_t;
        !          1167: 
        !          1168: typedef struct {                                               /* Compressable file types */
        !          1169:        uchar   ext[4],                                         /* Extension */
        !          1170: #ifdef SCFG
        !          1171:                        ar[LEN_ARSTR+1],                        /* Access Requirements */
        !          1172:                        cmd[LEN_CMD+1];                         /* Command line */
        !          1173: #else
        !          1174:                        *ar,
        !          1175:                        *cmd;
        !          1176: #endif
        !          1177:                        } fcomp_t;
        !          1178: 
        !          1179: typedef struct {                        /* Viewable file types */
        !          1180:        uchar   ext[4],                                         /* Extension */
        !          1181: #ifdef SCFG
        !          1182:                        ar[LEN_ARSTR+1],                        /* Access Requirements */
        !          1183:                        cmd[LEN_CMD+1];                         /* Command line */
        !          1184: #else
        !          1185:                        *ar,
        !          1186:                        *cmd;
        !          1187: #endif
        !          1188:                        } fview_t;
        !          1189: 
        !          1190: typedef struct {                        /* Testable file types */
        !          1191:        uchar   ext[4],                                         /* Extension */
        !          1192: #ifdef SCFG
        !          1193:                        ar[LEN_ARSTR+1],                        /* Access requirement */
        !          1194:                        cmd[LEN_CMD+1],                         /* Command line */
        !          1195:                        workstr[41];                            /* String to display while working */
        !          1196: #else
        !          1197:                        *ar,
        !          1198:                        *cmd,
        !          1199:                        *workstr;
        !          1200: #endif
        !          1201:                        } ftest_t;
        !          1202: 
        !          1203: typedef struct {                                               /* Download events */
        !          1204:        uchar   ext[4],
        !          1205: #ifdef SCFG
        !          1206:                        ar[LEN_ARSTR+1],                        /* Access requirement */
        !          1207:                        cmd[LEN_CMD+1],                         /* Command line */
        !          1208:                        workstr[41];                            /* String to display while working */
        !          1209: #else
        !          1210:                        *ar,
        !          1211:                        *cmd,
        !          1212:                        *workstr;
        !          1213: #endif
        !          1214:                        } dlevent_t;
        !          1215: 
        !          1216: typedef struct {                                               /* External Editors */
        !          1217:        uchar
        !          1218: #ifdef SCFG
        !          1219:                        name[41],                                       /* Name (description) */
        !          1220:                        ar[LEN_ARSTR+1],                        /* Access Requirement */
        !          1221:                        lcmd[LEN_CMD+1],                        /* Local command line */
        !          1222:                        rcmd[LEN_CMD+1],                        /* Remote command line */
        !          1223: #else
        !          1224:                        *name,
        !          1225:                        *ar,
        !          1226:                        *lcmd,
        !          1227:                        *rcmd,
        !          1228: #endif
        !          1229:                        code[9];
        !          1230:        ulong   misc;                                           /* Misc. bits */
        !          1231:        uchar   type;                                           /* Drop file type */
        !          1232:                        } xedit_t;
        !          1233: 
        !          1234: 
        !          1235: typedef struct {                                               /* Generic Timed Event */
        !          1236:        uchar   code[9],                                        /* Internal code */
        !          1237:                        days,                                           /* Days to run event */
        !          1238: #ifdef SCFG
        !          1239:                        dir[LEN_DIR+1],                         /* Start-up directory */
        !          1240:                        cmd[LEN_CMD+1];                         /* Command line */
        !          1241: #else
        !          1242:                        *dir,
        !          1243:                        *cmd;
        !          1244: #endif
        !          1245:        ushort  node,                                           /* Node to execute event */
        !          1246:                        time;                                           /* Time to run event */
        !          1247:        ulong   misc;                                           /* Misc bits */
        !          1248: #ifndef SCFG
        !          1249:        time_t  last;                                           /* Last time event ran */
        !          1250: #endif
        !          1251:                        } event_t;
        !          1252: 
        !          1253: typedef struct {                                               /* QWK Network Hub */
        !          1254:        uchar   id[9],                                          /* System ID of Hub */
        !          1255:                        *mode,                                          /* Mode for Ctrl-A codes for ea. sub */
        !          1256:                        days,                                           /* Days to call-out on */
        !          1257: #ifdef SCFG
        !          1258:                        call[LEN_CMD+1],                        /* Call-out command line to execute */
        !          1259:                        pack[LEN_CMD+1],                        /* Packing command line */
        !          1260:                        unpack[LEN_CMD+1];                      /* Unpacking command line */
        !          1261: #else
        !          1262:                        *call,
        !          1263:                        *pack,
        !          1264:                        *unpack;
        !          1265: #endif
        !          1266:        ushort  time,                                           /* Time to call-out */
        !          1267:                        node,                                           /* Node to do the call-out */
        !          1268:                        freq,                                           /* Frequency of call-outs */
        !          1269:                        subs,                                           /* Number Sub-boards carried */
        !          1270:                        *sub,                                           /* Number of local sub-board for ea. */
        !          1271:                        *conf;                                          /* Conference number of ea. */
        !          1272: #ifndef SCFG
        !          1273:        time_t  last;                                           /* Last network attempt */
        !          1274: #endif
        !          1275:                        } qhub_t;
        !          1276: 
        !          1277: typedef struct {                                               /* PCRelay/PostLink Hub */
        !          1278:        uchar   days,                                           /* Days to call-out on */
        !          1279: #ifdef SCFG
        !          1280:                        name[11],                                       /* Site Name of Hub */
        !          1281:                        call[LEN_CMD+1];                        /* Call-out command line to execute */
        !          1282: #else
        !          1283:                        *call;
        !          1284: #endif
        !          1285:        ushort  time,                                           /* Time to call-out */
        !          1286:                        node,                                           /* Node to do the call-out */
        !          1287:                        freq;                                           /* Frequency of call-outs */
        !          1288: #ifndef SCFG
        !          1289:        time_t  last;                                           /* Last network attempt */
        !          1290: #endif
        !          1291:                        } phub_t;
        !          1292: 
        !          1293: 
        !          1294: typedef struct {                                               /* FidoNet msg header */
        !          1295:        uchar   from[36],                                       /* From user */
        !          1296:                        to[36],                                         /* To user */
        !          1297:                        subj[72],                                       /* Message title */
        !          1298:                        time[20];                                       /* Time in goof-ball ASCII format */
        !          1299:        short   read,                                           /* Times read */
        !          1300:                        destnode,                                       /* Destination node */
        !          1301:                        orignode,                                       /* Origin node */
        !          1302:                        cost,                                           /* Cost in pennies */
        !          1303:                        orignet,                                        /* Origin net */
        !          1304:                        destnet,                                        /* Destination net */
        !          1305:                        destzone,                                       /* Destination zone */
        !          1306:                        origzone,                                       /* Origin zone */
        !          1307:                        destpoint,                                      /* Destination point */
        !          1308:                        origpoint,                                      /* Origin point */
        !          1309:                        re,                                             /* Message number regarding */
        !          1310:                        attr,                                           /* Attributes - see FIDO_* */
        !          1311:                        next;                                           /* Next message number in stream */
        !          1312:                        } fmsghdr_t;
        !          1313: 
        !          1314: 
        !          1315: typedef struct {                                               /* Command Shells */
        !          1316:        uchar
        !          1317: #ifdef SCFG
        !          1318:                        name[41],                                       /* Name (description) */
        !          1319:                        ar[LEN_ARSTR+1],                        /* Access Requirement */
        !          1320: #else
        !          1321:                        *name,
        !          1322:                        *ar,
        !          1323: #endif
        !          1324:                        code[9];
        !          1325:        ulong   misc;
        !          1326:                        } shell_t;
        !          1327: 
        !          1328: #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.