Annotation of sbbs/sbbs2/sdk/xsdk.h, revision 1.1.1.1

1.1       root        1: /* XSDK.H */
                      2: 
                      3: #ifndef _XSDK_H
                      4: #define _XSDK_H
                      5: 
                      6: /****************************************************************************/
                      7: /*                     Synchronet External Program Software Development Kit                    */
                      8: /*                                                     1993 Digital Dynamics                                                   */
                      9: /****************************************************************************/
                     10: 
                     11: /****************************************************************************/
                     12: /* This source code file is public domain and may be modified, compiled        */
                     13: /* distributed, or used in any way, in part or whole for any purposes          */
                     14: /* without the consent or notification of Digital Dynamics.                            */
                     15: /*                                                                                                                                                     */
                     16: /* We only request that you display to the user, at some point, in your        */
                     17: /* program the character "XSDK" and the version number.                     */
                     18: /* example: bprintf("XSDK v%s",xsdk_ver);                                   */
                     19: /****************************************************************************/
                     20: 
                     21: /****************************************************************************/
                     22: /* The source code for two external programs developed by Digital Dynamics     */
                     23: /* using XSDK (Synchronet Blackjack [SBJ] and Synchronet BBS List [SBL])       */
                     24: /* are available to the public domain as examples of how to implement the      */
                     25: /* functions and variables included in this software development kit.          */
                     26: /****************************************************************************/
                     27: 
                     28: 
                     29: /****************************************************/
                     30: /* For use with Borland/Turbo C and C++ compilers.     */
                     31: /* Tabstop set to 4.                                                           */
                     32: /****************************************************/
                     33: 
                     34: /*********************************************/
                     35: /* Standard Borland/Turbo C/C++ Header Files */
                     36: /*********************************************/
                     37: #include <io.h>
                     38: #include <dos.h>
                     39: #include <bios.h>
                     40: #include <time.h>
                     41: #include <ctype.h>
                     42: #include <stdio.h>
                     43: #include <share.h>
                     44: #include <conio.h>
                     45: #include <errno.h>
                     46: #include <fcntl.h>
                     47: #include <string.h>
                     48: #include <stdlib.h>
                     49: #include <stdarg.h>
                     50: #include <malloc.h>
                     51: #include <sys/stat.h>
                     52: #include <sys/types.h>
                     53: 
                     54: #ifdef __TURBOC__
                     55:     #include <dir.h>
                     56: #endif
                     57: 
                     58: #ifdef __WATCOMC__
                     59:        #include <graph.h>
                     60: #endif
                     61: 
                     62: #define GLOBAL extern  /* turns XSDKVAR.C into a header file */
                     63: #include "xsdkvars.c"
                     64: 
                     65: #ifdef __cplusplus
                     66:        extern "C" {
                     67: #endif
                     68: 
                     69: extern char *xsdk_ver; /* XSDK version number */
                     70: extern int mswtyp;             /* MSwait type */
                     71: 
                     72: /***********************/
                     73: /* Function Prototypes */
                     74: /***********************/
                     75: 
                     76: /* Initialize Data
                     77:        - Reads XTRN.DAT and initializes variables */
                     78: void initdata(void);
                     79: 
                     80: /* Get Terminal Type
                     81:        - Detects RIP and WIP terminal compatibility */
                     82: void get_term(void);
                     83: 
                     84: /* BBS Print String
                     85:        - Displays a string locally and remotely (with Ctrl-A codes) */
                     86: void bputs(char *str);
                     87: 
                     88: /* Raw Print String
                     89:        - Oututs a string locally and remotely (verbatim) */
                     90: void rputs(char *str);
                     91: 
                     92: /* BBS Print Formatted
                     93:        - Displays a formatted string locally and remotely (with Ctrl-A codes)
                     94:        - printf() equivalent */
                     95: int  bprintf(char *fmt, ...);
                     96: 
                     97: /* Raw Print Formated
                     98:        - Displays a formatted string locally and remotely (verbatim)
                     99:        - printf() equivalent */
                    100: int  rprintf(char *fmt, ...);
                    101: 
                    102: /* BBS String Length
                    103:        - Returns length of string, excluding Ctrl-A codes */
                    104: int  bstrlen(uchar *str);
                    105: 
                    106: /* Output character
                    107:        - Displays a single character */
                    108: void outchar(char ch);
                    109: 
                    110: /* Mnemonics
                    111:        - Display a string expanding ~letter combinations to command keys
                    112:        - Automatically colorizes mnemonic letters or places them in parenthesis
                    113:          for non-ANSI users */
                    114: void mnemonics(char *str);
                    115: 
                    116: /* Pause prompt
                    117:        - Displays [Hit a key] and waits for the user to hit a key */
                    118: void pause(void);
                    119: 
                    120: /* Yes/no Question
                    121:        - Displays a string with (Y/n) ? appended and waits for the user to hit
                    122:          'Y', 'N' or enter
                    123:        - Returns 1 if the user hit 'Y' or enter
                    124:        - Automatic colorization */
                    125: char yesno(char *str);
                    126: 
                    127: /* No/yes Question
                    128:        - Displays a string with (y/N) ? appended and waits for the user to hit
                    129:          'Y', 'N' or enter
                    130:        - Returns 1 if the user hit 'N' or enter */
                    131: char noyes(char *str);
                    132: 
                    133: /* Inbound Keystroke
                    134:        - If the local or remote user has struck a key, this function returns the
                    135:          key, otherwise it returns 0
                    136:        - Does not wait for a keystroke */
                    137: char inkey(int mode);
                    138: 
                    139: /* Get a Key
                    140:        - Waits for the local or remote user to hit a valid key
                    141:        - See K_* constants in XSDKDEFS.H for possible values of mode */
                    142: char getkey(int mode);
                    143: 
                    144: /* Get One of these Keys or a Number
                    145:        - Waits for the user to hit a valid key or if max is non-zero, then enter
                    146:          a number not greater than max
                    147:        - Hot-keyed input, automatically displays the struck key (in upper case)
                    148:          followed by CRLF
                    149:        - If the user entered a number, the number is ORed with 0x8000 and returned
                    150:          you must XOR (or not) this bit to get the correct number */
                    151: int  getkeys(char *str, int max);
                    152: 
                    153: /* Get a Number
                    154:        - Waits for the user to enter a number from 0 to max, 'Q' or ENTER
                    155:        - Returns -1 if the user hit 'Q' or Ctrl-C
                    156:        - Returns 0 if the user just hit ENTER */
                    157: int  getnum(int max);
                    158: 
                    159: /* Change Attribute
                    160:        - Sends ANSI escape sequences (if user supports ANSI) to change color
                    161:        - Valid color bits are defined in INCLUDE\CONIO.H */
                    162: void attr(char atr);
                    163: 
                    164: /* Clear Screen
                    165:        - Clears local and remote screen (using ANSI if appropriate)
                    166:        - Automatically pauses before clearing if lncntr is >1 */
                    167: void cls(void);
                    168: 
                    169: /* Process Ctrl-A Code
                    170:        - Changes color or performs special Ctrl-A function */
                    171: void ctrl_a(char x);
                    172: 
                    173: /* Network Open
                    174:        - Opens a file in DENYNONE or DENYWRITE mode, automatically retrying */
                    175: int  nopen(char *str, int access);
                    176: 
                    177: /* Truncate Space
                    178:        - Removes white space characters from the end of a string */
                    179: void truncsp(uchar *str);
                    180: 
                    181: /* Adds Backslash
                    182:        - Adds backslash to end of string if it doesn't exist */
                    183: void backslash(char *str);
                    184: 
                    185: /* Check Time Left
                    186:        - Checks the amount of time the user has left and sets the timeleft
                    187:          variable
                    188:        - Automatically exits if user runs out of time */
                    189: void checktimeleft(void);
                    190: 
                    191: /* Print File
                    192:        - Displays contents of file (expanding Ctrl-A characters if appropriate) */
                    193: void printfile(char *str);
                    194: 
                    195: /* Get String
                    196:        - Waits for the user to enter a string
                    197:        - maxlen is the maximum length of the string
                    198:        - See K_* constants in XSDKDEFS.H for possible values of mode */
                    199: int  getstr(char *str, int maxlen, int mode);
                    200: 
                    201: /* Redraw String
                    202:        - Redisplays a string, mainly called by getstr() */
                    203: void redrwstr(char *strin, int i, int l, char mode);
                    204: 
                    205: /* Strip Invalid Ctrl-A codes */
                    206: char stripattr(char *strin);
                    207: 
                    208: /* Returns the name of the user number passed */
                    209: char *username(uint usernumber);
                    210: 
                    211: /* Returns the number of the user name passed */
                    212: uint usernumber(char *username);
                    213: 
                    214: /* Returns 1 if the file exists, 0 otherwise */
                    215: char fexist(char *filespec);
                    216: 
                    217: /* Returns the length of the file */
                    218: long flength(char *filespec);
                    219: 
                    220: /* Convert unsigned long to an ASCII string with commas */
                    221: char *ultoac(ulong l, char *string);
                    222: 
                    223: /* Convert an ASCII string of hex digits into an unsigned long */
                    224: ulong ahtoul(char *str);
                    225: 
                    226: /* Display status of node */
                    227: void printnodedat(uchar number, node_t node);
                    228: 
                    229: /* Checks to see if this node has been interrupted or any messages waiting */
                    230: void nodesync(void);
                    231: 
                    232: /* Writes the node information to disk */
                    233: void putnodedat(uchar number, node_t node);
                    234: 
                    235: /* Reads the node information from disk */
                    236: void getnodedat(uchar number, node_t *node, char lockit);
                    237: 
                    238: /* Writes a short message (telegram) for specified user number */
                    239: void putsmsg(int usernumber, char *strin);
                    240: 
                    241: /* Reads and displays short message for specified user number */
                    242: void getsmsg(int usernumber);
                    243: 
                    244: /* Writes a node message for specified node */
                    245: void putnmsg(int num, char *strin);
                    246: 
                    247: /* Reads and displays node message for current node */
                    248: void getnmsg(void);
                    249: 
                    250: /* Displays users online */
                    251: int whos_online(char listself);
                    252: 
                    253: /* Send a node-message (ctrl-P) */
                    254: void nodemsg(void);
                    255: 
                    256: /* Put a key into the keyboard buffer */
                    257: void ungetkey(char ch);
                    258: 
                    259: /* Check to see if the user has hung-up */
                    260: void checkline(void);
                    261: 
                    262: /* Wait a specific number of milliseconds */
                    263: void mswait(int ms);
                    264: 
                    265: /* Display a line (with ctrl-A codes) centered on the screen */
                    266: void center(char *str);
                    267: 
                    268: #ifdef __cplusplus
                    269:        }
                    270: #endif
                    271: 
                    272: 
                    273: #endif /* Don't add anything after this #endif */

unix.superglobalmegacorp.com

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