|
|
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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.