ckcker.h
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:38k
源码类别:

通讯/手机编程

开发平台:

Windows_Unix

  1. /* ckcker.h -- Symbol and macro definitions for C-Kermit */
  2. /*
  3.   Author: Frank da Cruz <fdc@columbia.edu>,
  4.   Columbia University Academic Information Systems, New York City.
  5.   Copyright (C) 1985, 2000,
  6.     Trustees of Columbia University in the City of New York.
  7.     All rights reserved.  See the C-Kermit COPYING.TXT file or the
  8.     copyright text in the ckcmai.c module for disclaimer and permissions.
  9. */
  10. #ifndef CKCKER_H
  11. #define CKCKER_H
  12. #define I_AM_KERMIT  0 /* Personalities */
  13. #define I_AM_TELNET  1
  14. #define I_AM_RLOGIN  2
  15. #define I_AM_IKSD    3
  16. #ifndef NOSTREAMING
  17. #ifndef STREAMING
  18. #define STREAMING
  19. #endif /* STREAMING */
  20. #endif /* NOSTREAMING */
  21. /*
  22.   If NEWDEFAULTS is defined then:
  23.    - RECEIVE PACKET-LENGTH is 4095 rather than 90
  24.    - WINDOW is 30 rather than 1
  25.    - BLOCK-CHECK is 3 rather than 1
  26.    - FILE TYPE is BINARY rather than TEXT
  27. */
  28. #ifdef OS2 /* OS/2, Windows NT, Windows 95 */
  29. #ifndef NEWDEFAULTS
  30. #define NEWDEFAULTS
  31. #endif /* NEWDEFAULTS */
  32. #endif /* OS2 */
  33. #ifdef NOICP /* No Interactive Command Parser */
  34. #ifndef NOSPL /* implies... */
  35. #define NOSPL /* No Script Programming Language */
  36. #endif /* NOSPL */
  37. #ifndef NOCSETS /* No character-set translation */
  38. #define NOCSETS /* because the only way to set it up */
  39. #endif /* NOCSETS */ /* is with interactive commands */
  40. #endif /* NOICP */
  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. #ifdef UIDBUFLEN
  53. #define LOGINLEN UIDBUFLEN
  54. #else
  55. #define LOGINLEN 32 /* Length of server login field */
  56. #endif /* UIDBUFLEN */
  57. /* Bell values */
  58. #define   XYB_NONE  0 /* No bell */
  59. #define   XYB_AUD   1 /* Audible bell */
  60. #define   XYB_VIS   2 /* Visible bell */
  61. #define   XYB_BEEP  0 /* Audible Beep */
  62. #define   XYB_SYS   4 /* Audible System Sounds */
  63. /* File status bits */
  64. #define FS_OK   1 /* File transferred OK */
  65. #define FS_REFU 2 /* File was refused */
  66. #define FS_DISC 4 /* File was discarded */
  67. #define FS_INTR 8 /* Transfer was interrupted by user */
  68. #define FS_ERR  16 /* Fatal error during transfer */
  69. /* Control-character (un)prefixing options */
  70. #define PX_ALL  0 /* Prefix all control chars */
  71. #define PX_CAU  1 /* Unprefix cautiously */
  72. #define PX_WIL  2 /* Unprefix with wild abandon */
  73. #define PX_NON  3 /* Unprefix all (= prefix none) */
  74. /* Destination codes */
  75. #define  DEST_D 0 /*  DISK */
  76. #define  DEST_S 1 /*  SCREEN */
  77. #define  DEST_P 2 /*  PRINTER */
  78. #define  DEST_N 3 /*  NOWHERE (calibration run) */
  79. /* File transfer protocols */
  80. #define  PROTO_K    0 /*   Kermit   */
  81. #ifdef CK_XYZ
  82. #define  PROTO_X    1 /*   XMODEM     */
  83. #define  PROTO_XC   2 /*   XMODEM-CRC */
  84. #define  PROTO_Y    3 /*   YMODEM     */
  85. #define  PROTO_G    4 /*   YMODEM-g */
  86. #define  PROTO_Z    5 /*   ZMODEM   */
  87. #define  PROTO_O    6   /*   OTHER    */
  88. #define  NPROTOS    7   /*   How many */
  89. #else
  90. #define  NPROTOS    1   /*   How many */
  91. #endif /* CK_XYZ */
  92. struct ck_p { /* C-Kermit Protocol info structure */
  93.     char * p_name; /* Protocol name */
  94.     int rpktlen; /* Packet length - receive */
  95.     int spktlen; /* Packet length - send */
  96.     int spktflg; /* ... */
  97.     int winsize; /* Window size */
  98.     int prefix; /* Control-char prefixing options */
  99.     int fnca; /* Filename collision action */
  100.     int fncn; /* Filename conversion */
  101.     int fnsp; /* Send filename path stripping */
  102.     int fnrp; /* Receive filename path stripping */
  103.     char * h_b_init; /* Host receive initiation string - text   */
  104.     char * h_t_init; /* Host receive initiation string - binary */
  105.     char * h_x_init; /* Host server string */
  106.     char * p_b_scmd; /* SEND cmd for external protocol - text   */
  107.     char * p_t_scmd; /* SEND cmd for external protocol - binary */
  108.     char * p_b_rcmd; /* RECV cmd for external protocol - text   */
  109.     char * p_t_rcmd; /* RECV cmd for external protocol - binary */
  110. };
  111. struct filelist { /* Send-file list element */
  112.     char * fl_name; /* Filename */
  113.     int fl_mode; /* Transfer mode */
  114.     char * fl_alias; /* Name to send the file under */
  115.     struct filelist * fl_next; /* Pointer to next element */
  116. };
  117. /* Kermit system IDs and associated properties... */
  118. struct sysdata {
  119.     char *sid_code; /* Kermit system ID code */
  120.     char *sid_name; /* Descriptive name */
  121.     short sid_unixlike; /* Tree-structured directory with separators */
  122.     char  sid_dirsep; /* Directory separator character if unixlike */
  123.     short sid_dev; /* Can start with dev: */
  124.     short sid_case; /* Bit mapped: 1 = case matters, 2 = case preserved */
  125.     short sid_recfm;    /* Text record separator */
  126. /*
  127.    0 = unknown or nonstream
  128.    1 = cr
  129.    2 = lf
  130.    3 = crlf
  131. */
  132. };
  133. #define SET_ON   1 /* General values for settings that can be ON */
  134. #define SET_OFF  0 /* OFF, */
  135. #define SET_AUTO 2 /* or AUTO */
  136. #define PATH_OFF 0 /* Pathnames off (to be stripped) */
  137. #define PATH_REL 1      /* Pathnames on, left relative if possible */
  138. #define PATH_ABS 2      /* Pathnames absolute always */
  139. #define PATH_AUTO 4 /* Pathnames handled automatically */
  140. /* GET Options */
  141. #define GOPT_DEL 1 /* Delete source file */
  142. #define GOPT_REC 2 /* Recursive */
  143. #define GOPT_RES 4 /* Recover (Resend) */
  144. #define GOPT_CMD 8 /* Filename is a Command */
  145. /* GET Transfer Modes */
  146. #define GMOD_TXT 0 /* Text */
  147. #define GMOD_BIN 1 /* Binary */
  148. #define GMOD_AUT 2 /* Auto */
  149. #define GMOD_LBL 3 /* Labeled */
  150. /* GET Filename Options */
  151. #define GNAM_LIT 0 /* Literal */
  152. #define GNAM_CNV 1 /* Converted */
  153. /* GET Pathname Options */
  154. #define GPTH_OFF 0 /* Pathnames Off */
  155. #define GPTH_REL 1 /* Pathnames Relative */
  156. #define GPTH_ABX 2 /* Pathnames Absolute */
  157. #ifndef NOSPL
  158. /*
  159.   The IF REMOTE-ONLY command is available only in versions
  160.   that actually can be used in remote mode, and only if we have
  161.   an interactive command parser.
  162. */
  163. #define CK_IFRO
  164. #ifdef MAC
  165. #undef CK_IFRO
  166. #else
  167. #ifdef GEMDOS
  168. #undef CK_IFRO
  169. #endif /* GEMDOS */
  170. #endif /* MAC */
  171. #endif /* NOSPL */
  172. /* Systems whose CONNECT modules can execute Application Program Commands */
  173. #ifdef NOSPL /* Script programming language */
  174. #ifdef CK_APC /* is required for APC. */
  175. #undef CK_APC
  176. #endif /* CK_APC */
  177. #ifndef NOAPC
  178. #define NOAPC
  179. #endif /* NOAPC */
  180. #ifndef NOAUTODL
  181. #define NOAUTODL
  182. #endif /* NOAUTODL */
  183. #endif /* NOSPL */
  184. #ifndef NOAPC /* Unless they said NO APC */
  185. #ifndef CK_APC /* And they didn't already define it */
  186. #ifdef OS2 /* OS/2 gets it */
  187. #define CK_APC
  188. #endif /* OS2 */
  189. #ifdef UNIX /* UNIX gets it */
  190. #define CK_APC
  191. #endif /* UNIX */
  192. #ifdef VMS /* VMS too */
  193. #define CK_APC
  194. #endif /* VMS */
  195. #endif /* CK_APC */
  196. #endif /* NOAPC */
  197. #ifdef CK_APC /* APC buffer length */
  198. #define APCBUFLEN (CMDBL + 10)
  199. #define APC_OFF 0 /* APC OFF (disabled) */
  200. #define APC_ON 1 /* APC ON (enabled for non-dangerous commands) */
  201. #define APC_UNCH 2 /* APC UNCHECKED (enabled for ALL commands) */
  202. #define APC_INACTIVE 0 /* APC not in use */
  203. #define APC_REMOTE   1 /* APC in use from Remote */
  204. #define APC_LOCAL    2 /* APC being used from within Kermit */
  205. #ifndef NOAUTODL
  206. #ifndef CK_AUTODL /* Autodownload */
  207. #ifdef OS2
  208. #define CK_AUTODL
  209. #else
  210. #ifdef UNIX
  211. #define CK_AUTODL
  212. #else
  213. #ifdef VMS
  214. #define CK_AUTODL
  215. #else
  216. #ifdef CK_AUTODL
  217. #undef CK_AUTODL
  218. #endif /* CK_AUTODL  */
  219. #endif /* NOAUTODL */
  220. #endif /* VMS */
  221. #endif /* UNIX */
  222. #endif /* OS2 */
  223. #endif /* CK_AUTODL */
  224. #else  /* CK_APC not defined */
  225. #ifdef NOICP
  226. #ifdef UNIX
  227. #ifndef CK_AUTODL
  228. #define CK_AUTODL
  229. #endif /* CK_AUTODL */
  230. #endif /* UNIX */
  231. #else  /* Not NOICP... */
  232. #ifdef CK_AUTODL
  233. #undef CK_AUTODL
  234. #endif /* CK_AUTODL */
  235. #endif /* NOICP */
  236. #endif /* CK_APC */
  237. #ifdef NOAUTODL
  238. #ifdef CK_AUTODL
  239. #undef CK_AUTODL
  240. #endif /* CK_AUTODL */
  241. #endif /* NOAUTODL */
  242. /* Codes for what we are doing now - bit mask values */
  243. #define W_NOTHING  0 /* Nothing */
  244. #define W_INIT     1 /* Initializing protocol */
  245. #define W_SEND     2 /* SENDing or MAILing */
  246. #define W_RECV     4 /* RECEIVEing or GETting */
  247. #define W_REMO     8 /* Doing a REMOTE command */
  248. #define W_CONNECT 16 /* CONNECT mode */
  249. #define W_COMMAND 32 /* Command mode */
  250. #define W_DIALING 64 /* Dialing a modem */
  251. #ifndef NOWHATAMI
  252. #ifndef WHATAMI
  253. #define WHATAMI
  254. #endif /* WHATAMI */
  255. #endif /* NOWHATAMI */
  256. #ifdef WHATAMI /* Bit mask positions for WHATAMI */
  257. #define WMI_SERVE   1 /* Server mode */
  258. #define WMI_FMODE   2 /* File transfer mode */
  259. #define WMI_FNAME   4 /* File name conversion */
  260. #define WMI_STREAM  8 /* I have a reliable transport */
  261. #define WMI_CLEAR  16 /* I have a clear channel */
  262. #define WMI_FLAG   32 /* Flag that WHATAMI field is valid */
  263. /* WHATAMI2 bits... */
  264. #define WMI2_XMODE  1 /* Transfer mode auto(0)/manual(1) */
  265. #define WMI2_RECU   2 /* Transfer is recursive */
  266. #define WMI2_FLAG  32 /* Flag that WHATAMI2 field is valid */
  267. #endif /* WHATAMI */
  268. /* Terminal types */
  269. #define VT100     0 /* Also for VT52 mode */
  270. #define TEKTRONIX 1
  271. /* Normal packet and window size */
  272. #define MAXPACK 94 /* Maximum unextended packet size */
  273. /* Can't be more than 94. */
  274. #ifdef pdp11 /* Maximum sliding window slots */
  275. #define MAXWS  8
  276. #else
  277. #define MAXWS 32 /* Can't be more than 32. */
  278. #endif /* pdp11 */
  279. /* Maximum long packet size for sending packets */
  280. /* Override these from cc command line via -DMAXSP=nnn */
  281. #ifdef DYNAMIC
  282. #ifndef MAXSP
  283. #define MAXSP 9024
  284. #endif /* MAXSP */
  285. #else  /* not DYNAMIC */
  286. #ifndef MAXSP
  287. #ifdef pdp11
  288. #define MAXSP 1024
  289. #else
  290. #define MAXSP 2048
  291. #endif /* pdp11 */
  292. #endif /* MAXSP */
  293. #endif /* DYNAMIC */
  294. /* Maximum long packet size for receiving packets */
  295. /* Override these from cc command line via -DMAXRP=nnn */
  296. #ifdef DYNAMIC
  297. #ifndef MAXRP
  298. #define MAXRP 9024
  299. #endif /* MAXRP */
  300. #else  /* not DYNAMIC */
  301. #ifndef MAXRP
  302. #ifdef pdp11
  303. #define MAXRP 1024
  304. #else
  305. #define MAXRP 2048
  306. #endif /* pdp11 */
  307. #endif /* MAXRP */
  308. #endif /* DYNAMIC */
  309. /*
  310.   Default sizes for windowed packet buffers.
  311.   Override these from cc command line via -DSBSIZ=nnn, -DRBSIZ=nnn.
  312.   Or just -DBIGBUFOK.
  313. */
  314. #ifndef MAXGETPATH /* Maximum number of directories */
  315. #ifdef BIGBUFOK /* for GET path... */
  316. #define MAXGETPATH 128
  317. #else
  318. #define MAXGETPATH 16
  319. #endif /* BIGBUFOK */
  320. #endif /* MAXGETPATH */
  321. #ifndef NOSPL /* Query buffer length */
  322. #ifdef OS2
  323. #define QBUFL 4095
  324. #else
  325. #ifdef BIGBUFOK
  326. #define QBUFL 4095
  327. #else
  328. #define QBUFL 1023
  329. #endif /* BIGBUFOK */
  330. #endif /* OS2 */
  331. #endif /* NOSPL */
  332. #ifdef DYNAMIC
  333. #ifndef SBSIZ
  334. #ifdef BIGBUFOK /* If big buffers are safe... */
  335. #define SBSIZ 290000 /* Allow for 10 x 9024 or 20 x 4096 */
  336. #else /* Otherwise... */
  337. #ifdef pdp11
  338. #define SBSIZ 3020
  339. #else
  340. #define SBSIZ 9050 /* Allow for 3 x 3000, etc. */
  341. #endif /* pdp11 */
  342. #endif /* BIGBUFOK */
  343. #endif /* SBSIZ */
  344. #ifndef RBSIZ
  345. #ifdef BIGBUFOK
  346. #define RBSIZ 290000
  347. #else
  348. #ifdef pdp11
  349. #define RBSIZ 3020
  350. #else
  351. #define RBSIZ 9050
  352. #endif /* pdp11 */
  353. #endif /* BIGBUFOK */
  354. #endif /* RBSIZ */
  355. #else  /* not DYNAMIC */
  356. #ifdef pdp11
  357. #define SBSIZ 3020
  358. #define RBSIZ 3020
  359. #else
  360. #ifndef SBSIZ
  361. #define SBSIZ (MAXSP * (MAXWS + 1))
  362. #endif /* SBSIZ */
  363. #ifndef RBSIZ
  364. #define RBSIZ (MAXRP * (MAXWS + 1))
  365. #endif /* RBSIZ */
  366. #endif /* pdp11 */
  367. #endif /* DYNAMIC */
  368. #ifdef BIGBUFOK
  369. #define PKTMSGLEN 1023
  370. #else
  371. #define PKTMSGLEN 80
  372. #endif /* BIGBUFOK */
  373. /* Kermit parameters and defaults */
  374. #define CTLQ    '#' /* Control char prefix I will use */
  375. #define MYEBQ    '&' /* 8th-Bit prefix char I will use */
  376. #define MYRPTQ    '~' /* Repeat count prefix I will use */
  377. #define MAXTRY     10 /* Times to retry a packet */
  378. #define MYPADN     0 /* How many padding chars I need */
  379. #define MYPADC     '' /* Which padding character I need */
  380. #define DMYTIM     8 /* Initial timeout interval to use. */
  381. #define URTIME     15 /* Timeout interval to use on me. */
  382. #define DSRVTIM     0 /* Default server cmd wait timeout. */
  383. #define DEFTRN     0 /* Default line turnaround handshake */
  384. #define MYEOL     CR /* Incoming packet terminator. */
  385. #ifdef NEWDEFAULTS
  386. #define DRPSIZ   4095 /* Default incoming packet size. */
  387. #define DFWSIZ      30 /* Default window size */
  388. #define DFBCT        3 /* Default block-check type */
  389. #else
  390. #define DRPSIZ     90 /* Default incoming packet size. */
  391. #define DFWSIZ       1 /* Default window size */
  392. #define DFBCT        3 /* Default block-check type */
  393. #endif /* NEWDEFAULTS */
  394. #define DSPSIZ     90 /* Default outbound packet size. */
  395. #define DDELAY      1 /* Default delay. */
  396. #define DSPEED     9600 /* Default line speed. */
  397. #ifdef OS2 /* Default CONNECT-mode */
  398. #define DFESC 29 /* escape character */
  399. #else
  400. #ifdef NEXT /* Ctrl-] for PC and NeXT */
  401. #define DFESC 29
  402. #else
  403. #ifdef GEMDOS /* And Atari ST */
  404. #define DFESC 29
  405. #else
  406. #define DFESC 28 /* Ctrl-backslash for others */
  407. #endif /* GEMDOS */
  408. #endif /* NEXT */
  409. #endif /* OS2 */
  410. #ifdef NOPUSH /* NOPUSH implies NOJC */
  411. #ifndef NOJC /* (no job control) */
  412. #define NOJC
  413. #endif /* NOJC */
  414. #endif /* NOPUSH */
  415. #ifdef UNIX /* Default for SET SUSPEND */
  416. #ifdef NOJC /* UNIX but job control disabled */
  417. #define DFSUSP      0
  418. #else /* UNIX, job control enabled. */
  419. #define DFSUSP      1
  420. #endif /* NOJC */
  421. #else
  422. #define DFSUSP      0
  423. #endif /* UNIX */
  424. #ifndef DFCDMSG
  425. #ifdef UNIXOROSK
  426. #define DFCDMSG "{{./.readme}{README.TXT}{READ.ME}}"
  427. #else
  428. #define DFCDMSG "{{README.TXT}{READ.ME}}"
  429. #endif /* UNIXOROSK */
  430. #endif /* DFCDMSG */
  431. /* Files */
  432. #define ZCTERM      0      /* Console terminal */
  433. #define ZSTDIO      1 /* Standard input/output */
  434. #define ZIFILE     2 /* Current input file (SEND, etc) (in) */
  435. #define ZOFILE      3      /* Current output file (RECEIVE, GET) (out) */
  436. #define ZDFILE      4      /* Current debugging log file (out) */
  437. #define ZTFILE      5      /* Current transaction log file (out) */
  438. #define ZPFILE      6      /* Current packet log file (out) */
  439. #define ZSFILE      7 /* Current session log file (out) */
  440. #define ZSYSFN     8 /* Input/Output from a system function */
  441. #define ZRFILE      9           /* Local file for READ (in) */
  442. #define ZWFILE     10           /* Local file for WRITE (out) */
  443. #define ZMFILE     11 /* Miscellaneous file, e.g. for XLATE */
  444. #define ZDIFIL     12 /* DIAL log */
  445. #define ZNFILS     13      /* How many defined file numbers */
  446. #ifdef CKCHANNELIO
  447. /* File modes */
  448. #define FM_REA      1 /* Read */
  449. #define FM_WRI      2 /* Write */
  450. #define FM_APP      4 /* Append */
  451. #define FM_RWA      7 /* Read/Write/Append mask */
  452. #define FM_BIN      8 /* Binary */
  453. #define FM_RWB     15 /* Read/Write/Append/Binary mask */
  454. #define FM_CMD     16 /* Command */
  455. #define FM_EOF     64 /* (status) At EOF */
  456. /* File errors */
  457. #define FX_NER      0 /* No error */
  458. #define FX_SYS     -1 /* System error */
  459. #define FX_EOF     -2 /* End of file */
  460. #define FX_NOP     -3 /* Channel not open */
  461. #define FX_CHN     -4 /* Channel out of range */
  462. #define FX_RNG     -5 /* Argument range error */
  463. #define FX_FNF     -6 /* File not found */
  464. #define FX_BFN     -7 /* Bad or missing filename */
  465. #define FX_NMF     -8 /* No more files */
  466. #define FX_FOP     -9 /* Forbidden operation */
  467. #define FX_ACC    -10 /* Access denied */
  468. #define FX_BOM    -11 /* Bad combination of open modes */
  469. #define FX_OFL    -12 /* Buffer overflow */
  470. #define FX_LNU    -13 /* Current line number unknown */
  471. #define FX_NYI    -99 /* Feature not implemented yet */
  472. #define FX_UNK   -999 /* Unknown error */
  473. _PROTOTYP( int z_open, (char *, int) );
  474. _PROTOTYP( int z_close, (int) );
  475. _PROTOTYP( int z_out, (int, char *, int, int) );
  476. _PROTOTYP( int z_in, (int, char *, int, int, int) );
  477. _PROTOTYP( int z_flush, (int) );
  478. _PROTOTYP( int z_seek, (int, long) );
  479. _PROTOTYP( int z_line, (int, long) );
  480. _PROTOTYP( int z_getmode, (int) );
  481. _PROTOTYP( int z_getfnum, (int) );
  482. _PROTOTYP( long z_getpos, (int) );
  483. _PROTOTYP( long z_getline, (int) );
  484. _PROTOTYP( long z_count, (int, int) );
  485. _PROTOTYP( char * z_getname, (int) );
  486. _PROTOTYP( char * ckferror, (int) );
  487. #endif /* CKCHANNELIO */
  488. /*  Buffered file i/o ...  */
  489. #ifdef OS2 /* K-95 */
  490. #define INBUFSIZE 32768
  491. #define OBUFSIZE 32768
  492. #else
  493. #ifdef pdp11
  494. #define INBUFSIZE 512
  495. #define OBUFSIZE 512
  496. #else
  497. /* In VMS, allow for longest possible RMS record */
  498. #ifdef VMS
  499. #define INBUFSIZE 32768 /* File input buffer size */
  500. #define OBUFSIZE 32768 /* File output buffer size */
  501. #else  /* Not VMS */
  502. #ifdef STRATUS
  503. #ifdef DYNAMIC
  504. #define INBUFSIZE 32767 /* File input buffer size */
  505. #define OBUFSIZE 32767 /* File output buffer size */
  506. #else /* STRATUS, not DYNAMIC */
  507. #define INBUFSIZE 4096 /* File input buffer size */
  508. #define OBUFSIZE 4096 /* File output buffer size */
  509. #endif /* DYNAMIC */
  510. #else /* not STRATUS */
  511. #ifdef BIGBUFOK /* Systems where memory is */
  512. #define INBUFSIZE 32768 /* not a problem... */
  513. #define OBUFSIZE 32768
  514. #else /* Not BIGBUFOK */
  515. #define INBUFSIZE 1024
  516. #define OBUFSIZE 1024
  517. #endif /* STRATUS */
  518. #endif /* BIGBUFOK */
  519. #endif /* VMS */
  520. #endif /* pdp11 */
  521. #endif /* OS2 */
  522. /* File-transfer character in/out macros for buffered i/o */
  523. /* Get the next file byte */
  524. #ifndef CKCMAI
  525. #ifndef NOXFER
  526. extern char ** sndarray;
  527. #endif /* NOXFER */
  528. #endif /* CKCMAI */
  529. #ifdef NOSPL
  530. #define zminchar() (((--zincnt)>=0) ? ((int)(*zinptr++) & 0377) : zinfill())
  531. #else
  532. #ifdef NOXFER
  533. #define zminchar() (((--zincnt)>=0) ? ((int)(*zinptr++) & 0377) : zinfill())
  534. #else
  535. #define zminchar() 
  536. (sndarray?agnbyte():(((--zincnt)>=0) ? ((int)(*zinptr++) & 0377) : zinfill()))
  537. #endif /* NOXFER */
  538. #endif /* NOSPL */
  539. /* Stuff a character into the input buffer */
  540. #define zmstuff(c) zinptr--, *zinptr = c, zincnt++
  541. /* Put a character to a file */
  542. #define zmchout(c) 
  543. ((*zoutptr++=(char)(c)),(((++zoutcnt)>=zobufsize)?zoutdump():0))
  544. /* Screen functions */
  545. #ifdef NODISPLAY
  546. #define xxscreen(a,b,c,d)
  547. #define ckscreen(a,b,c,d)
  548. #else
  549. _PROTOTYP( VOID ckscreen, (int, char, long, char *) );
  550. #ifdef VMS
  551. #define xxscreen(a,b,c,d) 
  552. if (local && fdispla != XYFD_N) 
  553. ckscreen((int)a,(char)b,(long)c,(char *)d)
  554. #else
  555. #define xxscreen(a,b,c,d) 
  556. if (local && !backgrd && fdispla != XYFD_N) 
  557. ckscreen((int)a,(char)b,(long)c,(char *)d)
  558. #endif /* VMS */
  559. #endif /* NODISPLAY */
  560. #define SCR_FN 1     /* filename */
  561. #define SCR_AN 2     /* as-name */
  562. #define SCR_FS 3  /* file-size */
  563. #define SCR_XD 4     /* x-packet data */
  564. #define SCR_ST 5       /* File status: */
  565. #define   ST_OK   0    /*  Transferred OK */
  566. #define   ST_DISC 1  /*  Discarded */
  567. #define   ST_INT  2     /*  Interrupted */
  568. #define   ST_SKIP 3  /*  Skipped */
  569. #define   ST_ERR  4  /*  Fatal Error */
  570. #define   ST_REFU 5     /*  Refused (use Attribute codes for reason) */
  571. #define   ST_INC  6 /*  Incompletely received */
  572. #define   ST_MSG  7 /*  Informational message */
  573. #define SCR_PN 6     /* packet number */
  574. #define SCR_PT 7     /* packet type or pseudotype */
  575. #define SCR_TC 8     /* transaction complete */
  576. #define SCR_EM 9     /* error message */
  577. #define SCR_WM 10    /* warning message */
  578. #define SCR_TU 11 /* arbitrary undelimited text */
  579. #define SCR_TN 12    /* arbitrary new text, delimited at beginning */
  580. #define SCR_TZ 13    /* arbitrary text, delimited at end */
  581. #define SCR_QE 14 /* quantity equals (e.g. "foo: 7") */
  582. #define SCR_CW 15 /* close screen window */
  583. #define SCR_CD 16       /* display current directory */
  584. /* Macros */
  585. #ifndef CKCMAI
  586. extern int tcp_incoming; /* Used by ENABLE macro */
  587. #endif /* CKCMAI */
  588. #ifndef TCPSOCKET
  589. /*
  590.   ENABLED tells whether a server-side service is enabled.
  591.   0 = disabled, 1 = local, 2 = remote.
  592.   A "set host *" connection is technically local but logically remote
  593. */
  594. #define ENABLED(x) ((local && (x & 1)) || (!local && (x & 2)))
  595. #else
  596. #define ENABLED(x) (((local && !tcp_incoming) && (x & 1)) || 
  597. ((!local || tcp_incoming) && (x&2)))
  598. #endif /* TCPSOCKET */
  599. /* These are from the book */
  600. #define tochar(ch)  (((ch) + SP ) & 0xFF ) /* Number to character */
  601. #define xunchar(ch) (((ch) - SP ) & 0xFF ) /* Character to number */
  602. #define ctl(ch)     (((ch) ^ 64 ) & 0xFF ) /* Control/Uncontrol toggle */
  603. #define unpar(ch)   (((ch) & 127) & 0xFF ) /* Clear parity bit */
  604. /* Modem and dialing definitions */
  605. #ifndef NODIAL
  606. /* Modem capabilities (bit values) */
  607. #define CKD_AT   1 /* Hayes AT commands and responses */
  608. #define CKD_V25  2 /* V.25bis commands and responses */
  609. #define CKD_SB   4 /* Speed buffering */
  610. #define CKD_EC   8 /* Error correction */
  611. #define CKD_DC  16 /* Data compression */
  612. #define CKD_HW  32 /* Hardware flow control */
  613. #define CKD_SW  64 /* (Local) software flow control */
  614. #define CKD_KS 128 /* Kermit spoofing */
  615. #define CKD_TB 256 /* Made by Telebit */
  616. /* DIAL command result codes */
  617. #define DIA_UNK   -1 /* No DIAL command given yet */
  618. #define DIA_OK     0 /* DIAL succeeded */
  619. #define DIA_NOMO   1 /* Modem type not specified */
  620. #define DIA_NOLI   2 /* Communication line not spec'd */
  621. #define DIA_OPEN   3 /* Line can't be opened */
  622. #define DIA_NOSP   4 /* Speed not specified */
  623. #define DIA_HANG   5 /* Hangup failure */
  624. #define DIA_IE     6 /* Internal error (malloc, etc) */
  625. #define DIA_IO     7 /* I/O error */
  626. #define DIA_TIMO   8 /* Dial timeout expired */
  627. #define DIA_INTR   9 /* Dialing interrupted by user */
  628. #define DIA_NRDY  10 /* Modem not ready */
  629. #define DIA_PART  11 /* Partial dial command OK */
  630. #define DIA_DIR   12 /* Dialing directory error */
  631. #define DIA_HUP   13 /* Modem was hung up OK */
  632. #define DIA_ERR   20 /* Modem command error */
  633. #define DIA_NOIN  21 /* Failure to initialize modem */
  634. #define DIA_BUSY  22 /* Phone busy */
  635. #define DIA_NOCA  23 /* No carrier */
  636. #define DIA_NODT  24 /* No dialtone */
  637. #define DIA_RING  25 /* Ring, incoming call */
  638. #define DIA_NOAN  26 /* No answer */
  639. #define DIA_DISC  27 /* Disconnected */
  640. #define DIA_VOIC  28 /* Answered by voice */
  641. #define DIA_NOAC  29 /* Access denied, forbidden call */
  642. #define DIA_BLCK  30 /* Blacklisted */
  643. #define DIA_DELA  31 /* Delayed */
  644. #define DIA_FAX   32 /* Fax */
  645. #define DIA_DIGI  33                    /* Digital Line */
  646. #define DIA_TAPI  34 /* TAPI dialing failure */
  647. #define DIA_UERR  98 /* Unknown error */
  648. #define DIA_UNSP  99 /* Unspecified failure detected by modem */
  649. #define MDMINF struct mdminf
  650. MDMINF { /* Structure for modem-specific information */
  651.     char * name; /* Descriptive name */
  652.     char * pulse; /* Command to force pulse dialing */
  653.     char * tone; /* Command to force tone dialing */
  654.     int    dial_time; /* Time modem allows for dialing (secs) */
  655.     char * pause_chars; /* Character(s) to tell modem to pause */
  656.     int    pause_time; /* Time associated with pause chars (secs) */
  657.     char * wake_str; /* String to wakeup modem & put in cmd mode */
  658.     int    wake_rate; /* Delay between wake_str characters (msecs) */
  659.     char * wake_prompt; /* String prompt after wake_str */
  660.     char * dmode_str; /* String to put modem in dialing mode */
  661.     char * dmode_prompt; /* String prompt for dialing mode */
  662.     char * dial_str; /* Dialing string, with "%s" for number */
  663.     int    dial_rate; /* Interchar delay to modem (msec) */
  664.     int    esc_time; /* Escape sequence guard time (msec) */
  665.     int    esc_char; /* Escape character */
  666.     char * hup_str; /* Hangup string */
  667.     char * hwfc_str; /* Hardware flow control string */
  668.     char * swfc_str; /* Software flow control string */
  669.     char * nofc_str; /* No flow control string */
  670.     char * ec_on_str; /* Error correction on string */
  671.     char * ec_off_str; /* Error correction off string */
  672.     char * dc_on_str; /* Data compression on string */
  673.     char * dc_off_str; /* Data compression off string */
  674.     char * aa_on_str; /* Autoanswer on string */
  675.     char * aa_off_str; /* Autoanswer off string */
  676.     char * sb_on_str; /* Speed buffering on string */
  677.     char * sb_off_str; /* Speed buffering off string */
  678.     char * sp_on_str; /* Speaker on string */
  679.     char * sp_off_str; /* Speaker off string */
  680.     char * vol1_str; /* Volume low string */
  681.     char * vol2_str; /* Volume med string */
  682.     char * vol3_str; /* Volume high string */
  683.     char * ignoredt; /* Ignore dialtone string */
  684.     char * ini2; /* Last-minute init string */
  685.     long   max_speed; /* Maximum interface speed */
  686.     long   capas; /* Capability bits */
  687.     /* function to read modem's response string to a non-dialing command */
  688.     _PROTOTYP( int (*ok_fn), (int,int) );
  689. };
  690. #endif /* NODIAL */
  691. /* Symbols for File Attributes */
  692. #define AT_XALL  0 /* All of them */
  693. #define AT_ALLY  1 /* All of them on (Yes) */
  694. #define AT_ALLN  2 /* All of them off (no) */
  695. #define AT_LENK  3 /* Length in K */
  696. #define AT_FTYP  4 /* File Type */
  697. #define AT_DATE  5 /* Creation date */
  698. #define AT_CREA  6 /* Creator */
  699. #define AT_ACCT  7 /* Account */
  700. #define AT_AREA  8 /* Area */
  701. #define AT_PSWD  9 /* Password for area */
  702. #define AT_BLKS 10 /* Blocksize */
  703. #define AT_ACCE 11 /* Access */
  704. #define AT_ENCO 12 /* Encoding */
  705. #define AT_DISP 13 /* Disposition */
  706. #define AT_LPRO 14 /* Local Protection */
  707. #define AT_GPRO 15 /* Generic Protection */
  708. #define AT_SYSI 16 /* System ID */
  709. #define AT_RECF 17 /* Record Format */
  710. #define AT_SYSP 18 /* System-Dependent Parameters */
  711. #define AT_LENB 19 /* Length in Bytes */
  712. #define AT_EOA  20 /* End of Attributes */
  713. /* Kermit packet information structure */
  714. struct pktinfo { /* Packet information structure */
  715.     CHAR *bf_adr; /*  buffer address */
  716.     int   bf_len; /*  buffer length */
  717.     CHAR *pk_adr; /* Packet address within buffer */
  718.     int   pk_len; /*  length of data within buffer */
  719.     int   pk_typ; /*  packet type */
  720.     int   pk_seq; /*  packet sequence number */
  721.     int   pk_rtr; /*  retransmission count */
  722. };
  723. /* Send Modes (indicating which type of SEND command was used) */
  724. #define SM_SEND     0
  725. #define SM_MSEND    1
  726. #define SM_RESEND   2
  727. #define SM_PSEND    3
  728. #define SM_MAIL     4
  729. #define SM_PRINT    5
  730. /* File-related symbols and structures */
  731. /* Used by SET FILE command but also by protocol and i/o modules */
  732. #define XMODE_A 0 /* Transfer mode Automatic */
  733. #define XMODE_M 1 /* Transfer mode Manual    */
  734. #define   XYFILN 0   /*  Naming  */
  735. #define     XYFN_L 0 /*    Literal */
  736. #define     XYFN_C 1 /*    Converted */
  737. #define   XYFILT 1   /*  Type    */
  738. #define     XYFT_T 0    /*    Text  */
  739. #define     XYFT_B 1    /*    Binary */
  740. #define     XYFT_I 2    /*    Image or Block (VMS) */
  741. #define     XYFT_L 3 /*    Labeled (tagged binary) (VMS or OS/2) */
  742. #define     XYFT_U 4    /*    Binary Undefined (VMS) */
  743. #define     XYFT_M 5 /*    MacBinary (Macintosh) */
  744. #define     XYFT_D 99   /*    Debug (for session logs) */
  745. #define   XYFILW 2      /*  Warning */
  746. #define   XYFILD 3      /*  Display */
  747. #define     XYFD_N 0    /*    None, Off */
  748. #define     XYFD_R 1    /*    Regular, Dots */
  749. #define     XYFD_C 2    /*    Cursor-positioning (e.g. with curses) */
  750. #define     XYFD_S 3    /*    CRT Screen */
  751. #define     XYFD_B 4    /*    Brief */
  752. #define   XYFILC 4      /*  Character set */
  753. #define   XYFILF 5      /*  Record Format */
  754. #define     XYFF_S  0   /*    Stream */
  755. #define     XYFF_V  1   /*    Variable */
  756. #define     XYFF_VB 2   /*    Variable with RCW's */
  757. #define     XYFF_F  3   /*    Fixed length */
  758. #define     XYFF_U  4   /*    Undefined */
  759. #define   XYFILR 6      /*  Record length */
  760. #define   XYFILO 7      /*  Organization */
  761. #define     XYFO_S 0    /*    Sequential */
  762. #define     XYFO_I 1    /*    Indexed */
  763. #define     XYFO_R 2    /*    Relative */
  764. #define   XYFILP 8      /*  Printer carriage control */
  765. #define     XYFP_N 0    /*    Newline (imbedded control characters) */
  766. #define     XYFP_F 1    /*    FORTRAN (space, 1, +, etc, in column 1 */
  767. #define     XYFP_P 2    /*    Special printer carriage controls */
  768. #define     XYFP_X 4    /*    None */
  769. #define   XYFILX 9      /*  Collision Action */
  770. #define     XYFX_A 3    /*    Append */
  771. #define     XYFX_Q 5    /*    Ask */
  772. #define     XYFX_B 2    /*    Backup */
  773. #define     XYFX_D 4    /*    Discard */
  774. #define     XYFX_R 0    /*    Rename */
  775. #define     XYFX_X 1    /*    Replace */
  776. #define     XYFX_U 6    /*    Update */
  777. #define   XYFILB 10     /*  Blocksize */
  778. #define   XYFILZ 11     /*  Disposition */
  779. #define     XYFZ_N 0    /*    New, Create */
  780. #define     XYFZ_A 1    /*    New, append if file exists, else create */
  781. #define     XYFZ_O 2    /*    Old, file must exist */
  782. #define   XYFILS 12     /*  File Byte Size */
  783. #define   XYFILL 13     /*  File Label (VMS) */
  784. #define   XYFILI 14     /*  File Incomplete */
  785. #define   XYFILQ 15     /*  File path action (strip or not) */
  786. #define   XYFILG 16     /*  File download directory */
  787. #define   XYFILA 17     /*  Line terminator for local text files */
  788. #define     XYFA_L 012  /*    LF (as in UNIX) */
  789. #define     XYFA_C 015  /*    CR (as in OS-9 or Mac OS) */
  790. #define     XYFA_2 000  /*  CRLF -- Note: this must be defined as 0 */
  791. #define   XYFILY 18     /*  Destination */
  792. #define   XYFILV 19 /*  EOF Detection Method */
  793. #define     XYEOF_L 0   /*    File length */
  794. #define     XYEOF_Z 1   /*    Ctrl-Z in file */
  795. #define   XYFILH 20     /*  OUTPUT parameters - buffered, blocking, etc */
  796. #define   XYFIBP 21 /*  BINARY-PATTERN */
  797. #define   XYFITP 22     /*  TEXT-PATTERN */
  798. #define   XYFIPA 23     /*  PATTERNS ON/OFF */
  799. #define   XYFILU 24     /*  UCS ... */
  800. /* Connection closed reasons */
  801. #define WC_REMO   0 /* Closed by remote */
  802. #define WC_CLOS   1 /* Closed from our end */
  803. #define WC_TELOPT 2 /* Telnet negotiation failure */
  804. #ifdef BIGBUFOK
  805. #define FTPATTERNS 256
  806. #else
  807. #define FTPATTERNS 64
  808. #endif /* BIGBUFOK */
  809. #ifdef OS2
  810. struct tt_info_rec { /* Terminal emulation info */
  811.     char  *x_name;
  812.     char *x_aliases[4];
  813.     char  *x_id;
  814. };
  815. #endif /* OS2 */
  816. #ifndef NOIKSD
  817. #ifdef IKSDB /* IKSD Database definitions */
  818. /* Field values */
  819. #define DBF_INUSE    1 /* Flag bits... In use */
  820. #define DBF_USER     2 /* Real user (versus anonymous) */
  821. #define DBF_LOGGED   4 /* Logged in (versus not) */
  822. /* Data Definitions... */
  823. /* Numeric fields, hex, right justified, 0-filled on left */
  824. #define db_FLAGS     0 /* Field 0: Flags */
  825. #define DB_FLAGS     0 /* Offset: 0 */
  826. #define dB_FLAGS     4 /* Length: 4 (hex digits) */
  827. #define db_ATYPE     1 /* Field 1: Authentication type */
  828. #define DB_ATYPE     4 /* 4 hex digits */
  829. #define dB_ATYPE     4
  830. #define db_AMODE     2 /* Field 2: Authentication mode */
  831. #define DB_AMODE     8 /* 4 hex digits */
  832. #define dB_AMODE     4
  833. #define db_STATE     3 /* Field 3: State - 4 hex digits*/
  834. #define DB_STATE    12 /* 4 hex digits */
  835. #define dB_STATE     4
  836. #define db_MYPID     4 /* Field 4: My PID */
  837. #define DB_MYPID    16 /* 16 hex digits left padded with 0 */
  838. #define dB_MYPID    16
  839. #define db_SADDR     5 /* Field 5: Server (my) IP address */
  840. #define DB_SADDR    32 /* 16 hex digits left padded with 0 */
  841. #define dB_SADDR    16
  842. #define db_CADDR     6 /* Field 6: Client IP address */
  843. #define DB_CADDR    48 /* 16 hex digits left padded with 0 */
  844. #define dB_CADDR    16
  845. /* Date-time fields (17 right-adjusted in 18 for Y10K readiness) */
  846. #define db_START     7 /* Field 7: Session start date-time */
  847. #define DB_START    65 /* 64 is leading space for Y10K */
  848. #define dB_START    17
  849. #define db_LASTU     8 /* Field 8: Last lastu date-time */
  850. #define DB_LASTU    83 /* 82 is leading space for Y10K */
  851. #define dB_LASTU    17
  852. #define db_ULEN      9 /* Field 9: Length of Username */
  853. #define DB_ULEN    100 /* 4 hex digits */
  854. #define dB_ULEN      4
  855. #define db_DLEN     10 /* Field 10: Length of Directory */
  856. #define DB_DLEN    104 /* 4 hex digits */
  857. #define dB_DLEN      4
  858. #define db_ILEN     11 /* Field 11: Length of Info */
  859. #define DB_ILEN    108 /* 4 hex digits */
  860. #define dB_ILEN      4
  861. #define db_PAD1     12 /* Field 12: (Reserved) */
  862. #define DB_PAD1    112 /* filled with spaces */
  863. #define dB_PAD1    912
  864. /* String fields, all right-padded with blanks */
  865. #define db_USER     13 /* Field 13: Username */
  866. #define DB_USER   1024 /* right-padded with spaces */
  867. #define dB_USER   1024
  868. #define db_DIR      14 /* Field 14: Current directory */
  869. #define DB_DIR    2048 /* right-padded with spaces */
  870. #define dB_DIR    1024
  871. #define db_INFO     15 /* Field 15: State-specific info */
  872. #define DB_INFO   3072 /* right-padded with spaces */
  873. #define dB_INFO   1024
  874. #define DB_RECL   4096 /* Database record length */
  875. /* Offset, length, and type of each field thru its db_XXX symbol */
  876. #define DBT_HEX 1 /* Hexadecimal number */
  877. #define DBT_STR 2 /* String */
  878. #define DBT_DAT 3 /* Date-Time yyyymmdd hh:mm:ss */
  879. #define DBT_UND 9 /* Undefined and blank */
  880. struct iksdbfld {
  881.     int off; /* Position (offset) */
  882.     int len; /* Length (bytes) */
  883.     int typ; /* Data type */
  884. };
  885. #endif /* IKSDB */
  886. #endif /* NOIKSD */
  887. /* ANSI forward declarations for protocol-related functions. */
  888. _PROTOTYP( int input, (void) );
  889. _PROTOTYP( int inibufs, (int, int) );
  890. _PROTOTYP( int makebuf, (int, int, CHAR [], struct pktinfo *) );
  891. _PROTOTYP( int mksbuf, (int) );
  892. _PROTOTYP( int mkrbuf, (int) );
  893. _PROTOTYP( int spack, (char, int, int, CHAR *) );
  894. _PROTOTYP( VOID proto, (void) );
  895. _PROTOTYP( int rpack, (void) );
  896. _PROTOTYP( int ack, (void) );
  897. _PROTOTYP( int nack, (int) );
  898. _PROTOTYP( int ackn, (int) );
  899. _PROTOTYP( int ack1, (CHAR *) );
  900. _PROTOTYP( int ackns, (int, CHAR *) );
  901. #ifdef STREAMING
  902. _PROTOTYP( int fastack, (void) );
  903. #endif /* STREAMING */
  904. _PROTOTYP( int resend, (int) );
  905. _PROTOTYP( int errpkt, (CHAR *) );
  906. _PROTOTYP( VOID logpkt, (char, int, CHAR *, int) );
  907. _PROTOTYP( CHAR dopar, (CHAR) );
  908. _PROTOTYP( int chk1, (CHAR *, int) );
  909. _PROTOTYP( unsigned int chk2, (CHAR *, int) );
  910. _PROTOTYP( unsigned int chk3, (CHAR *, int) );
  911. _PROTOTYP( int sipkt, (char) );
  912. _PROTOTYP( int sopkt, (void) );
  913. _PROTOTYP( int sinit, (void) );
  914. _PROTOTYP( VOID rinit, (CHAR *) );
  915. _PROTOTYP( int spar, (CHAR *) );
  916. _PROTOTYP( int rcvfil, (char *) );
  917. _PROTOTYP( CHAR * rpar, (void) );
  918. _PROTOTYP( int gnfile, (void) );
  919. _PROTOTYP( int getsbuf, (int) );
  920. _PROTOTYP( int getrbuf, (void) );
  921. _PROTOTYP( int freesbuf, (int) );
  922. _PROTOTYP( int freerbuf, (int) );
  923. _PROTOTYP( int dumpsbuf, (void) );
  924. _PROTOTYP( int dumprbuf, (void) );
  925. _PROTOTYP( VOID freerpkt, (int) );
  926. _PROTOTYP( int chkwin, (int, int, int) );
  927. _PROTOTYP( int rsattr, (CHAR *) );
  928. _PROTOTYP( char *getreason, (char *) );
  929. _PROTOTYP( int scmd, (char, CHAR *) );
  930. _PROTOTYP( int encstr, (CHAR *) );
  931. _PROTOTYP( int decode, (CHAR *, int (*)(char), int) );
  932. _PROTOTYP( int bdecode, (CHAR *, int (*)(char)) );
  933. _PROTOTYP( int fnparse, (char *) );
  934. _PROTOTYP( int syscmd, (char *, char *) );
  935. _PROTOTYP( int cwd, (char *) );
  936. _PROTOTYP( int remset, (char *) );
  937. _PROTOTYP( int initattr, (struct zattr *) );
  938. _PROTOTYP( int gattr, (CHAR *, struct zattr *) );
  939. _PROTOTYP( int adebu, (char *, struct zattr *) );
  940. _PROTOTYP( int canned, (CHAR *) );
  941. _PROTOTYP( int opent, (struct zattr *) );
  942. _PROTOTYP( int ckopenx, (struct zattr *) );
  943. _PROTOTYP( int opena, (char *, struct zattr *) );
  944. _PROTOTYP( int openi, (char *) );
  945. _PROTOTYP( int openo, (char *, struct zattr *, struct filinfo *) );
  946. _PROTOTYP( int openc, (int, char *) );
  947. _PROTOTYP( int reof, (char *, struct zattr *) );
  948. _PROTOTYP( VOID reot, (void) );
  949. _PROTOTYP( int sfile, (int) );
  950. _PROTOTYP( int sattr, (int, int) );
  951. _PROTOTYP( int sdata, (void) );
  952. _PROTOTYP( int seof, (int) );
  953. _PROTOTYP( int sxeof, (int) );
  954. _PROTOTYP( int seot, (void) );
  955. _PROTOTYP( int window, (int) );
  956. _PROTOTYP( int clsif, (void) );
  957. _PROTOTYP( int clsof, (int) );
  958. _PROTOTYP( CHAR setgen, (char, char *, char *, char *) );
  959. _PROTOTYP( int getpkt, (int, int) );
  960. _PROTOTYP( int maxdata, (void) );
  961. _PROTOTYP( int putsrv, (char) );
  962. _PROTOTYP( int puttrm, (char) );
  963. _PROTOTYP( int putque, (char) );
  964. _PROTOTYP( int putfil, (char) );
  965. _PROTOTYP( int putmfil, (char) );
  966. _PROTOTYP( int zputfil, (char) );
  967. _PROTOTYP( VOID zdstuff, (CHAR) );
  968. _PROTOTYP( int tinit, (int) );
  969. _PROTOTYP( VOID pktinit, (void) );
  970. _PROTOTYP( VOID resetc, (void) );
  971. _PROTOTYP( VOID xsinit, (void) );
  972. _PROTOTYP( int adjpkl, (int,int,int) );
  973. _PROTOTYP( int chktimo, (int,int) );
  974. _PROTOTYP( int nxtpkt, (void) );
  975. _PROTOTYP( VOID rcalcpsz, (void) );
  976. _PROTOTYP( int srinit, (int, int, int) );
  977. _PROTOTYP( VOID tstats, (void) );
  978. _PROTOTYP( VOID fstats, (void) );
  979. _PROTOTYP( VOID intmsg, (long) );
  980. _PROTOTYP( VOID ermsg, (char *) );
  981. _PROTOTYP( int chkint, (void) );
  982. _PROTOTYP( VOID sdebu, (int) );
  983. _PROTOTYP( VOID rdebu, (CHAR *, int) );
  984. _PROTOTYP( char * dbchr, ( int ) );
  985. #ifdef COMMENT
  986. _PROTOTYP( SIGTYP stptrap, (int, int) );
  987. _PROTOTYP( SIGTYP trap, (int, int) );
  988. #else
  989. _PROTOTYP( SIGTYP stptrap, (int) );
  990. _PROTOTYP( SIGTYP trap, (int) );
  991. #endif /* COMMENT */
  992. _PROTOTYP( char * ck_errstr, (void) );
  993. #ifndef NOXFER
  994. _PROTOTYP( int agnbyte, (void) );
  995. #endif /* NOXFER */
  996. _PROTOTYP( int xgnbyte, (int, int) );
  997. _PROTOTYP( int xpnbyte, (int, int, int, int (*)(char)) );
  998. /* User interface functions needed by main program, etc. */
  999. _PROTOTYP( int doconect, (int) );
  1000. _PROTOTYP( VOID setflow, (void) );
  1001. _PROTOTYP( VOID prescan, (int) );
  1002. _PROTOTYP( VOID setint, (void) );
  1003. _PROTOTYP( VOID doinit, (void) );
  1004. _PROTOTYP( VOID dofast, (void) );
  1005. _PROTOTYP( VOID cmdini, (void) );
  1006. _PROTOTYP( int dotake, (char *) );
  1007. _PROTOTYP( int cmdlin, (void) );
  1008. _PROTOTYP( int conect, (void) );
  1009. _PROTOTYP( int ckcgetc, (int) );
  1010. _PROTOTYP( int ckcputc, (int) );
  1011. _PROTOTYP (int mdmhup, (void) );
  1012. _PROTOTYP( VOID herald, (void) );
  1013. _PROTOTYP( VOID fixcmd, (void) );
  1014. _PROTOTYP( int doarg, (char) );
  1015. _PROTOTYP( int doxarg, (char **, int) );
  1016. _PROTOTYP( VOID usage, (void) );
  1017. _PROTOTYP( VOID doclean, (int) );
  1018. _PROTOTYP( int sndhlp, () );
  1019. _PROTOTYP( int sndstring, (char *) );
  1020. _PROTOTYP( VOID ckhost, (char *, int) );
  1021. _PROTOTYP( int gettcs, (int, int) );
  1022. _PROTOTYP( VOID getdialenv, (void) );
  1023. _PROTOTYP( VOID setprefix, (int) );
  1024. _PROTOTYP(VOID initproto,(int,char *,char *,char *,char *,char *,char*,char*));
  1025. _PROTOTYP( VOID initpat, (void) );
  1026. _PROTOTYP( VOID initcsets, (void) );
  1027. _PROTOTYP( char * getsysid, (char *) );
  1028. _PROTOTYP( int getsysix, (char *) );
  1029. #ifdef CK_TIMERS
  1030. _PROTOTYP( VOID rttinit, (void) );
  1031. _PROTOTYP( int getrtt, (int, int) );
  1032. #endif /* CK_TIMERS */
  1033. _PROTOTYP( int is_a_tty, (int) );
  1034. _PROTOTYP( int snddir, (char *) );
  1035. _PROTOTYP( int snddel, (char *) );
  1036. _PROTOTYP( int sndtype, (char *) );
  1037. _PROTOTYP( int dooutput, (char *, int) );
  1038. _PROTOTYP( int isabsolute, (char *) );
  1039. _PROTOTYP( VOID whoarewe, (void) );
  1040. _PROTOTYP( int ckmkdir, (int, char *, char **, int, int) );
  1041. _PROTOTYP( int autoexitchk, (CHAR) );
  1042. _PROTOTYP( VOID fcps, (void) );
  1043. #ifdef OS2
  1044. _PROTOTYP( VOID logchar, (unsigned short) );
  1045. #else /* OS2 */
  1046. _PROTOTYP( VOID logchar, (char) );
  1047. #endif /* OS2 */
  1048. _PROTOTYP( VOID logstr, (char *, int) );
  1049. #ifdef NOLOCAL
  1050. #define dologend()
  1051. #else
  1052. _PROTOTYP( VOID dologend, (void) );
  1053. #endif /* NOLOCAL */
  1054. #ifdef NODISPLAY
  1055. #define fxdinit(a)
  1056. #else
  1057. _PROTOTYP( VOID fxdinit, (int) );
  1058. #endif /* NODISPLAY */
  1059. #ifdef CK_APC
  1060. _PROTOTYP( int chkspkt, (char *) );
  1061. _PROTOTYP( int kstart, (CHAR) );
  1062. _PROTOTYP( VOID autodown, (int));
  1063. #ifdef CK_XYZ
  1064. _PROTOTYP( int zstart, (CHAR) );
  1065. #endif /* CK_XYZ */
  1066. #endif /* CK_APC */
  1067. #endif /* CKCKER_H */
  1068. /* End of ckcker.h */