1 | /* ckcker.h -- Symbol and macro definitions for C-Kermit */ |
---|
2 | |
---|
3 | /* |
---|
4 | Author: Frank da Cruz <fdc@columbia.edu>, |
---|
5 | Columbia University Academic Information Systems, New York City. |
---|
6 | |
---|
7 | Copyright (C) 1985, 1996, Trustees of Columbia University in the City of New |
---|
8 | York. The C-Kermit software may not be, in whole or in part, licensed or |
---|
9 | sold for profit as a software product itself, nor may it be included in or |
---|
10 | distributed with commercial products or otherwise distributed by commercial |
---|
11 | concerns to their clients or customers without written permission of the |
---|
12 | Office of Kermit Development and Distribution, Columbia University. This |
---|
13 | copyright notice must not be removed, altered, or obscured. |
---|
14 | */ |
---|
15 | |
---|
16 | #ifndef CKCKER_H |
---|
17 | #define CKCKER_H |
---|
18 | |
---|
19 | /* |
---|
20 | If NEWDEFAULTS is defined then: |
---|
21 | - RECEIVE PACKET-LENGTH is 2048 rather than 90 |
---|
22 | - WINDOW is 20 rather than 1 |
---|
23 | - BLOCK-CHECK is 3 rather than 1 |
---|
24 | - FILE TYPE is BINARY rather than TEXT |
---|
25 | */ |
---|
26 | #ifdef OS2 /* OS/2, Windows NT, Windows 95 */ |
---|
27 | #ifndef NEWDEFAULTS |
---|
28 | #define NEWDEFAULTS |
---|
29 | #endif /* NEWDEFAULTS */ |
---|
30 | #endif /* OS2 */ |
---|
31 | |
---|
32 | #ifdef NOICP /* No Interactive Command Parser */ |
---|
33 | #ifndef NOSPL /* implies... */ |
---|
34 | #define NOSPL /* No Script Programming Language */ |
---|
35 | #endif /* NOSPL */ |
---|
36 | #ifndef NOCSETS /* No character-set translation */ |
---|
37 | #define NOCSETS /* because the only way to set it up */ |
---|
38 | #endif /* NOCSETS */ /* is with interactive commands */ |
---|
39 | #endif /* NOICP */ |
---|
40 | |
---|
41 | #ifdef pdp11 /* There is a maximum number of */ |
---|
42 | #ifndef NOCKSPEED /* of -D's allowed on the CC */ |
---|
43 | #define NOCKSPEED /* command line, so some of them */ |
---|
44 | #endif /* NOCKSPEED */ /* have to go here... */ |
---|
45 | #ifndef NOREDIRECT |
---|
46 | #define NOREDIRECT |
---|
47 | #endif /* NOREDIRECT */ |
---|
48 | #ifdef WHATAMI |
---|
49 | #undef WHATAMI |
---|
50 | #endif /* WHATAMI */ |
---|
51 | #endif /* pdp11 */ |
---|
52 | |
---|
53 | #define LOGINLEN 32 /* Length of server login field */ |
---|
54 | |
---|
55 | /* Control-character (un)prefixing options */ |
---|
56 | |
---|
57 | #define PX_ALL 0 /* Prefix all control chars */ |
---|
58 | #define PX_CAU 1 /* Unprefix cautiously */ |
---|
59 | #define PX_WIL 2 /* Unprefix with wild abandon */ |
---|
60 | #define PX_NON 3 /* Unprefix all (= prefix none) */ |
---|
61 | |
---|
62 | /* Destination codes */ |
---|
63 | |
---|
64 | #define DEST_D 0 /* DISK */ |
---|
65 | #define DEST_S 1 /* SCREEN */ |
---|
66 | #define DEST_P 2 /* PRINTER */ |
---|
67 | |
---|
68 | /* File transfer protocols */ |
---|
69 | |
---|
70 | #define PROTO_K 0 /* Kermit */ |
---|
71 | #ifdef CK_XYZ |
---|
72 | #define PROTO_X 1 /* XMODEM */ |
---|
73 | #define PROTO_Y 2 /* YMODEM */ |
---|
74 | #define PROTO_G 3 /* YMODEM-g */ |
---|
75 | #define PROTO_Z 4 /* ZMODEM */ |
---|
76 | #define PROTO_O 5 /* OTHER */ |
---|
77 | #define NPROTOS 6 /* How many */ |
---|
78 | #else |
---|
79 | #define NPROTOS 1 /* How many */ |
---|
80 | #endif /* CK_XYZ */ |
---|
81 | |
---|
82 | struct ck_p { /* C-Kermit Protocol info structure */ |
---|
83 | char * p_name; /* Protocol name */ |
---|
84 | int rpktlen; /* Packet length - receive */ |
---|
85 | int spktlen; /* Packet length - send */ |
---|
86 | int spktflg; /* ... */ |
---|
87 | int winsize; /* Window size */ |
---|
88 | int prefix; /* Control-char prefixing options */ |
---|
89 | int fnca; /* Filename collision action */ |
---|
90 | int fncn; /* Filename conversion */ |
---|
91 | int fnsp; /* Send filename path stripping */ |
---|
92 | int fnrp; /* Receive filename path stripping */ |
---|
93 | char * h_b_init; /* Host receive initiation string - text */ |
---|
94 | char * h_t_init; /* Host receive initiation string - binary */ |
---|
95 | char * p_b_scmd; /* SEND cmd for external protocol - text */ |
---|
96 | char * p_t_scmd; /* SEND cmd for external protocol - binary */ |
---|
97 | char * p_b_rcmd; /* RECV cmd for external protocol - text */ |
---|
98 | char * p_t_rcmd; /* RECV cmd for external protocol - binary */ |
---|
99 | }; |
---|
100 | |
---|
101 | struct filelist { /* Send-file list element */ |
---|
102 | char * fl_name; /* Filename */ |
---|
103 | int fl_mode; /* Transfer mode */ |
---|
104 | char * fl_alias; /* Name to send the file under */ |
---|
105 | struct filelist * fl_next; /* Pointer to next element */ |
---|
106 | }; |
---|
107 | |
---|
108 | /* Kermit system IDs and associated properties... */ |
---|
109 | |
---|
110 | struct sysdata { |
---|
111 | char *sid_code; /* Kermit system ID code */ |
---|
112 | char *sid_name; /* Descriptive name */ |
---|
113 | short sid_unixlike; /* Tree-structured directory with separators */ |
---|
114 | char sid_dirsep; /* Directory separator character if unixlike */ |
---|
115 | short sid_dev; /* Can start with dev: */ |
---|
116 | short sid_case; /* Bit mapped: 1 = case matters, 2 = case preserved */ |
---|
117 | short sid_recfm; /* Text record separator */ |
---|
118 | /* |
---|
119 | 0 = unknown or nonstream |
---|
120 | 1 = cr |
---|
121 | 2 = lf |
---|
122 | 3 = crlf |
---|
123 | */ |
---|
124 | }; |
---|
125 | |
---|
126 | #ifndef NOSPL |
---|
127 | /* |
---|
128 | The IF REMOTE-ONLY command is available only in versions |
---|
129 | that actually can be used in remote mode, and only if we have |
---|
130 | an interactive command parser. |
---|
131 | */ |
---|
132 | #define CK_IFRO |
---|
133 | #ifdef MAC |
---|
134 | #undef CK_IFRO |
---|
135 | #else |
---|
136 | #ifdef GEMDOS |
---|
137 | #undef CK_IFRO |
---|
138 | #endif /* GEMDOS */ |
---|
139 | #endif /* MAC */ |
---|
140 | #endif /* NOSPL */ |
---|
141 | |
---|
142 | /* Systems whose CONNECT modules can execute Application Program Commands */ |
---|
143 | |
---|
144 | #ifndef NOAPC /* Unless they said NO APC */ |
---|
145 | #ifndef CK_APC /* And they didn't already define it */ |
---|
146 | #ifdef OS2 /* OS/2 gets it */ |
---|
147 | #define CK_APC |
---|
148 | #endif /* OS2 */ |
---|
149 | #ifdef UNIX /* UNIX gets it */ |
---|
150 | #define CK_APC |
---|
151 | #endif /* UNIX */ |
---|
152 | #ifdef VMS /* VMS too */ |
---|
153 | #define CK_APC |
---|
154 | #endif /* VMS */ |
---|
155 | #endif /* CK_APC */ |
---|
156 | #endif /* NOAPC */ |
---|
157 | |
---|
158 | #ifdef NOSPL /* Script programming language */ |
---|
159 | #ifdef CK_APC /* is required for APC. */ |
---|
160 | #undef CK_APC |
---|
161 | #endif /* CK_APC */ |
---|
162 | #endif /* NOSPL */ |
---|
163 | |
---|
164 | #ifdef CK_APC /* APC buffer length */ |
---|
165 | #define APCBUFLEN (CMDBL + 10) |
---|
166 | #define APC_OFF 0 /* APC OFF (disabled) */ |
---|
167 | #define APC_ON 1 /* APC ON (enabled for non-dangerous commands) */ |
---|
168 | #define APC_UNCH 2 /* APC UNCHECKED (enabled for ALL commands) */ |
---|
169 | #define APC_INACTIVE 0 /* APC not in use */ |
---|
170 | #define APC_REMOTE 1 /* APC in use from Remote */ |
---|
171 | #define APC_LOCAL 2 /* APC being used from with Kermit */ |
---|
172 | #ifndef CK_AUTODL /* Autodownload */ |
---|
173 | #ifdef OS2 |
---|
174 | #define CK_AUTODL |
---|
175 | #else |
---|
176 | #ifdef UNIX |
---|
177 | #define CK_AUTODL |
---|
178 | #else |
---|
179 | #ifdef VMS |
---|
180 | #define CK_AUTODL |
---|
181 | #endif /* VMS */ |
---|
182 | #endif /* UNIX */ |
---|
183 | #endif /* OS2 */ |
---|
184 | #endif /* CK_AUTODL */ |
---|
185 | #endif /* CK_APC */ |
---|
186 | |
---|
187 | /* Codes for what we are doing now */ |
---|
188 | |
---|
189 | #define W_NOTHING 0 /* Nothing */ |
---|
190 | #define W_SEND 2 /* SENDing or MAILing */ |
---|
191 | #define W_RECV 4 /* RECEIVEing or GETting */ |
---|
192 | #define W_REMO 8 /* Doing a REMOTE command */ |
---|
193 | #define W_CONNECT 16 /* CONNECT mode */ |
---|
194 | #define W_COMMAND 32 /* Command mode */ |
---|
195 | |
---|
196 | #ifndef NOWHATAMI |
---|
197 | #ifndef WHATAMI |
---|
198 | #define WHATAMI |
---|
199 | #endif /* WHATAMI */ |
---|
200 | #endif /* NOWHATAMI */ |
---|
201 | |
---|
202 | #ifdef WHATAMI /* Bit mask positions for WHATAMI */ |
---|
203 | #define WM_SERVE 1 /* Server mode */ |
---|
204 | #define WM_FMODE 2 /* File transfer mode */ |
---|
205 | #define WM_FNAME 4 /* File name conversion */ |
---|
206 | #define WM_FLAG3 8 /* Flag for Bit3 */ |
---|
207 | #define WM_FLAG 32 /* Flag that says we got this info */ |
---|
208 | #endif /* WHATAMI */ |
---|
209 | |
---|
210 | /* Terminal types */ |
---|
211 | #define VT100 0 /* Also for VT52 mode */ |
---|
212 | #define TEKTRONIX 1 |
---|
213 | |
---|
214 | /* Normal packet and window size */ |
---|
215 | |
---|
216 | #define MAXPACK 94 /* Maximum unextended packet size */ |
---|
217 | /* Can't be more than 94. */ |
---|
218 | #ifdef pdp11 /* Maximum sliding window slots */ |
---|
219 | #define MAXWS 8 |
---|
220 | #else |
---|
221 | #define MAXWS 32 /* Can't be more than 32. */ |
---|
222 | #endif /* pdp11 */ |
---|
223 | |
---|
224 | /* Maximum long packet size for sending packets */ |
---|
225 | /* Override these from cc command line via -DMAXSP=nnn */ |
---|
226 | |
---|
227 | #ifdef DYNAMIC |
---|
228 | #ifndef MAXSP |
---|
229 | #define MAXSP 9024 |
---|
230 | #endif /* MAXSP */ |
---|
231 | #else /* not DYNAMIC */ |
---|
232 | #ifndef MAXSP |
---|
233 | #ifdef pdp11 |
---|
234 | #define MAXSP 1024 |
---|
235 | #else |
---|
236 | #define MAXSP 2048 |
---|
237 | #endif /* pdp11 */ |
---|
238 | #endif /* MAXSP */ |
---|
239 | #endif /* DYNAMIC */ |
---|
240 | |
---|
241 | /* Maximum long packet size for receiving packets */ |
---|
242 | /* Override these from cc command line via -DMAXRP=nnn */ |
---|
243 | |
---|
244 | #ifdef DYNAMIC |
---|
245 | #ifndef MAXRP |
---|
246 | #define MAXRP 9024 |
---|
247 | #endif /* MAXRP */ |
---|
248 | #else /* not DYNAMIC */ |
---|
249 | #ifndef MAXRP |
---|
250 | #ifdef pdp11 |
---|
251 | #define MAXRP 1024 |
---|
252 | #else |
---|
253 | #define MAXRP 2048 |
---|
254 | #endif /* pdp11 */ |
---|
255 | #endif /* MAXRP */ |
---|
256 | #endif /* DYNAMIC */ |
---|
257 | /* |
---|
258 | Default sizes for windowed packet buffers. |
---|
259 | Override these from cc command line via -DSBSIZ=nnn, -DRBSIZ=nnn. |
---|
260 | Or just -DBIGBUFOK. |
---|
261 | */ |
---|
262 | |
---|
263 | #ifndef MAXGETPATH /* Maximum number of directories */ |
---|
264 | #ifdef BIGBUFOK /* for GET path... */ |
---|
265 | #define MAXGETPATH 128 |
---|
266 | #else |
---|
267 | #define MAXGETPATH 16 |
---|
268 | #endif /* BIGBUFOK */ |
---|
269 | #endif /* MAXGETPATH */ |
---|
270 | |
---|
271 | #ifndef NOSPL /* Query buffer length */ |
---|
272 | #ifdef OS2 |
---|
273 | #define QBUFL 4095 |
---|
274 | #else |
---|
275 | #define QBUFL 1023 |
---|
276 | #endif /* OS2 */ |
---|
277 | #endif /* NOSPL */ |
---|
278 | |
---|
279 | #ifdef DYNAMIC |
---|
280 | #ifndef SBSIZ |
---|
281 | #ifdef BIGBUFOK /* If big buffers are safe... */ |
---|
282 | #define SBSIZ 90500 /* Allow for 10 x 9024 or 20 x 4096 */ |
---|
283 | #else /* Otherwise... */ |
---|
284 | #ifdef pdp11 |
---|
285 | #define SBSIZ 3020 |
---|
286 | #else |
---|
287 | #define SBSIZ 9050 /* Allow for 3 x 3000, etc. */ |
---|
288 | #endif /* pdp11 */ |
---|
289 | #endif /* BIGBUFOK */ |
---|
290 | #endif /* SBSIZ */ |
---|
291 | |
---|
292 | #ifndef RBSIZ |
---|
293 | #ifdef BIGBUFOK |
---|
294 | #define RBSIZ 90500 |
---|
295 | #else |
---|
296 | #ifdef pdp11 |
---|
297 | #define RBSIZ 3020 |
---|
298 | #else |
---|
299 | #define RBSIZ 9050 |
---|
300 | #endif /* pdp11 */ |
---|
301 | #endif /* BIGBUFOK */ |
---|
302 | #endif /* RBSIZ */ |
---|
303 | #else /* not DYNAMIC */ |
---|
304 | #ifdef pdp11 |
---|
305 | #define SBSIZ 3020 |
---|
306 | #define RBSIZ 3020 |
---|
307 | #else |
---|
308 | #ifndef SBSIZ |
---|
309 | #define SBSIZ (MAXSP * (MAXWS + 1)) |
---|
310 | #endif /* SBSIZ */ |
---|
311 | #ifndef RBSIZ |
---|
312 | #define RBSIZ (MAXRP * (MAXWS + 1)) |
---|
313 | #endif /* RBSIZ */ |
---|
314 | #endif /* pdp11 */ |
---|
315 | #endif /* DYNAMIC */ |
---|
316 | |
---|
317 | /* Kermit parameters and defaults */ |
---|
318 | |
---|
319 | #define CTLQ '#' /* Control char prefix I will use */ |
---|
320 | #define MYEBQ '&' /* 8th-Bit prefix char I will use */ |
---|
321 | #define MYRPTQ '~' /* Repeat count prefix I will use */ |
---|
322 | |
---|
323 | #define MAXTRY 10 /* Times to retry a packet */ |
---|
324 | #define MYPADN 0 /* How many padding chars I need */ |
---|
325 | #define MYPADC '\0' /* Which padding character I need */ |
---|
326 | |
---|
327 | #define DMYTIM 8 /* Initial timeout interval to use. */ |
---|
328 | #define URTIME 15 /* Timeout interval to use on me. */ |
---|
329 | #define DSRVTIM 0 /* Default server cmd wait timeout. */ |
---|
330 | |
---|
331 | #define DEFTRN 0 /* Default line turnaround handshake */ |
---|
332 | |
---|
333 | #define MYEOL CR /* Incoming packet terminator. */ |
---|
334 | |
---|
335 | #ifdef NEWDEFAULTS |
---|
336 | #define DRPSIZ 4095 /* Default incoming packet size. */ |
---|
337 | #define DFWSIZ 20 /* Default window size */ |
---|
338 | #define DFBCT 3 /* Default block-check type */ |
---|
339 | #else |
---|
340 | #define DRPSIZ 90 /* Default incoming packet size. */ |
---|
341 | #define DFWSIZ 1 /* Default window size */ |
---|
342 | #define DFBCT 3 /* Default block-check type */ |
---|
343 | #endif /* NEWDEFAULTS */ |
---|
344 | |
---|
345 | #define DSPSIZ 90 /* Default outbound packet size. */ |
---|
346 | |
---|
347 | #define DDELAY 1 /* Default delay. */ |
---|
348 | #define DSPEED 9600 /* Default line speed. */ |
---|
349 | |
---|
350 | #ifdef OS2 /* Default CONNECT-mode */ |
---|
351 | #define DFESC 29 /* escape character */ |
---|
352 | #else |
---|
353 | #ifdef NEXT /* Ctrl-] for PC and NeXT */ |
---|
354 | #define DFESC 29 |
---|
355 | #else |
---|
356 | #ifdef GEMDOS /* And Atari ST */ |
---|
357 | #define DFESC 29 |
---|
358 | #else |
---|
359 | #define DFESC 28 /* Ctrl-backslash for others */ |
---|
360 | #endif /* GEMDOS */ |
---|
361 | #endif /* NEXT */ |
---|
362 | #endif /* OS2 */ |
---|
363 | |
---|
364 | #ifdef NOPUSH /* NOPUSH implies NOJC */ |
---|
365 | #ifndef NOJC /* (no job control) */ |
---|
366 | #define NOJC |
---|
367 | #endif /* NOJC */ |
---|
368 | #endif /* NOPUSH */ |
---|
369 | |
---|
370 | #ifdef UNIX /* Default for SET SUSPEND */ |
---|
371 | #ifdef NOJC /* UNIX but job control disabled */ |
---|
372 | #define DFSUSP 0 |
---|
373 | #else /* UNIX, job control enabled. */ |
---|
374 | #define DFSUSP 1 |
---|
375 | #endif /* NOJC */ |
---|
376 | #else |
---|
377 | #define DFSUSP 0 |
---|
378 | #endif /* UNIX */ |
---|
379 | |
---|
380 | /* Files */ |
---|
381 | |
---|
382 | #define ZCTERM 0 /* Console terminal */ |
---|
383 | #define ZSTDIO 1 /* Standard input/output */ |
---|
384 | #define ZIFILE 2 /* Current input file (SEND, etc) (in) */ |
---|
385 | #define ZOFILE 3 /* Current output file (RECEIVE, GET) (out) */ |
---|
386 | #define ZDFILE 4 /* Current debugging log file (out) */ |
---|
387 | #define ZTFILE 5 /* Current transaction log file (out) */ |
---|
388 | #define ZPFILE 6 /* Current packet log file (out) */ |
---|
389 | #define ZSFILE 7 /* Current session log file (out) */ |
---|
390 | #define ZSYSFN 8 /* Input/Output from a system function */ |
---|
391 | #define ZRFILE 9 /* Local file for READ (in) */ |
---|
392 | #define ZWFILE 10 /* Local file for WRITE (out) */ |
---|
393 | #define ZMFILE 11 /* Miscellaneous output file, e.g. for XLATE */ |
---|
394 | #define ZNFILS 12 /* How many defined file numbers */ |
---|
395 | |
---|
396 | /* Buffered file i/o ... */ |
---|
397 | #ifdef pdp11 |
---|
398 | #define INBUFSIZE 512 |
---|
399 | #define OBUFSIZE 512 |
---|
400 | #else |
---|
401 | #ifdef VMS /* In VMS, allow for longest possible RMS record */ |
---|
402 | #define INBUFSIZE 32768 /* File input buffer size */ |
---|
403 | #define OBUFSIZE 32768 /* File output buffer size */ |
---|
404 | #else /* Not VMS */ |
---|
405 | #ifdef BIGBUFOK /* Systems where memory is */ |
---|
406 | #define INBUFSIZE 32768 /* not a problem... */ |
---|
407 | #define OBUFSIZE 32768 |
---|
408 | #else /* Not BIGBUFOK */ |
---|
409 | #ifdef STRATUS |
---|
410 | #ifdef DYNAMIC |
---|
411 | #define INBUFSIZE 32767 /* File input buffer size */ |
---|
412 | #define OBUFSIZE 32767 /* File output buffer size */ |
---|
413 | #else /* STRATUS, not DYNAMIC */ |
---|
414 | #define INBUFSIZE 4096 /* File input buffer size */ |
---|
415 | #define OBUFSIZE 4096 /* File output buffer size */ |
---|
416 | #endif /* DYNAMIC */ |
---|
417 | #else /* not STRATUS */ |
---|
418 | #ifdef OS2 /* OS/2 and friends */ |
---|
419 | #ifdef NT |
---|
420 | #define INBUFSIZE 32768 /* Windows 95 and NT */ |
---|
421 | #define OBUFSIZE 32768 |
---|
422 | #else |
---|
423 | #define INBUFSIZE 4095 /* OS/2 HPFS block allocation */ |
---|
424 | #define OBUFSIZE 4095 |
---|
425 | #endif /* NT */ |
---|
426 | #else |
---|
427 | #define INBUFSIZE 1024 |
---|
428 | #define OBUFSIZE 1024 |
---|
429 | #endif /* OS2 */ |
---|
430 | #endif /* STRATUS */ |
---|
431 | #endif /* BIGBUFOK */ |
---|
432 | #endif /* VMS */ |
---|
433 | #endif /* pdp11 */ |
---|
434 | |
---|
435 | /* get the next char; sorta like a getc() macro */ |
---|
436 | #define zminchar() (((--zincnt)>=0) ? ((int)(*zinptr++) & 0377) : zinfill()) |
---|
437 | |
---|
438 | /* stuff a character into the input buffer */ |
---|
439 | #define zmstuff(c) zinptr--, *zinptr = c, zincnt++ |
---|
440 | |
---|
441 | /* put a character to a file, like putchar() macro */ |
---|
442 | #define zmchout(c) \ |
---|
443 | ((*zoutptr++=(char)(c)),(((++zoutcnt)>=OBUFSIZE)?zoutdump():0)) |
---|
444 | |
---|
445 | /* Screen functions */ |
---|
446 | |
---|
447 | #define SCR_FN 1 /* filename */ |
---|
448 | #define SCR_AN 2 /* as-name */ |
---|
449 | #define SCR_FS 3 /* file-size */ |
---|
450 | #define SCR_XD 4 /* x-packet data */ |
---|
451 | #define SCR_ST 5 /* File status: */ |
---|
452 | #define ST_OK 0 /* Transferred OK */ |
---|
453 | #define ST_DISC 1 /* Discarded */ |
---|
454 | #define ST_INT 2 /* Interrupted */ |
---|
455 | #define ST_SKIP 3 /* Skipped */ |
---|
456 | #define ST_ERR 4 /* Fatal Error */ |
---|
457 | #define ST_REFU 5 /* Refused (use Attribute codes for reason) */ |
---|
458 | #define ST_INC 6 /* Incompletely received */ |
---|
459 | #define ST_MSG 7 /* Informational message */ |
---|
460 | #define SCR_PN 6 /* packet number */ |
---|
461 | #define SCR_PT 7 /* packet type or pseudotype */ |
---|
462 | #define SCR_TC 8 /* transaction complete */ |
---|
463 | #define SCR_EM 9 /* error message */ |
---|
464 | #define SCR_WM 10 /* warning message */ |
---|
465 | #define SCR_TU 11 /* arbitrary undelimited text */ |
---|
466 | #define SCR_TN 12 /* arbitrary new text, delimited at beginning */ |
---|
467 | #define SCR_TZ 13 /* arbitrary text, delimited at end */ |
---|
468 | #define SCR_QE 14 /* quantity equals (e.g. "foo: 7") */ |
---|
469 | #define SCR_CW 15 /* close screen window */ |
---|
470 | #define SCR_CD 16 /* display current directory */ |
---|
471 | |
---|
472 | /* Macros */ |
---|
473 | |
---|
474 | #define tochar(ch) (((ch) + SP ) & 0xFF ) /* Number to character */ |
---|
475 | #define xunchar(ch) (((ch) - SP ) & 0xFF ) /* Character to number */ |
---|
476 | #define ctl(ch) (((ch) ^ 64 ) & 0xFF ) /* Controllify/Uncontrollify */ |
---|
477 | #define unpar(ch) (((ch) & 127) & 0xFF ) /* Clear parity bit */ |
---|
478 | |
---|
479 | #ifndef NODIAL |
---|
480 | |
---|
481 | /* Modem capabilities (bit values) */ |
---|
482 | #define CKD_AT 1 /* Hayes AT commands and responses */ |
---|
483 | #define CKD_V25 2 /* V.25bis commands and responses */ |
---|
484 | #define CKD_SB 4 /* Speed buffering */ |
---|
485 | #define CKD_EC 8 /* Error correction */ |
---|
486 | #define CKD_DC 16 /* Data compression */ |
---|
487 | #define CKD_HW 32 /* Hardware flow control */ |
---|
488 | #define CKD_SW 64 /* (Local) software flow control */ |
---|
489 | #define CKD_KS 128 /* Kermit spoofing */ |
---|
490 | #define CKD_TB 256 /* Made by Telebit */ |
---|
491 | |
---|
492 | /* DIAL command result codes */ |
---|
493 | #define DIA_UNK -1 /* No DIAL command given yet */ |
---|
494 | #define DIA_OK 0 /* DIAL succeeded */ |
---|
495 | #define DIA_NOMO 1 /* Modem type not specified */ |
---|
496 | #define DIA_NOLI 2 /* Communication line not spec'd */ |
---|
497 | #define DIA_OPEN 3 /* Line can't be opened */ |
---|
498 | #define DIA_NOSP 4 /* Speed not specified */ |
---|
499 | #define DIA_HANG 5 /* Hangup failure */ |
---|
500 | #define DIA_IE 6 /* Internal error (malloc, etc) */ |
---|
501 | #define DIA_IO 7 /* I/O error */ |
---|
502 | #define DIA_TIMO 8 /* Dial timeout expired */ |
---|
503 | #define DIA_INTR 9 /* Dialing interrupted by user */ |
---|
504 | #define DIA_NRDY 10 /* Modem not ready */ |
---|
505 | #define DIA_PART 11 /* Partial dial command OK */ |
---|
506 | #define DIA_DIR 12 /* Dialing directory error */ |
---|
507 | #define DIA_HUP 13 /* Modem was hung up OK */ |
---|
508 | #define DIA_ERR 20 /* Modem command error */ |
---|
509 | #define DIA_NOIN 21 /* Failure to initialize modem */ |
---|
510 | #define DIA_BUSY 22 /* Phone busy */ |
---|
511 | #define DIA_NOCA 23 /* No carrier */ |
---|
512 | #define DIA_NODT 24 /* No dialtone */ |
---|
513 | #define DIA_RING 25 /* Ring, incoming call */ |
---|
514 | #define DIA_NOAN 26 /* No answer */ |
---|
515 | #define DIA_DISC 27 /* Disconnected */ |
---|
516 | #define DIA_VOIC 28 /* Answered by voice */ |
---|
517 | #define DIA_NOAC 29 /* Access denied, forbidden call */ |
---|
518 | #define DIA_BLCK 30 /* Blacklisted */ |
---|
519 | #define DIA_DELA 31 /* Delayed */ |
---|
520 | #define DIA_FAX 32 /* Fax */ |
---|
521 | #define DIA_UERR 98 /* Unknown error */ |
---|
522 | #define DIA_UNSP 99 /* Unspecified failure detected by modem */ |
---|
523 | |
---|
524 | #define MDMINF struct mdminf |
---|
525 | |
---|
526 | MDMINF { /* Structure for modem-specific information */ |
---|
527 | |
---|
528 | char * name; /* Descriptive name */ |
---|
529 | char * pulse; /* Command to force pulse dialing */ |
---|
530 | char * tone; /* Command to force tone dialing */ |
---|
531 | int dial_time; /* Time modem allows for dialing (secs) */ |
---|
532 | char * pause_chars; /* Character(s) to tell modem to pause */ |
---|
533 | int pause_time; /* Time associated with pause chars (secs) */ |
---|
534 | char * wake_str; /* String to wakeup modem & put in cmd mode */ |
---|
535 | int wake_rate; /* Delay between wake_str characters (msecs) */ |
---|
536 | char * wake_prompt; /* String prompt after wake_str */ |
---|
537 | char * dmode_str; /* String to put modem in dialing mode */ |
---|
538 | char * dmode_prompt; /* String prompt for dialing mode */ |
---|
539 | char * dial_str; /* Dialing string, with "%s" for number */ |
---|
540 | int dial_rate; /* Interchar delay to modem (msec) */ |
---|
541 | int esc_time; /* Escape sequence guard time (msec) */ |
---|
542 | int esc_char; /* Escape character */ |
---|
543 | char * hup_str; /* Hangup string */ |
---|
544 | char * hwfc_str; /* Hardware flow control string */ |
---|
545 | char * swfc_str; /* Software flow control string */ |
---|
546 | char * nofc_str; /* No flow control string */ |
---|
547 | char * ec_on_str; /* Error correction on string */ |
---|
548 | char * ec_off_str; /* Error correction off string */ |
---|
549 | char * dc_on_str; /* Data compression on string */ |
---|
550 | char * dc_off_str; /* Data compression off string */ |
---|
551 | char * aa_on_str; /* Autoanswer on string */ |
---|
552 | char * aa_off_str; /* Autoanswer off string */ |
---|
553 | char * sb_on_str; /* Speed buffering on string */ |
---|
554 | char * sb_off_str; /* Speed buffering off string */ |
---|
555 | long max_speed; /* Maximum interface speed */ |
---|
556 | long capas; /* Capability bits */ |
---|
557 | /* function to read modem's response string to a non-dialing command */ |
---|
558 | _PROTOTYP( int (*ok_fn), (int,int) ); |
---|
559 | }; |
---|
560 | #endif /* NODIAL */ |
---|
561 | |
---|
562 | /* Symbols for File Attributes */ |
---|
563 | |
---|
564 | #define AT_XALL 0 /* All of them */ |
---|
565 | #define AT_ALLY 1 /* All of them on (Yes) */ |
---|
566 | #define AT_ALLN 2 /* All of them off (no) */ |
---|
567 | #define AT_LENK 3 /* Length in K */ |
---|
568 | #define AT_FTYP 4 /* File Type */ |
---|
569 | #define AT_DATE 5 /* Creation date */ |
---|
570 | #define AT_CREA 6 /* Creator */ |
---|
571 | #define AT_ACCT 7 /* Account */ |
---|
572 | #define AT_AREA 8 /* Area */ |
---|
573 | #define AT_PSWD 9 /* Password for area */ |
---|
574 | #define AT_BLKS 10 /* Blocksize */ |
---|
575 | #define AT_ACCE 11 /* Access */ |
---|
576 | #define AT_ENCO 12 /* Encoding */ |
---|
577 | #define AT_DISP 13 /* Disposition */ |
---|
578 | #define AT_LPRO 14 /* Local Protection */ |
---|
579 | #define AT_GPRO 15 /* Generic Protection */ |
---|
580 | #define AT_SYSI 16 /* System ID */ |
---|
581 | #define AT_RECF 17 /* Record Format */ |
---|
582 | #define AT_SYSP 18 /* System-Dependent Parameters */ |
---|
583 | #define AT_LENB 19 /* Length in Bytes */ |
---|
584 | #define AT_EOA 20 /* End of Attributes */ |
---|
585 | |
---|
586 | /* Kermit packet information structure */ |
---|
587 | |
---|
588 | struct pktinfo { /* Packet information structure */ |
---|
589 | CHAR *bf_adr; /* buffer address */ |
---|
590 | int bf_len; /* buffer length */ |
---|
591 | CHAR *pk_adr; /* Packet address within buffer */ |
---|
592 | int pk_len; /* length of data within buffer */ |
---|
593 | int pk_typ; /* packet type */ |
---|
594 | int pk_seq; /* packet sequence number */ |
---|
595 | int pk_rtr; /* retransmission count */ |
---|
596 | }; |
---|
597 | |
---|
598 | /* Send Modes (indicating which type of SEND command was used) */ |
---|
599 | |
---|
600 | #define SM_SEND 0 |
---|
601 | #define SM_MSEND 1 |
---|
602 | #define SM_RESEND 2 |
---|
603 | #define SM_PSEND 3 |
---|
604 | #define SM_MAIL 4 |
---|
605 | #define SM_PRINT 5 |
---|
606 | |
---|
607 | /* File-related symbols and structures */ |
---|
608 | |
---|
609 | #define XMODE_A 0 /* Transfer mode Automatic */ |
---|
610 | #define XMODE_M 1 /* Transfer mode Manual */ |
---|
611 | |
---|
612 | #define XYFILN 0 /* Naming */ |
---|
613 | #define XYFN_L 0 /* Literal */ |
---|
614 | #define XYFN_C 1 /* Converted */ |
---|
615 | #define XYFILT 1 /* Type */ |
---|
616 | #define XYFT_T 0 /* Text */ |
---|
617 | #define XYFT_B 1 /* Binary */ |
---|
618 | #define XYFT_I 2 /* Image or Block (VMS) */ |
---|
619 | #define XYFT_L 3 /* Labeled (tagged binary) (VMS or OS/2) */ |
---|
620 | #define XYFT_U 4 /* Binary Undefined (VMS) */ |
---|
621 | #define XYFT_M 5 /* MacBinary (Macintosh) */ |
---|
622 | #define XYFILW 2 /* Warning */ |
---|
623 | #define XYFILD 3 /* Display */ |
---|
624 | #define XYFD_N 0 /* None, Off */ |
---|
625 | #define XYFD_R 1 /* Regular, Dots */ |
---|
626 | #define XYFD_C 2 /* Cursor-positioning (e.g. with curses) */ |
---|
627 | #define XYFD_S 3 /* Simple counter */ |
---|
628 | #define XYFILC 4 /* Character set */ |
---|
629 | #define XYFILF 5 /* Record Format */ |
---|
630 | #define XYFF_S 0 /* Stream */ |
---|
631 | #define XYFF_V 1 /* Variable */ |
---|
632 | #define XYFF_VB 2 /* Variable with RCW's */ |
---|
633 | #define XYFF_F 3 /* Fixed length */ |
---|
634 | #define XYFF_U 4 /* Undefined */ |
---|
635 | #define XYFILR 6 /* Record length */ |
---|
636 | #define XYFILO 7 /* Organization */ |
---|
637 | #define XYFO_S 0 /* Sequential */ |
---|
638 | #define XYFO_I 1 /* Indexed */ |
---|
639 | #define XYFO_R 2 /* Relative */ |
---|
640 | #define XYFILP 8 /* Printer carriage control */ |
---|
641 | #define XYFP_N 0 /* Newline (imbedded control characters) */ |
---|
642 | #define XYFP_F 1 /* FORTRAN (space, 1, +, etc, in column 1 */ |
---|
643 | #define XYFP_P 2 /* Special printer carriage controls */ |
---|
644 | #define XYFP_X 4 /* None */ |
---|
645 | #define XYFILX 9 /* Collision Action */ |
---|
646 | #define XYFX_A 3 /* Append */ |
---|
647 | #define XYFX_Q 5 /* Ask */ |
---|
648 | #define XYFX_B 2 /* Backup */ |
---|
649 | #define XYFX_D 4 /* Discard */ |
---|
650 | #define XYFX_R 0 /* Rename */ |
---|
651 | #define XYFX_X 1 /* Replace */ |
---|
652 | #define XYFX_U 6 /* Update */ |
---|
653 | #define XYFILB 10 /* Blocksize */ |
---|
654 | #define XYFILZ 11 /* Disposition */ |
---|
655 | #define XYFZ_N 0 /* New, Create */ |
---|
656 | #define XYFZ_A 1 /* New, append if file exists, else create */ |
---|
657 | #define XYFZ_O 2 /* Old, file must exist */ |
---|
658 | #define XYFZ_X 3 /* Output to pipe/process */ |
---|
659 | #define XYFZ_Y 4 /* Input from pipe/process */ |
---|
660 | #define XYFILS 12 /* File Byte Size */ |
---|
661 | #define XYFILL 13 /* File Label (VMS) */ |
---|
662 | #define XYFILI 14 /* File Incomplete */ |
---|
663 | #define XYFILQ 15 /* File path action (strip or not) */ |
---|
664 | #define XYFILG 16 /* File download directory */ |
---|
665 | #define XYFILA 17 /* Line terminator for local text files */ |
---|
666 | #define XYFA_L 012 /* LF (as in UNIX) */ |
---|
667 | #define XYFA_C 015 /* CR (as in OS-9 or Mac OS) */ |
---|
668 | #define XYFA_2 000 /* CRLF -- Note: this must be defined as 0 */ |
---|
669 | #define XYFILY 18 /* Destination */ |
---|
670 | |
---|
671 | struct tt_info_rec { /* Terminal emulation info */ |
---|
672 | char *x_name; |
---|
673 | char *x_id; |
---|
674 | }; |
---|
675 | |
---|
676 | /* ANSI-style forward declarations for protocol-related functions. */ |
---|
677 | |
---|
678 | _PROTOTYP( int input, (void) ); |
---|
679 | _PROTOTYP( int inibufs, (int, int) ); |
---|
680 | _PROTOTYP( int makebuf, (int, int, CHAR [], struct pktinfo *) ); |
---|
681 | _PROTOTYP( int mksbuf, (int) ); |
---|
682 | _PROTOTYP( int mkrbuf, (int) ); |
---|
683 | _PROTOTYP( int spack, (char, int, int, CHAR *) ); |
---|
684 | _PROTOTYP( VOID proto, (void) ); |
---|
685 | _PROTOTYP( int rpack, (void) ); |
---|
686 | _PROTOTYP( int ack1, (CHAR *) ); |
---|
687 | _PROTOTYP( int ackn, (int) ); |
---|
688 | _PROTOTYP( int ackns, (int, CHAR *) ); |
---|
689 | _PROTOTYP( int nack, (int) ); |
---|
690 | _PROTOTYP( int resend, (int) ); |
---|
691 | _PROTOTYP( int errpkt, (CHAR *) ); |
---|
692 | _PROTOTYP( VOID logpkt, (char, int, CHAR *) ); |
---|
693 | _PROTOTYP( CHAR dopar, (CHAR) ); |
---|
694 | _PROTOTYP( int chk1, (CHAR *) ); |
---|
695 | _PROTOTYP( unsigned int chk2, (CHAR *) ); |
---|
696 | _PROTOTYP( unsigned int chk3, (CHAR *, int) ); |
---|
697 | _PROTOTYP( int sipkt, (char) ); |
---|
698 | _PROTOTYP( int sinit, (void) ); |
---|
699 | _PROTOTYP( VOID rinit, (CHAR *) ); |
---|
700 | _PROTOTYP( int spar, (CHAR *) ); |
---|
701 | _PROTOTYP( int rcvfil, (char *) ); |
---|
702 | _PROTOTYP( CHAR * rpar, (void) ); |
---|
703 | _PROTOTYP( CHAR * rpar, (void) ); |
---|
704 | _PROTOTYP( int gnfile, (void) ); |
---|
705 | _PROTOTYP( int getsbuf, (int) ); |
---|
706 | _PROTOTYP( int getrbuf, (void) ); |
---|
707 | _PROTOTYP( int freesbuf, (int) ); |
---|
708 | _PROTOTYP( int freerbuf, (int) ); |
---|
709 | _PROTOTYP( int dumpsbuf, (void) ); |
---|
710 | _PROTOTYP( int dumprbuf, (void) ); |
---|
711 | _PROTOTYP( VOID freerpkt, (int) ); |
---|
712 | _PROTOTYP( int chkwin, (int, int, int) ); |
---|
713 | _PROTOTYP( int rsattr, (CHAR *) ); |
---|
714 | _PROTOTYP( char *getreason, (char *) ); |
---|
715 | _PROTOTYP( int scmd, (char, CHAR *) ); |
---|
716 | _PROTOTYP( int encstr, (CHAR *) ); |
---|
717 | _PROTOTYP( int decode, (CHAR *, int (*)(char), int) ); |
---|
718 | _PROTOTYP( int fnparse, (char *) ); |
---|
719 | _PROTOTYP( int syscmd, (char *, char *) ); |
---|
720 | _PROTOTYP( int cwd, (char *) ); |
---|
721 | _PROTOTYP( VOID screen, (int, char, long, char *) ); |
---|
722 | _PROTOTYP( int remset, (char *) ); |
---|
723 | _PROTOTYP( int initattr, (struct zattr *) ); |
---|
724 | _PROTOTYP( int gattr, (CHAR *, struct zattr *) ); |
---|
725 | _PROTOTYP( int adebu, (char *, struct zattr *) ); |
---|
726 | _PROTOTYP( int canned, (CHAR *) ); |
---|
727 | _PROTOTYP( int opent, (struct zattr *) ); |
---|
728 | _PROTOTYP( int opena, (char *, struct zattr *) ); |
---|
729 | _PROTOTYP( int openi, (char *) ); |
---|
730 | _PROTOTYP( int openo, (char *, struct zattr *, struct filinfo *) ); |
---|
731 | _PROTOTYP( int reof, (char *, struct zattr *) ); |
---|
732 | _PROTOTYP( VOID reot, (void) ); |
---|
733 | _PROTOTYP( int sfile, (int) ); |
---|
734 | _PROTOTYP( int sattr, (int) ); |
---|
735 | _PROTOTYP( int sdata, (void) ); |
---|
736 | _PROTOTYP( int seof, (CHAR *) ); |
---|
737 | _PROTOTYP( int sxeof, (CHAR *) ); |
---|
738 | _PROTOTYP( int seot, (void) ); |
---|
739 | _PROTOTYP( int window, (int) ); |
---|
740 | _PROTOTYP( int errmsg, (char *) ); |
---|
741 | _PROTOTYP( int clsif, (void) ); |
---|
742 | _PROTOTYP( int clsof, (int) ); |
---|
743 | _PROTOTYP( CHAR setgen, (char, char *, char *, char *) ); |
---|
744 | _PROTOTYP( int getpkt, (int, int) ); |
---|
745 | _PROTOTYP( int putsrv, (char) ); |
---|
746 | _PROTOTYP( int puttrm, (char) ); |
---|
747 | _PROTOTYP( int putque, (char) ); |
---|
748 | _PROTOTYP( int putfil, (char) ); |
---|
749 | _PROTOTYP( VOID zdstuff, (CHAR) ); |
---|
750 | _PROTOTYP( int tinit, (void) ); |
---|
751 | _PROTOTYP( VOID pktinit, (void) ); |
---|
752 | _PROTOTYP( VOID rinit, (CHAR *) ); |
---|
753 | _PROTOTYP( VOID resetc, (void) ); |
---|
754 | _PROTOTYP( VOID xsinit, (void) ); |
---|
755 | _PROTOTYP( int adjpkl, (int,int,int) ); |
---|
756 | _PROTOTYP( int chktimo, (int,int) ); |
---|
757 | _PROTOTYP( int nxtpkt, (void) ); |
---|
758 | _PROTOTYP( int ack, (void) ); |
---|
759 | _PROTOTYP( int ackns, (int, CHAR *) ); |
---|
760 | _PROTOTYP( int ackn, (int) ); |
---|
761 | _PROTOTYP( int ack1, (CHAR *) ); |
---|
762 | _PROTOTYP( int nack, (int) ); |
---|
763 | _PROTOTYP( VOID rcalcpsz, (void) ); |
---|
764 | _PROTOTYP( int resend, (int) ); |
---|
765 | _PROTOTYP( int errpkt, (CHAR *) ); |
---|
766 | _PROTOTYP( int srinit, (int, int) ); |
---|
767 | _PROTOTYP( VOID tstats, (void) ); |
---|
768 | _PROTOTYP( VOID fstats, (void) ); |
---|
769 | _PROTOTYP( VOID intmsg, (long) ); |
---|
770 | _PROTOTYP( VOID ermsg, (char *) ); |
---|
771 | _PROTOTYP( int chkint, (void) ); |
---|
772 | _PROTOTYP( VOID sdebu, (int) ); |
---|
773 | _PROTOTYP( VOID rdebu, (CHAR *, int) ); |
---|
774 | _PROTOTYP( char * dbchr, ( int ) ); |
---|
775 | #ifdef COMMENT |
---|
776 | _PROTOTYP( SIGTYP stptrap, (int, int) ); |
---|
777 | _PROTOTYP( SIGTYP trap, (int, int) ); |
---|
778 | #else |
---|
779 | _PROTOTYP( SIGTYP stptrap, (int) ); |
---|
780 | _PROTOTYP( SIGTYP trap, (int) ); |
---|
781 | #endif /* COMMENT */ |
---|
782 | _PROTOTYP( char * ck_errstr, (void) ); |
---|
783 | |
---|
784 | /* User interface functions needed by main program, etc. */ |
---|
785 | |
---|
786 | _PROTOTYP( VOID prescan, (int) ); |
---|
787 | _PROTOTYP( VOID setint, (void) ); |
---|
788 | _PROTOTYP( VOID doinit, (void) ); |
---|
789 | _PROTOTYP( VOID cmdini, (void) ); |
---|
790 | _PROTOTYP( int dotake, (char *) ); |
---|
791 | _PROTOTYP( int cmdlin, (void) ); |
---|
792 | _PROTOTYP( int conect, (void) ); |
---|
793 | _PROTOTYP( int ckcgetc, (int) ); |
---|
794 | _PROTOTYP( int ckcputc, (int) ); |
---|
795 | _PROTOTYP (int mdmhup, (void) ); |
---|
796 | _PROTOTYP( VOID herald, (void) ); |
---|
797 | _PROTOTYP( VOID fixcmd, (void) ); |
---|
798 | _PROTOTYP( int doarg, (char) ); |
---|
799 | _PROTOTYP( VOID usage, (void) ); |
---|
800 | _PROTOTYP( VOID doclean, (void) ); |
---|
801 | _PROTOTYP( int sndhlp, (char *) ); |
---|
802 | _PROTOTYP( VOID ckhost, (char *, int) ); |
---|
803 | _PROTOTYP( int gettcs, (int, int) ); |
---|
804 | _PROTOTYP( VOID makestr, (char **, char *) ); |
---|
805 | _PROTOTYP( VOID getdialenv, (void) ); |
---|
806 | _PROTOTYP( VOID setprefix, (int) ); |
---|
807 | _PROTOTYP( VOID initproto, (int,char *,char *,char *,char *,char *,char *) ); |
---|
808 | _PROTOTYP( char * getsysid, (char *) ); |
---|
809 | _PROTOTYP( int getsysix, (char *) ); |
---|
810 | #ifdef CK_TIMERS |
---|
811 | _PROTOTYP( VOID rttinit, (void) ); |
---|
812 | _PROTOTYP( int getrtt, (int, int) ); |
---|
813 | #endif /* CK_TIMERS */ |
---|
814 | |
---|
815 | _PROTOTYP( int is_a_tty, (int) ); |
---|
816 | _PROTOTYP( int snddir, (char *) ); |
---|
817 | _PROTOTYP( int snddel, (char *) ); |
---|
818 | _PROTOTYP( int sndtype, (char *) ); |
---|
819 | _PROTOTYP( int dooutput, (char *) ); |
---|
820 | _PROTOTYP( int isabsolute, (char *) ); |
---|
821 | _PROTOTYP( int chkspkt, (char *) ); |
---|
822 | _PROTOTYP( VOID whoarewe, (void) ); |
---|
823 | |
---|
824 | #ifdef CK_APC |
---|
825 | _PROTOTYP( int kstart, (CHAR) ); |
---|
826 | _PROTOTYP( int zstart, (CHAR) ); |
---|
827 | #ifdef CK_XYZ |
---|
828 | _PROTOTYP( int chkspkt, (char *) ); |
---|
829 | #endif /* CK_XYZ */ |
---|
830 | #endif /* CK_APC */ |
---|
831 | |
---|
832 | #ifdef KANJI |
---|
833 | _PROTOTYP( int zkanji, (int (*)(void)) ); /* Kanji function prototypes */ |
---|
834 | _PROTOTYP( int zkanjf, (void) ); |
---|
835 | _PROTOTYP( int zkanjz, (void) ); |
---|
836 | _PROTOTYP( int xkanjz, (int (*)(char) ) ); |
---|
837 | _PROTOTYP( int xkanji, (int, int (*)(char) ) ); |
---|
838 | #endif /* KANJI */ |
---|
839 | |
---|
840 | #endif /* CKCKER_H */ |
---|
841 | |
---|
842 | /* End of ckcker.h */ |
---|