/* * ctdl.h -- header file for all Citadel C files */ /* * 91Apr29 AA Broke up into lots of other files -- ctdl.h is now common stuff * 90Nov05 AA Hacks for gcc/ANSI compatibility * 90Oct31 AA Added cfg.roomdir. * 90Oct22 A&R 'MAXLOGTAB' (which we've hated for aeons) --> 'logsize'. Also * added MAX, MIN & SANE limits for maxrooms, mailslots, * sharedrooms, logsize. * 90Aug23 AA Now #includes "citlib.h" for library declarations * 90Jan30 A&R Major hacks for msgs/room, room/system and other limits. * (Thanks to Hue, Jr. for some inspiration and code.) * 89Oct14 AA Changed all boolean variables to bitfields. * 88Jul12 orc Moved many fields around, removed unneeded ones * 88Mar21 orc Add 19200 baud support macros, aideforget flag, filler * for future expansion. * 88Feb13 orc Protocol #defines into protocol.h. * 88Jan30 orc rbmoderator field removed from roomBuf structure, table * message fields put in its place. * 87Oct27 orc dirList & event stuff put into dirlist.h, event.h * 87Oct15 orc add cfg.usa for european systems. * 87Sep06 orc #define HUP (return for iChar()) * 87Aug25 orc put modem-cc detection stuff into config structure * 87Jul24 orc put in autonet defines, allow 16 bits for l-d credits, * put expansion fields into structures. * 87May19 orc Ymodem yanked; system dependent stuff put into sysdep.h * 87May17 orc networking stuff extracted and put into ctdlnet.h, * data structures added for generalised event handling. * 87Mar28 orc major enhancements for version 1.00ST * 87Feb28 orc add #define for doExit() so return codes are* returned * 87Feb07 orc mini-terpreter indices removed from cfg, modemSetup string * added in. * 87Jan17 orc net stuff #ifdef'ed out * 87Jan05 orc roomfl, msgfl, logfl changed from FILE* * 86Dec23 orc Once again the trek to 68000land has begun * 85Oct16 HAW Add code for OFFICE-STUFF parameter. * 85Aug29 HAW Install code to allow double msg files for autobackup. * 85Jun19 HAW Implant exit values so batch files can be made useful. * 85May27 HAW Start adding networking gunk. * 85May22 HAW MAXLOGTAB now sysop selectable. * 85May06 HAW Add daily bailout parameter. * 85May05 HAW Add SYSDISK parameter. * 85Mar20 HAW Add timestamp code. * 85Feb21 HAW Add directory names. * 85Feb20 HAW Implement IMPERVIOUS flag. * 85Feb18 HAW Insert global variables for baud search. * 85Jan20 HAW Insert code to read from system clock. * 84Aug30 HAW Begin conversion to MS-DOS */ #ifndef _CTDL_H #define _CTDL_H #include #include #include #include #include #include #include #include #include "sysdep.h" /* * General form of bitfields. Must have `long flags;' in structure. * * Usage examples: (Assuming `struct config cfg;' is declared) * set(cfg,ENTEROK); to set cfg.enterok to 1 * clear(cfg,PATHALIAS); to set cfg.pathalias to 0 * i = (char)readbit(cfg,NOMAIL); to read the value of cfg.nomail * * NOTE: You must coerce the return value of readbit(); it's a long * if you don't, and this is a Bad Thing. */ #define flip(s,m) s.flags ^= m /* XOR to flip a bit */ #define set(s,m) s.flags |= m /* OR to set bit */ #define clear(s,m) s.flags &= ~m /* AND with inverted mask to clear bit */ #define readbit(s,m) ((s.flags & m)?1:0) /* returns 0 or 1 only */ /* * could use * #define readbit(s,m) (s.flags & m) * if it is sufficient to return 0 if off, any other long value if on. * NOTE, however, that you have to remember that the returned value * is (long); if you don't, you could get erroneous results. */ /* following are slight variations on the theme (this time with ptr deref): */ #define flipp(s,m) s->flags ^= m /* XOR to flip a bit */ #define setp(s,m) s->flags |= m /* OR to set bit */ #define clearp(s,m) s->flags &= ~m /* AND with inverted mask to clear bit */ #define readpbit(s,m) ((s->flags & m)?1:0) /* returns 0 or 1 only */ #define NODESIZE 10 #define NAMESIZE 20 /* length of room names */ #define PATHSIZE 100 /* maximum length of paths */ #define ADDRSIZE 128 /* and net addresses */ typedef char LABEL[NAMESIZE]; /* Semi-generic */ typedef char PATHBUF[PATHSIZE]; typedef char NETADDR[ADDRSIZE]; typedef char BOOL; #define PTR_SIZE (sizeof (void *)) /* could cause problems */ #define YES 1 #define NO 0 #define TRUE 1 #define FALSE 0 #define ERROR (-1) /* ASCII characters: */ #define HUP 0 #define SOH 1 #define STX 2 #define CNTRLC 3 #define EOT 4 #define ACK 6 #define BELL 7 #define BACKSPACE 8 #define TAB 9 #define NEWLINE 10 #define CNTRLO 15 #define DLE 16 #define SYN 22 #define CNTRLl 12 #define XOFF 19 #define XON 17 #define NAK 21 #define CAN 24 #define CNTRLZ 26 #define ESC 27 #define SPECIAL ESC #define DEL 127 #define SECTSIZE 128 /* Size of a Xmodem sector */ #define YMSECTSIZE 1024 /* Size of a Ymodem sector */ #define BLKSIZE 4096 /* size of a messagebase sector */ /* Following typedef robbed from Hue, Jr.'s Cit-86 */ typedef struct { long msgno; /* every message gets unique # */ short msgloc; /* sector message starts in */ } theMessages; /* values for showMess routine */ #define NEWoNLY 0 #define OLDaNDnEW 1 #define OLDoNLY 2 #define GLOBALnEW 3 /* output XON/XOFF etc flag... */ #define OUTOK 0 /* normal output */ #define OUTAGAIN 1 /* a pause has been requested */ #define OUTNEXT 2 /* quit this message, get the next */ #define OUTSKIP 3 /* stop current process */ #define OUTPARAGRAPH 4 /* skip to next paragraph */ #define IMPERVIOUS 5 /* make current output unstoppable */ #define OUTBACKUP 6 /* go to previous item */ #define NEITHER 0 /* don't echo input at all */ #define CALLER 1 /* echo to caller only --passwords etc */ #define BOTH 2 /* echo to caller and console both */ /* * Various `standard' exit stati */ #define SYSOP_EXIT 0 /* horrid error or ^Lq */ #define CRASH_EXIT 2 /* possibly fixable error */ #define REMOTE_EXIT 3 /* ^Lq from remote */ /* * Useful pseudo functions */ #define onLine() ((haveCarrier || onConsole) && !eventExit) #define okRoom(i) \ (!readbit(logBuf,uFLOORMODE) || (roomTab[i].rtfloorGen == floorTab[thisFloor].flGen)) #define TheSysop() (readbit(logBuf,uSYSOP) && (onConsole || remoteSysop)) #define SomeSysop() (readbit(logBuf,uSYSOP)) #define DAY(t) (t / 86400L) /* Seconds -> days */ #define MINUTE(t) (t / 60L) /* Seconds -> minutes */ #define zero_struct(x) memset(&(x), 0, sizeof(x)) #define zero_array(x) memset( (x), 0, sizeof(x)) #define copy_struct(src, dest) memcpy(&(dest), &(src), sizeof(src)) #define copy_array(src, dest) memcpy( (dest), (src), sizeof(src)) #define ABS(x) ((x<0) ? (-(x)) : (x)) #define MIN(x,y) ((x) < (y) ? (x) : (y)) #define MAX(x,y) ((x) > (y) ? (x) : (y)) #endif /* _CTDL_H */