Annotation of sbbs/sbbs2/echo/sbbsecho.h, revision 1.1

1.1     ! root        1: /* SBBSECHO.H */
        !             2: 
        !             3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
        !             4: 
        !             5: /* Portions written by Allen Christiansen 1994-1996                                            */
        !             6: 
        !             7: #define SBBSECHO_VER "1.25"
        !             8: 
        !             9: #define IMPORT_NETMAIL  (1L<<0)
        !            10: #define IMPORT_PACKETS (1L<<1)
        !            11: #define IMPORT_ECHOMAIL (1L<<2)
        !            12: #define EXPORT_ECHOMAIL (1L<<3)
        !            13: #define DELETE_NETMAIL (1L<<4)
        !            14: #define DELETE_PACKETS (1L<<5)
        !            15: #define STORE_SEENBY   (1L<<6)                 /* Store SEEN-BYs in SMB */
        !            16: #define STORE_PATH             (1L<<7)                 /* Store PATHs in SMB */
        !            17: #define STORE_KLUDGE   (1L<<8)                 /* Store unknown kludges in SMB */
        !            18: #define IGNORE_MSGPTRS (1L<<9)
        !            19: #define UPDATE_MSGPTRS (1L<<10)
        !            20: #define LEAVE_MSGPTRS  (1L<<11)
        !            21: #define CHECKMEM               (1L<<12)                /* Display available memory */
        !            22: #define ASCII_ONLY             (1L<<13)
        !            23: #define LOGFILE                (1L<<14)
        !            24: #define REPORT                 (1L<<15)
        !            25: #define EXPORT_ALL             (1L<<16)
        !            26: #define UNKNOWN_NETMAIL (1L<<17)
        !            27: #define IGNORE_ADDRESS (1L<<18)
        !            28: #define IGNORE_RECV    (1L<<19)
        !            29: #define CONVERT_TEAR   (1L<<20)
        !            30: #define IMPORT_PRIVATE (1L<<21)
        !            31: #define LOCAL_NETMAIL  (1L<<22)
        !            32: #define NOTIFY_RECEIPT (1L<<23)
        !            33: #define FLO_MAILER             (1L<<24)                /* Binkley .FLO style mailer */
        !            34: #define PACK_NETMAIL   (1L<<25)                /* Pack *.MSG NetMail into packets */
        !            35: #define FUZZY_ZONE             (1L<<26)
        !            36: #define FAST_OPEN              (1L<<27)
        !            37: #define SECURE                 (1L<<28)                /* Secure operation */
        !            38: #define ELIST_ONLY             (1L<<29)                /* Allow adding from AREAS.BBS */
        !            39: #define GEN_NOTIFY_LIST (1L<<30)               /* Generate Notify Lists */
        !            40: #define KILL_EMPTY_MAIL (1L<<31)               /* Kill empty netmail messages */
        !            41: 
        !            42: #define ATTR_HOLD              (1<<0)                  /* Hold */
        !            43: #define ATTR_CRASH             (1<<1)                  /* Crash */
        !            44: #define ATTR_DIRECT    (1<<2)                  /* Direct */
        !            45: #define ATTR_PASSIVE   (1<<3)                  /* Used to temp disconnect */
        !            46: #define SEND_NOTIFY    (1<<4)                  /* Send Notify Lists */
        !            47: 
        !            48: 
        !            49: #define LOG_AREAFIX    (1L<<0)                 /* Log areafix messages */
        !            50: #define LOG_IMPORTED   (1L<<1)                 /* Log imported netmail messages */
        !            51: #define LOG_PACKETS    (1L<<2)                 /* Log imported packet names/types */
        !            52: #define LOG_SECURITY   (1L<<3)                 /* Log security violations */
        !            53: #define LOG_GRUNGED    (1L<<4)                 /* Log grunged messages */
        !            54: #define LOG_PRIVATE    (1L<<5)                 /* Log disallowed private msgs */
        !            55: #define LOG_AREA_TOTALS (1L<<6)                /* Log totals for each area */
        !            56: #define LOG_TOTALS             (1L<<7)                 /* Log over-all totals */
        !            57: #define LOG_PACKING    (1L<<8)                 /* Log packing of out-bound netmail */
        !            58: #define LOG_ROUTING    (1L<<9)                 /* Log routing of out-bound netmail */
        !            59: 
        !            60: #define LOG_DUPES              (1L<<24)                 /* Log individual dupe messages */
        !            61: #define LOG_CIRCULAR   (1L<<25)                 /* Log individual circ paths */
        !            62: #define LOG_IGNORED    (1L<<26)                 /* Log ignored netmail */
        !            63: #define LOG_UNKNOWN    (1L<<27)                 /* Log netmail for unknown users */
        !            64: 
        !            65: #define LOG_DEFAULTS   0xffffffL               /* Low 24 bits default to ON */
        !            66: 
        !            67: #define PKT_TWO_PLUS   0                               /* Type 2+ Packet Header  */
        !            68: #define PKT_TWO_TWO    1                               /* Type 2.2 Packet Header */
        !            69: #define PKT_TWO                2                               /* Old Type Packet Header */
        !            70: 
        !            71: #define MAX_OPEN_SMBS  2
        !            72: #define DFLT_OPEN_PKTS  4
        !            73: #define MAX_TOTAL_PKTS  100
        !            74: #define DFLT_PKT_SIZE   250*1024L
        !            75: #define DFLT_BDL_SIZE   250*1024L
        !            76: 
        !            77: #define NOFWD                  (1<<0)                  /* Do not forward requests */
        !            78: 
        !            79: typedef struct {                        /* Fidonet Packet Header */
        !            80:     short orignode,                     /* Origination Node of Packet */
        !            81:           destnode,                     /* Destination Node of Packet */
        !            82:           year,                         /* Year of Packet Creation e.g. 1995 */
        !            83:           month,                        /* Month of Packet Creation 0-11 */
        !            84:           day,                          /* Day of Packet Creation 1-31 */
        !            85:           hour,                         /* Hour of Packet Creation 0-23 */
        !            86:           min,                          /* Minute of Packet Creation 0-59 */
        !            87:           sec,                          /* Second of Packet Creation 0-59 */
        !            88:           baud,                         /* Max Baud Rate of Orig & Dest */
        !            89:           pkttype,                      /* Packet Type (-1 is obsolete) */
        !            90:           orignet,                      /* Origination Net of Packet */
        !            91:           destnet;                      /* Destination Net of Packet */
        !            92:     uchar prodcode,                     /* Product Code (00h is Fido) */
        !            93:           sernum,                       /* Binary Serial Number or NULL */
        !            94:           password[8];                  /* Session Password or NULL */
        !            95:     short origzone,                     /* Origination Zone of Packet or NULL */
        !            96:           destzone;                     /* Destination Zone of Packet or NULL */
        !            97:     uchar empty[20];                    /* Fill Characters */
        !            98:        } pkthdr_t;
        !            99: 
        !           100: typedef struct {                                               /* Type 2+ Packet Header Info */
        !           101:        short auxnet,                                           /* Orig Net if Origin is a Point */
        !           102:                  cwcopy;                                               /* Must be Equal to cword */
        !           103:        uchar prodcode,                                         /* Product Code */
        !           104:                  revision;                                     /* Revision */
        !           105:        short cword,                                            /* Compatibility Word */
        !           106:                  origzone,                                     /* Zone of Packet Sender or NULL */
        !           107:                  destzone,                                     /* Zone of Packet Receiver or NULL */
        !           108:                  origpoint,                                    /* Origination Point of Packet */
        !           109:                  destpoint;                                    /* Destination Point of Packet */
        !           110:        uchar empty[4];
        !           111:        } two_plus_t;
        !           112: 
        !           113: typedef struct {                                               /* Type 2.2 Packet Header Info */
        !           114:        uchar origdomn[8],                                      /* Origination Domain */
        !           115:                  destdomn[8],                                  /* Destination Domain */
        !           116:                  empty[4];                                     /* Product Specific Data */
        !           117:        } two_two_t;
        !           118: 
        !           119: typedef struct {
        !           120:     uint  sub;                  /* Set to INVALID_SUB if pass-thru */
        !           121:        ulong tag;                                      /* CRC-32 of tag name */
        !           122:     char *name;                 /* Area tag name */
        !           123:     uint  uplinks;              /* Total number of uplinks for this echo */
        !           124:        uint  imported;                         /* Total messages imported this run */
        !           125:        uint  exported;                         /* Total messages exported this run */
        !           126:        uint  circular;                         /* Total circular paths detected */
        !           127:        uint  dupes;                            /* Total duplicate messages detected */
        !           128:     faddr_t *uplink;            /* Each uplink */
        !           129:     } areasbbs_t;
        !           130: 
        !           131: typedef struct {
        !           132:        char flag[5];
        !           133:        } flag_t;
        !           134: 
        !           135: typedef struct {
        !           136:        uint tags;                                      /* Number of area tags */
        !           137:        char **tag;                             /* Name of each area tag */
        !           138:        } area_t;
        !           139: 
        !           140: typedef struct {
        !           141:        FILE *stream;                           /* The stream associated with this packet */
        !           142:        faddr_t uplink;                         /* The current uplink for this packet */
        !           143:        uchar filename[128],curopen;/* Name of the file and if it's open or not */
        !           144:     } outpkt_t;
        !           145: 
        !           146: typedef struct {
        !           147:        uint addrs;                             /* Total number of uplinks */
        !           148:        faddr_t *addr;                          /* Each uplink */
        !           149:        } addrlist_t;
        !           150: 
        !           151: typedef struct {
        !           152:        char name[26]                           /* Short name of archive type */
        !           153:                ,hexid[26]                              /* Hexadecimal ID to search for */
        !           154:                ,pack[81]                               /* Pack command line */
        !           155:                ,unpack[81];                    /* Unpack command line */
        !           156:        uint byteloc;                           /* Offset to Hex ID */
        !           157:        } arcdef_t;
        !           158: 
        !           159: typedef struct {
        !           160:        faddr_t         faddr                           /* Fido address of this node */
        !           161:                           ,route;                              /* Address to route FLO stuff through */
        !           162:        ushort          arctype                         /* De/archiver to use for this node */
        !           163:                           ,numflags                    /* Number of flags defined for this node */
        !           164:                           ,pkt_type;                   /* Packet type to use for outgoing PKTs */
        !           165:        ushort          attr;                           /* Message bits to set for this node */
        !           166:        char            password[26];           /* Areafix password for this node */
        !           167:        char            pktpwd[9];                      /* Packet password for this node */
        !           168:        flag_t          *flag;                          /* Areafix flags for this node */
        !           169:        } nodecfg_t;
        !           170: 
        !           171: typedef struct {
        !           172:        char            listpath[129];          /* Path to this echolist */
        !           173:        uint            numflags,misc;          /* Number of flags for this echolist */
        !           174:        flag_t          *flag;                          /* Flags to access this echolist */
        !           175:        faddr_t         forward;                        /* Where to forward requests */
        !           176:        char            password[72];           /* Password to use for forwarding req's */
        !           177:        } echolist_t;
        !           178: 
        !           179: typedef struct {
        !           180:        faddr_t         dest;
        !           181:        char            fname[13];
        !           182:        } attach_t;
        !           183: 
        !           184: typedef struct {
        !           185:        char            inbound[82]             /* Inbound directory */
        !           186:                           ,secure[82]                  /* Secure Inbound directory */
        !           187:                           ,outbound[82]                /* Outbound directory */
        !           188:                           ,areafile[128]               /* AREAS.BBS path/filename */
        !           189:                           ,logfile[128]                /* LOG path/filename */
        !           190:                           ,cfgfile[128];               /* Configuration path/filename */
        !           191:        ulong           maxpktsize                      /* Maximum size for packets */
        !           192:                           ,maxbdlsize                  /* Maximum size for bundles */
        !           193:                           ,log;                                /* What do we log? */
        !           194:        int             badecho;                        /* Area to store bad echomail msgs */
        !           195:        uint            arcdefs                         /* Number of archive definitions */
        !           196:                           ,nodecfgs                    /* Number of nodes with configs */
        !           197:                           ,listcfgs                    /* Number of echolists defined */
        !           198:                           ,areas                               /* Number of areas defined */
        !           199:                           ,notify;                     /* User number (sysop) to notify */
        !           200:        arcdef_t   *arcdef;                     /* Each archive definition */
        !           201:        nodecfg_t  *nodecfg;                    /* Each node configuration */
        !           202:        echolist_t *listcfg;                    /* Each echolist configuration */
        !           203:        areasbbs_t *area;                               /* Each area configuration */
        !           204:        } config_t;
        !           205: 
        !           206: #ifdef __WATCOMC__
        !           207: struct time    {
        !           208:     unsigned char   ti_min;     /* Minutes */
        !           209:     unsigned char   ti_hour;    /* Hours */
        !           210:     unsigned char   ti_hund;    /* Hundredths of seconds */
        !           211:     unsigned char   ti_sec;     /* Seconds */
        !           212: };
        !           213: 
        !           214: struct  date    {
        !           215:        int             da_year;        /* Year - 1980 */
        !           216:     char        da_day;     /* Day of the month */
        !           217:     char        da_mon;     /* Month (1 = Jan) */
        !           218: };
        !           219: #endif
        !           220: 
        !           221: /***********************/
        !           222: /* Function prototypes */
        !           223: /***********************/
        !           224: void bail(int code);
        !           225: char *ultoac(ulong l,char *str);
        !           226: int  bstrlen(char *str);
        !           227: int  nopen(char *str, int access);
        !           228: FILE *fnopen(int *file, char *str,int access);
        !           229: char *sectostr(uint sec, char *str);
        !           230: void truncsp(char *str);
        !           231: ulong ahtoul(char *str);
        !           232: int  mv(char *src, char *dest, char copy); /* fast file move/copy function */
        !           233: char *timestr(time_t *intime);  /* ASCII representation of time_t */
        !           234: time_t dstrtounix(char *str);  /* ASCII date (MM/DD/YY) to unix conversion */
        !           235: char *unixtodstr(time_t unix, char *str); /* Unix time to ASCII date */
        !           236: int chk_ar(char *str, user_t user); /* checks access requirements */
        !           237: ushort crc16(char *str);
        !           238: void ucrc16(uchar ch, ushort *rcrc);
        !           239: char fexist(char *filespec);
        !           240: long flength(char *filespec);
        !           241: long fdate(char *filespec);
        !           242: faddr_t atofaddr(char *str);
        !           243: int  matchnode(faddr_t addr, int exact);
        !           244: void export_echomail(char *sub_code,faddr_t addr);

unix.superglobalmegacorp.com

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