|
|
1.1 ! root 1: /* SBBS.H */ ! 2: ! 3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */ ! 4: ! 5: #ifndef _SBBS_H ! 6: #define _SBBS_H ! 7: ! 8: /****************************/ ! 9: /* Standard library headers */ ! 10: /****************************/ ! 11: ! 12: #include <io.h> ! 13: #ifdef __TURBOC__ ! 14: #include <dir.h> ! 15: #include <alloc.h> ! 16: #else ! 17: #include <malloc.h> ! 18: #endif ! 19: ! 20: #include <dos.h> ! 21: #include <mem.h> ! 22: #include <time.h> ! 23: #include <errno.h> ! 24: #include <stdio.h> ! 25: #include <conio.h> ! 26: #include <ctype.h> ! 27: #include <fcntl.h> ! 28: #include <share.h> ! 29: #include <stdarg.h> ! 30: #include <stdlib.h> ! 31: #include <string.h> ! 32: #include <process.h> ! 33: #include <sys\stat.h> ! 34: ! 35: #ifdef __OS2__ ! 36: #define INCL_BASE ! 37: #include <os2.h> ! 38: #else ! 39: #include <bios.h> ! 40: #endif ! 41: ! 42: #define GLOBAL extern /* turn vars.c and scfgvars.c files into headers */ ! 43: #ifdef SBBS ! 44: #include "vars.c" ! 45: #endif ! 46: #include "smblib.h" ! 47: #include "ars_defs.h" ! 48: #include "scfgvars.c" ! 49: #include "scfglib.h" ! 50: #include "riolib.h" ! 51: #include "riodefs.h" ! 52: ! 53: /***********************************************/ ! 54: /* Prototypes of functions used ONLY with SBBS */ ! 55: /***********************************************/ ! 56: ! 57: ! 58: void lputc(int); ! 59: int lclatr(int); ! 60: uint lkbrd(int); ! 61: int lclaes(void); ! 62: void lclxy(int,int); ! 63: int lclwx(void); ! 64: int lclwy(void); ! 65: long lputs(char FAR16 *); ! 66: ! 67: #ifndef __FLAT__ ! 68: ! 69: /* LCLOLL.ASM */ ! 70: int lclini(int); ! 71: ! 72: #endif ! 73: ! 74: /* COMIO.C */ ! 75: void putcom(char *str); /* Send string to com port */ ! 76: void putcomch(char ch); /* Send single char to com port */ ! 77: void mdmcmd(char *str); /* Send translated modem command to COM */ ! 78: char getmdmstr(char *str, int sec); /* Returns chars */ ! 79: void hangup(void); /* Hangup modem */ ! 80: void offhook(void); /* Takes phone offhook */ ! 81: void checkline(void); /* Checks if remote user has hungup */ ! 82: void comini(void); /* initializes com port and sets baud */ ! 83: void setrate(void); /* sets baud rate for current connect */ ! 84: ! 85: /* DATIO.C */ ! 86: void getuserdat(user_t *user); /* Fill userdat struct with user data */ ! 87: void putuserdat(user_t user); /* Put userdat struct into user file */ ! 88: void getuserrec(int usernumber, int start, char length, char *str); ! 89: void putuserrec(int usernumber, int start, char length, char *str); ! 90: ulong adjustuserrec(int usernumber, int start, char length, long adj); ! 91: void subtract_cdt(long amt); ! 92: void getrec(char *instr,int start,int length,char *outstr); ! 93: /* Retrieve a record from a string */ ! 94: void putrec(char *outstr,int start,int length,char *instr); ! 95: /* Place a record into a string */ ! 96: uint matchuser(char *str); /* Checks for a username match */ ! 97: uint finduser(char *str); ! 98: uint lastuser(void); ! 99: char getage(char *birthdate); ! 100: ! 101: int sub_op(uint subnum); ! 102: ulong getlastmsg(uint subnum, ulong *ptr, time_t *t); ! 103: time_t getmsgtime(uint subnum, ulong ptr); ! 104: ulong getmsgnum(uint subnum, time_t t); ! 105: ulong getposts(uint subnum); ! 106: ! 107: int getfiles(uint dirnum); ! 108: int dir_op(uint dirnum); ! 109: int getuserxfers(int fromuser, int destuser, char *fname); ! 110: void rmuserxfers(int fromuser, int destuser, char *fname); ! 111: char *username(int usernumber, char *str); ! 112: uint gettotalfiles(uint dirnum); ! 113: void getnodeext(uint number, char *str); ! 114: void putnodeext(uint number, char *str); ! 115: void getnodedat(uint number, node_t *node, char lock); ! 116: void putnodedat(uint number, node_t node); ! 117: void putusername(int number, char *name); ! 118: void nodesync(void); ! 119: void getmsgptrs(void); ! 120: void putmsgptrs(void); ! 121: void getusrsubs(void); ! 122: void getusrdirs(void); ! 123: uint userdatdupe(uint usernumber, uint offset, uint datlen, char *dat ! 124: , char del); ! 125: void gettimeleft(void); ! 126: ! 127: /* FILIO.C */ ! 128: char addfiledat(file_t *f); ! 129: void getfileixb(file_t *f); ! 130: void getfiledat(file_t *f); ! 131: void putfiledat(file_t f); ! 132: char uploadfile(file_t *f); ! 133: void downloadfile(file_t f); ! 134: void removefiledat(file_t f); ! 135: void fileinfo(file_t f); ! 136: void openfile(file_t f); ! 137: void closefile(file_t f); ! 138: void update_uldate(file_t f); ! 139: void putextdesc(uint dirnum, ulong datoffset, char *ext); ! 140: void getextdesc(uint dirnum, ulong datoffset, char *ext); ! 141: void viewfilecontents(file_t f); ! 142: ! 143: /* STR.C */ ! 144: void userlist(char subonly); ! 145: char gettmplt(char *outstr, char *template, int mode); ! 146: void sif(char *fname, char *answers, long len); /* Synchronet Inteface File */ ! 147: void sof(char *fname, char *answers, long len); ! 148: void create_sif_dat(char *siffile, char *datfile); ! 149: void read_sif_dat(char *siffile, char *datfile); ! 150: void printnodedat(uint number, node_t node); ! 151: void reports(void); ! 152: char inputnstime(time_t *dt); ! 153: char chkpass(char *pass, user_t user); ! 154: char *cmdstr(char *instr, char *fpath, char *fspec, char *outstr); ! 155: void getcomputer(char *computer); ! 156: void subinfo(uint subnum); ! 157: void dirinfo(uint dirnum); ! 158: char trashcan(char *insearch, char *name); ! 159: #ifdef SBBS ! 160: char *decrypt(ulong [],char *); ! 161: #endif ! 162: ! 163: /* MSGIO.C */ ! 164: void automsg(void); ! 165: char writemsg(char *str, char *top, char *title, int mode, int subnum ! 166: ,char *dest); ! 167: char putmsg(char HUGE16 *str, int mode); ! 168: char msgabort(void); ! 169: void email(int usernumber, char *top, char *title, char mode); ! 170: void forwardmail(smbmsg_t *msg, ushort usernum); ! 171: char postmsg(uint subnum, smbmsg_t *msg, int wm_mode); ! 172: void removeline(char *str, char *str2, char num, char skip); ! 173: ulong msgeditor(char *buf, char *top, char *title); ! 174: void editfile(char *path); ! 175: void getsmsg(int usernumber); ! 176: void putsmsg(int usernumber, char *strin); ! 177: void getnmsg(void); ! 178: void putnmsg(int num, char *strin); ! 179: int loadmsg(smbmsg_t *msg, ulong number); ! 180: char HUGE16 *loadmsgtxt(smbmsg_t msg, int tails); ! 181: ushort chmsgattr(ushort attr); ! 182: void show_msgattr(ushort attr); ! 183: void show_msghdr(smbmsg_t msg); ! 184: void show_msg(smbmsg_t msg, int mode); ! 185: void msgtotxt(smbmsg_t msg, char *str, int header, int tails); ! 186: void quotemsg(smbmsg_t msg, int tails); ! 187: void putmsg_fp(FILE *fp, long length, int mode); ! 188: void editmsg(smbmsg_t *msg, uint subnum); ! 189: void remove_re(char *str); ! 190: void remove_ctrl_a(char *instr); ! 191: ! 192: /* MAIL.C */ ! 193: ! 194: ulong loadmail(mail_t **mail, uint usernumber, int which, int mode); ! 195: int getmail(int usernumber, char sent); ! 196: int delmail(uint usernumber,int which); ! 197: void delfattach(uint to, char *title); ! 198: void telluser(smbmsg_t msg); ! 199: void delallmail(uint usernumber); ! 200: void readmail(uint usernumber, int sent); ! 201: ! 202: void bulkmail(uchar *ar); ! 203: ! 204: /* CONIO.C */ ! 205: int bputs(char *str); /* BBS puts function */ ! 206: int rputs(char *str); /* BBS raw puts function */ ! 207: int lprintf(char *fmt, ...); /* local printf */ ! 208: int bprintf(char *fmt, ...); /* BBS printf function */ ! 209: int rprintf(char *fmt, ...); /* BBS raw printf function */ ! 210: int getstr(char *str,int length, long mode); ! 211: void outchar(char ch); /* Output a char - check echo and emu. */ ! 212: char r0dentch(char ch); /* Converts CH to r0dent CH */ ! 213: char getkey(long mode); /* Waits for a key hit local or remote */ ! 214: void ungetkey(char ch); /* Places 'ch' into the input buffer */ ! 215: char inkey(int mode); /* Returns key if one has been hit */ ! 216: char yesno(char *str); ! 217: char noyes(char *str); ! 218: void printfile(char *str, int mode); ! 219: void printtail(char *str, int lines, int mode); ! 220: void menu(char *code); ! 221: long getkeys(char *str, ulong max); ! 222: long getnum(ulong max); ! 223: void center(char *str); ! 224: int uselect(int add, int n, char *title, char *item, char *ar); ! 225: void statusline(void); ! 226: void pause(void); ! 227: void waitforsysop(char on); ! 228: void riosync(char abortable); ! 229: char validattr(char a); ! 230: char stripattr(char *str); ! 231: void redrwstr(char *strin, int i, int l, char mode); ! 232: void mnemonics(char *str); ! 233: void attr(int atr); /* Change local and remote text attributes */ ! 234: void ctrl_a(char x); /* Peforms the Ctrl-Ax attribute changes */ ! 235: int atcodes(char *code); ! 236: char *ansi(char atr); /* Returns ansi escape sequence for atr */ ! 237: int whos_online(char listself);/* Lists active nodes, returns active nodes */ ! 238: ! 239: /* LOGONOFF.C */ ! 240: int login(char *str, char *pw); ! 241: char logon(void); ! 242: void logout(void); ! 243: void logoff(void); ! 244: void newuser(void); /* Get new user */ ! 245: void backout(void); ! 246: ! 247: /* BBSIO.C */ ! 248: char scanposts(uint subnum, char newscan, char *find); /* Scan sub-board */ ! 249: int searchsub(uint subnum, char *search); /* Search for string on sub */ ! 250: int searchsub_toyou(uint subnum); ! 251: char text_sec(void); /* Text sections */ ! 252: ! 253: /* CHAT.C */ ! 254: void localchat(void); ! 255: void chatsection(void); ! 256: void nodepage(void); ! 257: void nodemsg(void); ! 258: void guruchat(char *line, char *guru, int gurunum); ! 259: char guruexp(char **ptrptr, char *line); ! 260: void localguru(char *guru, int gurunum); ! 261: void packchatpass(char *pass, node_t *node); ! 262: char *unpackchatpass(char *pass, node_t node); ! 263: void sysop_page(void); ! 264: void privchat(void); ! 265: ! 266: /* MAIN.C */ ! 267: void printstatslog(uint node); ! 268: ulong logonstats(void); ! 269: void logoffstats(void); ! 270: void getstats(char node, stats_t *stats); ! 271: ! 272: /* MISC.C */ ! 273: void bail(int code); /* Exit */ ! 274: char *ultoac(ulong l,char *str); ! 275: int bstrlen(char *str); ! 276: int nopen(char *str, int access); ! 277: FILE *fnopen(int *file, char *str,int access); ! 278: char *sectostr(uint sec, char *str); /* seconds to HH:MM:SS */ ! 279: void truncsp(char *str); /* Truncates white spaces off end of str */ ! 280: ulong ahtoul(char *str); /* Converts ASCII hex to ulong */ ! 281: int pstrcmp(char **str1, char **str2); /* Compares pointers to pointers */ ! 282: int strsame(char *str1, char *str2); /* Compares number of same chars */ ! 283: void errormsg(int line, char *file, char action, char *object, ulong access); ! 284: int mv(char *src, char *dest, char copy); /* fast file move/copy function */ ! 285: char chksyspass(int local); ! 286: char *timestr(time_t *intime); /* ASCII representation of time_t */ ! 287: char *zonestr(short zone); ! 288: void dv_pause(void); ! 289: void secwait(int sec); ! 290: time_t ftimetounix(struct ftime f); ! 291: struct ftime unixtoftime(time_t unix); ! 292: time_t dstrtounix(char *str); /* ASCII date (MM/DD/YY) to unix conversion */ ! 293: char *unixtodstr(time_t unix, char *str); /* Unix time to ASCII date */ ! 294: char *hexplus(uint num, char *str); /* Hex plus for 3 digits up to 9000 */ ! 295: uint hptoi(char *str); ! 296: int chk_ar(char *str, user_t user); /* checks access requirements */ ! 297: ushort crc16(char *str); ! 298: ulong _crc32(char *str); ! 299: void ucrc16(uchar ch, ushort *rcrc); ! 300: int kbd_state(void); ! 301: ! 302: #ifndef __FLAT__ ! 303: long lread(int file, char HUGE16 *buf, long bytes); /* Reads >32k files */ ! 304: long lfread(char huge *buf, long bytes, FILE *fp); ! 305: long lwrite(int file, char HUGE16 *buf, long bytes); /* Writes >32k files */ ! 306: #endif ! 307: ! 308: /* XFER.C */ ! 309: int listfile(char *fname, char HUGE16 *buf, uint dirnum ! 310: , char *search, char letter, ulong datoffset); ! 311: int listfiles(uint dirnum, char *filespec, int tofile, char mode); ! 312: int listfileinfo(uint dirnum, char *filespec, char mode); ! 313: void batchmenu(void); ! 314: void temp_xfer(void); ! 315: void batch_add_list(char *list); ! 316: void notdownloaded(ulong size, time_t start, time_t end); ! 317: int viewfile(file_t f, int ext); ! 318: ! 319: /* XFERMISC.C */ ! 320: void seqwait(uint devnum); ! 321: void listfiletofile(char *fname, char HUGE16 *buf, uint dirnum, int file); ! 322: void upload(uint dirnum); ! 323: char bulkupload(uint dirnum); ! 324: void extract(uint dirnum); ! 325: char *getfilespec(char *str); ! 326: int delfiles(char *path, char *spec); ! 327: char findfile(uint dirnum, char *filename); ! 328: char fexist(char *filespec); ! 329: long flength(char *filespec); ! 330: long fdate(char *filespec); ! 331: long fdate_dir(char *filespec); ! 332: char *padfname(char *filename, char *str); ! 333: char *unpadfname(char *filename, char *str); ! 334: char filematch(char *filename, char *filespec); ! 335: int protocol(char *cmdline, int cd); ! 336: void autohangup(void); ! 337: char checkprotlog(file_t f); ! 338: char checkfname(char *fname); ! 339: void viewfiles(uint dirnum, char *fspec); ! 340: char addtobatdl(file_t f); ! 341: int fnamecmp_a(char **str1, char **str2); /* for use with resort() */ ! 342: int fnamecmp_d(char **str1, char **str2); ! 343: int fdatecmp_a(uchar **buf1, uchar **buf2); ! 344: int fdatecmp_d(uchar **buf1, uchar **buf2); ! 345: void resort(uint dirnum); ! 346: int create_batchup_lst(void); ! 347: int create_batchdn_lst(void); ! 348: int create_bimodem_pth(void); ! 349: void batch_upload(void); ! 350: void batch_download(int xfrprot); ! 351: void start_batch_download(void); ! 352: ulong create_filelist(char *name, char mode); ! 353: ! 354: /* XTRN.C */ ! 355: int external(char *cmdline,char mode); /* Runs external program */ ! 356: void xtrndat(char *name, char *dropdir, uchar type, ulong tleft); ! 357: char xtrn_sec(void); /* The external program section */ ! 358: void exec_xtrn(uint xtrnnum); /* Executes online external program */ ! 359: void user_event(char event); /* Executes user event(s) */ ! 360: char xtrn_access(uint xnum); /* Does useron have access to xtrn? */ ! 361: char *temp_cmd(void); /* Returns temp file command line */ ! 362: ! 363: /* LOGIO.C */ ! 364: void logentry(char *code,char *entry); ! 365: void log(char *str); /* Writes 'str' to node log */ ! 366: void logch(char ch, char comma); /* Writes 'ch' to node log */ ! 367: void logline(char *code,char *str); /* Writes 'str' on it's own line in log */ ! 368: void logofflist(void); /* List of users logon activity */ ! 369: void errorlog(char *text); /* Logs errors to ERROR.LOG and NODE.LOG */ ! 370: #if DEBUG ! 371: void dlog(int line, char *file, char *text); /* Debug log file */ ! 372: #endif ! 373: ! 374: /* QWK.C */ ! 375: void qwk_sec(void); ! 376: char pack_qwk(char *packet, ulong *msgcnt, int prepack); ! 377: void unpack_qwk(char *packet,uint hubnum); ! 378: ! 379: ! 380: /* FIDO.C */ ! 381: void netmail(char *into, char *subj, char mode); ! 382: void qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub); ! 383: ! 384: void inetmail(char *into, char *subj, char mode); ! 385: void qnetmail(char *into, char *subj, char mode); ! 386: ! 387: /* USEREDIT.C */ ! 388: void useredit(int usernumber, int local); ! 389: void maindflts(user_t user); ! 390: void purgeuser(int usernumber); ! 391: ! 392: /* INITDATA.C */ ! 393: void initdata(void); ! 394: ! 395: /* VER.C */ ! 396: void ver(void); ! 397: ! 398: /* MAIN_SEC.C */ ! 399: void main_sec(void); ! 400: void scanallsubs(char mode); ! 401: void scansubs(char mode); ! 402: void new_scan_cfg(ulong misc); ! 403: void new_scan_ptr_cfg(void); ! 404: ! 405: /* XFER_SEC.C */ ! 406: void xfer_sec(void); ! 407: void scanalldirs(char mode); ! 408: void scandirs(char mode); ! 409: ! 410: /* MSWAIT.OBJ */ ! 411: ! 412: void mswait(int msecs); ! 413: ! 414: #ifdef __OS2__ ! 415: #define beep(f,d) DosBeep(f,d) ! 416: #else ! 417: void beep(int freq, int dur); ! 418: #endif ! 419: ! 420: void backslash(char *str); ! 421: void backslashcolon(char *str); ! 422: void getlines(void); ! 423: void strip_ctrl(char *str); ! 424: void strip_exascii(char *str); ! 425: ! 426: char wfc_events(time_t lastnodechk); ! 427: void catsyslog(int crash); ! 428: char waitforcall(void); ! 429: void quicklogonstuff(void); ! 430: char terminal(void); ! 431: void startup(int argc, char *argv[]); ! 432: ! 433: void crack_attempt(void); ! 434: ! 435: /*********************/ ! 436: /* OS specific stuff */ ! 437: /*********************/ ! 438: ! 439: #ifdef __FLAT__ ! 440: ! 441: #define lread(f,b,l) read(f,b,l) ! 442: #define lfread(b,l,f) fread(b,l,f) ! 443: #define lwrite(f,b,l) write(f,b,l) ! 444: #define lfwrite(b,l,f) fwrite(b,l,f) ! 445: ! 446: #endif ! 447: ! 448: #if (__BORLANDC__ > 0x0410) ! 449: #define _chmod(p,f,a) _rtl_chmod(p,f,a) // _chmod obsolete in 4.x ! 450: #endif ! 451: ! 452: #if defined(__OS2__) ! 453: #define lclini(x) window(1,1,80,x) ! 454: #define lclaes() conaes() ! 455: #define nosound() ; ! 456: #elif defined(__WIN32__) ! 457: #define lclini(x) window(1,1,80,x) ! 458: #define lclxy(x,y) gotoxy(x,y) ! 459: #define lclwy() wherey() ! 460: #define lclwx() wherex() ! 461: #define lputs cputs ! 462: #define nosound() ; ! 463: #elif defined(__FLAT__) ! 464: #define mswait(x) delay(x) ! 465: #endif ! 466: ! 467: #ifndef __OS2__ ! 468: #define outcon(ch) lputc(ch) ! 469: #endif ! 470: ! 471: ! 472: #endif /* Don't add anything after this #endif statement */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.