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

通讯/手机编程

开发平台:

Windows_Unix

  1. /*  C K C D E B . H  */
  2. /*
  3.   Thu Dec 30 10:49:22 1999
  4.   NOTE TO CONTRIBUTORS: This file, and all the other C-Kermit files, must be
  5.   compatible with C preprocessors that support only #ifdef, #else, #endif,
  6.   #define, and #undef.  Please do not use #if, logical operators, or other
  7.   preprocessor features in any of the portable C-Kermit modules.  You can,
  8.   of course, use these constructions in system-specific modules when you they
  9.   are supported.
  10. */
  11. /*
  12.   This file is included by all C-Kermit modules, including the modules
  13.   that aren't specific to Kermit (like the command parser and the ck?tio and
  14.   ck?fio modules).  It should be included BEFORE any other C-Kermit header
  15.   files.  It specifies format codes for debug(), tlog(), and similar
  16.   functions, and includes any necessary definitions to be used by all C-Kermit
  17.   modules, and also includes some feature selection compile-time switches, and
  18.   also system- or compiler-dependent definitions, plus #includes and prototypes
  19.   required by all C-Kermit modules.
  20. */
  21. /*
  22.   Author: Frank da Cruz <fdc@columbia.edu>,
  23.   Columbia University Academic Information Systems, New York City.
  24.   Copyright (C) 1985, 2000,
  25.     Trustees of Columbia University in the City of New York.
  26.     All rights reserved.  See the C-Kermit COPYING.TXT file or the
  27.     copyright text in the ckcmai.c module for disclaimer and permissions.
  28. */
  29. /*
  30.   Etymology: The name of this file means "C-Kermit Common-C-Language Debugging
  31.   Header", because originally it contained only the formats (F000-F111) for
  32.   the debug() and tlog() functions.  See how it has grown...
  33. */
  34. #ifndef CKCDEB_H /* Don't include me more than once. */
  35. #define CKCDEB_H
  36. #ifdef MACOSX10 /* Mac OS X 1.0 */
  37. #ifndef MACOSX /* implies Mac OS X */
  38. #define MACOSX
  39. #endif /* MACOSX */
  40. #endif /* MACOSX10 */
  41. #ifdef MACOSX /* Mac OS X */
  42. #ifndef BSD44 /* implies 4.4 BSD */
  43. #define BSD44
  44. #endif /* BSD44 */
  45. #endif /* MACOSX */
  46. #ifdef SCO_OSR505 /* SCO 3.2v5.0.5 */
  47. #ifndef SCO_OSR504 /* implies SCO 3.2v5.0.4 */
  48. #define SCO_OSR504
  49. #endif /* SCO_OSR504 */
  50. #endif /* SCO_OSR505 */
  51. #ifdef SCO_OSR504 /* SCO 3.2v5.0.4 */
  52. #ifndef CK_SCOV5 /* implies SCO 3.2v5.0 */
  53. #define CK_SCOV5
  54. #endif /* CK_SCOV5 */
  55. #include <sys/types.h> /* To sidestep header-file mess */
  56. #endif /* SCO_OSR504 */
  57. #ifdef CK_SCO32V4 /* SCO 3.2v4 */
  58. #ifndef XENIX
  59. #define XENIX
  60. #endif /* XENIX */
  61. #ifndef SVR3
  62. #define SVR3
  63. #endif /* SVR3 */
  64. #ifndef DIRENT
  65. #define DIRENT
  66. #endif /* DIRENT */
  67. #ifndef RENAME
  68. #define RENAME
  69. #endif /* RENAME */
  70. #ifndef SVR3JC
  71. #define SVR3JC
  72. #endif /* SVR3JC */
  73. #ifndef CK_RTSCTS
  74. #define CK_RTSCTS
  75. #endif /* CK_RTSCTS */
  76. #ifndef PID_T
  77. #define PID_T pid_t
  78. #endif /* PID_T */
  79. #ifndef PWID_T
  80. #define PWID_T int
  81. #endif /* PWID_T */
  82. #endif /* CK_SCO32V4 */
  83. #ifdef NOICP /* If no command parser */
  84. #ifndef NOSPL /* Then no script language either */
  85. #define NOSPL
  86. #endif /* NOSPL */
  87. #ifndef NOCSETS /* Or characer sets */
  88. #define NOCSETS
  89. #endif /* NOCSETS */
  90. #endif /* NOICP */
  91. /* Features that can be eliminated from a no-file-transfer version */
  92. #ifdef NOXFER
  93. #ifndef NOCURSES /* Fullscreen file-transfer display */
  94. #define NOCURSES
  95. #endif /* NOCURSES */
  96. #ifndef NOCKXYZ /* XYZMODEM support */
  97. #define NOCKXYZ
  98. #endif /* NOCKXYZ */
  99. #ifndef NOCKSPEED /* Ctrl-char unprefixing */
  100. #define NOCKSPEED
  101. #endif /* NOCKSPEED */
  102. #ifndef NOSERVER /* Server mode */
  103. #define NOSERVER
  104. #endif /* NOSERVER */
  105. #ifndef NOCKTIMERS /* Dynamic packet timers */
  106. #define NOCKTIMERS
  107. #endif /* NOCKTIMERS */
  108. #ifndef NOPATTERNS /* File-type patterns */
  109. #define NOPATTERNS
  110. #endif /* NOPATTERNS */
  111. #ifndef NOSTREAMING /* Streaming */
  112. #define NOSTREAMING
  113. #endif /* NOSTREAMING */
  114. #ifndef NOIKSD /* Internet Kermit Service */
  115. #define NOIKSD
  116. #endif /* NOIKSD */
  117. #ifndef NOPIPESEND /* Sending from pipes */
  118. #define NOPIPESEND
  119. #endif /* NOPIPESEND */
  120. #ifndef NOAUTODL /* Autodownload */
  121. #define NOAUTODL
  122. #endif /* NOAUTODL */
  123. #ifndef NOMSEND /* MSEND */
  124. #define NOMSEND
  125. #endif /* NOMSEND */
  126. #ifndef NOTLOG /* Transaction logging */
  127. #define NOTLOG
  128. #endif /* NOTLOG */
  129. #ifndef NOCKXXCHAR /* Packet character doubling */
  130. #define NOCKXXCHAR
  131. #endif /* NOCKXXCHAR */
  132. #endif /* NOXFER */
  133. #ifdef NOICP /* No Interactive Command Parser */
  134. #ifndef NODIAL /* Implies No DIAL command */
  135. #define NODIAL
  136. #endif /* NODIAL */
  137. #ifndef NOCKXYZ /* and no external protocols */
  138. #define NOCKXYZ
  139. #endif /* NOCKXYZ */
  140. #endif /* NOICP */
  141. /* Features that can be eliminated from a remote-only version */
  142. #ifdef NOLOCAL
  143. #ifndef NOCURSES /* Fullscreen file-transfer display */
  144. #define NOCURSES
  145. #endif /* NOCURSES */
  146. #ifndef NODIAL
  147. #define NODIAL
  148. #endif /* NODIAL */
  149. #ifndef NOSCRIPT
  150. #define NOSCRIPT
  151. #endif /* NOSCRIPT */
  152. #ifndef NOAPC
  153. #define NOAPC
  154. #endif /* NOAPC */
  155. #ifndef NOSETKEY
  156. #define NOSETKEY
  157. #endif /* NOSETKEY */
  158. #ifndef NOXMIT
  159. #define NOXMIT
  160. #endif /* NOXMIT */
  161. #ifdef CK_CURSES
  162. #undef CK_CURSES
  163. #endif /* CK_CURSES */
  164. #ifndef NONET
  165. #define NONET
  166. #endif /* NONET */
  167. #endif /* NOLOCAL */
  168. #ifdef NONET
  169. #ifdef NETCONN
  170. #undef NETCONN
  171. #endif /* NETCONN */
  172. #ifdef SUNX25
  173. #undef SUNX25
  174. #endif /* SUNX25 */
  175. #ifdef IBMX25
  176. #undef IBMX25
  177. #endif /* IBMX25 */
  178. #ifdef STRATUSX25
  179. #undef STRATUSX25
  180. #endif /* STRATUSX25 */
  181. #ifdef CK_NETBIOS
  182. #undef CK_NETBIOS
  183. #endif /* CK_NETBIOS */
  184. #ifdef SUPERLAT
  185. #undef SUPERLAT
  186. #endif /* SUPERLAT */
  187. #ifdef NPIPE
  188. #undef NPIPE
  189. #endif /* NPIPE */
  190. #ifdef NETFILE
  191. #undef NETFILE
  192. #endif /* NETFILE */
  193. #ifdef NETCMD
  194. #undef NETCMD
  195. #endif /* NETCMD */
  196. #ifdef NETPTY
  197. #undef NETPTY
  198. #endif /* NETPTY */
  199. #ifdef TCPSOCKET
  200. #undef TCPSOCKET
  201. #endif /* TCPSOCKET */
  202. #ifdef NOTCPOPTS
  203. #undef NOTCPOPTS
  204. #endif /* NOTCPOPTS */
  205. #ifdef RLOGCODE
  206. #undef RLOGCODE
  207. #endif /* RLOGCODE */
  208. #ifdef NETDLL
  209. #undef NETDLL
  210. #endif /* NETDLL */
  211. #ifdef SSH
  212. #undef SSH
  213. #endif /* SSH */
  214. #ifndef NOHTTP
  215. #define NOHTTP
  216. #endif /* NOHTTP */
  217. #ifndef NOBROWSER
  218. #define NOBROWSER
  219. #endif /* NOBROWSER */
  220. #endif /* NONET */
  221. /*
  222.   Note that none of the above precludes TNCODE, which can be defined in
  223.   the absence of TCPSOCKET, etc, to enable server-side Telnet negotation.
  224. */
  225. #ifndef TNCODE /* This is for the benefit of */
  226. #ifdef TCPSOCKET /* modules that might need TNCODE */
  227. #define TNCODE /* not all of ckcnet.h... */
  228. #endif /* TCPSOCKET */
  229. #endif /* TNCODE */
  230. #ifndef NETCONN
  231. #ifdef TCPSOCKET
  232. #define NETCONN
  233. #endif /* TCPSOCKET */
  234. #endif /* NETCONN */
  235. #ifndef DEFPAR /* Default parity */
  236. #define DEFPAR 0 /* Must be here because it is used */
  237. #endif /* DEFPAR */ /* by all classes of modules */
  238. #ifdef NT
  239. #ifndef OS2ORWIN32
  240. #define OS2ORWIN32
  241. #endif /* OS2ORWIN32 */
  242. #ifndef OS2
  243. #define WIN32ONLY
  244. #endif /* OS2 */
  245. #endif /* NT */
  246. #ifdef OS2 /* For OS/2 debugging */
  247. #ifndef OS2ORWIN32
  248. #define OS2ORWIN32
  249. #endif /* OS2ORWIN32 */
  250. #include "ckoker.h"
  251. #ifdef NT
  252. #define NOCRYPT
  253. #include <windows.h>
  254. #define NTSIG
  255. #else /* NT */
  256. #define OS2ONLY
  257. #include <os2def.h>
  258. #endif /* NT */
  259. #ifndef OS2ORUNIX
  260. #define OS2ORUNIX
  261. #endif /* OS2ORUNIX */
  262. #endif /* OS2 */
  263. #include <stdio.h> /* Begin by including this. */
  264. #include <ctype.h> /* and this. */
  265. #ifdef MAC
  266. /*
  267.  * The MAC doesn't use standard stdio routines.
  268.  */
  269. #undef getchar
  270. #define getchar()   mac_getchar()
  271. #undef putchar
  272. #define putchar(c) mac_putchar(c)
  273. #define printf mac_printf
  274. #define perror mac_perror
  275. #define puts mac_puts
  276. extern int mac_putchar (int c);
  277. extern int mac_puts (const char *string);
  278. extern int mac_printf(const char *, ...);
  279. extern int mac_getchar (void);
  280. #endif /* MAC */
  281. #ifdef OS2
  282. #define printf Vscrnprintf
  283. #define fprintf Vscrnfprintf
  284. extern int Vscrnprintf(const char *, ...);
  285. extern int Vscrnfprintf(FILE *, const char *, ...);
  286. #ifdef putchar
  287. #undef putchar
  288. #endif /* putchar */
  289. #define putchar(x) Vscrnprintf("%c",x)
  290. #define perror(x)  Vscrnperror(x)
  291. #endif /* OS2 */
  292. /* System-type compilation switches */
  293. #ifdef FT21 /* Fortune For:Pro 2.1 implies 1.8 */
  294. #ifndef FT18
  295. #define FT18
  296. #endif /* FT18 */
  297. #endif /* FT21 */
  298. #ifdef __bsdi__
  299. #ifndef BSDI
  300. #define BSDI
  301. #endif /* BSDI */
  302. #endif /* __bsdi__ */
  303. #ifdef AIXPS2 /* AIXPS2 implies AIX370 */
  304. #ifndef AIX370
  305. #define AIX370
  306. #endif /* AIX370 */
  307. #endif /* AIXPS2 */
  308. #ifdef AIX370 /* AIX PS/2 or 370 implies BSD4 */
  309. #ifndef BSD4
  310. #define BSD4
  311. #endif /* BSD4 */
  312. #endif /* AIX370 */
  313. #ifdef AIXESA /* AIX/ESA implies BSD4.4 */
  314. #ifndef BSD44
  315. #define BSD44
  316. #endif /* BSD44 */
  317. #endif /* AIXESA */
  318. #ifdef AIX45 /* AIX45 implies AIX44 */
  319. #ifndef AIX44
  320. #define AIX44
  321. #endif /* AIX44 */
  322. #endif /* AIX45 */
  323. #ifdef AIX44 /* AIX44 implies AIX43 */
  324. #ifndef AIX43
  325. #define AIX43
  326. #endif /* AIX43 */
  327. #endif /* AIX44 */
  328. #ifdef AIX43 /* AIX43 implies AIX42 */
  329. #ifndef AIX42
  330. #define AIX42
  331. #endif /* AIX42 */
  332. #endif /* AIX43 */
  333. #ifdef AIX42 /* AIX42 implies AIX41 */
  334. #ifndef AIX41
  335. #define AIX41
  336. #endif /* AIX41 */
  337. #endif /* AIX42 */
  338. #ifdef SV68R3V6 /* System V/68 R32V6 implies SVR3 */
  339. #ifndef SVR3
  340. #define SVR3
  341. #endif /* SVR3 */
  342. #endif /* SV68R3V6 */
  343. #ifdef SV88R32 /* System V/88 R32 implies SVR3 */
  344. #ifndef SVR3
  345. #define SVR3
  346. #endif /* SVR3 */
  347. #endif /* SV88R32 */
  348. #ifdef DGUX540 /* DG UX 5.40 implies Sys V R 4 */
  349. #ifndef SVR4
  350. #define SVR4
  351. #endif /* SVR4 */
  352. #endif /* DGUX540 */
  353. #ifndef DGUX
  354. #ifdef DGUX540 /* DG/UX 5.40 implies DGUX */
  355. #define DGUX
  356. #else
  357. #ifdef DGUX430 /* So does DG/UX 4.30 */
  358. #define DGUX
  359. #endif /* DGUX430 */
  360. #endif /* DGUX540 */
  361. #endif /* DGUX */
  362. #ifdef IRIX65 /* IRIX 6.5 implies IRIX 6.4 */
  363. #ifndef IRIX64
  364. #define IRIX64
  365. #endif /* IRIX64 */
  366. #endif /* IRIX65 */
  367. #ifdef IRIX64 /* IRIX 6.4 implies IRIX 6.2 */
  368. #ifndef BSD44ORPOSIX
  369. #define BSD44ORPOSIX /* for ckutio's benefit */
  370. #endif /* BSD44ORPOSIX */
  371. #ifndef IRIX62
  372. #define IRIX62
  373. #endif /* IRIX62 */
  374. #endif /* IRIX64 */
  375. #ifdef IRIX62 /* IRIX 6.2 implies IRIX 6.0 */
  376. #ifndef IRIX60
  377. #define IRIX60
  378. #endif /* IRIX60 */
  379. #endif /* IRIX62 */
  380. #ifdef IRIX60 /* IRIX 6.0 implies IRIX 5.1 */
  381. #ifndef IRIX51
  382. #define IRIX51
  383. #endif /* IRIX51 */
  384. #ifndef IRIX52 /* And IRIX 5.2 (for hwfc) */
  385. #define IRIX52
  386. #endif /* IRIX52 */
  387. #endif /* IRIX60 */
  388. #ifndef IRIX /* IRIX 4.0 or greater implies IRIX */
  389. #ifdef IRIX64
  390. #define IRIX
  391. #else
  392. #ifdef IRIX62
  393. #define IRIX
  394. #else
  395. #ifdef IRIX60
  396. #define IRIX
  397. #else
  398. #ifdef IRIX51
  399. #define IRIX
  400. #else
  401. #ifdef IRIX40
  402. #define IRIX
  403. #endif /* IRIX40 */
  404. #endif /* IRIX51 */
  405. #endif /* IRIX60 */
  406. #endif /* IRIX62 */
  407. #endif /* IRIX64 */
  408. #endif /* IRIX */
  409. #ifdef SUNOS41 /* SUNOS41 implies SUNOS4 */
  410. #ifndef SUNOS4
  411. #define SUNOS4
  412. #endif /* SUNOS4 */
  413. #endif /* SUNOS41 */
  414. #ifdef SOLARIS7 /* Solaris 7 implies 2.6 */
  415. #ifndef SOLARIS26
  416. #define SOLARIS26
  417. #endif /* SOLARIS26 */
  418. #endif /* SOLARIS7 */
  419. #ifdef SOLARIS26 /* Solaris 2.6 implies 2.5 */
  420. #ifndef SOLARIS25
  421. #define SOLARIS25
  422. #endif /* SOLARIS25 */
  423. #endif /* SOLARIS26 */
  424. #ifdef SOLARIS25
  425. #ifndef SOLARIS
  426. #define SOLARIS
  427. #endif /* SOLARIS */
  428. #ifndef POSIX
  429. #define POSIX
  430. #endif /* POSIX */
  431. #endif /* SOLARIS25 */
  432. #ifdef SOLARIS24
  433. #ifndef SOLARIS
  434. #define SOLARIS
  435. #endif /* SOLARIS */
  436. #endif /* SOLARIS24 */
  437. #ifdef SUN4S5 /* Sun-4 System V environment */
  438. #ifndef SVR3 /* implies System V R3 or later */
  439. #define SVR3
  440. #endif /* SVR3 */
  441. #endif /* SUN4S5 */
  442. #ifdef MIPS /* MIPS System V environment */
  443. #ifndef SVR3 /* implies System V R3 or later */
  444. #define SVR3
  445. #endif /* SVR3 */
  446. #endif /* MIPS */
  447. #ifdef HPUX9 /* HP-UX 9.x */
  448. #ifndef SVR3
  449. #define SVR3
  450. #endif /* SVR3 */
  451. #ifndef HPUX
  452. #define HPUX
  453. #endif /* HPUX */
  454. #ifndef HPUX9PLUS
  455. #define HPUX9PLUS
  456. #endif /* HPUX9PLUS */
  457. #endif /* HPUX9 */
  458. #ifdef HPUX10 /* HP-UX 10.x */
  459. #ifndef HPUX1010 /* If anything higher is defined */
  460. #ifdef HPUX1020 /* define HPUX1010 too. */
  461. #define HPUX1010
  462. #endif /* HPUX1020 */
  463. #ifdef HPUX1030
  464. #define HPUX1010
  465. #endif /* HPUX1030 */
  466. #endif /* HPUX1010 */
  467. #ifdef HPUX1100 /* HP-UX 11.00 implies 10.10 */
  468. #ifndef HPUX1010
  469. #define HPUX1010
  470. #endif /* HPUX1010 */
  471. #endif /* HPUX1100 */
  472. #ifndef SVR4
  473. #define SVR4
  474. #endif /* SVR4 */
  475. #ifndef HPUX
  476. #define HPUX
  477. #endif /* HPUX */
  478. #ifndef HPUX9PLUS
  479. #define HPUX9PLUS
  480. #endif /* HPUX9PLUS */
  481. #endif /* HPUX10 */
  482. #ifdef QNX /* QNX Software Systems Inc */
  483. #ifndef POSIX /* QNX 4.0 or later is POSIX */
  484. #define POSIX
  485. #endif /* POSIX */
  486. #ifndef __386__ /* Comes in 16-bit and 32-bit */
  487. #define __16BIT__
  488. #define CK_QNX16
  489. #else
  490. #define __32BIT__
  491. #define CK_QNX32
  492. #endif /* __386__ */
  493. #endif /* QNX */
  494. /*
  495.   4.4BSD is a mixture of System V R4, POSIX, and 4.3BSD.
  496. */
  497. #ifdef BSD44 /* 4.4 BSD */
  498. #ifndef SVR4 /* BSD44 implies SVR4 */
  499. #define SVR4
  500. #endif /* SVR4 */
  501. #ifndef NOSETBUF /* NOSETBUF is safe */
  502. #define NOSETBUF
  503. #endif /* NOSETBUF */
  504. #ifndef DIRENT /* Uses <dirent.h> */
  505. #define DIRENT
  506. #endif /* DIRENT */
  507. #endif /* BSD44 */
  508. #ifdef SVR3 /* SVR3 implies ATTSV */
  509. #ifndef ATTSV
  510. #define ATTSV
  511. #endif /* ATTSV */
  512. #endif /* SVR3 */
  513. #ifdef SVR4 /* SVR4 implies ATTSV */
  514. #ifndef ATTSV
  515. #define ATTSV
  516. #endif /* ATTSV */
  517. #ifndef SVR3 /* ...as well as SVR3 */
  518. #define SVR3
  519. #endif /* SVR3 */
  520. #endif /* SVR4 */
  521. #ifdef OXOS
  522. #ifndef ATTSV
  523. #define ATTSV /* OXOS implies ATTSV */
  524. #endif /* ! ATTSV */
  525. #define SW_ACC_ID /* access() wants privs on */
  526. #define kill priv_kill /* kill() wants privs on */
  527. #ifndef NOSETBUF
  528. #define NOSETBUF /* NOSETBUF is safe */
  529. #endif /* ! NOSETBUF */
  530. #endif /* OXOS */
  531. #ifdef UTSV /* UTSV implies ATTSV */
  532. #ifndef ATTSV
  533. #define ATTSV
  534. #endif /* ATTSV */
  535. #endif /* UTSV */
  536. #ifdef XENIX /* XENIX implies ATTSV */
  537. #ifndef ATTSV
  538. #define ATTSV
  539. #endif /* ATTSV */
  540. #endif /* XENIX */
  541. #ifdef AUX /* AUX implies ATTSV */
  542. #ifndef ATTSV
  543. #define ATTSV
  544. #endif /* ATTSV */
  545. #endif /* AUX */
  546. #ifdef ATT7300 /* ATT7300 implies ATTSV */
  547. #ifndef ATTSV
  548. #define ATTSV
  549. #endif /* ATTSV */
  550. #endif /* ATT7300 */
  551. #ifdef ATT6300 /* ATT6300 implies ATTSV */
  552. #ifndef ATTSV
  553. #define ATTSV
  554. #endif /* ATTSV */
  555. #endif /* ATT6300 */
  556. #ifdef HPUX /* HPUX implies ATTSV */
  557. #ifndef ATTSV
  558. #define ATTSV
  559. #endif /* ATTSV */
  560. #endif /* HPUX */
  561. #ifdef ISIII /* ISIII implies ATTSV */
  562. #ifndef ATTSV
  563. #define ATTSV
  564. #endif /* ATTSV */
  565. #endif /* ISIII */
  566. #ifdef NEXT33 /* NEXT33 implies NEXT */
  567. #ifndef NEXT
  568. #define NEXT
  569. #endif /* NEXT */
  570. #endif /* NEXT33 */
  571. #ifdef NEXT /* NEXT implies BSD4 */
  572. #ifndef BSD4
  573. #define BSD4
  574. #endif /* BSD4 */
  575. #endif /* NEXT */
  576. #ifdef SUNOS4 /* SUNOS4 implies BSD4 */
  577. #ifndef BSD4
  578. #define BSD4
  579. #endif /* BSD4 */
  580. #endif /* SUNOS4 */
  581. #ifdef BSD41 /* BSD41 implies BSD4 */
  582. #ifndef BSD4
  583. #define BSD4
  584. #endif /* BSD4 */
  585. #endif /* BSD41 */
  586. #ifdef BSD43 /* BSD43 implies BSD4 */
  587. #ifndef BSD4
  588. #define BSD4
  589. #endif /* BSD4 */
  590. #endif /* BSD43 */
  591. #ifdef BSD4 /* BSD4 implies ANYBSD */
  592. #ifndef ANYBSD
  593. #define ANYBSD
  594. #endif /* ANYBSD */
  595. #endif /* BSD4 */
  596. #ifdef BSD29 /* BSD29 implies ANYBSD */
  597. #ifndef ANYBSD
  598. #define ANYBSD
  599. #endif /* ANYBSD */
  600. #endif /* BSD29 */
  601. #ifdef ATTSV /* ATTSV implies UNIX */
  602. #ifndef UNIX
  603. #define UNIX
  604. #endif /* UNIX */
  605. #endif /* ATTSV */
  606. #ifdef ANYBSD /* ANYBSD implies UNIX */
  607. #ifndef UNIX
  608. #define UNIX
  609. #endif /* UNIX */
  610. #endif /* ANYBSD */
  611. #ifdef POSIX /* POSIX implies UNIX */
  612. #ifndef UNIX
  613. #define UNIX
  614. #endif /* UNIX */
  615. #ifndef DIRENT /* and DIRENT, i.e. <dirent.h> */
  616. #ifndef SDIRENT
  617. #define DIRENT
  618. #endif /* SDIRENT */
  619. #endif /* DIRENT */
  620. #ifndef NOFILEH /* POSIX doesn't use <sys/file.h> */
  621. #define NOFILEH
  622. #endif /* NOFILEH */
  623. #endif /* POSIX */
  624. #ifdef V7
  625. #ifndef UNIX
  626. #define UNIX
  627. #endif /* UNIX */
  628. #endif /* V7 */
  629. #ifdef COHERENT
  630. #ifndef UNIX
  631. #define UNIX
  632. #endif /* UNIX */
  633. #ifdef COMMENT
  634. #ifndef NOCURSES
  635. #define NOCURSES
  636. #endif /* NOCURSES */
  637. #endif /* COMMENT */
  638. #endif /* COHERENT */
  639. #ifdef MINIX
  640. #ifndef UNIX
  641. #define UNIX
  642. #endif /* UNIX */
  643. #endif /* MINIX */
  644. /*
  645.   The symbol SVORPOSIX is defined for both AT&T and POSIX compilations
  646.   to make it easier to select items that System V and POSIX have in common,
  647.   but which BSD, V7, etc, do not have.
  648. */
  649. #ifdef ATTSV
  650. #ifndef SVORPOSIX
  651. #define SVORPOSIX
  652. #endif /* SVORPOSIX */
  653. #endif /* ATTSV */
  654. #ifdef POSIX
  655. #ifndef SVORPOSIX
  656. #define SVORPOSIX
  657. #endif /* SVORPOSIX */
  658. #endif /* POSIX */
  659. /*
  660.   The symbol SVR4ORPOSIX is defined for both AT&T System V R4 and POSIX
  661.   compilations to make it easier to select items that System V R4 and POSIX
  662.   have in common, but which BSD, V7, and System V R3 and earlier, etc, do
  663.   not have.
  664. */
  665. #ifdef POSIX
  666. #ifndef SVR4ORPOSIX
  667. #define SVR4ORPOSIX
  668. #endif /* SVR4ORPOSIX */
  669. #endif /* POSIX */
  670. #ifdef SVR4
  671. #ifndef SVR4ORPOSIX
  672. #define SVR4ORPOSIX
  673. #endif /* SVR4ORPOSIX */
  674. #endif /* SVR4 */
  675. /*
  676.   The symbol BSD44ORPOSIX is defined for both 4.4BSD and POSIX compilations
  677.   to make it easier to select items that 4.4BSD and POSIX have in common,
  678.   but which System V, BSD, V7, etc, do not have.
  679. */
  680. #ifdef BSD44
  681. #ifndef BSD44ORPOSIX
  682. #define BSD44ORPOSIX
  683. #endif /* BSD44ORPOSIX */
  684. #endif /* BSD44 */
  685. #ifdef POSIX
  686. #ifndef BSD44ORPOSIX
  687. #define BSD44ORPOSIX
  688. #endif /* BSD44ORPOSIX */
  689. #endif /* POSIX */
  690. #ifdef UNIX /* For items common to OS/2 and UNIX */
  691. #ifndef OS2ORUNIX
  692. #define OS2ORUNIX
  693. #endif /* OS2ORUNIX */
  694. #endif /* UNIX */
  695. #ifdef UNIX /* For items common to VMS and UNIX */
  696. #define VMSORUNIX
  697. #else
  698. #ifdef VMS
  699. #define VMSORUNIX
  700. #endif /* VMS */
  701. #endif /* UNIX */
  702. #ifndef UNIXOROSK /* UNIX or OS-9 (or OS-9000) */
  703. #ifdef UNIX
  704. #define UNIXOROSK
  705. #else
  706. #ifdef OSK
  707. #define UNIXOROSK
  708. #endif /* OSK */
  709. #endif /* UNIX */
  710. #endif /* UNIXOROSK */
  711. #ifndef OSKORUNIX
  712. #ifdef UNIXOROSK
  713. #define OSKORUNIX
  714. #endif /* UNIXOROSK */
  715. #endif /* OSKORUNIX */
  716. #ifdef OS2
  717. #define CK_ANSIC            /* OS/2 supports ANSIC and more extensions */
  718. #endif /* OS2 */
  719. #ifdef OSF50     /* Newer OSF/1 versions imply older ones */
  720. #ifndef OSF40
  721. #define OSF40
  722. #endif /* OSF40 */
  723. #endif /* OSF50 */
  724. #ifdef OSF40
  725. #ifndef OSF32
  726. #define OSF32
  727. #endif /* OSF32 */
  728. #endif /* OSF40 */
  729. #ifdef OSF32
  730. #ifndef OSF30
  731. #define OSF30
  732. #endif /* OSF30 */
  733. #endif /* OSF32 */
  734. #ifdef OSF30
  735. #ifndef OSF20
  736. #define OSF20
  737. #endif /* OSF20 */
  738. #endif /* OSF30 */
  739. #ifdef OSF20
  740. #ifndef OSF10
  741. #define OSF10
  742. #endif /* OSF10 */
  743. #endif /* OSF20 */
  744. #ifdef __DECC /* For DEC Alpha VMS or OSF/1 */
  745. #ifndef CK_ANSIC
  746. #define CK_ANSIC /* Even with /stand=vaxc, need ansi */
  747. #endif /* CKANSIC */
  748. #ifndef SIG_V
  749. #define SIG_V /* and signal type is VOID */
  750. #endif /* SIG_V */
  751. #ifndef CK_ANSILIBS
  752. #define CK_ANSILIBS /* (Martin Zinser, Feb 1995) */
  753. #endif /* CK_ANSILIBS */
  754. #ifndef _POSIX_C_SOURCE
  755. #define _POSIX_C_SOURCE 1
  756. #endif /* _POSIX_C_SOURCE */
  757. #endif /* __DECC */
  758. #ifdef apollo /* May be ANSI-C, check further */
  759. #ifdef __STDCPP__
  760. #define CK_ANSIC /* Yes, this is real ANSI-C */
  761. #define SIG_V
  762. #else
  763. #define NOANSI /* Nope, not ANSI */
  764. #undef __STDC__ /* Even though it say it is! */
  765. #define SIG_I
  766. #endif /* __STDCPP__ */
  767. #endif /* apollo */
  768. #ifdef POSIX /* -DPOSIX on cc command line */
  769. #ifndef _POSIX_SOURCE /* Implies _POSIX_SOURCE */
  770. #define _POSIX_SOURCE
  771. #endif /* _POSIX_SOURCE */
  772. #endif /* POSIX */
  773. /*
  774.   ANSI C?  That is, do we have function prototypes, new-style
  775.   function declarations, and parameter type checking and coercion?
  776. */
  777. #ifdef MAC /* MPW C is ANSI */
  778. #ifndef NOANSI
  779. #ifndef CK_ANSIC
  780. #define CK_ANSIC
  781. #endif /* CK_ANSIC */
  782. #endif /* NOANSI */
  783. #endif /* MAC */
  784. #ifdef STRATUS /* Stratus VOS */
  785. #ifndef CK_ANSIC
  786. #define CK_ANSIC
  787. #endif /* CK_ANSIC */
  788. #ifndef NOSTAT
  789. #define NOSTAT
  790. #endif /* NOSTAT */
  791. #endif /* STRATUS */
  792. #ifndef NOANSI
  793. #ifdef __STDC__ /* __STDC__ means ANSI C */
  794. #ifndef CK_ANSIC
  795. #define CK_ANSIC
  796. #endif /* CK_ANSIC */
  797. #endif /* __STDC__ */
  798. #endif /* NOANSI */
  799. /*
  800.   _PROTOTYP() is used for forward declarations of functions so we can have
  801.   parameter and return value type checking if the compiler offers it.
  802.   __STDC__ should be defined by the compiler only if function prototypes are
  803.   allowed.  Otherwise, we get old-style forward declarations.  Our own private
  804.   CK_ANSIC symbol tells whether we use ANSI C prototypes.  To force use of
  805.   ANSI prototypes, include -DCK_ANSIC on the cc command line.  To disable the
  806.   use of ANSI prototypes, include -DNOANSI.
  807. */
  808. #ifdef CK_ANSIC
  809. #define _PROTOTYP( func, parms ) func parms
  810. #else /* Not ANSI C */
  811. #define _PROTOTYP( func, parms ) func()
  812. #endif /* CK_ANSIC */
  813. #ifdef NOLOGIN /* NOLOGIN implies NOIKSD */
  814. #ifndef NOIKSD
  815. #define NOIKSD
  816. #endif /* NOIKSD */
  817. #endif /* NOLOGIN */
  818. #ifdef NOIKSD /* Internet Kermit Service Daemon */
  819. #ifndef NOPRINTFSUBST
  820. #define NOPRINTFSUBST
  821. #endif /* NOPRINTFSUBST */
  822. #ifndef NOLOGIN
  823. #define NOLOGIN
  824. #endif /* NOLOGIN */
  825. #ifndef NOSYSLOG
  826. #define NOSYSLOG
  827. #endif /* NOSYSLOG */
  828. #ifndef NOWTMP
  829. #define NOWTMP
  830. #endif /* NOWTMP */
  831. #else
  832. #ifndef IKSD
  833. #ifdef OS2ORUNIX /* Platforms where IKSD is supported */
  834. #define IKSD
  835. #ifdef OS2ONLY
  836. #ifndef NOLOGIN
  837. #define NOLOGIN
  838. #endif /* NOLOGIN */
  839. #endif /* OS2 */
  840. #endif /* OS2ORUNIX */
  841. #endif /* IKSD */
  842. #endif /* NOIKSD */
  843. #ifdef IKSD /* IKSD options... */
  844. #ifndef IKSDCONF /* IKSD configuration file */
  845. #ifdef UNIX
  846. #define IKSDCONF "/etc/iksd.conf"
  847. #else
  848. #ifdef OS2
  849. #define IKSDCONF "iksd.ksc"
  850. #endif /* OS2 */
  851. #endif /* UNIX */
  852. #endif /* IKSDCONF */
  853. #ifndef NOIKSDB
  854. #ifndef IKSDB /* IKSD database */
  855. #ifdef UNIX
  856. #define IKSDB
  857. #define IK_LCKTRIES 16 /* How many times to try to get lock */
  858. #define IK_LCKSLEEP 1 /* How long to sleep between tries */
  859. #define IK_LOCKFILE "iksd.lck" /* Database lockfilename */
  860. #define IK_DBASEDIR "/var/log/" /* Database directory */
  861. #define IK_DBASEFIL "iksd.db" /* Database filename */
  862. #else /* UNIX */
  863. #ifdef OS2
  864. #define IKSDB
  865. #ifndef NOFTRUNCATE /* ftruncate() not available */
  866. #define NOFTRUNCATE
  867. #endif /* NOFTRUNCATE */
  868. #define IK_LCKTRIES 16 /* How many times to try to get lock */
  869. #define IK_LCKSLEEP 1 /* How long to sleep between tries */
  870. #define IK_LOCKFILE "iksd.lck" /* DB lockfilename (in systemroot) */
  871. #define IK_DBASEFIL "iksd.db" /* Database filename */
  872. #endif /* OS2 */
  873. #endif /* UNIX */
  874. #endif /* IKSDB */
  875. #endif /* NOIKSDB */
  876. #endif /* IKSD */
  877. /*
  878.   Substitutes for printf() and friends used in IKS to compensate for
  879.   lack of a terminal driver, mainly to supply CR after LF.
  880. */
  881. #ifndef NOPRINTFSUBST
  882. #ifndef CKWART_C
  883. #ifdef UNIX
  884. #ifndef pdp11
  885. #ifndef CKXPRINTF
  886. #define CKXPRINTF
  887. #endif /* CKXPRINTF */
  888. #endif /* pdp11 */
  889. #endif /* UNIX */
  890. #endif /* CKWART_C */
  891. #endif /* NOPRINTFSUBST */
  892. #ifdef CKXPRINTF
  893. #define printf ckxprintf
  894. #define fprintf ckxfprintf
  895. #ifdef CK_ANSIC
  896. _PROTOTYP(int ckxprintf,(const char *, ...));
  897. #ifdef NEXT
  898. _PROTOTYP(void ckxperror,(const char *));
  899. #else
  900. #ifdef CK_SCOV5
  901. _PROTOTYP(void ckxperror,(const char *));
  902. #else
  903. _PROTOTYP(int ckxperror,(const char *));
  904. #endif /* CK_SCOV5 */
  905. #endif /* NEXT */
  906. _PROTOTYP(int ckxfprintf,(FILE *, const char *, ...));
  907. #endif /* CK_ANSIC */
  908. #ifdef putchar
  909. #undef putchar
  910. #endif /* putchar */
  911. #define putchar(x) ckxprintf("%c",x)
  912. #ifdef putc
  913. #undef putc
  914. #endif /* putc */
  915. #define putc(a,b) ckxfprintf(b,"%c",a)
  916. #define perror(x)  ckxperror(x)
  917. #endif /* CKXPRINTF */
  918. /*
  919.   Altos-specific items: 486, 586, 986 models...
  920. */
  921. #ifdef A986
  922. #define M_VOID
  923. #define void int
  924. #define CHAR char
  925. #define SIG_I
  926. #endif /* A986 */
  927. /* Signal handling */
  928. #ifdef QNX
  929. #ifndef CK_POSIX_SIG
  930. #define CK_POSIX_SIG
  931. #endif /* CK_POSIX_SIG */
  932. #endif /* QNX */
  933. /* Void type */
  934. #ifndef VOID /* Used throughout all C-Kermit */
  935. #ifdef CK_ANSIC /* modules... */
  936. #define VOID void
  937. #else
  938. #define VOID int
  939. #endif /* CK_ANSIC */
  940. #endif /* VOID */
  941. /* Const type */
  942. #ifndef CONST
  943. #ifdef OSK
  944. #ifdef _UCC
  945. #define CONST const
  946. #else
  947. #define CONST
  948. #endif /* _UCC */
  949. #else
  950. #ifdef CK_ANSIC
  951. #define CONST const
  952. #else
  953. #define CONST
  954. #endif /* CK_ANSIC */
  955. #endif /* OSK */
  956. #endif /* CONST */
  957. /* Signal type */
  958. #ifndef SIG_V /* signal() type, if not def'd yet */
  959. #ifndef SIG_I
  960. #ifdef OS2
  961. #define SIG_V
  962. #else
  963. #ifdef POSIX
  964. #define SIG_V
  965. #else
  966. #ifdef SVR3 /* System V R3 and later */
  967. #define SIG_V
  968. #else
  969. #ifdef SUNOS4 /* SUNOS V 4.0 and later */
  970. #ifndef sun386
  971. #define SIG_V
  972. #else
  973. #define SIG_I
  974. #endif /* sun386 */
  975. #else
  976. #ifdef NEXT /* NeXT */
  977. #define SIG_V
  978. #else
  979. #ifdef AIX370
  980. #include <signal.h>
  981. #define SIG_V
  982. #define SIGTYP __SIGVOID /* AIX370 */
  983. #else
  984. #ifdef STRATUS /* Stratus VOS */
  985. #define SIG_V
  986. #else
  987. #ifdef MAC
  988. #define SIGTYP long
  989. #define SIG_I
  990. #ifndef MPW33
  991. #define SIG_IGN 0
  992. #endif /* MPW33 */
  993. #define SIGALRM 1
  994. #ifndef MPW33
  995. #define SIGINT  2
  996. #endif /* MPW33 */
  997. #else /* Everything else */
  998. #define SIG_I
  999. #endif /* MAC */
  1000. #endif /* STRATUS */
  1001. #endif /* AIX370 */
  1002. #endif /* NEXT */
  1003. #endif /* SUNOS4 */
  1004. #endif /* SVR3 */
  1005. #endif /* POSIX */
  1006. #endif /* OS2 */
  1007. #endif /* SIG_I */
  1008. #endif /* SIG_V */
  1009. #ifdef SIG_I
  1010. #define SIGRETURN return(0)
  1011. #ifndef SIGTYP
  1012. #define SIGTYP int
  1013. #endif /* SIGTYP */
  1014. #endif /* SIG_I */
  1015. #ifdef SIG_V
  1016. #define SIGRETURN return
  1017. #ifndef SIGTYP
  1018. #define SIGTYP void
  1019. #endif /* SIGTYP */
  1020. #endif /* SIG_V */
  1021. #ifdef NT
  1022. #ifndef SIGTYP
  1023. #define SIGTYP void
  1024. #endif /* SIGTYP */
  1025. #define strdup _strdup
  1026. #endif /* NT */
  1027. #ifndef SIGTYP
  1028. #define SIGTYP int
  1029. #endif /* SIGTYP */
  1030. #ifndef SIGRETURN
  1031. #define SIGRETURN return(0)
  1032. #endif /* SIGRETURN */
  1033. #ifdef CKNTSIG
  1034. /* This does not work, so don't use it. */
  1035. #define signal ckntsignal
  1036. SIGTYP (*ckntsignal(int type, SIGTYP (*)(int)))(int);
  1037. #endif /* CKNTSIG */
  1038. /* Unsigned numbers */
  1039. #ifndef USHORT
  1040. #define USHORT unsigned short
  1041. #endif /* USHORT */
  1042. #ifndef UINT
  1043. #define UINT unsigned int
  1044. #endif /* UINT */
  1045. #ifndef ULONG
  1046. #define ULONG unsigned long
  1047. #endif /* ULONG */
  1048. /* We want all characters to be unsigned if the compiler supports it */
  1049. #ifdef KUI
  1050. #ifdef CHAR
  1051. #undef CHAR
  1052. #endif /* CHAR */
  1053. #define CHAR unsigned char
  1054. #else
  1055. #ifdef PROVX1
  1056. typedef char CHAR;
  1057. /* typedef long LONG; */
  1058. typedef int void;
  1059. #else
  1060. #ifdef MINIX
  1061. typedef unsigned char CHAR;
  1062. #else
  1063. #ifdef V7
  1064. typedef char CHAR;
  1065. #else
  1066. #ifdef C70
  1067. typedef char CHAR;
  1068. /* typedef long LONG; */
  1069. #else
  1070. #ifdef BSD29
  1071. typedef char CHAR;
  1072. /* typedef long LONG; */
  1073. #else
  1074. #ifdef datageneral
  1075. #define CHAR unsigned char /* 3.22 compiler */
  1076. #else
  1077. #ifdef HPUX
  1078. #define CHAR unsigned char
  1079. #else
  1080. #ifdef OS2
  1081. #ifdef NT
  1082. #define CHAR unsigned char
  1083. #else /* NT */
  1084. #ifdef CHAR
  1085. #undef CHAR
  1086. #endif /* CHAR */
  1087. typedef unsigned char CHAR;
  1088. #endif /* NT */
  1089. #else /* OS2 */
  1090. #ifdef VMS
  1091. typedef unsigned char CHAR;
  1092. #else
  1093. #ifdef CHAR
  1094. #undef CHAR
  1095. #endif /* CHAR */
  1096. typedef unsigned char CHAR;
  1097. #endif /* VMS */
  1098. #endif /* OS2 */
  1099. #endif /* HPUX */
  1100. #endif /* datageneral */
  1101. #endif /* BSD29 */
  1102. #endif /* C70 */
  1103. #endif /* V7 */
  1104. #endif /* MINIX */
  1105. #endif /* PROVX1 */
  1106. #endif /* KUI */
  1107. union ck_short { /* Mainly for Unicode */
  1108.     USHORT x_short;
  1109.     CHAR x_char[2];
  1110. };
  1111. #ifdef MAC /* Macintosh file routines */
  1112. #ifndef CKWART_C /* But not in "wart"... */
  1113. #ifdef feof
  1114. #undef feof
  1115. #endif /* feof */
  1116. #define feof mac_feof
  1117. #define rewind mac_rewind
  1118. #define fgets mac_fgets
  1119. #define fopen mac_fopen
  1120. #define fclose mac_fclose
  1121. int mac_feof();
  1122. void mac_rewind();
  1123. char *mac_fgets();
  1124. FILE *mac_fopen();
  1125. int mac_fclose();
  1126. #endif /* CKCPRO_W */
  1127. #endif /* MAC */
  1128. /*
  1129.    Systems whose mainline modules have access to the communication-line
  1130.    file descriptor, ttyfd.
  1131. */
  1132. #ifndef CK_TTYFD
  1133. #ifdef UNIX
  1134. #define CK_TTYFD
  1135. #else
  1136. #ifdef OS2
  1137. #define CK_TTYFD
  1138. #else
  1139. #ifdef VMS
  1140. #define CK_TTYFD
  1141. #endif /* VMS */
  1142. #endif /* OS2 */
  1143. #endif /* UNIX */
  1144. #endif /* CK_TTYFD */
  1145. /* Systems where we can get our own process ID */
  1146. #ifndef CK_PID
  1147. #ifdef UNIX
  1148. #define CK_PID
  1149. #endif /* UNIX */
  1150. #ifdef OS2
  1151. #define CK_PID
  1152. #endif /* OS2 */
  1153. #ifdef VMS
  1154. #define CK_PID
  1155. #endif /* VMS */
  1156. #endif /* CK_PID */
  1157. /* Systems that support the Microsoft Telephony API (TAPI) */
  1158. #ifndef CK_TAPI
  1159. #ifdef NT
  1160. #define CK_TAPI
  1161. #endif /* NT */
  1162. #endif /* CK_TAPI */
  1163. #ifndef NONZXPAND
  1164. #ifndef NZXPAND
  1165. #ifdef OS2ORUNIX
  1166. #define NZXPAND
  1167. #else
  1168. #ifdef VMS
  1169. #define NZXPAND
  1170. #else
  1171. #ifdef datageneral
  1172. #define NZXPAND
  1173. #else
  1174. #ifdef OSK
  1175. #define NZXPAND
  1176. #endif /* OSK */
  1177. #endif /* datageneral */
  1178. #endif /* VMS */
  1179. #endif /* OS2ORUNIX */
  1180. #endif /* NZXPAND */
  1181. #else
  1182. #ifdef NZXPAND
  1183. #undef NZXPAND
  1184. #endif /* NZXPAND */
  1185. #endif /* NONZXPAND */
  1186. /* nzxpand() option flags */
  1187. #define ZX_FILONLY   1 /* Match only regular files */
  1188. #define ZX_DIRONLY   2 /* Match only directories */
  1189. #define ZX_RECURSE   4 /* Descend through directory tree */
  1190. #define ZX_MATCHDOT  8 /* Match "dot files" */
  1191. #define ZX_NOBACKUP 16 /* Don't match "backup files" */
  1192. #ifndef NZXPAND
  1193. #define nzxpand(a,b) zxpand(a)
  1194. #endif /* NZXPAND */
  1195. #ifndef NOZXREWIND
  1196. #ifndef ZXREWIND /* Platforms that have zxrewind() */
  1197. #ifdef OS2ORUNIX
  1198. #define ZXREWIND
  1199. #else
  1200. #ifdef VMS
  1201. #define ZXREWIND
  1202. #else
  1203. #ifdef datageneral
  1204. #define ZXREWIND
  1205. #else
  1206. #ifdef OSK
  1207. #define ZXREWIND
  1208. #else
  1209. #ifdef STRATUS
  1210. #define ZXREWIND
  1211. #endif /* STRATUS */
  1212. #endif /* OSK */
  1213. #endif /* datageneral */
  1214. #endif /* VMS */
  1215. #endif /* OS2ORUNIX */
  1216. #endif /* ZXREWIND */
  1217. #else
  1218. #ifdef ZXREWIND
  1219. #undef ZXREWIND
  1220. #endif /* ZXREWIND */
  1221. #endif /* NOZXREWIND */
  1222. /* Temporary-directory-for-RECEIVE feature ... */
  1223. /* This says whether we have the isdir() function defined. */
  1224. #ifdef UNIX /* UNIX has it */
  1225. #ifndef CK_TMPDIR
  1226. #ifndef pdp11
  1227. #define CK_TMPDIR
  1228. #define TMPDIRLEN 256
  1229. #endif /* pdp11 */
  1230. #endif /* CK_TMPDIR */
  1231. #endif /* UNIX */
  1232. #ifdef VMS /* VMS too */
  1233. #ifndef CK_TMPDIR
  1234. #define CK_TMPDIR
  1235. #define TMPDIRLEN 256
  1236. #endif /* CK_TMPDIR */
  1237. #endif /* VMS */
  1238. #ifdef OS2 /* OS two too */
  1239. #ifndef CK_TMPDIR
  1240. #define CK_TMPDIR
  1241. #define TMPDIRLEN 129
  1242. #endif /* CK_TMPDIR */
  1243. #endif /* OS2 */
  1244. #ifdef STRATUS /* Stratus VOS too. */
  1245. #ifndef CK_TMPDIR
  1246. #define CK_TMPDIR
  1247. #define TMPDIRLEN 256
  1248. #endif /* CK_TMPDIR */
  1249. #endif /* STRATUS */
  1250. #ifdef OSK /* OS-9 too */
  1251. #ifndef CK_TMPDIR
  1252. #define CK_TMPDIR
  1253. #define TMPDIRLEN 256
  1254. #endif /* CK_TMPDIR */
  1255. #endif /* OSK */
  1256. #ifdef datageneral /* AOS/VS too */
  1257. #ifndef CK_TMPDIR
  1258. #define CK_TMPDIR
  1259. #define TMPDIRLEN 256
  1260. #endif /* CK_TMPDIR */
  1261. #endif /* datageneral */
  1262. #ifdef CK_TMPDIR /* Needs command parser */
  1263. #ifdef NOICP
  1264. #undef CK_TMPDIR
  1265. #endif /* NOICP */
  1266. #endif /* CK_TMPDIR */
  1267. /* Whether to include <sys/time.h> */
  1268. #ifndef NOTIMEH /* <time.h> */
  1269. #ifndef TIMEH
  1270. #define TIMEH
  1271. #endif /* TIMEH */
  1272. #endif /* NOTIMEH */
  1273. #ifndef NOSYSTIMEH /* <sys/time.h> */
  1274. #ifndef SYSTIMEH
  1275. #ifdef UNIX /* UNIX */
  1276. #ifdef SVORPOSIX /* System V or POSIX... */
  1277. #ifdef M_UNIX
  1278. #define SYSTIMEH
  1279. #else
  1280. #ifdef SCO_32V4
  1281. #define SYSTIMEH
  1282. #else
  1283. #ifdef OXOS
  1284. #define SYSTIMEH
  1285. #else
  1286. #ifdef BSD44
  1287. #define SYSTIMEH
  1288. #else
  1289. #ifdef __linux__
  1290. #define SYSTIMEH
  1291. #else
  1292. #ifdef AIXRS
  1293. #ifndef AIX41
  1294. #define SYSTIMEH
  1295. #endif /* AIX41 */
  1296. #else
  1297. #ifdef IRIX60
  1298. #define SYSTIMEH
  1299. #else
  1300. #ifdef I386IX
  1301. #define SYSTIMEH
  1302. #else
  1303. #ifdef SV68R3V6
  1304. #define SYSTIMEH
  1305. #endif /* SV68R3V6 */
  1306. #endif /* I386IX */
  1307. #endif /* IRIX60 */
  1308. #endif /* AIXRS */
  1309. #endif /* __linux__ */
  1310. #endif /* BSD44 */
  1311. #endif /* OXOS */
  1312. #endif /* SCO_32V4 */
  1313. #endif /* M_UNIX */
  1314. #else  /* Not SVORPOSIX */
  1315. #ifndef BELLV10 /* All but these... */
  1316. #ifndef PROVX1
  1317. #ifndef V7
  1318. #ifndef BSD41
  1319. #ifndef COHERENT
  1320. #define SYSTIMEH
  1321. #endif /* COHERENT */
  1322. #endif /* BSD41 */
  1323. #endif /* V7 */
  1324. #endif /* PROVX1 */
  1325. #endif /* BELLV10 */
  1326. #endif /* SVORPOSIX */
  1327. #endif /* UNIX */
  1328. #endif /* SYSTIMEH */
  1329. #endif /* NOSYSTIMEH */
  1330. #ifndef NOSYSTIMEBH /* <sys/timeb.h> */
  1331. #ifndef SYSTIMEBH
  1332. #ifdef OSF
  1333. #define SYSTIMEBH
  1334. #else
  1335. #ifdef COHERENT
  1336. #define SYSTIMEBH
  1337. #else
  1338. #ifdef BSD41
  1339. #define SYSTIMEBH
  1340. #else
  1341. #ifdef BSD29
  1342. #define SYSTIMEBH
  1343. #else
  1344. #ifdef TOWER1
  1345. #define SYSTIMEBH
  1346. #else
  1347. #ifdef FT21
  1348. #define SYSTIMEBH
  1349. #else
  1350. #ifdef BELLV10
  1351. #define SYSTIMEBH
  1352. #endif /* BELLV10 */
  1353. #endif /* FT21 */
  1354. #endif /* TOWER1 */
  1355. #endif /* BSD29 */
  1356. #endif /* BSD41 */
  1357. #endif /* COHERENT */
  1358. #endif /* OSF */
  1359. #endif /* SYSTIMEBH */
  1360. #endif /* NOSYSTIMEBH */
  1361. /*
  1362.  Debug and transaction logging is included automatically unless you define
  1363.  NODEBUG or NOTLOG.  Do this if you want to save the space and overhead.
  1364.  (Note, in version 4F these definitions changed from "{}" to the null string
  1365.  to avoid problems with semicolons after braces, as in: "if (x) tlog(this);
  1366.  else tlog(that);"
  1367. */
  1368. #ifndef NODEBUG
  1369. #ifndef DEBUG
  1370. #define DEBUG
  1371. #endif /* DEBUG */
  1372. #else
  1373. #ifdef DEBUG
  1374. #undef DEBUG
  1375. #endif /* DEBUG */
  1376. #endif /* NODEBUG */
  1377. #ifndef NOTLOG
  1378. #ifndef TLOG
  1379. #define TLOG
  1380. #endif /* TLOG */
  1381. #endif /* NOTLOG */
  1382. /* debug() macro style selection. */
  1383. #ifdef VMS
  1384. #ifndef IFDEBUG
  1385. #define IFDEBUG
  1386. #endif /* IFDEBUG */
  1387. #endif /* VMS */
  1388. #ifdef MAC
  1389. #ifndef IFDEBUG
  1390. #define IFDEBUG
  1391. #endif /* IFDEBUG */
  1392. #endif /* MAC */
  1393. #ifdef OS2
  1394. #ifndef IFDEBUG
  1395. #define IFDEBUG
  1396. #endif /* IFDEBUG */
  1397. #endif /* OS2 */
  1398. #ifdef OXOS /* tst is faster than jsr */
  1399. #ifndef IFDEBUG
  1400. #define IFDEBUG
  1401. #endif /* IFDEBUG */
  1402. #endif /* OXOS */
  1403. #ifndef CKCMAI
  1404. extern int deblog;
  1405. extern int matchdot;
  1406. extern int tt_bell;
  1407. #endif /* CKCMAI */
  1408. #ifdef OS2
  1409. _PROTOTYP( void bleep, (short) );
  1410. #else /* OS2 */
  1411. #define bleep(x) if(tt_bell)putchar('7')
  1412. #endif /* OS2 */
  1413. #ifndef DEBUG
  1414. /* Compile all the debug() statements away.  Saves a lot of space and time. */
  1415. #define debug(a,b,c,d)
  1416. #define hexdump(a,b,c)
  1417. /* Now define the debug() macro. */
  1418. #else
  1419. #ifdef IFDEBUG
  1420. /* Use this form to avoid function calls: */
  1421. #define debug(a,b,c,d) if (deblog) dodebug(a,b,(char *)(c),(long)d)
  1422. #define hexdump(a,b,c) if (deblog) dohexdump((CHAR *)(a),(CHAR *)(b),c)
  1423. #else
  1424. /* Use this form to save space: */
  1425. #define debug(a,b,c,d) dodebug(a,b,(char *)(c),(long)d)
  1426. #define hexdump(a,b,c) dohexdump((CHAR *)(a),(CHAR *)(b),c)
  1427. #endif /* DEBUG */
  1428. #ifndef BEOSORBEBOX
  1429. #ifdef BEBOX /* This was used only for DR7 */
  1430. #define BEOSORBEBOX
  1431. #else
  1432. #ifdef BEOS /* This is used for BeOS 4.x */
  1433. #define BEOSORBEBOX
  1434. #endif /* BEOS */
  1435. #endif /* BEBOX */
  1436. #endif /* BEOSORBEBOX */
  1437. _PROTOTYP(int dodebug,(int, char *, char *, long));
  1438. _PROTOTYP(VOID dohexdump,(CHAR *, CHAR *, int));
  1439. #endif /* DEBUG */
  1440. #ifdef NOICP
  1441. #ifdef TLOG
  1442. #undef TLOG
  1443. #endif /* TLOG */
  1444. #endif /* NOICP */
  1445. #ifndef TLOG
  1446. #define tlog(a,b,c,d)
  1447. #else
  1448. #ifndef CKCMAI
  1449. /* Debugging included.  Declare debug log flag in main program only. */
  1450. extern int tralog, tlogfmt;
  1451. #endif /* CKCMAI */
  1452. _PROTOTYP(VOID dotlog,(int, char *, char *, long));
  1453. #define tlog(a,b,c,d) if (tralog && tlogfmt) dotlog(a,b,c,d)
  1454. _PROTOTYP(VOID doxlog,(int, char *, long, int, int, char *));
  1455. #endif /* TLOG */
  1456. /* Formats for debug() and tlog() */
  1457. #define F000 0
  1458. #define F001 1
  1459. #define F010 2
  1460. #define F011 3
  1461. #define F100 4
  1462. #define F101 5
  1463. #define F110 6
  1464. #define F111 7
  1465. #ifdef __linux__
  1466. #ifndef LINUX
  1467. #define LINUX
  1468. #endif /* LINUX */
  1469. #endif /* __linux__ */
  1470. /* Platforms where small size is needed */
  1471. #ifdef pdp11
  1472. #define CK_SMALL
  1473. #endif /* pdp11 */
  1474. #ifdef SUNOS4 /* "built in makefile entry" */
  1475. #ifndef NOSETBUF /* for SunOS 4.x */
  1476. #define NOSETBUF
  1477. #endif /* NOSETBUF */
  1478. #ifndef DIRENT
  1479. #define DIRENT
  1480. #endif /* DIRENT */
  1481. #ifndef NONET
  1482. #ifndef TCPSOCKET
  1483. #define TCPSOCKET
  1484. #endif /* TCPSOCKET */
  1485. #endif /* NONET */
  1486. #ifndef SAVEDUID
  1487. #define SAVEDUID
  1488. #endif /* SAVEDUID */
  1489. #ifndef DYNAMIC
  1490. #define DYNAMIC
  1491. #endif /* DYNAMIC */
  1492. #endif /* SUNOS4 */
  1493. #ifdef SOLARIS /* "built in makefile entry" */
  1494. #ifndef NOSETBUF /* for Solaris 2.x */
  1495. #define NOSETBUF
  1496. #endif /* NOSETBUF */
  1497. #ifndef NOCURSES
  1498. #ifndef CK_CURSES
  1499. #define CK_CURSES
  1500. #endif /* CK_CURSES */
  1501. #endif /* NOCURSES */
  1502. #ifndef CK_NEWTERM
  1503. #define CK_NEWTERM
  1504. #endif /* CK_NEWTERM */
  1505. #ifndef DIRENT
  1506. #define DIRENT
  1507. #endif /* DIRENT */
  1508. #ifndef TCPSOCKET
  1509. #define TCPSOCKET
  1510. #endif /* TCPSOCKET */
  1511. #ifndef SVR4
  1512. #define SVR4
  1513. #endif /* SVR4 */
  1514. #ifndef HADDRLIST
  1515. #define HADDRLIST
  1516. #endif /* HADDRLIST */
  1517. #ifndef STERMIOX
  1518. #define STERMIOX
  1519. #endif /* STERMIOX */
  1520. #ifndef SELECT
  1521. #define SELECT
  1522. #endif /* SELECT */
  1523. #ifndef DYNAMIC
  1524. #define DYNAMIC
  1525. #endif /* DYNAMIC */
  1526. #ifndef NOUUCP
  1527. #ifndef HDBUUCP
  1528. #define HDBUUCP
  1529. #endif /* HDBUUCP */
  1530. #endif /* NOUUCP */
  1531. #endif /* SOLARIS */
  1532. /* Can we use realpath()? */
  1533. #ifndef NOREALPATH
  1534. #ifdef pdp11
  1535. #define NOREALPATH
  1536. #endif /* pdp11 */
  1537. #endif /* NOREALPATH */
  1538. #ifndef NOREALPATH
  1539. #ifdef UNIX
  1540. #ifdef HPUX5
  1541. #define NOREALPATH
  1542. #else
  1543. #ifdef HPUX6
  1544. #define NOREALPATH
  1545. #else
  1546. #ifdef HPUX7
  1547. #define NOREALPATH
  1548. #else
  1549. #ifdef HPUX8
  1550. #define NOREALPATH
  1551. #else
  1552. #ifdef SV68R3V6
  1553. #define NOREALPATH
  1554. #else
  1555. #ifdef XENIX
  1556. #define NOREALPATH
  1557. #else
  1558. #ifdef CK_SCO32V4
  1559. #define NOREALPATH
  1560. #else
  1561. #ifdef CK_SCOV5
  1562. #define NOREALPATH
  1563. #else
  1564. #ifdef OSF32
  1565. #define NOREALPATH
  1566. #else
  1567. #ifdef OSF30
  1568. #define NOREALPATH
  1569. #else
  1570. #ifdef ultrix
  1571. #define NOREALPATH
  1572. #else
  1573. #ifdef COHERENT
  1574. #define NOREALPATH
  1575. #endif /* COHERENT */
  1576. #endif /* ultrix */
  1577. #endif /* OSF30 */
  1578. #endif /* OSF32 */
  1579. #endif /* CK_SCOV5 */
  1580. #endif /* CK_SCO32V4 */
  1581. #endif /* XENIX */
  1582. #endif /* SV68R3V6 */
  1583. #endif /* HPUX8 */
  1584. #endif /* HPUX7 */
  1585. #endif /* HPUX6 */
  1586. #endif /* HPUX5 */
  1587. #endif /* NOREALPATH */
  1588. #ifndef NOREALPATH
  1589. #ifndef CKREALPATH
  1590. #define CKREALPATH
  1591. #endif /* NOREALPATH */
  1592. #endif /* CKREALPATH */
  1593. #endif /* UNIX */
  1594. /* CKSYMLINK should be set only if we can use readlink() */
  1595. #ifdef UNIX
  1596. #ifndef NOSYMLINK
  1597. #ifndef CKSYMLINK
  1598. #define CKSYMLINK
  1599. #endif /* NOSYMLINK */
  1600. #endif /* CKSYMLINK */
  1601. #endif /* UNIX */
  1602. /* Platforms where we can use lstat() instead of stat() (for symlinks) */
  1603. /* This should be set only if both lstat() and readlink() are available */
  1604. #ifndef NOLSTAT
  1605. #ifndef NOSYMLINK
  1606. #ifndef USE_LSTAT
  1607. #ifdef UNIX
  1608. #ifdef CKSYMLINK
  1609. #ifdef SVR4 /* SVR4 has lstat() */
  1610. #define USE_LSTAT
  1611. #else
  1612. #ifdef BSD42 /* 4.2BSD and 4.3BSD have it */
  1613. #define USE_LSTAT /* This should include old HPUXs */
  1614. #else
  1615. #ifdef BSD44 /* 4.4BSD has it */
  1616. #define USE_LSTAT
  1617. #else
  1618. #ifdef LINUX /* LINUX has it */
  1619. #define USE_LSTAT
  1620. #else
  1621. #ifdef SUNOS4 /* SunOS has it */
  1622. #define USE_LSTAT
  1623. #endif /* SUNOS4 */
  1624. #endif /* LINUX */
  1625. #endif /* BSD44 */
  1626. #endif /* BSD42 */
  1627. #endif /* SVR4 */
  1628. #endif /* CKSYMLINK */
  1629. #endif /* UNIX */
  1630. #endif /* USE_LSTAT */
  1631. #endif /* NOSYMLINK */
  1632. #endif /* NOLSTAT */
  1633. #ifdef NOLSTAT
  1634. #ifdef USE_LSTAT
  1635. #undef USE_LSTAT
  1636. #endif /* USE_LSTAT */
  1637. #endif /* NOLSTAT */
  1638. #ifndef NOTTYLOCK /* UNIX systems that have ttylock() */
  1639. #ifndef USETTYLOCK
  1640. #ifdef AIXRS /* AIX 3.1 and later */
  1641. #define USETTYLOCK
  1642. #else
  1643. #ifdef USE_UU_LOCK /* FreeBSD or other with uu_lock() */
  1644. #define USETTYLOCK
  1645. #endif /* USE_UU_LOCK */
  1646. #endif /* AIXRS */
  1647. #endif /* USETTYLOCK */
  1648. #endif /* NOTTYLOCK */
  1649. /* Kermit feature selection */
  1650. #ifndef NOSPL
  1651. #ifndef NOCHANNELIO /* Channel-based file i/o package */
  1652. #ifndef CKCHANNELIO
  1653. #ifdef UNIX
  1654. #define CKCHANNELIO
  1655. #else
  1656. #ifdef OS2
  1657. #define CKCHANNELIO
  1658. #else
  1659. #ifdef VMS
  1660. #define CKCHANNELIO
  1661. #else
  1662. #ifdef STRATUS
  1663. #define CKCHANNELIO
  1664. #endif /* STRATUS */
  1665. #endif /* VMS */
  1666. #endif /* OS2 */
  1667. #endif /* UNIX */
  1668. #endif /* CKCHANNELIO */
  1669. #endif /* NOCHANNELIO */
  1670. #endif /* NOSPL */
  1671. #ifndef NOCKEXEC /* EXEC command */
  1672. #ifndef NOPUSH
  1673. #ifndef CKEXEC
  1674. #ifdef UNIX /* UNIX can do it */
  1675. #define CKEXEC
  1676. #endif /* UNIX */
  1677. #endif /* CKEXEC */
  1678. #endif /* NOPUSH */
  1679. #endif /* NOCKEXEC */
  1680. #ifndef NOFAST /* Fast Kermit protocol by default */
  1681. #ifndef CK_FAST
  1682. #ifdef UNIX
  1683. #define CK_FAST
  1684. #else
  1685. #ifdef VMS
  1686. #define CK_FAST
  1687. #else
  1688. #ifdef OS2
  1689. #define CK_FAST
  1690. #endif /* OS2 */
  1691. #endif /* VMS */
  1692. #endif /* UNIX */
  1693. #endif /* CK_FAST */
  1694. #endif /* NOFAST */
  1695. #ifdef UNIX /* Transparent print */
  1696. #ifndef NOXPRINT
  1697. #ifndef XPRINT
  1698. #define XPRINT
  1699. #endif /* XPRINT */
  1700. #endif /* NOXPRINT */
  1701. #endif /* UNIX */
  1702. #ifndef NOHWPARITY /* Hardware parity */
  1703. #ifndef HWPARITY
  1704. #ifdef SVORPOSIX /* System V or POSIX can have it */
  1705. #define HWPARITY
  1706. #else
  1707. #ifdef OS2 /* K95 can have it */
  1708. #define HWPARITY
  1709. #endif /* OS2 */
  1710. #endif /* SVORPOSIX */
  1711. #endif /* HWPARITY */
  1712. #endif /* NOHWPARITY */
  1713. #ifdef UNIX
  1714. #ifndef NETCMD /* Can SET NETWORK TYPE COMMAND */
  1715. #define NETCMD
  1716. #endif /* NETCMD */
  1717. #endif /* UNIX */
  1718. /* Pty support, nonportable, available on a case-by-case basis */
  1719. #ifndef NOPTY
  1720. #ifdef NEXT /* NeXTSTEP (tested on 3.1)*/
  1721. #define NETPTY
  1722. #else
  1723. #ifdef CK_SCOV5 /* SCO OSR5 (tested on 5.0.5)*/
  1724. #define NETPTY
  1725. #else
  1726. #ifdef QNX /* QNX (tested on 4.25) */
  1727. #define NETPTY
  1728. #else
  1729. #ifdef SINIX                            /* Sinix (tested on 5.42) */
  1730. #define NETPTY
  1731. #else
  1732. #ifdef DGUX540 /* DG/UX 5.4++ (tested on 5.4R4.11) */
  1733. #define NETPTY
  1734. #else
  1735. #ifdef OSF32 /* Digital Unix 3.2 */
  1736. #define NETPTY
  1737. #else
  1738. #ifdef OSF40 /* Digital Unix 4.0 / Tru64 */
  1739. #define NETPTY
  1740. #else
  1741. #ifdef IRIX60 /* IRIX 6.0 (not earlier) */
  1742. #define NETPTY
  1743. #else
  1744. #ifdef HPUX10 /* HPUX 10.00 or later */
  1745. #define NETPTY
  1746. #ifndef HAVE_PTYTRAP
  1747. #define HAVE_PTYTRAP
  1748. #endif /* HAVE_PTYTRAP */
  1749. #else
  1750. #ifdef HPUX9 /* HPUX 9.00 (not earlier) */
  1751. #define NETPTY
  1752. #ifndef HAVE_PTYTRAP
  1753. #define HAVE_PTYTRAP
  1754. #endif /* HAVE_PTYTRAP */
  1755. #else
  1756. #ifdef BSD44 /* BSD44, {Net,Free,Open}BSD */
  1757. #define NETPTY
  1758. #else
  1759. #ifdef BSDI /* BSDI/OS (tested in 4) */
  1760. #define NETPTY
  1761. #else
  1762. #ifdef SOLARIS /* Solaris (tested in 2.5) */
  1763. #define NETPTY
  1764. #else
  1765. #ifdef UW7 /* Unixware 7 */
  1766. #define NETPTY
  1767. #else
  1768. #ifdef SUNOS41 /* SunOS (tested in 4.1.3) */
  1769. #define NETPTY
  1770. #else
  1771. #ifdef AIX41 /* AIX 4.1 and later */
  1772. #define NETPTY
  1773. #else
  1774. #ifdef LINUX /* Linux */
  1775. #define NETPTY
  1776. #endif /* LINUX */
  1777. #endif /* AIX41 */
  1778. #endif /* SUNOS41 */
  1779. #endif /* UW7 */
  1780. #endif /* SOLARIS */
  1781. #endif /* BSDI */
  1782. #endif /* BSD44 */
  1783. #endif /* HPUX9 */
  1784. #endif /* HPUX10 */
  1785. #endif /* IRIX60 */
  1786. #endif /* OSF40 */
  1787. #endif /* OSF32 */
  1788. #endif /* DGUX540 */
  1789. #endif /* SINIX */
  1790. #endif /* QNX */
  1791. #endif /* CK_SCOV5 */
  1792. #endif /* NEXT */
  1793. #else /* NOPTY */
  1794. #ifdef NETPTY
  1795. #undef NETPTY
  1796. #endif /* NETPTY */
  1797. #endif /* NOPTY */
  1798. #ifdef NETPTY                           /* NETCMD required for NETPTY */
  1799. #ifndef NETCMD
  1800. #define NETCMD
  1801. #endif /* NETCMD */
  1802. #endif /* NETPTY */
  1803. #ifndef CK_UTSNAME /* Can we call uname()? */
  1804. #ifdef VMS
  1805. #define CK_UTSNAME
  1806. #else
  1807. #ifdef OS2
  1808. #define CK_UTSNAME
  1809. #else
  1810. #ifdef POSIX /* It's in POSIX.1 */
  1811. #define CK_UTSNAME
  1812. #else
  1813. #ifdef SUNOS41 /* It's in SunOS 4.1 */
  1814. #define CK_UTSNAME
  1815. #else
  1816. #ifdef AIXRS /* It's in AIX */
  1817. #define CK_UTSNAME
  1818. #else
  1819. #ifdef SVR4 /* It's in SVR4 (but not SVR3) */
  1820. #define CK_UTSNAME
  1821. #else
  1822. #ifdef HPUX /* It's in HP-UX 5.00 and later */
  1823. #define CK_UTSNAME
  1824. #else
  1825. #ifdef OSF /* It's in OSF/1 / Digital UNIX */
  1826. #define CK_UTSNAME
  1827. #else
  1828. #ifdef CK_SCOV5
  1829. #define CK_UTSNAME
  1830. #endif /* CK_SCOV5 */
  1831. #endif /* OSF */
  1832. #endif /* HPUX */
  1833. #endif /* SVR4 */
  1834. #endif /* AIXRS */
  1835. #endif /* SUNOS41 */
  1836. #endif /* POSIX */
  1837. #endif /* OS2 */
  1838. #endif /* VMS */
  1839. #endif /* CK_UTSNAME */
  1840. /* This section for anything that might use floating-point */
  1841. /* If the following causes trouble use -DFLOAT=float on the command line */
  1842. #ifndef NOFLOAT
  1843. #ifndef CKFLOAT
  1844. #ifdef __alpha
  1845. /* Don't use double on 64-bit platforms -- bad things happen */
  1846. #define CKFLOAT float
  1847. #define CKFLOAT_S "float"
  1848. #else
  1849. #define CKFLOAT double
  1850. #define CKFLOAT_S "double"
  1851. #endif /* __alpha */
  1852. #endif /* CKFLOAT */
  1853. #ifndef NOGFTIMER /* Floating-point timers */
  1854. #ifndef GFTIMER
  1855. #ifdef UNIX /* For UNIX */
  1856. #define GFTIMER
  1857. #endif /* UNIX */
  1858. #ifdef VMS /* VMS */
  1859. #ifndef OLD_VMS /* 5.0 and later */
  1860. #define GFTIMER
  1861. #endif /* OLD_VMS */
  1862. #endif /* VMS */
  1863. #ifdef OS2 /* And K95 */
  1864. #define GFTIMER
  1865. #endif /* OS2 */
  1866. #ifdef STRATUS /* And Stratus VOS */
  1867. #define GFTIMER
  1868. #endif /* STRATUS */
  1869. #endif /* GFTIMER */
  1870. #endif /* NOGFTIMER */
  1871. #ifdef NOSPL
  1872. #ifdef FNFLOAT
  1873. #undef FNFLOAT
  1874. #endif /* FNFLOAT */
  1875. #endif /* NOSPL */
  1876. #ifndef NOSPL
  1877. #ifndef FNFLOAT /* Floating-point math functions */
  1878. #ifdef VMS /* defined by default in VMS */
  1879. #define FNFLOAT
  1880. #else
  1881. #ifdef OS2 /* and K95 */
  1882. #define FNFLOAT
  1883. #endif /* OS2 */
  1884. #endif /* VMS */
  1885. #endif /* FNFLOAT */
  1886. #endif /* NOSPL */
  1887. #else  /* NOFLOAT is defined */
  1888. #ifdef CKFLOAT
  1889. #undef CKFLOAT
  1890. #endif /* CKFLOAT */
  1891. #ifdef GFTIMER
  1892. #undef GFTIMER
  1893. #endif /* GFTIMER */
  1894. #ifdef FNFLOAT
  1895. #undef FNFLOAT
  1896. #endif /* FNFLOAT */
  1897. #endif /* NOFLOAT */
  1898. #ifdef GFTIMER /* Fraction of second to use when */
  1899. #ifndef GFMINTIME /* elapsed time is <= 0 */
  1900. #define GFMINTIME 0.005
  1901. #endif /* GFMINTIME */
  1902. #endif /* GFTIMER */
  1903. #ifndef CKCMAI
  1904. extern long ztmsec, ztusec; /* Fraction of sec of current time */
  1905. #endif /* CKCMAI */
  1906. #ifndef NOUNPREFIXZERO /* Allow unprefixing of  NUL (0) */
  1907. #ifndef UNPREFIXZERO /* in file-transfer packets */
  1908. #define UNPREFIXZERO
  1909. #endif /* UNPREFIXZERO */
  1910. #endif /* NOUNPREFIXZERO */
  1911. #ifdef CK_SMALL
  1912. #define NOCAL /* Calibrate */
  1913. #endif /* CK_SMALL */
  1914. #ifndef NOPATTERNS /* Filetype matching patterns */
  1915. #ifndef PATTERNS
  1916. #ifndef VMS
  1917. #ifndef CK_SMALL
  1918. #define PATTERNS
  1919. #endif /* CK_SMALL */
  1920. #endif /* VMS */
  1921. #endif /* PATTERNS */
  1922. #endif /* NOPATTERNS */
  1923. #ifndef NOCAL
  1924. #ifndef CALIBRATE
  1925. #define CALIBRATE
  1926. #endif /* CALIBRATE */
  1927. #else
  1928. #ifdef CALIBRATE
  1929. #undef CALIBRATE
  1930. #endif /* CALIBRATE */
  1931. #endif /* NOCAL */
  1932. #ifndef NORECURSE /* Recursive directory traversal */
  1933. #ifndef RECURSIVE
  1934. #ifdef VMS
  1935. #define RECURSIVE
  1936. #else
  1937. #ifdef OS2ORUNIX
  1938. #ifndef CK_SMALL
  1939. #define RECURSIVE
  1940. #endif /* CK_SMALL */
  1941. #else
  1942. #ifdef STRATUS
  1943. #define RECURSIVE
  1944. #else
  1945. #ifdef OSK
  1946. #define RECURSIVE
  1947. #endif /* OSK */
  1948. #endif /* STRATUS */
  1949. #endif /* OS2ORUNIX */
  1950. #endif /* VMS */
  1951. #endif /* RECURSIVE */
  1952. #endif /* NORECURSE */
  1953. #ifndef CK_SMALL /* Enable file-transfer tuning code */
  1954. #ifndef CKTUNING /* in which more code is added */
  1955. #ifndef NOTUNING /* to avoid function calls, etc */
  1956. #define CKTUNING
  1957. #endif /* NOTUNING */
  1958. #endif /* CKTUNING */
  1959. #endif /* CK_SMALL */
  1960. #ifndef NOURL /* Parse URLs in SET HOST, etc */
  1961. #define CK_URL
  1962. #endif /* NOURL */
  1963. #ifndef NOTRIGGER
  1964. #ifndef CK_TRIGGER /* Trigger string to exit CONNECT */
  1965. #ifdef OS2ORUNIX /* OK for UNIX and K95 */
  1966. #define CK_TRIGGER
  1967. #else
  1968. #ifdef VMS /* and VMS */
  1969. #define CK_TRIGGER
  1970. #else
  1971. #ifdef datageneral /* and AOS/VS */
  1972. #define CK_TRIGGER
  1973. #endif /* datageneral */
  1974. #endif /* OS2ORUNIX */
  1975. #endif /* VMS */
  1976. #endif /* CK_TRIGGER */
  1977. #endif /* NOTRIGGER */
  1978. #ifdef CK_TRIGGER
  1979. #define TRIGGERS 8 /* How many triggers allowed */
  1980. #endif /* CK_TRIGGER */
  1981. #ifndef XLIMITS /* CONNECT limits */
  1982. #ifdef OS2
  1983. #define XLIMITS
  1984. #endif /* OS2 */
  1985. #endif /* XLIMITS */
  1986. #ifdef NOFRILLS
  1987. #ifndef NOBROWSER
  1988. #define NOBROWSER
  1989. #endif /* NOBROWSER */
  1990. #endif /* NOFRILLS */
  1991. #ifndef NOHTTP /* HTTP features need... */
  1992. #ifdef NOICP /* an interactive command parser */
  1993. #define NOHTTP
  1994. #endif /* NOICP */
  1995. #ifndef OS2ORUNIX /* K95 or UNIX (because of */
  1996. #define NOHTTP /* time functions, time_t, etc) */
  1997. #endif /* OS2ORUNIX */
  1998. #endif /* NOHTTP */
  1999. /* The HTTP code is not very portable, so it must be asked for with -DCKHTTP */
  2000. #ifndef NONET
  2001. #ifdef TCPSOCKET
  2002. #ifndef NOHTTP
  2003. #ifndef CKHTTP
  2004. #ifdef SUNOS4 /* We can use it in SunOS */
  2005. #define CKHTTP
  2006. #endif /* SUNOS4 */
  2007. #ifdef SOLARIS /* And in Solaris */
  2008. #define CKHTTP
  2009. #endif /* SOLARIS */
  2010. #ifdef LINUX /* And Linux */
  2011. #define CKHTTP
  2012. #endif /* LINUX */
  2013. #ifdef HPUX10 /* And HP-UX 10 and above */
  2014. #define CKHTTP
  2015. #endif /* HPUX10 */
  2016. #ifdef OS2 /* And in K-95 */
  2017. #define CKHTTP
  2018. #endif /* OS2 */
  2019. #ifdef AIX41 /* In AIX 4.1 and higher */
  2020. #define CKHTTP
  2021. #endif /* AIX41 */
  2022. #ifdef UNIXWARE /* In Unixware 2.1 and higher */
  2023. #define CKHTTP /* and probably also in 1.x and 2.0 */
  2024. #endif /* UNIXWARE */
  2025. /* Add more here... */
  2026. #endif /* CKHTTP */
  2027. #ifndef CKHTTP /* If CKHTTP not defined yet */
  2028. #define NOHTTP /* then define HOHTTP */
  2029. #endif /* CKHTTP */
  2030. #endif /* NOHTTP */
  2031. #ifndef NOBROWSER
  2032. #ifdef UNIX
  2033. #ifndef BROWSER
  2034. #ifndef NOPUSH
  2035. #define BROWSER
  2036. #endif /* NOPUSH */
  2037. #endif /* BROWSER */
  2038. #endif /* UNIX */
  2039. #ifdef OS2
  2040. #ifndef BROWSER
  2041. #ifndef NOPUSH
  2042. #define BROWSER
  2043. #endif /* NOPUSH */
  2044. #endif /* BROWSER */
  2045. #endif /* OS2 */
  2046. #else
  2047. #ifdef BROWSER
  2048. #undef BROWSER
  2049. #endif /* BROWSER */
  2050. #endif /* NOBROWSER */
  2051. #endif /* TCPSOCKET */
  2052. #endif /* NONET */
  2053. #ifdef TCPSOCKET
  2054. #ifdef CK_SOCKS5 /* CK_SOCKS5 implies CK_SOCKS */
  2055. #ifndef CK_SOCKS
  2056. #define CK_SOCKS
  2057. #endif /* CK_SOCKS */
  2058. #endif /* CK_SOCKS5 */
  2059. #ifndef CK_AUTHENTICATION
  2060. #ifdef OS2
  2061. #ifdef OS2ONLY
  2062. #define NO_KERBEROS
  2063. #endif /* OS2ONLY */
  2064. #ifndef NO_KERBEROS
  2065. #define CK_KERBEROS
  2066. #define KRB4
  2067. #define KRB5
  2068. #endif /* NO_KERBEROS */
  2069. #ifndef _M_PPC
  2070. #ifndef _M_ALPHA
  2071. #ifndef NO_ENCRYPTION
  2072. #ifndef NO_SSL
  2073. #define CK_SSL
  2074. #define SSLDLL
  2075. #endif /* NO_SSL */
  2076. #endif /* NO_ENCRYPTION */
  2077. #endif /* _M_ALPHA */
  2078. #endif /* _M_PPC */
  2079. #ifndef NO_SRP
  2080. #define CK_SRP
  2081. #endif /* NO_SRP */
  2082. #define CK_AUTHENTICATION
  2083. #endif /* OS2 */
  2084. #endif /* CK_AUTHENTICATION */
  2085. #ifdef CK_AUTHENTICATION /* Encryption must have Auth */
  2086. #ifndef CK_ENCRYPTION
  2087. #ifndef NO_ENCRYPTION
  2088. #ifdef OS2
  2089. #define CK_ENCRYPTION
  2090. #endif /* OS2 */
  2091. #endif /* NO_ENCRYPTION */
  2092. #endif /* CK_ENCRYPTION */
  2093. #endif /* CK_AUTHENTICATION */
  2094. #ifdef COMMENT
  2095. #ifndef NO_KERBEROS
  2096. #ifndef CK_KERBEROS /* Temporary: for testing */
  2097. #ifdef UNIX /* This enables only parsing */
  2098. #define CK_KERBEROS
  2099. #endif /* UNIX */
  2100. #endif /* CK_KERBEROS */
  2101. #endif /* NO_KERBEROS */
  2102. #endif /* COMMENT */
  2103. #ifdef NO_AUTHENTICATION                /* Allow authentication to be */
  2104. #ifdef CK_AUTHENTICATION                /* disabled in NT and OS/2    */
  2105. #undef CK_AUTHENTICATION
  2106. #endif /* CK_AUTHENTICATION */
  2107. #ifdef CK_KERBEROS
  2108. #undef CK_KERBEROS
  2109. #endif /* CK_KERBEROS */
  2110. #ifdef CK_SRP
  2111. #undef CK_SRP
  2112. #endif /* CK_SRP */
  2113. #ifdef CK_ENCRYPTION
  2114. #undef CK_ENCRYPTION
  2115. #endif /* CK_ENCRYPTION */
  2116. #endif /* NO_AUTHENTICATION */
  2117. #ifdef NO_ENCRYPTION                    /* Allow encryption to be */
  2118. #ifdef CK_ENCRYPTION                    /* disabled in NT and OS/2 */
  2119. #undef CK_ENCRYPTION
  2120. #endif /* CK_ENCRYPTION */
  2121. #endif /* NO_ENCRYPTION */
  2122. #ifndef OS2ORUNIX
  2123. #ifndef NOPUTENV
  2124. #define NOPUTENV
  2125. #endif /* NOPUTENV */
  2126. #endif /* OS2ORUNIX */
  2127. #ifndef CK_ENVIRONMENT
  2128. #ifdef OS2
  2129. #define CK_ENVIRONMENT
  2130. #else
  2131. #ifdef UNIX
  2132. #define CK_ENVIRONMENT
  2133. #else
  2134. #ifdef STRATUS
  2135. #define CK_ENVIRONMENT
  2136. #else
  2137. #ifdef VMS
  2138. #define CK_ENVIRONMENT
  2139. #endif /* VMS */
  2140. #endif /* STRATUS */
  2141. #endif /* UNIX */
  2142. #endif /* OS2 */
  2143. #endif /* CK_ENVIRONMENT */
  2144. #ifndef NOSNDLOC /* RFC 779 SEND LOCATION */
  2145. #ifndef CK_SNDLOC
  2146. #define CK_SNDLOC
  2147. #endif /* CK_SNDLOC */
  2148. #endif /* NOSNDLOC */
  2149. #ifndef NOXDISPLOC /* RFC 1096 XDISPLOC */
  2150. #ifndef CK_XDISPLOC
  2151. #define CK_XDISPLOC
  2152. #endif /* CK_XDISPLOC */
  2153. #endif /* NOXDISPLOC */
  2154. #ifndef NOFORWARDX
  2155. #ifndef NOPUTENV
  2156. #ifndef NOSELECT
  2157. #ifndef CK_FORWARD_X
  2158. #ifdef NT /* EXPERIMENTAL */
  2159. #define CK_FORWARD_X
  2160. #endif /* NT */
  2161. #endif /* CK_FORWARD_X */
  2162. #endif /* NOSELECT */
  2163. #endif /* NOPUTENV */
  2164. #endif /* NOFORWARDX */
  2165. #endif /* TCPSOCKET */
  2166. #ifndef NOCTRLZ /* Allow SET FILE EOF CTRL-Z */
  2167. #ifndef CK_CTRLZ
  2168. #ifdef OS2
  2169. #define CK_CTRLZ
  2170. #endif /* OS2 */
  2171. #endif /* CK_CTRLZ */
  2172. #endif /* NOCTRLZ */
  2173. #ifndef NOPERMS /* File permissions in A packets */
  2174. #ifndef CK_PERMS
  2175. #ifdef UNIX
  2176. #define CK_PERMS
  2177. #else
  2178. #ifdef VMS
  2179. #define CK_PERMS
  2180. #endif /* VMS */
  2181. #endif /* UNIX */
  2182. #endif /* CK_PERMS */
  2183. #endif /* NOPERMS */
  2184. #ifdef CK_PERMS
  2185. #define CK_PERMLEN 24 /* Max length of sys-dependent perms */
  2186. #endif /* CK_PERMS */
  2187. #ifdef UNIX /* NOSETBUF for everybody */
  2188. #ifndef NOSETBUF
  2189. #ifndef USE_SETBUF /* This is the escape clause */
  2190. #define NOSETBUF
  2191. #endif /* USE_SETBUF */
  2192. #endif /* NOSETBUF */
  2193. #endif /* UNIX */
  2194. #ifndef USE_STRERROR /* Whether to use strerror() */
  2195. #ifdef pdp11
  2196. #define USE_STRERROR
  2197. #endif /* pdp11 */
  2198. #endif /* USE_STRERROR */
  2199. #ifdef VMS /* Features for all VMS builds */
  2200. #ifndef NOJC
  2201. #define NOJC
  2202. #endif /* NOJC */
  2203. #ifndef NOSETBUF
  2204. #define NOSETBUF
  2205. #endif /* NOSETBUF */
  2206. #ifndef DYNAMIC
  2207. #define DYNAMIC
  2208. #endif /* DYNAMIC */
  2209. #ifndef NOCURSES
  2210. #ifndef CK_CURSES
  2211. #define CK_CURSES
  2212. #endif /* CK_CURSES */
  2213. #endif /* NOCURSES */
  2214. #endif /* VMS */
  2215. #ifndef NOCKTIMERS /* Dynamic timeouts */
  2216. #ifndef CK_TIMERS
  2217. #define CK_TIMERS
  2218. #endif /* CK_TIMERS */
  2219. #endif /* NOCKTIMERS */
  2220. #define CK_SPEED /* Control-prefix removal */
  2221. #ifdef NOCKSPEED
  2222. #undef CK_SPEED
  2223. #endif /* NOCKSPEED */
  2224. #ifndef NOCKXXCHAR
  2225. #ifndef CKXXCHAR
  2226. #ifdef UNIX
  2227. #define CKXXCHAR
  2228. #else
  2229. #ifdef OS2
  2230. #define CKXXCHAR
  2231. #endif /* OS2 */
  2232. #endif /* UNIX */
  2233. #endif /* CKXXCHAR */
  2234. #endif /* NOCKXXCHAR */
  2235. #ifdef MAC /* For Macintosh, no escape */
  2236. #define NOPUSH /* to operating system */
  2237. #endif /* MAC */
  2238. /* Systems where we can call zmkdir() to create directories. */
  2239. #ifndef CK_MKDIR
  2240. #ifndef NOMKDIR
  2241. #ifdef UNIX
  2242. #ifndef pdp11
  2243. #define CK_MKDIR
  2244. #endif /* pdp11 */
  2245. #endif /* UNIX */
  2246. #ifdef OS2
  2247. #define CK_MKDIR
  2248. #endif /* OS2 */
  2249. #ifdef VMS
  2250. #define CK_MKDIR
  2251. #endif /* VMS */
  2252. #ifdef STRATUS
  2253. #define CK_MKDIR
  2254. #endif /* STRATUS */
  2255. #ifdef OSK
  2256. #define CK_MKDIR
  2257. #endif /* OSK */
  2258. #ifdef datageneral
  2259. #define CK_MKDIR
  2260. #endif /* datageneral */
  2261. #endif /* CK_MKDIR */
  2262. #endif /* NOMKDIR */
  2263. #ifdef NOMKDIR /* Allow for command-line override */
  2264. #ifdef CK_MKDIR
  2265. #undef CK_MKDIR
  2266. #endif /* CK_MKDIR */
  2267. #endif /* NOMKDIR */
  2268. /* Systems for which we can enable the REDIRECT command automatically */
  2269. /*   As of 6.0.193, it should work for all UNIX... */
  2270. #ifndef NOREDIRECT
  2271. #ifndef CK_REDIR
  2272. #ifdef UNIX
  2273. #define CK_REDIR
  2274. #endif /* UNIX */
  2275. #ifdef OS2 /* As well as OS/2 and friends... */
  2276. #define CK_REDIR
  2277. #endif /* OS2 */
  2278. #endif /* CK_REDIR */
  2279. #endif /* NOREDIRECT */
  2280. #ifdef NOPUSH /* But... REDIRECT command is not */
  2281. #ifdef CK_REDIR /*  allowed if NOPUSH is defined. */
  2282. #undef CK_REDIR
  2283. #endif /* CK_REDIR */
  2284. #ifdef NETCMD /* Nor is SET NET COMMAND */
  2285. #undef NETCMD
  2286. #endif /* NETCMD */
  2287. #ifdef NETPTY
  2288. #undef NETPTY
  2289. #endif /* NETPTY */
  2290. #endif /* NOPUSH */
  2291. #ifndef PEXITSTAT /* v(pexitstat) variable defined */
  2292. #ifdef OS2ORUNIX
  2293. #define PEXITSTAT
  2294. #else
  2295. #ifdef VMS
  2296. #define PEXITSTAT
  2297. #endif /* VMS */
  2298. #endif /* OS2ORUNIX */
  2299. #endif /* PEXITSTAT */
  2300. /* The following allows automatic enabling of REDIRECT to be overridden... */
  2301. #ifdef NOREDIRECT
  2302. #ifdef NETCMD
  2303. #undef NETCMD
  2304. #endif /* NETCMD */
  2305. #ifdef NETPTY
  2306. #undef NETPTY
  2307. #endif /* NETPTY */
  2308. #ifdef CK_REDIR
  2309. #undef CK_REDIR
  2310. #endif /* CK_REDIR */
  2311. #endif /* NOREDIRECT */
  2312. #ifdef NONETCMD
  2313. #ifdef NETCMD
  2314. #undef NETCMD
  2315. #endif /* NETCMD */
  2316. #ifdef NETPTY
  2317. #undef NETPTY
  2318. #endif /* NETPTY */
  2319. #endif /* NONETCMD */
  2320. #ifdef CK_REDIR
  2321. _PROTOTYP( int ttruncmd, (char *) );
  2322. #endif /* CK_REDIR */
  2323. /* Use built-in DIRECTORY command */
  2324. #ifndef NOMYDIR
  2325. #ifndef DOMYDIR
  2326. #ifdef UNIXOROSK
  2327. #define DOMYDIR
  2328. #else
  2329. #ifdef OS2
  2330. #define DOMYDIR
  2331. #else
  2332. #ifdef VMS
  2333. #define DOMYDIR
  2334. #endif /* VMS */
  2335. #endif /* OS2 */
  2336. #endif /* UNIXOROSK */
  2337. #endif /* DOMYDIR */
  2338. #endif /* NOMYDIR */
  2339. /* Sending from and receiving to commands/pipes */
  2340. #ifndef PIPESEND
  2341. #ifdef UNIX
  2342. #define PIPESEND
  2343. #endif /* UNIX */
  2344. #ifdef OS2
  2345. #define PIPESEND
  2346. #endif /* OS2 */
  2347. #endif /* PIPESEND */
  2348. #ifdef PIPESEND
  2349. #ifdef NOPIPESEND
  2350. #undef PIPESEND
  2351. #endif /* NOPIPESEND */
  2352. #ifdef NOPUSH
  2353. #undef PIPESEND
  2354. #endif /* NOPUSH */
  2355. #endif /* PIPESEND */
  2356. #ifdef NOPUSH
  2357. #ifdef BROWSER
  2358. #undef BROWSER
  2359. #endif /* BROWSER */
  2360. #endif /* NOPUSH */
  2361. /* Versions where we support the RESEND command */
  2362. #ifndef NORESEND
  2363. #ifndef CK_RESEND
  2364. #ifdef UNIX
  2365. #ifndef pdp11
  2366. #define CK_RESEND
  2367. #endif /* pdp11 */
  2368. #endif /* UNIX */
  2369. #ifdef VMS
  2370. #define CK_RESEND
  2371. #endif /* VMS */
  2372. #ifdef OS2
  2373. #define CK_RESEND
  2374. #endif /* OS2 */
  2375. #ifdef AMIGA
  2376. #define CK_RESEND
  2377. #endif /* AMIGA */
  2378. #ifdef datageneral
  2379. #define CK_RESEND
  2380. #endif /* datageneral */
  2381. #ifdef STRATUS
  2382. #define CK_RESEND
  2383. #endif /* STRATUS */
  2384. #ifdef OSK
  2385. #define CK_RESEND
  2386. #endif /* OSK */
  2387. #endif /* CK_RESEND */
  2388. #endif /* NORESEND */
  2389. /* Systems implementing "Doomsday Kermit" protocol ... */
  2390. #ifndef DOOMSDAY
  2391. #ifdef UNIX
  2392. #define DOOMSDAY
  2393. #else
  2394. #ifdef VMS
  2395. #define DOOMSDAY
  2396. #else
  2397. #ifdef OS2
  2398. #define DOOMSDAY
  2399. #else
  2400. #ifdef STRATUS
  2401. #define DOOMSDAY
  2402. #endif /* STRATUS */
  2403. #endif /* OS2 */
  2404. #endif /* VMS */
  2405. #endif /* UNIX */
  2406. #endif /* DOOMSDAY */
  2407. /* Systems where we want the Thermometer to be used for fullscreen */
  2408. #ifdef OS2
  2409. #ifndef CK_PCT_BAR
  2410. #define CK_PCT_BAR
  2411. #endif /* CK_PCT_BAR */
  2412. #endif /* OS2 */
  2413. /* Systems where we have a REXX command */
  2414. #ifdef OS2
  2415. #ifdef __32BIT__
  2416. #ifndef NOREXX
  2417. #define CK_REXX
  2418. #endif /* NOREXX */
  2419. #endif /* __32BIT__ */
  2420. #endif /* OS2 */
  2421. /* Platforms that have a ZCHKPID function */
  2422. #ifdef OS2ORUNIX
  2423. #define ZCHKPID
  2424. #endif /* OS2ORUNIX */
  2425. #ifndef ZCHKPID
  2426. /* If we can't check pids then we have treat all pids as active & valid. */
  2427. #define zchkpid(x) 1
  2428. #endif /* ZCHKPID */
  2429. /* Systems that have a ZRENAME function */
  2430. #define ZRENAME /* They all do */
  2431. /* Systems that have a ZCOPY function */
  2432. #ifndef ZCOPY
  2433. #ifdef VMS
  2434. #define ZCOPY
  2435. #else
  2436. #ifdef OS2
  2437. #define ZCOPY
  2438. #else
  2439. #ifdef UNIX
  2440. #define ZCOPY
  2441. #else
  2442. #ifdef STRATUS
  2443. #define ZCOPY
  2444. #endif /* STRATUS */
  2445. #endif /* UNIX */
  2446. #endif /* OS2 */
  2447. #endif /* VMS */
  2448. #endif /* ZCOPY */
  2449. /* Systems that have ttgwsiz() (they all should but they don't) */
  2450. #ifndef NOTTGWSIZ
  2451. #ifndef CK_TTGWSIZ
  2452. #ifdef UNIX
  2453. #define CK_TTGWSIZ
  2454. #else
  2455. #ifdef VMS
  2456. #define CK_TTGWSIZ
  2457. #else
  2458. #ifdef OS2
  2459. #define CK_TTGWSIZ
  2460. #else
  2461. #ifdef OSK
  2462. #define CK_TTGWSIZ
  2463. #endif /* OSK */
  2464. #endif /* OS2 */
  2465. #endif /* VMS */
  2466. #endif /* UNIX */
  2467. #endif /* CK_TTGWSIZ */
  2468. #endif /* NOTTGWSIZ */
  2469. #ifdef NOTTGWSIZ
  2470. #ifdef CK_TTGWSIZ
  2471. #undef CK_TTGWSIZ
  2472. #endif /* CK_TTGWSIZ */
  2473. #endif /* NOTTGWSIZ */
  2474. /* OS/2 C-Kermit features not available in 16-bit version... */
  2475. #ifdef OS2
  2476. #ifndef __32BIT__
  2477. #ifdef PCFONTS /* PC Font support */
  2478. #undef PCFONTS
  2479. #endif /* PCFONTS */
  2480. #ifdef NPIPE /* Named Pipes communication */
  2481. #undef NPIPE
  2482. #endif /* NPIPE */
  2483. #ifdef CK_NETBIOS /* NETBIOS communication */
  2484. #undef CK_NETBIOS
  2485. #endif /* CK_NETBIOS */
  2486. #ifdef OS2MOUSE /* Mouse */
  2487. #undef OS2MOUSE
  2488. #endif /* OS2MOUSE */
  2489. #ifdef OS2PM /* Presentation Manager */
  2490. #undef OS2PM
  2491. #endif /* OS2PM */
  2492. #ifdef CK_REXX /* Rexx */
  2493. #undef CK_REXX
  2494. #endif /* CK_REXX */
  2495. #endif /* __32BIT__ */
  2496. #endif /* OS2 */
  2497. /* OS/2 C-Kermit features not available in Windows NT version... */
  2498. #ifdef OS2
  2499. #ifdef NT
  2500. #ifdef PCFONTS /* PC Font support */
  2501. #undef PCFONTS
  2502. #endif /* PCFONTS */
  2503. #ifdef NPIPE /* Named Pipes communication */
  2504. #undef NPIPE
  2505. #endif /* NPIPE */
  2506. #ifdef OS2PM /* Presentation Manager */
  2507. #undef OS2PM
  2508. #endif /* OS2PM */
  2509. #ifdef CK_REXX /* Rexx */
  2510. #undef CK_REXX
  2511. #endif /* CK_REXX */
  2512. #endif /* NT */
  2513. #endif /* OS2 */
  2514. /*
  2515.   Systems that have select().
  2516.   This is used for both msleep() and for read-buffer checking in in_chk().
  2517. */
  2518. #define CK_SLEEPINT 250 /* milliseconds - set this to something that
  2519.                            divides evenly into 1000 */
  2520. #ifndef SELECT
  2521. #ifndef NOSELECT
  2522. #ifdef __linux__
  2523. #define SELECT
  2524. #else
  2525. #ifdef SUNOS4
  2526. #define SELECT
  2527. #else
  2528. #ifdef NEXT
  2529. #define SELECT
  2530. #else
  2531. #ifdef HPUX
  2532. /*
  2533.   Not really.  I think it's only in HP-UX 7.0 and later, except it's also
  2534.   in earlier versions that have TCP/IP installed.  Override this default
  2535.   in particular HP-UX makefile entries by adding -DNOSELECT, as in (e.g.)
  2536.   the HP-UX 6.5 ones.
  2537. */
  2538. #define SELECT
  2539. #else
  2540. #ifdef AIXRS
  2541. #define SELECT
  2542. #else
  2543. #ifdef BSD44
  2544. #define SELECT
  2545. #else
  2546. #ifdef BSD4
  2547. #define SELECT
  2548. #else
  2549. #ifdef OXOS
  2550. #define SELECT
  2551. #else
  2552. #ifdef OS2
  2553. #define SELECT
  2554. #else
  2555. #ifdef BEBOX
  2556. #define SELECT
  2557. #endif /* BEBOX */
  2558. #endif /* OS2 */
  2559. #endif /* OXOS */
  2560. #endif /* BSD4 */
  2561. #endif /* BSD44 */
  2562. #endif /* AIXRS */
  2563. #endif /* HPUX */
  2564. #endif /* NEXT */
  2565. #endif /* __linux__ */
  2566. #endif /* SUNOS4 */
  2567. #endif /* NOSELECT */
  2568. #endif /* SELECT */
  2569. /*
  2570.   The following section moved here from ckcnet.h in 6.1 because select()
  2571.   is now used for non-networking purposes.
  2572. */
  2573. /* On HP-9000/500 HP-UX 5.21 this stuff is not defined in any header file */
  2574. #ifdef hp9000s500
  2575. #ifndef NEEDSELECTDEFS
  2576. #define NEEDSELECTDEFS
  2577. #endif /* NEEDSELECTDEFS */
  2578. #endif /* hp9000s500 */
  2579. #ifdef NEEDSELECTDEFS
  2580. typedef long fd_mask;
  2581. #ifndef NBBY
  2582. #define NBBY 8
  2583. #endif /* NBBY */
  2584. #ifndef FD_SETSIZE
  2585. #define FD_SETSIZE 32
  2586. #endif /* FD_SETSIZE */
  2587. #ifndef NFDBITS
  2588. #define NFDBITS (sizeof(fd_mask) * NBBY)
  2589. #endif /* NFDBITS */
  2590. #ifndef howmany
  2591. #define howmany(x,y) (((x)+((y)-1))/(y))
  2592. #endif /* howmany */
  2593. typedef struct fd_set {
  2594.     fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
  2595. } fd_set;
  2596. #ifndef FD_SET
  2597. #define FD_SET(n,p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
  2598. #endif /* FD_SET */
  2599. #ifndef FD_CLR
  2600. #define FD_CLR(n,p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
  2601. #endif /* FD_CLR */
  2602. #ifndef FD_ISSET
  2603. #define FD_ISSET(n,p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
  2604. #endif /* FD_ISSET */
  2605. #ifndef FD_COPY
  2606. #define FD_COPY(f,t) (bcopy(f,t,sizeof(*(f)))
  2607. #endif /* FD_COPY */
  2608. #ifndef FD_ZERO
  2609. #define FD_ZERO(p) bzero((char *)(p),sizeof(*(p)))
  2610. #endif /* FD_ZERO */
  2611. #endif /* NEEDSELECTDEFS */
  2612. /*
  2613.   CK_NEED_SIG is defined if the system cannot check the console to
  2614.   to see if characters are waiting.  This is used during local-mode file
  2615.   transfer to interrupt the transfer, refresh the screen display, etc.
  2616.   If CK_NEED_SIG is defined, then file-transfer interruption characters
  2617.   have to be preceded a special character, e.g. the SIGQUIT character.
  2618.   CK_NEED_SIG should be defined if the conchk() function is not operational.
  2619. */
  2620. #ifdef NOPOLL /* For overriding CK_POLL definition */
  2621. #ifdef CK_POLL
  2622. #undef CK_POLL
  2623. #endif /* CK_POLL */
  2624. #endif /* NOPOLL */
  2625. #ifndef CK_POLL /* If we don't have poll() */
  2626. #ifndef RDCHK /* And we don't have rdchk() */
  2627. #ifndef SELECT /* And we don't have select() */
  2628. #ifdef ATTSV
  2629. #ifndef aegis
  2630. #ifndef datageneral
  2631. #ifndef OXOS
  2632. #define CK_NEED_SIG
  2633. #endif /* OXOS */
  2634. #endif /* datageneral */
  2635. #endif /* aegis */
  2636. #endif /* ATTSV */
  2637. #ifdef POSIX
  2638. #ifndef CK_NEED_SIG
  2639. #define CK_NEED_SIG
  2640. #endif /* CK_NEED_SIG */
  2641. #endif /* POSIX */
  2642. #endif /* SELECT */
  2643. #endif /* RDCHK */
  2644. #endif /* CK_POLL */
  2645. #ifdef HPUX /* HP-UX has select() */
  2646. #ifdef CK_NEED_SIG
  2647. #undef CK_NEED_SIG
  2648. #endif /* CK_NEED_SIG */
  2649. #endif /* HPUX */
  2650. #ifdef AIXRS /* AIX has select() */
  2651. #ifdef CK_NEED_SIG
  2652. #undef CK_NEED_SIG
  2653. #endif /* CK_NEED_SIG */
  2654. #endif /* AIXRS */
  2655. #ifdef BSD44 /* 4.4BSD has FIONREAD */
  2656. #ifdef CK_NEED_SIG
  2657. #undef CK_NEED_SIG
  2658. #endif /* CK_NEED_SIG */
  2659. #endif /* BSD44 */
  2660. #ifdef QNX /* QNX has FIONREAD and select() */
  2661. #ifdef CK_NEED_SIG
  2662. #undef CK_NEED_SIG
  2663. #endif /* CK_NEED_SIG */
  2664. #endif /* QNX */
  2665. #ifdef COHERENT
  2666. #ifndef NOTIMEZONE
  2667. #define NOTIMEZONE
  2668. #endif /* NOTIMEZONE */
  2669. #endif /* COHERENT */
  2670. #ifdef UNIX
  2671. #ifndef HAVE_TZ /* Can we use struct timezone? */
  2672. #ifndef NOTIMEZONE
  2673. #ifdef PTX
  2674. #define NOTIMEZONE
  2675. #else
  2676. #ifndef SELECT
  2677. #ifdef COHERENT
  2678. #define NOTIMEZONE
  2679. #else
  2680. #ifdef BELLV10
  2681. #define NOTIMEZONE
  2682. #endif /* BELLV10 */
  2683. #endif /* COHERENT */
  2684. #endif /* SELECT */
  2685. #endif /* PTX */
  2686. #endif /* NOTIMEZONE */
  2687. #endif /* HAVE_TZ */
  2688. #ifndef NOTIMEVAL /* Can we use struct timeval? */
  2689. #ifndef HAVE_TV
  2690. #define HAVE_TV
  2691. #endif /* HAVE_TV */
  2692. #endif /* NOTIMEVAL */
  2693. #ifndef NOTIMEZONE
  2694. #ifndef HAVE_TZ
  2695. #define HAVE_TZ
  2696. #endif /* HAVE_TZ */
  2697. #endif /* NOTIMEZONE */
  2698. #endif /* UNIX */
  2699. #ifdef SCO32
  2700. #ifdef HAVE_TV
  2701. #undef HAVE_TV
  2702. #endif /* HAVE_TV */
  2703. #ifdef HAVE_TZ
  2704. #undef HAVE_TZ
  2705. #endif /* HAVE_TZ */
  2706. #ifndef NOTIMEVAL
  2707. #define NOTIMEVAL
  2708. #endif /* NOTIMEVAL */
  2709. #ifndef NOTIMEZONE
  2710. #define NOTIMEZONE
  2711. #endif /* NOTIMEZONE */
  2712. #endif /* SCO32 */
  2713. #ifdef ATT7300
  2714. #ifdef HAVE_TV
  2715. #undef HAVE_TV
  2716. #endif /* HAVE_TV */
  2717. #ifdef HAVE_TZ
  2718. #undef HAVE_TZ
  2719. #endif /* HAVE_TZ */
  2720. #ifndef NOTIMEVAL
  2721. #define NOTIMEVAL
  2722. #endif /* NOTIMEVAL */
  2723. #ifndef NOTIMEZONE
  2724. #define NOTIMEZONE
  2725. #endif /* NOTIMEZONE */
  2726. #endif /* ATT7300 */
  2727. /*
  2728.   Automatic parity detection.
  2729.   This actually implies a lot more now: length-driven packet reading,
  2730.   "Doomsday Kermit" IBM Mainframe file transfer through 3270 data streams, etc.
  2731. */
  2732. #ifdef UNIX /* For Unix */
  2733. #ifndef NOPARSEN
  2734. #define PARSENSE
  2735. #endif /* NOPARSEN */
  2736. #endif /* UNIX */
  2737. #ifdef VMS /* ... and VMS */
  2738. #ifndef NOPARSEN
  2739. #define PARSENSE
  2740. #endif /* NOPARSEN */
  2741. #ifdef __GNUC__
  2742. #define VMSGCC
  2743. #endif /* __GNUC__ */
  2744. #endif /* VMS */
  2745. #ifdef MAC /* and Macintosh */
  2746. #ifndef NOPARSEN
  2747. #define PARSENSE
  2748. #endif /* NOPARSEN */
  2749. #endif /* MAC */
  2750. #ifdef STRATUS /* and Stratus VOS */
  2751. #ifndef NOPARSEN
  2752. #define PARSENSE
  2753. #endif /* NOPARSEN */
  2754. #endif /* STRATUS */
  2755. #ifdef OS2 /* and OS/2, finally */
  2756. #ifndef NOPARSEN
  2757. #define PARSENSE
  2758. #endif /* NOPARSEN */
  2759. #endif /* OS2 */
  2760. #ifndef NODYNAMIC /* DYNAMIC is default for UNIX */
  2761. #ifndef DYNAMIC /* as of C-Kermit 7.0 */
  2762. #ifdef UNIX
  2763. #define DYNAMIC
  2764. #endif /* UNIX */
  2765. #endif /* DYNAMIC */
  2766. #endif /* NODYNAMIC */
  2767. #ifdef DYNAMIC /* If DYNAMIC is defined */
  2768. #define DCMDBUF /* then also define this. */
  2769. #endif /* DYNAMIC */
  2770. #ifndef CK_LBRK /* Can send Long BREAK */
  2771. #ifdef UNIX /* (everybody but OS-9) */
  2772. #define CK_LBRK
  2773. #endif /* UNIX */
  2774. #ifdef VMS
  2775. #define CK_LBRK
  2776. #endif /* VMS */
  2777. #ifdef datageneral
  2778. #define CK_LBRK
  2779. #endif /* datageneral */
  2780. #ifdef GEMDOS
  2781. #define CK_LBRK
  2782. #endif /* GEMDOS */
  2783. #ifdef OS2
  2784. #define CK_LBRK
  2785. #endif /* OS2 */
  2786. #ifdef AMIGA
  2787. #define CK_LBRK
  2788. #endif /* AMIGA */
  2789. #ifdef STRATUS
  2790. #define CK_LBRK
  2791. #endif /* STRATUS */
  2792. #endif /* CK_LBRK */
  2793. /* Carrier treatment */
  2794. /* These are defined here because they are shared by the system dependent */
  2795. /* and the system independent modules. */
  2796. #define  CAR_OFF 0 /* Off: ignore carrier always. */
  2797. #define  CAR_ON  1      /* On: heed carrier always, except during DIAL. */
  2798. #define  CAR_AUT 2      /* Auto: heed carrier, but only if line is declared */
  2799. /* to be a modem line, and only during CONNECT. */
  2800. /* And more generically (for use with any ON/OFF/AUTO feature) */
  2801. #define  CK_OFF  0
  2802. #define  CK_ON   1
  2803. #define  CK_AUTO 2
  2804. #ifndef NOLOCAL
  2805. /*
  2806.   Serial interface speeds available.
  2807.   As of C-Kermit 6.1 there is a new method to get the supported
  2808.   speeds, which obviates the need for all the craziness below.  At runtime,
  2809.   just call the new ttspdlist() routine to get a list of supported speeds.
  2810.   Then the user interface module can build a keyword table or menu from it.
  2811. */
  2812. #ifndef TTSPDLIST
  2813. #ifdef UNIX /* For now, only for UNIX */
  2814. #ifndef OLINUXHISPEED /* But not systems with hacks for */
  2815. #ifndef MINIX /* high speeds, like 110 = 115200 */
  2816. #define TTSPDLIST
  2817. #endif /* MINIX */
  2818. #endif /* OLINUXHISPEED */
  2819. #else
  2820. #ifdef VMS
  2821. #define TTSPDLIST /* VMS gets it too */
  2822. #endif /* VMS */
  2823. #endif /* UNIX */
  2824. #endif /* TTSPDLIST */
  2825. #ifndef NODIAL /* Hangup by modem command */
  2826. #ifndef NOMDMHUP
  2827. #ifndef MDMHUP
  2828. #define MDMHUP
  2829. #endif /* MDMHUP */
  2830. #endif /* NOMDMHUP */
  2831. #endif /* NODIAL */
  2832. #ifdef NOSPL
  2833. #ifndef NOLOGDIAL /* Connection log needs mjd(), etc. */
  2834. #define NOLOGDIAL
  2835. #endif /* NOLOGDIAL */
  2836. #endif /* NOSPL */
  2837. #ifdef pdp11
  2838. #define NOLOGDIAL
  2839. #endif /* pdp11 */
  2840. #ifndef NOLOGDIAL /* Connection log */
  2841. #ifndef CXLOGFILE
  2842. #define CXLOGFILE "CX.LOG" /* Default connection log file name */
  2843. #endif /* CXLOGFILE */
  2844. #ifndef CKLOGDIAL
  2845. #ifndef CK_SMALL
  2846. #define CKLOGDIAL
  2847. #define CXLOGBUFL 1024 /* Connection log record buffer size */
  2848. #endif /* CK_SMALL */
  2849. #endif /* NOLOGDIAL */
  2850. #endif /* CKLOGDIAL */
  2851. #endif /* NOLOCAL */
  2852. #ifdef NOTTSPDLIST /* Except if NOTTSPDLIST is defined */
  2853. #ifdef TTSPDLIST
  2854. #undef TTSPDLIST
  2855. #endif /* TTSPDLIST */
  2856. #endif /* NOTTSPDLIST */
  2857. #ifdef TTSPDLIST
  2858. _PROTOTYP( long * ttspdlist, (void) );
  2859. #else /* TTSPDLIST not defined */
  2860. /*
  2861.   We must use a long and convoluted series of #ifdefs that have to be kept in
  2862.   sync with the code in the ck?tio.c module.
  2863.   We assume that everybody supports: 0, 110, 300, 600, 1200, 2400, 4800, and
  2864.   9600 bps.  Symbols for other speeds are defined here.  You can also add
  2865.   definitions on the CC command lines.  These definitions affect the SET SPEED
  2866.   keyword table, and are not necessarily usable in the system-dependent
  2867.   speed-setting code in the ck?tio.c modules, which depends on system-specific
  2868.   symbols like (in UNIX) B19200.  In other words, just defining it doesn't
  2869.   mean it'll work -- you also have to supply the supporting code in ttsspd()
  2870.   and ttgspd() in ck?tio.c.
  2871.   The symbols have the form BPS_xxxx, where xxxx is the speed in bits per
  2872.   second, or (for bps values larger than 9999) thousands of bps followed by K.
  2873.   The total symbol length should be 8 characters or less.  Some values are
  2874.   enabled automatically below.  You can disable a particular value by defining
  2875.   NOB_xxxx on the CC command line. */
  2876. #ifndef NOB_50
  2877. #define BPS_50 /* 50 bps */
  2878. #endif
  2879. #ifndef NOB_75
  2880. #define BPS_75 /* 75 bps */
  2881. #endif
  2882. #ifndef NOB7512
  2883. #ifdef ANYBSD
  2884. #define BPS_7512 /* 75/1200 Split Speed */
  2885. #endif /* ANYBSD */
  2886. #endif /* NOB7512 */
  2887. #ifndef NOB134
  2888. #ifdef SOLARIS25
  2889. #define BPS_134
  2890. #else
  2891. #undef BPS_134 /* 134.5 bps (IBM 2741) */
  2892. #endif /* BPS_134 */
  2893. #endif /* NOB134 */
  2894. #ifndef NOB_150
  2895. #define BPS_150 /* 150 bps */
  2896. #endif
  2897. #ifndef NOB_200
  2898. #define BPS_200 /* 200 bps */
  2899. #endif
  2900. #ifndef NOB_1800
  2901. #ifdef MAC
  2902. #define BPS_1800 /* 1800 bps */
  2903. #else
  2904. #ifdef SOLARIS25
  2905. #define BPS_1800
  2906. #endif
  2907. #endif
  2908. #endif
  2909. #ifndef NOB_3600
  2910. #ifndef SOLARIS25
  2911. #define BPS_3600 /* 3600 bps */
  2912. #endif
  2913. #endif
  2914. #ifndef NOB_7200
  2915. #ifndef SOLARIS25
  2916. #define BPS_7200 /* 7200 bps */
  2917. #endif /* SOLARIS25 */
  2918. #endif
  2919. #ifndef NOB_14K
  2920. #ifdef BSD44
  2921. #define BPS_14K /* 14400 bps */
  2922. #else
  2923. #ifdef OS2
  2924. #define BPS_14K
  2925. #else
  2926. #ifdef NEXT
  2927. #define BPS_14K
  2928. #else
  2929. #ifdef MAC
  2930. #define BPS_14K
  2931. #else
  2932. #ifdef AMIGA
  2933. #define BPS_14K
  2934. #endif /* AMIGA */
  2935. #endif /* MAC */
  2936. #endif /* NEXT */
  2937. #endif /* OS2 */
  2938. #endif /* BSD44 */
  2939. #endif /* NOB_14K */
  2940. #ifndef NOB_19K
  2941. #define BPS_19K /* 19200 bps */
  2942. #endif
  2943. #ifndef NOB_28K
  2944. #ifdef BSD44
  2945. #define BPS_28K
  2946. #else
  2947. #ifdef OS2
  2948. #define BPS_28K
  2949. #else
  2950. #ifdef NEXT
  2951. #define BPS_28K /* 28800 bps */
  2952. #else
  2953. #ifdef MAC
  2954. #define BPS_28K /* 28800 bps */
  2955. #endif /* MAC */
  2956. #endif /* NEXT */
  2957. #endif /* OS2 */
  2958. #endif /* BSD44 */
  2959. #endif /* NOB_28K */
  2960. #ifndef NOB_38K
  2961. #define BPS_38K /* 38400 bps */
  2962. #endif
  2963. #ifndef NOB_57K
  2964. #ifdef Plan9
  2965. #define BPS_57K
  2966. #else
  2967. #ifdef SOLARIS25
  2968. #define BPS_57K
  2969. #else
  2970. #ifdef VMS
  2971. #define BPS_57K /* 57600 bps */
  2972. #else
  2973. #ifdef OS2
  2974. #define BPS_57K
  2975. #else
  2976. #ifdef __linux__
  2977. #define BPS_57K
  2978. #else
  2979. #ifdef HPUX
  2980. #define BPS_57K
  2981. #else
  2982. #ifdef NEXT
  2983. #define BPS_57K
  2984. #else
  2985. #ifdef __386BSD__
  2986. #define BPS_57K
  2987. #else
  2988. #ifdef __FreeBSD__
  2989. #define BPS_57K
  2990. #else
  2991. #ifdef __NetBSD__
  2992. #define BPS_57K
  2993. #else
  2994. #ifdef MAC
  2995. #define BPS_57K
  2996. #else
  2997. #ifdef QNX
  2998. #define BPS_57K
  2999. #else
  3000. #ifdef BEOSORBEBOX
  3001. #define BPS_57K
  3002. #else
  3003. #ifdef IRIX62
  3004. #define BPS_57K
  3005. #else
  3006. #ifdef SCO_OSR504
  3007. #define BPS_57K
  3008. #else
  3009. #ifdef BSDI2
  3010. #define BPS_57K
  3011. #endif /* BSDI2 */
  3012. #endif /* SCO_OSR504 */
  3013. #endif /* IRIX62 */
  3014. #endif /* BEOSORBEBOX */
  3015. #endif /* QNX */
  3016. #endif /* MAC */
  3017. #endif /* __NetBSD__ */
  3018. #endif /* __FreeBSD__ */
  3019. #endif /* __386BSD__ */
  3020. #endif /* NEXT */
  3021. #endif /* HPUX */
  3022. #endif /* __linux__ */
  3023. #endif /* OS2 */
  3024. #endif /* VMS */
  3025. #endif /* SOLARIS25 */
  3026. #endif /* Plan9 */
  3027. #endif /* NOB_57K */
  3028. #ifndef NOB_76K
  3029. #ifdef BSDI2
  3030. #define BPS_76K
  3031. #endif /* BSDI2 */
  3032. #ifdef Plan9
  3033. #define BPS_76K
  3034. #endif /* Plan9 */
  3035. #ifdef SOLARIS25
  3036. #define BPS_76K
  3037. #endif /* SOLARIS25 */
  3038. #ifdef VMS
  3039. #define BPS_76K /* 76800 bps */
  3040. #endif /* VMS */
  3041. #ifdef OS2
  3042. #ifdef __32BIT__
  3043. #define BPS_76K
  3044. #endif /* __32BIT__ */
  3045. #endif /* OS2 */
  3046. #ifdef QNX
  3047. #define BPS_76K
  3048. #endif /* QNX */
  3049. #ifdef IRIX62
  3050. #define BPS_76K
  3051. #endif /* IRIX62 */
  3052. #ifdef SCO_OSR504
  3053. #define BPS_76K
  3054. #endif /* SCO_OSR504 */
  3055. #endif /* NOB_76K */
  3056. #ifndef NOB_115K
  3057. #ifdef BSDI2
  3058. #define BPS_115K
  3059. #endif /* BSDI2 */
  3060. #ifdef Plan9
  3061. #define BPS_115K
  3062. #endif /* Plan9 */
  3063. #ifdef SOLARIS25
  3064. #define BPS_115K
  3065. #endif /* SOLARIS25 */
  3066. #ifdef VMS
  3067. #define BPS_115K /* 115200 bps */
  3068. #else
  3069. #ifdef QNX
  3070. #define BPS_115K
  3071. #else
  3072. #ifdef HPUX
  3073. #define BPS_115K
  3074. #else
  3075. #ifdef __linux__
  3076. #define BPS_115K
  3077. #else
  3078. #ifdef __386BSD__
  3079. #define BPS_115K
  3080. #else
  3081. #ifdef __FreeBSD__
  3082. #define BPS_115K
  3083. #else
  3084. #ifdef __NetBSD__
  3085. #define BPS_115K
  3086. #else
  3087. #ifdef OS2
  3088. #ifdef __32BIT__
  3089. #define BPS_115K
  3090. #endif /* __32BIT__ */
  3091. #else
  3092. #ifdef BEOSORBEBOX
  3093. #define BPS_115K
  3094. #else
  3095. #ifdef IRIX62
  3096. #define BPS_115K
  3097. #else
  3098. #ifdef SCO_OSR504
  3099. #define BPS_115K
  3100. #endif /* SCO_OSR504 */
  3101. #endif /* IRIX62 */
  3102. #endif /* BEOSORBEBOX */
  3103. #endif /* OS2 */
  3104. #endif /* __NetBSD__ */
  3105. #endif /* __FreeBSD__ */
  3106. #endif /* __386BSD__ */
  3107. #endif /* __linux__ */
  3108. #endif /* HPUX */
  3109. #endif /* QNX */
  3110. #endif /* VMS */
  3111. #endif /* NOB_115K */
  3112. #ifndef NOB_230K /* 230400 bps */
  3113. #ifdef BSDI2
  3114. #define BPS_230K
  3115. #else
  3116. #ifdef SCO_OSR504
  3117. #define BPS_230K
  3118. #else
  3119. #ifdef __linux__
  3120. #define BPS_230K
  3121. #else
  3122. #ifdef SOLARIS25
  3123. #define BPS_230K
  3124. #else
  3125. #ifdef OS2
  3126. #ifdef __32BIT__
  3127. #define BPS_230K
  3128. #endif /* __32BIT__ */
  3129. #else
  3130. #undef BPS_230K
  3131. #endif /* OS2 */
  3132. #endif /* SOLARIS25 */
  3133. #endif /* __linux__ */
  3134. #endif /* SCO_OSR504 */
  3135. #endif /* BSDI2 */
  3136. #endif /* NOB_230K */
  3137. #ifndef NOB_460K /* 460800 bps */
  3138. #ifdef SCO_OSR504
  3139. #define BPS_460K
  3140. #else
  3141. #ifdef __linux__
  3142. #define BPS_460K
  3143. #else
  3144. #ifdef OS2
  3145. #ifdef __32BIT__
  3146. #define BPS_460K
  3147. #endif /* __32BIT__ */
  3148. #else
  3149. #undef BPS_460K
  3150. #endif /* __linux__ */
  3151. #endif /* SCO_OSR504 */
  3152. #endif /* OS2 */
  3153. #endif /* NOB_460K */
  3154. #ifndef NOB_921K /* 921600 bps */
  3155. #ifdef SCO_OSR504
  3156. #define BPS_921K
  3157. #endif /* SCO_OSR504 */
  3158. #endif /* NOB_921K */
  3159. #ifdef BPS_921K /* Maximum speed defined */
  3160. #define MAX_SPD 921600L
  3161. #else
  3162. #ifdef BPS_460K
  3163. #define MAX_SPD 460800L
  3164. #else
  3165. #ifdef BPS_230K
  3166. #define MAX_SPD 230400L
  3167. #else
  3168. #ifdef BPS_115K
  3169. #define MAX_SPD 115200L
  3170. #else
  3171. #ifdef BPS_76K
  3172. #define MAX_SPD 76800L
  3173. #else
  3174. #ifdef BPS_57K
  3175. #define MAX_SPD 57600L
  3176. #else
  3177. #ifdef BPS_38K
  3178. #define MAX_SPD 38400L
  3179. #else
  3180. #ifdef BPS_28K
  3181. #define MAX_SPD 28800L
  3182. #else
  3183. #ifdef BPS_19K
  3184. #define MAX_SPD 19200L
  3185. #else
  3186. #ifdef BPS_14K
  3187. #define MAX_SPD 14400L
  3188. #else
  3189. #define MAX_SPD 9600L
  3190. #endif
  3191. #endif
  3192. #endif
  3193. #endif
  3194. #endif
  3195. #endif
  3196. #endif
  3197. #endif
  3198. #endif
  3199. #endif
  3200. #endif /* TTSPDLIST */
  3201. #ifndef CONGSPD /* Systems that can call congspd() */
  3202. #ifdef UNIX
  3203. #define CONGSPD
  3204. #endif /* UNIX */
  3205. #ifdef VMS
  3206. #define CONGSPD
  3207. #endif /* VMS */
  3208. #ifdef STRATUS
  3209. #define CONGSPD
  3210. #endif /* STRATUS */
  3211. #endif /* CONGSPD */
  3212. /* Types of flow control available */
  3213. #define CK_XONXOFF /* Everybody can do this, right? */
  3214. #ifdef AMIGA /* Commodore Amiga */
  3215. #define CK_RTSCTS /* has RTS/CTS */
  3216. #endif /* AMIGA */
  3217. #ifdef SUN4S5 /* SunOS in System V environment */
  3218. #define CK_RTSCTS
  3219. #else /* SunOS 4.0/4.1 in BSD environment */
  3220. #ifdef SUNOS4 /* SunOS 4.0+later supports RTS/CTS */
  3221. #ifdef SUNOS41 /* Easy in 4.1 and later */
  3222. #define CK_RTSCTS
  3223. #else /* Harder in 4.0 */
  3224. #ifndef __GNUC__ /* (see tthflow() in ckutio.c) */
  3225. #ifndef GNUC
  3226. #define CK_RTSCTS /* Only if not using GNU gcc */
  3227. #endif /* __GNUC__ */
  3228. #endif /* GNUC */
  3229. #endif /* SUNOS41 */
  3230. #endif /* SUNOS4 */
  3231. #endif /* SUN4S5 */
  3232. #ifdef BSD44 /* And in 4.4 BSD, including BSDI */
  3233. #define CK_RTSCTS
  3234. #endif /* BSD44 */
  3235. #ifdef TERMIOX /* Sys V R4 <termiox.h> */
  3236. #ifndef CK_RTSCTS
  3237. #define CK_RTSCTS
  3238. #endif /* CK_RTSCTS */
  3239. #ifndef CK_DTRCD
  3240. #define CK_DTRCD
  3241. #endif /* CK_DTRCD */
  3242. #else
  3243. #ifdef STERMIOX /* Sys V R4 <sys/termiox.h> */
  3244. #ifndef CK_RTSCTS
  3245. #define CK_RTSCTS
  3246. #endif /* CK_RTSCTS */
  3247. #ifndef CK_DTRCD
  3248. #define CK_DTRCD
  3249. #endif /* CK_DTRCD */
  3250. #endif /* STERMIOX */
  3251. #endif /* TERMIOX */
  3252. #ifdef OXOS /* Olivetti X/OS R2 struct termios */
  3253. #define CK_RTSCTS /* Ditto. */
  3254. #define CK_DTRCD
  3255. #endif /* OXOS */
  3256. #ifdef AIXRS /* RS/6000 with AIX 3.x */
  3257. #define CK_RTSCTS /* Has its own peculiar method... */
  3258. #endif /* AIXRS */
  3259. #ifdef __linux__ /* Linux */
  3260. #define CK_RTSCTS
  3261. #endif /* __linux__ */
  3262. /*
  3263.   Hardware flow control is not defined in POSIX.1.  Nevertheless, a certain
  3264.   style API for hardware flow control, using tcsetattr() and the CRTSCTS
  3265.   bit(s), seems to be gaining currency on POSIX-based UNIX systems.  The
  3266.   following code defines the symbol POSIX_CRTSCTS for such systems.
  3267. */
  3268. #ifdef CK_RTSCTS
  3269. #ifdef __bsdi__ /* BSDI, a.k.a. BSD/386 */
  3270. #define POSIX_CRTSCTS
  3271. #endif /* __bsdi__ */
  3272. #ifdef __linux__ /* Linux */
  3273. #define POSIX_CRTSCTS
  3274. #endif /* __linux__ */
  3275. #ifdef __NetBSD__ /* NetBSD */
  3276. #define POSIX_CRTSCTS
  3277. #endif /* __NetBSD__ */
  3278. #ifdef BEOSORBEBOX /* BeBOX */
  3279. #define POSIX_CRTSCTS
  3280. /* BEBOX defines CRTSFL as (CTSFLOW & RTSFLOW) */
  3281. #define CRTSCTS CRTSFL
  3282. #endif /* BEOSORBEBOX */
  3283. #ifdef IRIX52 /* IRIX 5.2 and later */
  3284. #define POSIX_CRTSCTS
  3285. #define CRTSCTS CNEW_RTSCTS /* See <sys/termios.h> */
  3286. #endif /* IRIX52 */
  3287. #endif /* CK_RTSCTS */
  3288. /* Implementations that have implemented the ttsetflow() function. */
  3289. #ifndef CK_TTSETFLOW
  3290. #ifdef UNIX
  3291. #define CK_TTSETFLOW
  3292. #endif /* UNIX */
  3293. #ifdef OS2
  3294. #define CK_TTSETFLOW
  3295. #endif /* OS2 */
  3296. #endif /* CK_TTSETFLOW */
  3297. #ifdef CK_TTSETFLOW
  3298. _PROTOTYP( int ttsetflow, (int) );
  3299. #endif /* CK_TTSETFLOW */
  3300. /*
  3301.  Systems where we can expand tilde at the beginning of file or directory names
  3302. */
  3303. #ifdef POSIX
  3304. #ifndef DTILDE
  3305. #define DTILDE
  3306. #endif /* DTILDE */
  3307. #endif /* POSIX */
  3308. #ifdef BSD4
  3309. #ifndef DTILDE
  3310. #define DTILDE
  3311. #endif /* DTILDE */
  3312. #endif /* BSD4 */
  3313. #ifdef ATTSV
  3314. #ifndef DTILDE
  3315. #define DTILDE
  3316. #endif /* DTILDE */
  3317. #endif /* ATTSV */
  3318. #ifdef OSK
  3319. #ifndef DTILDE
  3320. #define DTILDE
  3321. #endif /* DTILDE */
  3322. #endif /* OSK */
  3323. #ifdef HPUX /* I don't know why this is */
  3324. #ifndef DTILDE /* necessary, since -DHPUX */
  3325. #define DTILDE /* automatically defines ATTSV */
  3326. #endif /* DTILDE */ /* (see above) ... */
  3327. #endif /* HPUX */
  3328. /*
  3329.   This is mainly for the benefit of ckufio.c (UNIX and OS/2 file support).
  3330.   Systems that have an atomic rename() function, so we don't have to use
  3331.   link() and unlink().
  3332. */
  3333. #ifdef POSIX
  3334. #ifndef RENAME
  3335. #define RENAME
  3336. #endif /* RENAME */
  3337. #endif /* POSIX */
  3338. #ifdef OS2
  3339. #ifndef RENAME
  3340. #define RENAME
  3341. #endif /* RENAME */
  3342. #endif /* OS2 */
  3343. #ifdef SUNOS41
  3344. #ifndef RENAME
  3345. #define RENAME
  3346. #endif /* RENAME */
  3347. #endif /* SUNOS41 */
  3348. #ifdef SVR4
  3349. #ifndef RENAME
  3350. #define RENAME
  3351. #endif /* RENAME */
  3352. #endif /* SVR4 */
  3353. #ifdef AIXRS
  3354. #ifndef RENAME
  3355. #define RENAME
  3356. #endif /* RENAME */
  3357. #endif /* AIXRS */
  3358. #ifdef BSD44
  3359. #ifndef RENAME
  3360. #define RENAME
  3361. #endif /* RENAME */
  3362. #endif /* BSD44 */
  3363. #ifdef NORENAME /* Allow for compile-time override */
  3364. #ifdef RENAME
  3365. #undef RENAME
  3366. #endif /* RENAME */
  3367. #endif /* NORENAME */
  3368. #ifdef STRATUS /* Stratus VOS */
  3369. #ifndef RENAME
  3370. #define RENAME
  3371. #endif /* RENAME */
  3372. #endif /* STRATUS */
  3373. /* Line delimiter for text files */
  3374. /*
  3375.  If the system uses a single character for text file line delimitation,
  3376.  define NLCHAR to the value of that character.  For text files, that
  3377.  character will be converted to CRLF upon output, and CRLF will be converted
  3378.  to that character on input during text-mode (default) packet operations.
  3379. */
  3380. #ifdef MAC                              /* Macintosh */
  3381. #define NLCHAR 015
  3382. #else
  3383. #ifdef OSK /* OS-9/68K */
  3384. #define NLCHAR 015
  3385. #else                                   /* All Unix-like systems */
  3386. #define NLCHAR 012
  3387. #endif /* OSK */
  3388. #endif /* MAC */
  3389. /*
  3390.  At this point, if there's a system that uses ordinary CRLF line
  3391.  delimitation AND the C compiler actually returns both the CR and
  3392.  the LF when doing input from a file, then #undef NLCHAR.
  3393. */
  3394. #ifdef OS2 /* OS/2 */
  3395. #undef NLCHAR
  3396. #endif /* OS2 */
  3397. #ifdef GEMDOS /* Atari ST */
  3398. #undef NLCHAR
  3399. #endif /* GEMDOS */
  3400. /*
  3401.   VMS file formats are so complicated we need to do all the conversion
  3402.   work in the CKVFIO module, so we tell the rest of C-Kermit not to fiddle
  3403.   with the bytes.
  3404. */
  3405. #ifdef vms
  3406. #undef NLCHAR
  3407. #endif /* vms */
  3408. /* The device name of a job's controlling terminal */
  3409. /* Special for VMS, same for all Unixes (?), not used by Macintosh */
  3410. #ifdef BEOS
  3411. #define CTTNAM dftty
  3412. #else
  3413. #ifdef vms
  3414. #define CTTNAM "TT:"
  3415. #else
  3416. #ifdef datageneral
  3417. #define CTTNAM "@output"
  3418. #else
  3419. #ifdef OSK
  3420. extern char myttystr[];
  3421. #define CTTNAM myttystr
  3422. #else
  3423. #ifdef OS2
  3424. #define CTTNAM "con"
  3425. #else
  3426. #ifdef UNIX
  3427. #define CTTNAM "/dev/tty"
  3428. #else
  3429. #ifdef GEMDOS
  3430. #define CTTNAM "aux:"
  3431. #else
  3432. #ifdef STRATUS
  3433. extern char myttystr[];
  3434. #define CTTNAM myttystr
  3435. #else /* Anyone else... */
  3436. #define CTTNAM "stdout" /* This is a kludge used by Mac */
  3437. #endif /* STRATUS */
  3438. #endif /* GEMDOS */
  3439. #endif /* UNIX */
  3440. #endif /* OS2 */
  3441. #endif /* OSK */
  3442. #endif /* datageneral */
  3443. #endif /* vms */
  3444. #endif /* BEOS */
  3445. #ifndef HAVECTTNAM
  3446. #ifdef UNIX
  3447. #define HAVECTTNAM
  3448. #else
  3449. #ifdef VMS
  3450. #define HAVECTTNAM
  3451. #endif /* VMS */
  3452. #endif /* UNIX */
  3453. #endif /* HAVECTTNAM */
  3454. #ifndef ZFCDAT /* zfcdat() function available? */
  3455. #ifdef UNIX
  3456. #define  ZFCDAT
  3457. #else
  3458. #ifdef STRATUS
  3459. #define  ZFCDAT
  3460. #else
  3461. #ifdef GEMDOS
  3462. #define  ZFCDAT
  3463. #else
  3464. #ifdef AMIGA
  3465. #define  ZFCDAT
  3466. #else
  3467. #ifdef OS2
  3468. #define  ZFCDAT
  3469. #else
  3470. #ifdef datageneral
  3471. #define  ZFCDAT
  3472. #else
  3473. #ifdef VMS
  3474. #define  ZFCDAT
  3475. #endif /* VMS */
  3476. #endif /* datageneral */
  3477. #endif /* OS2 */
  3478. #endif /* AMIGA */
  3479. #endif /* GEMDOS */
  3480. #endif /* STRATUS */
  3481. #endif /* UNIX */
  3482. #endif /* ZFCDAT */
  3483. #ifdef SUNS4S5
  3484. #define tolower _tolower
  3485. #define toupper _toupper
  3486. #endif /* SUNS4S5 */
  3487. /* Error number */
  3488. #ifdef _CRAY
  3489. #ifdef _CRAYCOM /* Cray Computer Corp. */
  3490. extern int errno;
  3491. #else /* _CRAYCOM */
  3492. #include <errno.h> /* Cray Research UNICOS defines */
  3493. /* errno as a function. */
  3494. #endif /* _CRAYCOM */ /* OK for UNICOS 6.1 and 7.0. */
  3495. #else /* _CRAY */
  3496. #ifdef STRATUS /* Stratus VOS */
  3497. #include <errno.h>
  3498. #else /* not STRATUS */
  3499. #ifndef VMS
  3500. #ifndef OS2
  3501. /*
  3502.   The following declaration causes problems for VMS and OS/2, in which
  3503.   errno is an "extern volatile int noshare"...
  3504. */
  3505. extern int errno; /* Needed by most modules. */
  3506. #endif /* OS2 */
  3507. #endif /* VMS */
  3508. #endif /* STRATUS */
  3509. #endif /* _CRAY */
  3510. #ifdef pdp11 /* Try to make some space on PDP-11 */
  3511. #ifndef NODIAL
  3512. #define NODIAL
  3513. #endif /* NODIAL */
  3514. #ifndef NOCURSES
  3515. #define NOCURSES
  3516. #endif /* NOCURSES */
  3517. #ifndef NOBIGBUF
  3518. #define NOBIGBUF
  3519. #endif /* NOBIGBUF */
  3520. #endif /* pdp11 */
  3521. #ifndef NOBIGBUF
  3522. #ifndef BIGBUFOK /* Platforms with lots of memory */
  3523. #ifdef BSD44
  3524. #define BIGBUFOK
  3525. #endif /* BSD44 */
  3526. #ifdef STRATUS /* Stratus VOS */
  3527. #define BIGBUFOK
  3528. #endif /* STRATUS */
  3529. #ifdef sparc /* SPARC processors */
  3530. #define BIGBUFOK
  3531. #endif /* sparc */
  3532. #ifdef mips /* MIPS processors */
  3533. #define BIGBUFOK
  3534. #endif /* mips */
  3535. #ifdef HPUX9 /* HP-UX 9.x */
  3536. #define BIGBUFOK
  3537. #endif /* HPUX9 */
  3538. #ifdef HPUX10 /* HP-UX 10.0 PA-RISC */
  3539. #define BIGBUFOK
  3540. #endif /* HPUX10 */
  3541. #ifdef NEXT /* NeXTSTEP */
  3542. #ifdef mc68000 /* on NEXT platforms... */
  3543. #define BIGBUFOK
  3544. #endif /* mc68000 */
  3545. #endif /* NEXT */
  3546. #ifdef LINUX /* Linux in 1998 should be OK */
  3547. #ifndef BIGBUFOK
  3548. #define BIGBUFOK
  3549. #endif /* BIGBUFOK */
  3550. #endif /* LINUX */
  3551. #ifdef OS2 /* 32-bit OS/2 2.x and above */
  3552. #ifdef __32BIT__
  3553. #define BIGBUFOK
  3554. #endif /* __32BIT__ */
  3555. #ifdef NT
  3556. #define BIGBUFOK
  3557. #endif /* NT */
  3558. #endif /* OS2 */
  3559. #ifdef Plan9 /* Plan 9 is OK */
  3560. #define BIGBUFOK
  3561. #endif /* Plan9 */
  3562. #ifdef VMS /* Any VMS is OK */
  3563. #ifndef BIGBUFOK
  3564. #define BIGBUFOK
  3565. #endif /* BIGBUFOK */
  3566. #endif /* VMS */
  3567. #ifdef __alpha /* DEC 64-bit Alpha, e.g. OSF/1 */
  3568. #ifndef BIGBUFOK /* Might already be defined for VMS */
  3569. #define BIGBUFOK
  3570. #endif /* BIGBUFOK */
  3571. #endif /* __alpha */
  3572. #ifdef sgi /* SGI with IRIX 4.0 or later */
  3573. #ifndef BIGBUFOK
  3574. #define BIGBUFOK
  3575. #endif /* BIGBUFOK */
  3576. #endif /* sgi */
  3577. #ifdef AIXRS /* AIX on RISC */
  3578. #define BIGBUFOK
  3579. #endif /* AIXRS */
  3580. #ifdef CK_SCOV5 /* SCO OSR5 */
  3581. #ifndef BIGBUFOK
  3582. #define BIGBUFOK
  3583. #endif /* BIGBUFOK */
  3584. #endif /* CK_SCOV5 */
  3585. #endif /* BIGBUFOK */
  3586. #endif /* NOBIGBUF */
  3587. #ifdef CK_SMALL
  3588. #ifdef BIGBUFOK
  3589. #undef BIGBUFOK
  3590. #endif /* BIGBUFOK */
  3591. #endif /* CK_SMALL */
  3592. /* If "memory is no problem" then this improves performance */
  3593. #ifdef DEBUG
  3594. #ifdef BIGBUFOK
  3595. #ifndef IFDEBUG
  3596. #define IFDEBUG
  3597. #endif /* IFDEBUG */
  3598. #endif /* IFDEBUG */
  3599. #endif /* DEBUG */
  3600. /* File System Defaults */
  3601. #ifndef UIDBUFLEN /* Length of User ID */
  3602. #ifdef OS2
  3603. #define UIDBUFLEN 256
  3604. #else /* OS2 */
  3605. #ifdef BIGBUFOK
  3606. #define UIDBUFLEN 256
  3607. #else
  3608. #define UIDBUFLEN 64
  3609. #endif /* BIGBUFOK */
  3610. #endif /* OS2 */
  3611. #endif /* UIDBUFLEN */
  3612. #ifdef UNIX
  3613. #ifdef PROVX1
  3614. #define MAXWLD 50
  3615. #else
  3616. #ifdef pdp11
  3617. #define MAXWLD 50
  3618. #else
  3619. #ifdef BIGBUFOK
  3620. #define MAXWLD 102400
  3621. #else
  3622. #define MAXWLD 1024
  3623. #endif /* BIGBUFOK */
  3624. #endif /* pdp11 */
  3625. #endif /* PROVX1 */
  3626. #else
  3627. #ifdef VMS
  3628. #define MAXWLD 102400 /* Maximum wildcard filenames */
  3629. #else
  3630. #ifdef datageneral
  3631. #define MAXWLD 500
  3632. #else
  3633. #ifdef STRATUS
  3634. #define MAXWLD 5000
  3635. #endif /* STRATUS */
  3636. #endif /* datageneral */
  3637. #endif /* VMS */
  3638. #endif /* UNIX */
  3639. #ifdef VMS
  3640. #define DBLKSIZ 512
  3641. #define DLRECL 512
  3642. #else
  3643. #define DBLKSIZ 0
  3644. #define DLRECL 0
  3645. #endif /* VMS */
  3646. /* Communication device / network host name length */
  3647. #ifdef BIGBUFOK
  3648. #define TTNAMLEN 512
  3649. #else
  3650. #ifdef MAC
  3651. #define TTNAMLEN 256
  3652. #else
  3653. #ifndef CK_SMALL
  3654. #define TTNAMLEN 128
  3655. #else
  3656. #define TTNAMLEN 80
  3657. #endif /* CK_SMALL */
  3658. #endif /* MAC */
  3659. #endif /* BIGBUFOK */
  3660. /* Program return codes for DECUS C and UNIX (VMS uses UNIX codes) */
  3661. #ifdef decus
  3662. #define GOOD_EXIT   IO_NORMAL
  3663. #define BAD_EXIT    IO_ERROR
  3664. #else
  3665. #define GOOD_EXIT   0
  3666. #define BAD_EXIT    1
  3667. #endif /* decus */
  3668. /* Special hack for Fortune, which doesn't have <sys/file.h>... */
  3669. #ifdef FT18
  3670. #define FREAD 0x01
  3671. #define FWRITE 0x10
  3672. #endif /* FT18 */
  3673. /* Special hack for OS-9/68k */
  3674. #ifdef OSK
  3675. #ifndef _UCC
  3676. #define SIGALRM 30 /* May always cancel I/O */
  3677. #endif /* _UCC */
  3678. #define SIGARB 1234 /* Arbitrary for I/O */
  3679. SIGTYP (*signal())();
  3680. #endif /* OSK */
  3681. #ifdef OS2
  3682. #ifdef putchar                  /* MSC 5.1 simply uses a macro which causes */
  3683. #undef putchar                  /* no problems. */
  3684. #endif /* putchar */
  3685. #endif /* OS2 */
  3686. #ifdef MINIX
  3687. #ifdef putchar
  3688. #undef putchar
  3689. #endif /* putchar */
  3690. #define putchar(c) (putc(c,stdout)!=EOF)&&fflush(stdout)
  3691. #endif /* MINIX */
  3692. #ifdef datageneral /* Data General AOS/VS */
  3693. #ifdef putchar
  3694. #undef putchar
  3695. #endif /* putchar */
  3696. #define putchar(c) conoc(c)
  3697. #endif /* datageneral */
  3698. /* Escape/quote character used by the command parser */
  3699. #define CMDQ '\'
  3700. /* Symbols for RS-232 modem signals */
  3701. #define KM_FG    1 /* Frame ground */
  3702. #define KM_TXD   2 /* Transmit */
  3703. #define KM_RXD   3 /* Receive */
  3704. #define KM_RTS   4 /* Request to Send */
  3705. #define KM_CTS   5 /* Clear to Send */
  3706. #define KM_DSR   6 /* Data Set Ready */
  3707. #define KM_SG    7 /* Signal ground */
  3708. #define KM_DCD   8 /* Carrier Detect */
  3709. #define KM_DTR  20 /* Data Terminal Ready */
  3710. #define KM_RI   22 /* Ring Indication */
  3711. /* Bit mask values for modem signals */
  3712. #define BM_CTS   0001 /* Clear to send       (From DCE) */
  3713. #define BM_DSR   0002 /* Dataset ready       (From DCE) */
  3714. #define BM_DCD   0004 /* Carrier             (From DCE) */
  3715. #define BM_RNG   0010 /* Ring Indicator      (From DCE) */
  3716. #define BM_DTR   0020 /* Data Terminal Ready (From DTE) */
  3717. #define BM_RTS   0040 /* Request to Send     (From DTE) */
  3718. /* Codes for full duplex flow control */
  3719. #define FLO_NONE 0 /* None */
  3720. #define FLO_XONX 1 /* Xon/Xoff (soft) */
  3721. #define FLO_RTSC 2 /* RTS/CTS (hard) */
  3722. #define FLO_DTRC 3 /* DTR/CD (hard) */
  3723. #define FLO_ETXA 4 /* ETX/ACK (soft) */
  3724. #define FLO_STRG 5 /* String-based (soft) */
  3725. #define FLO_DIAL 6 /* DIALing kludge */
  3726. #define FLO_DIAX 7 /* Cancel dialing kludge */
  3727. #define FLO_DTRT 8 /* DTR/CTS (hard) */
  3728. #define FLO_KEEP 9 /* Keep, i.e. don't touch or change */
  3729. #define FLO_AUTO 10 /* Figure out automatically */
  3730. /* Types of connections */
  3731. #define CXT_REMOTE  0 /* Remote mode - no connection */
  3732. #define CXT_DIRECT  1 /* Direct serial connection */
  3733. #define CXT_MODEM   2 /* Modem dialout */
  3734. #define CXT_TCPIP   3 /* TCP/IP - Telnet, Rlogin, etc */
  3735. #define CXT_X25     4 /* X.25 peer-to-peer */
  3736. #define CXT_DECNET  5 /* DECnet (CTERM, etc) */
  3737. #define CXT_LAT     6 /* LAT */
  3738. #define CXT_NETBIOS 7 /* NETBIOS */
  3739. #define CXT_NPIPE   8 /* Named Pipe */
  3740. #define CXT_SSH     9 /* SSH */
  3741. #define CXT_PIPE   10 /* Pipe, Command, PTY, DLL, etc */
  3742. #define CXT_MAX    10 /* Highest connection type */
  3743. /* Autodownload Detection Options */
  3744. #define ADL_PACK 0 /* Auto-Download detect packet */
  3745. #define ADL_STR  1 /* Auto-Download detect string */
  3746. /* And finally... */
  3747. #ifdef COMMENT /* Make sure this is NOT defined! */
  3748. #undef COMMENT
  3749. #endif /* COMMENT */
  3750. /* Structure definitions for Kermit file attributes */
  3751. /* All strings come as pointer and length combinations */
  3752. /* Empty string (or for numeric variables, -1) = unused attribute. */
  3753. struct zstr {             /* string format */
  3754.     int len;           /* length */
  3755.     char *val;            /* value */
  3756. };
  3757. struct zattr {            /* Kermit File Attribute structure */
  3758.     long lengthk;         /* (!) file length in K */
  3759.     struct zstr type;     /* (") file type (text or binary) */
  3760.     struct zstr date;     /* (#) file creation date yyyymmdd[ hh:mm[:ss]] */
  3761.     struct zstr creator;  /* ($) file creator id */
  3762.     struct zstr account;  /* (%) file account */
  3763.     struct zstr area;     /* (&) area (e.g. directory) for file */
  3764.     struct zstr password; /* (') password for area */
  3765.     long blksize;         /* (() file blocksize */
  3766.     struct zstr xaccess;  /* ()) file access: new, supersede, append, warn */
  3767.     struct zstr encoding; /* (*) encoding (transfer syntax) */
  3768.     struct zstr disp;     /* (+) disposition (mail, message, print, etc) */
  3769.     struct zstr lprotect; /* (,) protection (local syntax) */
  3770.     struct zstr gprotect; /* (-) protection (generic syntax) */
  3771.     struct zstr systemid; /* (.) ID for system of origin */
  3772.     struct zstr recfm;    /* (/) record format */
  3773.     struct zstr sysparam; /* (0) system-dependent parameter string */
  3774.     long length;          /* (1) exact length on system of origin */
  3775.     struct zstr charset;  /* (2) transfer syntax character set */
  3776. #ifdef OS2
  3777.     struct zstr longname; /* OS/2 longname if applicable */
  3778. #endif /* OS2 */
  3779.     struct zstr reply;    /* This goes last, used for attribute reply */
  3780. };
  3781. /* Kermit file information structure */
  3782. struct filinfo {
  3783.   int bs; /* Blocksize */
  3784.   int cs; /* Character set */
  3785.   long rl; /* Record length */
  3786.   int org; /* Organization */
  3787.   int fmt; /* Record format */
  3788.   int cc; /* Carriage control */
  3789.   int typ; /* Type (text/binary) */
  3790.   int dsp; /* Disposition */
  3791.   char *os_specific; /* OS-specific attributes */
  3792. #ifdef OS2
  3793.   unsigned long int lblopts; /* LABELED FILE options bitmask */
  3794. #else
  3795.   int lblopts;
  3796. #endif /* OS2 */
  3797. };
  3798. #ifndef ZFNQFP /* Versions that have zfnqfp() */
  3799. #ifdef UNIX
  3800. #define ZFNQFP
  3801. #else
  3802. #ifdef VMS
  3803. #define ZFNQFP
  3804. #else
  3805. #ifdef OS2
  3806. #define ZFNQFP
  3807. #else
  3808. #ifdef datageneral
  3809. #define ZFNQFP
  3810. #else
  3811. #ifdef STRATUS
  3812. #define ZFNQFP
  3813. #endif /* STRATUS */
  3814. #endif /* datageneral */
  3815. #endif /* OS2 */
  3816. #endif /* VMS */
  3817. #endif /* UNIX */
  3818. struct zfnfp {
  3819.    int len;
  3820.    char * fpath;
  3821.    char * fname;
  3822. };
  3823. #endif /* ZFNQFP */
  3824. /* Systems that support FILE TYPE LABELED */
  3825. #ifdef VMS
  3826. #define CK_LABELED
  3827. #else
  3828. #ifdef OS2
  3829. #ifdef __32BIT__
  3830. #ifndef NT
  3831. #define CK_LABELED
  3832. #endif /* NT */
  3833. #endif /* __32BIT__ */
  3834. #endif /* OS2 */
  3835. #endif /* VMS */
  3836. /* LABELED FILE options bitmask */
  3837. #ifdef VMS /* For VMS */
  3838. #define LBL_NAM  1 /* Ignore incoming name if set */
  3839. #define LBL_PTH  2 /* Use complete path if set */
  3840. #define LBL_ACL  4 /* Preserve ACLs if set */
  3841. #define LBL_BCK  8 /* Preserve backup date if set */
  3842. #define LBL_OWN 16 /* Preserve ownership if set */
  3843. #else
  3844. #ifdef OS2 /* Ditto for OS/2 */
  3845. #define LBL_NOR  0x0000 /* Normal file */
  3846. #define LBL_ARC  0x0020 /* Archive */
  3847. #define LBL_DIR  0x0010 /* Directory */
  3848. #define LBL_HID  0x0002 /* Hidden file */
  3849. #define LBL_RO   0x0001 /* Read only file */
  3850. #define LBL_SYS  0x0004 /* System file */
  3851. #define LBL_EXT  0x0040 /* Extended */
  3852. #endif /* OS2 */
  3853. #endif /* VMS */
  3854. /*
  3855.   Data types.  First the header file for data types so we can pick up the
  3856.   types used for pids, uids, and gids.  Override this section by putting
  3857.   -DCKTYP_H=xxx on the command line to specify the header file where your
  3858.   system defines these types.
  3859. */
  3860. #ifndef STRATUS
  3861. #ifdef __ALPHA
  3862. #ifdef MULTINET
  3863. #define CK_TGV_AXP
  3864. #endif /* MULTINET */
  3865. #endif /* __ALPHA */
  3866. #ifdef CK_TGV_AXP /* Alpha, VMS, MultiNet */
  3867. /*
  3868.   Starting in DECC 5.0, <stdlib.h> no longer includes <types.h>.
  3869.   But before that an elaborate workaround is required, which results in
  3870.   including <types.h> sometimes but not others, evidently depending on whether
  3871.   <types.h> protects itself against multiple inclusion, which in turn probably
  3872.   differentiates between DECC <types.h> and TGV <types.h>.  Unfortunately I
  3873.   don't remember the details.  (fdc, 25 Oct 96)
  3874. */
  3875. #ifdef COMMENT
  3876. /*
  3877.   Previously the test here was for DEC version prior to 4.0, but since the
  3878.   test involved an "#if" statement, it was not portable and broke some non-VMS
  3879.   builds.  In any case, condition was never satisfied, so the result of
  3880.   commenting this section out is the same as the previous "#if" condition.
  3881. */
  3882. #ifndef __TYPES_LOADED
  3883. #define __TYPES_LOADED /* Work around bug in .h files */
  3884. #endif /* __TYPES_LOADED */
  3885. #endif /* COMMENT */
  3886. #include <sys/types.h>
  3887. #ifdef IF_DOT_H
  3888. #ifndef MULTINET
  3889. #include <if.h> /* Needed to put up u_int typedef */
  3890. #endif /* MULTINET */
  3891. #else
  3892. #ifdef NEEDUINT
  3893. typedef unsigned int u_int;
  3894. #endif /* NEEDUINT */
  3895. #endif /* IF_DOT_H */
  3896. #else /* !CK_TGV_AXP */
  3897. #ifdef OSK /* OS-9 */
  3898. #include <types.h>
  3899. #else /* General case, not OS-9 */
  3900. #ifndef CKTYP_H
  3901. #ifndef VMS
  3902. #ifndef MAC
  3903. #ifndef AMIGA
  3904. #define CKTYP_H <sys/types.h>
  3905. #endif /* AMIGA */
  3906. #endif /* MAC */
  3907. #endif /* VMS */
  3908. #endif /* CKTYP_H */
  3909. #ifdef GEMDOS
  3910. #undef CKTYP_H
  3911. #include <types.h>
  3912. #endif /* GEMDOS */
  3913. #ifdef OS2
  3914. #undef CKTYP_H
  3915. #include <sys/types.h>
  3916. #endif /* OS2 */
  3917. #ifdef CKTYP_H /* Include it. */
  3918. #ifdef COHERENT /* Except for COHERENT */
  3919. #include <unistd.h>
  3920. #include <sys/types.h>
  3921. #else
  3922. #ifdef datageneral /* AOS/VS */
  3923. #include <sys/types.h>
  3924. #else  /* All others */
  3925. #ifdef __bsdi__ /* BSDI */
  3926. #ifdef POSIX
  3927. #undef _POSIX_SOURCE
  3928. #endif /* POSIX */
  3929. #endif /* __bsdi__ */
  3930. #include CKTYP_H
  3931. #ifdef __bsdi__
  3932. #ifdef POSIX
  3933. #define _POSIX_SOURCE
  3934. #endif /* POSIX */
  3935. #endif /* __bsdi__ */
  3936. #endif /* datageneral */
  3937. #endif /* COHERENT */
  3938. #endif /* CKTYP_H */
  3939. #endif /* OSK */
  3940. #endif /* CK_TGV_AXP */
  3941. #endif /* STRATUS */ /* End of types.h section */
  3942. /*
  3943.   Data type for pids.  If your system uses a different type, put something
  3944.   like -DPID_T=pid_t on command line, or override here.
  3945. */
  3946. #ifndef PID_T
  3947. #define PID_T int
  3948. #endif /* PID_T */
  3949. /*
  3950.   Data types for uids and gids.  Same deal as for pids.
  3951.   Wouldn't be nice if there was a preprocessor test to find out if a
  3952.   typedef existed?
  3953. */
  3954. #ifdef VMS
  3955. /* Not used in VMS so who cares */
  3956. #define UID_T int
  3957. #define GID_T int
  3958. #endif /* VMS */
  3959. #ifdef POSIX
  3960. /* Or would it be better (or worse?) to use _POSIX_SOURCE here? */
  3961. #ifndef UID_T
  3962. #define UID_T uid_t
  3963. #endif /* UID_T */
  3964. #ifndef GID_T
  3965. #define GID_T gid_t
  3966. #endif /* GID_T */
  3967. #else /* Not POSIX */
  3968. #ifdef SVR4
  3969. /* SVR4 and later have uid_t and gid_t. */
  3970. /* SVR3 and earlier use int, or unsigned short, or.... */
  3971. #ifndef UID_T
  3972. #define UID_T uid_t
  3973. #endif /* UID_T */
  3974. #ifndef GID_T
  3975. #define GID_T gid_t
  3976. #endif /* GID_T */
  3977. #else /* Not SVR4 */
  3978. #ifdef BSD43
  3979. #ifndef UID_T
  3980. #define UID_T uid_t
  3981. #endif /* UID_T */
  3982. #ifndef GID_T
  3983. #define GID_T gid_t
  3984. #endif /* GID_T */
  3985. #else /* Not BSD43 */
  3986. /* Default these to int for older UNIX versions */
  3987. #ifndef UID_T
  3988. #define UID_T int
  3989. #endif /* UID_T */
  3990. #ifndef GID_T
  3991. #define GID_T int
  3992. #endif /* GID_T */
  3993. #endif /* BSD43 */
  3994. #endif /* SVR4  */
  3995. #endif /* POSIX */
  3996. /*
  3997.   getpwuid() arg type, which is not necessarily the same as UID_T,
  3998.   e.g. in SCO UNIX SVR3, it's int.
  3999. */
  4000. #ifndef PWID_T
  4001. #define PWID_T UID_T
  4002. #endif /* PWID_T */
  4003. #ifdef CK_REDIR
  4004. #ifdef NEXT
  4005. #define MACHWAIT
  4006. #else
  4007. #ifdef MACH
  4008. #define MACHWAIT
  4009. #endif /* MACH */
  4010. #endif /* NEXT */
  4011. #ifdef MACHWAIT /* WAIT_T argument for wait() */
  4012. #include <sys/wait.h>
  4013. #define CK_WAIT_H
  4014. typedef union wait WAIT_T;
  4015. #else
  4016. #ifdef POSIX
  4017. #include <sys/wait.h>
  4018. #define CK_WAIT_H
  4019. #ifndef WAIT_T
  4020. typedef int WAIT_T;
  4021. #endif /* WAIT_T */
  4022. #else /* !POSIX */
  4023. typedef int WAIT_T;
  4024. #endif /* POSIX */
  4025. #endif /* MACHWAIT */
  4026. #else
  4027. typedef int WAIT_T;
  4028. #endif /* CK_REDIR */
  4029. /* Assorted other blah_t's handled here... */
  4030. #ifndef SIZE_T
  4031. #define SIZE_T size_t
  4032. #endif /* SIZE_T */
  4033. /* Forward declarations of system-dependent functions callable from all */
  4034. /* C-Kermit modules. */
  4035. /* File-related functions from system-dependent file i/o module */
  4036. #ifndef CKVFIO_C
  4037. /* For some reason, this does not agree with DEC C */
  4038. _PROTOTYP( int zkself, (void) );
  4039. #endif /* CKVFIO_C */
  4040. _PROTOTYP( int zopeni, (int, char *) );
  4041. _PROTOTYP( int zopeno, (int, char *, struct zattr *, struct filinfo *) );
  4042. _PROTOTYP( int zclose, (int) );
  4043. #ifndef MAC
  4044. _PROTOTYP( int zchin, (int, int *) );
  4045. #endif /* MAC */
  4046. _PROTOTYP( int zsinl, (int, char *, int) );
  4047. _PROTOTYP( int zinfill, (void) );
  4048. _PROTOTYP( int zsout, (int, char*) );
  4049. _PROTOTYP( int zsoutl, (int, char*) );
  4050. _PROTOTYP( int zsoutx, (int, char*, int) );
  4051. _PROTOTYP( int zchout, (int, char) );
  4052. _PROTOTYP( int zoutdump, (void) );
  4053. _PROTOTYP( int zsyscmd, (char *) );
  4054. _PROTOTYP( int zshcmd, (char *) );
  4055. #ifdef CKEXEC
  4056. _PROTOTYP( VOID z_exec, (char *, char **, int) );
  4057. #endif /* CKEXEC */
  4058. _PROTOTYP( int chkfn, (int) );
  4059. _PROTOTYP( long zchki, (char *) );
  4060. #ifdef VMSORUNIX
  4061. _PROTOTYP( long zgetfs, (char *) );
  4062. #else
  4063. #ifdef OS2
  4064. #else
  4065. _PROTOTYP( long zgetfs, (char *) );
  4066. #define zgetfs(a) zchki(a)
  4067. #endif /* OS2 */
  4068. #endif /* VMSORUNIX */
  4069. _PROTOTYP( int iswild, (char *) );
  4070. _PROTOTYP( int isdir, (char *) );
  4071. _PROTOTYP( int zchko, (char *) );
  4072. _PROTOTYP( int zdelet, (char *) );
  4073. _PROTOTYP( VOID zrtol, (char *,char *) );
  4074. _PROTOTYP( VOID zltor, (char *,char *) );
  4075. _PROTOTYP( VOID zstrip, (char *,char **) );
  4076. #ifdef VMS
  4077. _PROTOTYP( char * zrelname, (char *, char *) );
  4078. #endif /* VMS */
  4079. _PROTOTYP( int zchdir, (char *) );
  4080. _PROTOTYP( char * zhome, (void) );
  4081. _PROTOTYP( char * zgtdir, (void) );
  4082. _PROTOTYP( int zxcmd, (int, char *) );
  4083. #ifndef MAC
  4084. _PROTOTYP( int zclosf, (int) );
  4085. #endif /* MAC */
  4086. #ifdef NZXPAND
  4087. _PROTOTYP( int nzxpand, (char *, int) );
  4088. #else /* NZXPAND */
  4089. _PROTOTYP( int zxpand, (char *) );
  4090. #endif /* NZXPAND */
  4091. _PROTOTYP( int znext, (char *) );
  4092. #ifdef ZXREWIND
  4093. _PROTOTYP( int zxrewind, (void) );
  4094. #endif /* ZXREWIND */
  4095. _PROTOTYP( int zchkspa, (char *, long) );
  4096. _PROTOTYP( VOID znewn, (char *, char **) );
  4097. _PROTOTYP( int zrename, (char *, char *) );
  4098. _PROTOTYP( int zcopy, (char *, char *) );
  4099. _PROTOTYP( int zsattr, (struct zattr *) );
  4100. _PROTOTYP( int zfree, (char *) );
  4101. _PROTOTYP( char * zfcdat, (char *) );
  4102. #ifdef HPUX10
  4103. #ifdef CK_ANSIC
  4104. _PROTOTYP( int zstime, (const char *, struct zattr *, int) );
  4105. #else
  4106. _PROTOTYP( int zstime, (char *, struct zattr *, int) );
  4107. #endif /* CK_ANSIC */
  4108. #else
  4109. _PROTOTYP( int zstime, (char *, struct zattr *, int) );
  4110. #endif /* HPUX10 */
  4111. #ifdef CK_PERMS
  4112. _PROTOTYP( char * zgperm, (char *) );
  4113. _PROTOTYP( char * ziperm, (char *) );
  4114. #endif /* CK_PERMS */
  4115. _PROTOTYP( int zmail, (char *, char *) );
  4116. _PROTOTYP( int zprint, (char *, char *) );
  4117. _PROTOTYP( char * tilde_expand, (char *) );
  4118. _PROTOTYP( int zmkdir, (char *) ) ;
  4119. _PROTOTYP( int zfseek, (long) ) ;
  4120. #ifdef ZFNQFP
  4121. _PROTOTYP( struct zfnfp * zfnqfp, (char *, int, char * ) ) ;
  4122. #else
  4123. #define zfnqfp(a,b,c) ckstrncpy(c,a,b)
  4124. #endif /* ZFNQFP */
  4125. _PROTOTYP( int zvuser, (char *) ) ;
  4126. _PROTOTYP( int zvpass, (char *) ) ;
  4127. _PROTOTYP( VOID zvlogout, (void) ) ;
  4128. #ifdef OS2
  4129. _PROTOTYP( int os2setlongname, ( char * fn, char * ln ) ) ;
  4130. _PROTOTYP( int os2getlongname, ( char * fn, char ** ln ) ) ;
  4131. _PROTOTYP( int os2rexx, ( char *, char *, int ) ) ;
  4132. _PROTOTYP( int os2rexxfile, ( char *, char *, char *, int) ) ;
  4133. _PROTOTYP( int os2geteas, (char *) ) ;
  4134. _PROTOTYP( int os2seteas, (char *) ) ;
  4135. _PROTOTYP( char * get_os2_vers, (void) ) ;
  4136. _PROTOTYP( int do_label_send, (char *) ) ;
  4137. _PROTOTYP( int do_label_recv, (void) ) ;
  4138. #ifdef OS2MOUSE
  4139. _PROTOTYP( unsigned long os2_mouseon, (void) );
  4140. _PROTOTYP( unsigned long os2_mousehide, (void) );
  4141. _PROTOTYP( unsigned long os2_mouseshow, (void) );
  4142. _PROTOTYP( unsigned long os2_mouseoff, (void) );
  4143. _PROTOTYP( void os2_mouseevt, (void *) );
  4144. #endif /* OS2MOUSE */
  4145. #endif /* OS2 */
  4146. /* Functions from system-dependent terminal i/o module */
  4147. _PROTOTYP( int ttopen, (char *, int *, int, int) );  /* tty functions */
  4148. #ifndef MAC
  4149. _PROTOTYP( int ttclos, (int) );
  4150. #endif /* MAC */
  4151. _PROTOTYP( int tthang, (void) );
  4152. _PROTOTYP( int ttres, (void) );
  4153. _PROTOTYP( int ttpkt, (long, int, int) );
  4154. #ifndef MAC
  4155. _PROTOTYP( int ttvt, (long, int) );
  4156. #endif /* MAC */
  4157. _PROTOTYP( int ttsspd, (int) );
  4158. _PROTOTYP( long ttgspd, (void) );
  4159. _PROTOTYP( int ttflui, (void) );
  4160. _PROTOTYP( int ttfluo, (void) );
  4161. _PROTOTYP( int ttpushback, (CHAR *, int) );
  4162. _PROTOTYP( int ttpeek, (void) );
  4163. _PROTOTYP( int ttgwsiz, (void) );
  4164. _PROTOTYP( int ttchk, (void) );
  4165. _PROTOTYP( int ttxin, (int, CHAR *) );
  4166. _PROTOTYP( int ttxout, (CHAR *, int) );
  4167. _PROTOTYP( int ttol, (CHAR *, int) );
  4168. _PROTOTYP( int ttoc, (char) );
  4169. _PROTOTYP( int ttinc, (int) );
  4170. _PROTOTYP( int ttscarr, (int) );
  4171. _PROTOTYP( int ttgmdm, (void) );
  4172. _PROTOTYP( int ttsndb, (void) );
  4173. _PROTOTYP( int ttsndlb, (void) );
  4174. #ifdef PARSENSE
  4175. #ifdef UNIX
  4176. _PROTOTYP( int ttinl, (CHAR *, int, int, CHAR, CHAR, int) );
  4177. #else
  4178. #ifdef VMS
  4179. _PROTOTYP( int ttinl, (CHAR *, int, int, CHAR, CHAR, int) );
  4180. #else
  4181. #ifdef STRATUS
  4182. _PROTOTYP( int ttinl, (CHAR *, int, int, CHAR, CHAR, int) );
  4183. #else
  4184. #ifdef OS2
  4185. _PROTOTYP( int ttinl, (CHAR *, int, int, CHAR, CHAR, int) );
  4186. #else
  4187. #ifdef OSK
  4188. _PROTOTYP( int ttinl, (CHAR *, int, int, CHAR, CHAR, int) );
  4189. #else
  4190. _PROTOTYP( int ttinl, (CHAR *, int, int, CHAR, CHAR) );
  4191. #endif /* OSK */
  4192. #endif /* OS2 */
  4193. #endif /* STRATUS */
  4194. #endif /* VMS */
  4195. #endif /* UNIX */
  4196. #else /* ! PARSENSE */
  4197. _PROTOTYP( int ttinl, (CHAR *, int, int, CHAR) );
  4198. #endif /* PARSENSE */
  4199. /* XYZMODEM support */
  4200. /*
  4201.   CK_XYZ enables the various commands and data structures.
  4202.   XYZ_INTERNAL means these protocols are built-in; if not defined,
  4203.   then they are external.  XYZ_DLL is used to indicate a separate
  4204.   loadable library containing the XYZmodem protocol code.
  4205. */
  4206. #ifdef pdp11 /* No room for this in PDP-11 */
  4207. #define NOCKXYZ
  4208. #endif /* pdp11 */
  4209. #ifndef NOCKXYZ /* Alternative protocols */
  4210. #ifndef CK_XYZ
  4211. #ifdef UNIX
  4212. #define CK_XYZ
  4213. #else
  4214. #ifdef OS2
  4215. #define CK_XYZ
  4216. #ifndef NOXYZDLL
  4217. #define XYZ_INTERNAL /* Internal and DLL */
  4218. #define XYZ_DLL
  4219. #endif /* NOXYZDLL */
  4220. #endif /* OS2 */
  4221. #endif /* UNIX */
  4222. #endif /* CK_XYZ */
  4223. #endif /* NOCKXYZ */
  4224. #ifdef XYZ_INTERNAL /* This ensures that XYZ_INTERNAL */
  4225. #ifndef CK_XYZ /* is defined only if CK_XYZ is too */
  4226. #undef XYZ_INTERNAL
  4227. #endif /* CK_XYZ */
  4228. #endif /* XYZ_INTERNAL */
  4229. #ifdef XYZ_DLL /* This ensures XYZ_DLL is defined */
  4230. #ifndef XYZ_INTERNAL /* only if XYZ_INTERNAL is too */
  4231. #undef XYZ_DLL
  4232. #endif /* XYZ_INTERNAL */
  4233. #endif /* XYZ_DLL */
  4234. /* Console functions */
  4235. _PROTOTYP( int congm, (void) );
  4236. #ifdef COMMENT
  4237. _PROTOTYP( VOID conint, (SIGTYP (*)(int, int), SIGTYP (*)(int, int)) );
  4238. #else
  4239. _PROTOTYP( VOID conint, (SIGTYP (*)(int), SIGTYP (*)(int)) );
  4240. #endif /* COMMENT */
  4241. _PROTOTYP( VOID connoi, (void) );
  4242. _PROTOTYP( int concb, (char) );
  4243. #ifdef CONGSPD
  4244. _PROTOTYP( long congspd, (void) );
  4245. #endif /* CONGSPD */
  4246. _PROTOTYP( int conbin, (char) );
  4247. _PROTOTYP( int conres, (void) );
  4248. _PROTOTYP( int conoc, (char) );
  4249. _PROTOTYP( int conxo, (int, char *) );
  4250. _PROTOTYP( int conol, (char *) );
  4251. _PROTOTYP( int conola, (char *[]) );
  4252. _PROTOTYP( int conoll, (char *) );
  4253. _PROTOTYP( int conchk, (void) );
  4254. _PROTOTYP( int coninc, (int) );
  4255. _PROTOTYP( char * conkbg, (void) );
  4256. _PROTOTYP( int psuspend, (int) );
  4257. _PROTOTYP( int priv_ini, (void) );
  4258. _PROTOTYP( int priv_on, (void) );
  4259. _PROTOTYP( int priv_off, (void) );
  4260. _PROTOTYP( int priv_can, (void) );
  4261. _PROTOTYP( int priv_chk, (void) );
  4262. _PROTOTYP( int priv_opn, (char *, int) );
  4263. _PROTOTYP( int sysinit, (void) ); /* Misc Kermit functions */
  4264. _PROTOTYP( int syscleanup, (void) );
  4265. _PROTOTYP( int msleep, (int) );
  4266. _PROTOTYP( VOID rtimer, (void) );
  4267. _PROTOTYP( int gtimer, (void) );
  4268. #ifdef GFTIMER
  4269. _PROTOTYP( VOID rftimer, (void) );
  4270. _PROTOTYP( CKFLOAT gftimer, (void) );
  4271. #endif /* GFTIMER */
  4272. _PROTOTYP( VOID ttimoff, (void) );
  4273. _PROTOTYP( VOID ztime, (char **) );
  4274. _PROTOTYP( int parchk, (CHAR *, CHAR, int) );
  4275. _PROTOTYP( VOID doexit, (int, int) );
  4276. _PROTOTYP( int askmore, (void) );
  4277. _PROTOTYP( VOID fatal, (char *) );
  4278. _PROTOTYP( VOID fatal2, (char *, char *) );
  4279. #ifdef VMS
  4280. _PROTOTYP( int ck_cancio, (void) );
  4281. #endif /* VMS */
  4282. /* Key mapping support */
  4283. #ifdef NOICP
  4284. #ifndef NOSETKEY
  4285. #define NOSETKEY
  4286. #endif /* NOSETKEY */
  4287. #endif /* NOICP */
  4288. #ifdef MAC
  4289. #ifndef NOSETKEY
  4290. #define NOSETKEY
  4291. #endif /* NOSETKEY */
  4292. #endif /* MAC */
  4293. _PROTOTYP( int congks, (int) );
  4294. #ifndef NOSETKEY
  4295. #ifdef OS2
  4296. #define KMSIZE 8916
  4297. typedef ULONG KEY;
  4298. typedef CHAR *MACRO;
  4299. extern int wideresult;
  4300. #else /* Not OS2 */
  4301. /*
  4302.   Catch-all for systems where we don't know how to read keyboard scan
  4303.   codes > 255.  Note: CHAR (i.e. unsigned char) is very important here.
  4304. */
  4305. #define KMSIZE 256
  4306. typedef CHAR KEY;
  4307. typedef CHAR * MACRO;
  4308. #define congks coninc
  4309. #endif /* OS2 */
  4310. #endif /* NOSETKEY */
  4311. #ifndef NOKVERBS /* No Kverbs unless... */
  4312. #define NOKVERBS
  4313. #endif /* NOKVERBS */
  4314. #ifdef OS2 /* Kverbs are supported in OS/2 */
  4315. #undef NOKVERBS
  4316. /*
  4317.   Note: this value chosen to be bigger than PC BIOS key modifier bits,
  4318.   but still fit in 16 bits without affecting sign.
  4319.   As of K95 1.1.5, this no longer fits in 16 bits, good thing we are 32 bit.
  4320. */
  4321. #define F_MACRO 0x2000          /* Bit indicating a macro indice */
  4322. #define IS_MACRO(x) (x & F_MACRO)
  4323. #define F_KVERB 0x4000 /* Bit indicating a keyboard verb */
  4324. #define IS_KVERB(x) (x & F_KVERB) /* Test this bit */
  4325. #endif /* OS2 */
  4326. #define F_ESC   0x8000 /* Bit indicating ESC char combination */
  4327. #define IS_ESC(x) (x & F_ESC)
  4328. #define F_CSI   0x10000 /* Bit indicating CSI char combination */
  4329. #define IS_CSI(x) (x & F_CSI)
  4330. #ifdef NOSPL /* This might be overkill.. */
  4331. #ifndef NOKVERBS /* Not all Kverbs require */
  4332. #define NOKVERBS /* the script programming language. */
  4333. #endif /* NOKVERBS */
  4334. #ifndef NOTAKEARGS
  4335. #define NOTAKEARGS
  4336. #endif /* NOTAKEARGS */
  4337. #endif /* NOSPL */
  4338. /*
  4339.   Function prototypes for system and library functions.
  4340. */
  4341. #ifdef _POSIX_SOURCE
  4342. #ifndef VMS
  4343. #ifndef MAC
  4344. #define CK_ANSILIBS
  4345. #endif /* MAC */
  4346. #endif /* VMS */
  4347. #endif /* _POSIX_SOURCE */
  4348. #ifdef NEXT
  4349. #define CK_ANSILIBS
  4350. #endif /* NEXT */
  4351. #ifdef SVR4
  4352. #define CK_ANSILIBS
  4353. #endif /* SVR4 */
  4354. #ifdef STRATUS /* Stratus VOS uses ANSI libraries */
  4355. #define CK_ANSILIBS
  4356. #endif /* STRATUS */
  4357. #ifdef OS2
  4358. #define CK_ANSILIBS
  4359. #ifndef NOCURSES
  4360. #define MYCURSES
  4361. #endif /* NOCURSES */
  4362. #define CK_RTSCTS
  4363. #ifdef __IBMC__
  4364. #define S_IFMT 0xF000
  4365. #define timezone _timezone
  4366. #endif /* __IBMC__ */
  4367. #include <fcntl.h>
  4368. #include <io.h>
  4369. #ifdef __EMX__
  4370. #ifndef __32BIT__
  4371. #define __32BIT__
  4372. #endif /* __32BIT__ */
  4373. #include <sys/timeb.h>
  4374. #else
  4375. #include <direct.h>
  4376. #ifdef OS2
  4377. #undef SIGALRM
  4378. #endif /* OS2 */
  4379. #ifndef SIGUSR1
  4380. #define SIGUSR1 7
  4381. #endif /* SIGUSR1 */
  4382. #define SIGALRM SIGUSR1
  4383. _PROTOTYP( unsigned alarm, (unsigned) );
  4384. _PROTOTYP( unsigned sleep, (unsigned) );
  4385. #endif /* __EMX__ */
  4386. #ifdef OS2
  4387. _PROTOTYP( unsigned long zdskspace, (int) );
  4388. #else
  4389. _PROTOTYP( long zdskspace, (int) );
  4390. #endif /* OS2 */
  4391. _PROTOTYP( int zchdsk, (int) );
  4392. _PROTOTYP( int conincraw, (int) );
  4393. _PROTOTYP( int ttiscom, (int f) );
  4394. _PROTOTYP( int IsFileNameValid, (char *) );
  4395. _PROTOTYP( void ChangeNameForFAT, (char *) );
  4396. _PROTOTYP( char *GetLoadPath, (void) );
  4397. #endif /* OS2 */
  4398. /* Fullscreen file transfer display items... */
  4399. #ifndef NOCURSES
  4400. #ifdef CK_NCURSES /* CK_NCURSES implies CK_CURSES */
  4401. #ifndef CK_CURSES
  4402. #define CK_CURSES
  4403. #endif /* CK_CURSES */
  4404. #endif /* CK_NCURSES */
  4405. #ifdef MYCURSES /* MYCURSES implies CK_CURSES */
  4406. #ifndef CK_CURSES
  4407. #define CK_CURSES
  4408. #endif /* CK_CURSES */
  4409. #endif /* MYCURSES */
  4410. #endif /* NOCURSES */
  4411. #ifdef NOCURSES
  4412. #ifdef CK_CURSES
  4413. #undef CK_CURSES
  4414. #endif /* CK_CURSES */
  4415. #ifndef NODISPLAY
  4416. #define NODISPLAY
  4417. #endif /* NODISPLAY */
  4418. #endif /* NOCURSES */
  4419. #ifdef CK_CURSES
  4420. /*
  4421.   The CK_WREFRESH symbol is defined if the curses library provides
  4422.   clearok() and wrefresh() functions, which are used in repainting
  4423.   the screen.
  4424. */
  4425. #ifdef NOWREFRESH /* Override CK_WREFRESH */
  4426. #ifdef CK_WREFRESH /* If this is defined, */
  4427. #undef CK_WREFRESH /* undefine it. */
  4428. #endif /* CK_WREFRESH */
  4429. #else /* !NOWREFRESH */ /* No override... */
  4430. #ifndef CK_WREFRESH /* If CK_WREFRESH not defined */
  4431. /*
  4432.   Automatically define it for systems known to have it ...
  4433. */
  4434. #ifdef VMS /* DEC (Open)VMS has it */
  4435. #define CK_WREFRESH
  4436. #else
  4437. #ifdef ultrix /* DEC ULTRIX has it */
  4438. #else
  4439. #ifdef SVR3 /* System V has it */
  4440. #define CK_WREFRESH
  4441. #else
  4442. #ifdef BSD44 /* 4.4 BSD has it */
  4443. #define CK_WREFRESH
  4444. #else
  4445. #ifdef NEXT /* Define it for NeXTSTEP */
  4446. #define CK_WREFRESH
  4447. #else
  4448. #ifdef SUNOS4 /* SunOS 4.x... */
  4449. #define CK_WREFRESH
  4450. #else
  4451. #ifdef SOLARIS25 /* Solaris 2.5 and later */
  4452. #define CK_WREFRESH
  4453. #else
  4454. #ifdef AIXRS /* RS/6000 AIX ... */
  4455. #define CK_WREFRESH
  4456. #else
  4457. #ifdef RTAIX /* RT PC AIX ... */
  4458. #define CK_WREFRESH
  4459. #else
  4460. #ifdef OSF /* DEC OSF/1 ... */
  4461. #define CK_WREFRESH
  4462. /* Add more here, or just define CK_WREFRESH on the CC command line... */
  4463. #endif /* OSF */
  4464. #endif /* RTAIX */
  4465. #endif /* AIXRS */
  4466. #endif /* SOLARIS25 */
  4467. #endif /* SUNOS4 */
  4468. #endif /* NEXT */
  4469. #endif /* BSD44 */
  4470. #endif /* SVR3 */
  4471. #endif /* ultrix */
  4472. #endif /* VMS */
  4473. #else /* CK_WREFRESH is defined */
  4474. #ifndef CK_CURSES /* CK_WREFRESH implies CK_CURSES */
  4475. #define CK_CURSES
  4476. #endif /* CK_CURSES */
  4477. #endif /* CK_WREFRESH */
  4478. #endif /* NOWREFRESH */
  4479. #ifndef TRMBUFL
  4480. #ifdef BIGBUFOK
  4481. #define TRMBUFL 16384
  4482. #else
  4483. #ifdef DYNAMIC
  4484. #define TRMBUFL 8192
  4485. #else
  4486. #define TRMBUFL 1024
  4487. #endif /* BIGBUFOK */
  4488. #endif /* DYNAMIC */
  4489. #endif /* TRMBUFL */
  4490. #endif /* CK_CURSES */
  4491. /*
  4492.   Whether to use ckmatch() in all its glory for pretty much full regexes.
  4493.   If CKREGEX is NOT defined, all but * and ? matching are removed from
  4494.   ckmatch().  NOTE: Defining CKREGEX does not necessarily mean that ckmatch()
  4495.   regexes are used for filename matching.  That depends on whether zxpand()
  4496.   in ck?fio.c calls ckmatch().
  4497. */
  4498. #ifndef NOCKREGEX
  4499. #ifndef CKREGEX
  4500. #define CKREGEX
  4501. #endif /* CKREGEX */
  4502. #endif /* NOCKREGEX */
  4503. #ifdef CK_ANSILIBS
  4504. /*
  4505.   String library functions.
  4506.   For ANSI C, get prototypes from <string.h>.
  4507.   Otherwise, skip the prototypes.
  4508. */
  4509. #include <string.h>
  4510. /*
  4511.   Prototypes for other commonly used library functions, such as
  4512.   malloc, free, getenv, atol, atoi, and exit.  Otherwise, no prototypes.
  4513. */
  4514. #include <stdlib.h>
  4515. #ifdef DIAB /* DIAB DS90 */
  4516. /* #include <commonC.h>  */
  4517. #include <sys/wait.h>
  4518. #define CK_WAIT_H
  4519. #ifdef COMMENT
  4520. extern void exit(int status);
  4521. extern void _exit(int status);
  4522. extern int uname(struct utsname *name);
  4523. #endif /* COMMENT */
  4524. extern int chmod(char *path, int mode);
  4525. extern int ioctl(int fildes, int request, ...);
  4526. extern int rdchk(int ttyfd);
  4527. extern int nap(int m);
  4528. #ifdef COMMENT
  4529. extern int getppid(void);
  4530. #endif /* COMMENT */
  4531. extern int _filbuf(FILE *stream);
  4532. extern int _flsbuf(char c,FILE *stream);
  4533. #endif /* DIAB */
  4534. /*
  4535.   Prototypes for UNIX functions like access, alarm, chdir, sleep, fork,
  4536.   and pause.  Otherwise, no prototypes.
  4537. */
  4538. #ifdef VMS
  4539. #include <unixio.h>
  4540. #endif /* VMS */
  4541. #ifdef NEXT
  4542. #ifndef NEXT33
  4543. #include <libc.h>
  4544. #endif /* NEXT33 */
  4545. #else  /* NoT NeXT */
  4546. #ifndef AMIGA
  4547. #ifndef OS2
  4548. #ifdef STRATUS
  4549. #include <c_utilities.h>
  4550. #else /* !STRATUS */
  4551. #ifndef OSKXXC
  4552. #include <unistd.h>
  4553. #endif /* OSKXXC */
  4554. #ifdef HAVE_CRYPT_H
  4555. #include <crypt.h>
  4556. #endif /* HAVE_CRYPT_H */
  4557. #endif /* STRATUS */
  4558. #endif /* OS2 */
  4559. #endif /* AMIGA */
  4560. #endif /* NEXT */
  4561. #else /* Not ANSI libs... */
  4562. #ifdef MAC
  4563. #include <String.h>
  4564. #include <StdLib.h>
  4565. #endif /* MAC */
  4566. #ifdef HPUX
  4567. #ifndef HPUXPRE65
  4568. #include <unistd.h>
  4569. #endif /* HPUXPRE65 */
  4570. #endif /* HPUX */
  4571. #ifdef SUNOS41
  4572. #include <unistd.h>
  4573. #include <stdlib.h>
  4574. #else
  4575. #ifndef MAC
  4576. /*
  4577.   It is essential that these are declared correctly!
  4578.   Which is not always easy.  Take malloc() for instance ...
  4579. */
  4580. #ifdef PYRAMID
  4581. #ifdef SVR4
  4582. #ifdef __STDC__
  4583. #define SIZE_T_MALLOC
  4584. #endif /* __STDC__ */
  4585. #endif /* SVR4 */
  4586. #endif /* PYRAMID */
  4587. /*
  4588.   Maybe some other environments need the same treatment for malloc.
  4589.   If so, define SIZE_T_MALLOC for them here or in compiler CFLAGS.
  4590. */
  4591. #ifdef SIZE_T_MALLOC
  4592. _PROTOTYP( void * malloc, (size_t) );
  4593. #else
  4594. _PROTOTYP( char * malloc, (unsigned int) );
  4595. #endif /* SIZE_T_MALLOC */
  4596. _PROTOTYP( char * getenv, (char *) );
  4597. _PROTOTYP( long atol, (char *) );
  4598. #endif /* !MAC */
  4599. #endif /* SUNOS41 */
  4600. #endif /* CK_ANSILIBS */
  4601. #ifndef NULL /* In case NULL is still not defined */
  4602. #define NULL 0L
  4603. /* or #define NULL 0 */
  4604. /* or #define NULL ((char *) 0) */
  4605. /* or #define NULL ((void *) 0) */
  4606. #endif /* NULL */
  4607. /* Maximum length for a fully qualified filename, not counting  at end. */
  4608. /*
  4609.   This is a rough cut, and errs on the side of being too big.  We don't
  4610.   want to pull in hundreds of header files looking for many and varied
  4611.   symbols, for fear of introducing unnecessary conflicts.
  4612. */
  4613. #ifndef CKMAXPATH
  4614. #ifdef MAXPATHLEN /* (it probably isn't) */
  4615. #define CKMAXPATH MAXPATHLEN
  4616. #else
  4617. #ifdef MAC
  4618. #define CKMAXPATH 63
  4619. #else
  4620. #ifdef pdp11
  4621. #define CKMAXPATH 255
  4622. #else
  4623. #ifdef UNIX /* Even though some are way less... */
  4624. #define CKMAXPATH 1023
  4625. #else
  4626. #ifdef VMS
  4627. #define CKMAXPATH 675 /* (derivation is complicated...) */
  4628. #else
  4629. #ifdef STRATUS
  4630. #define CKMAXPATH 256 /* == $MXPL from PARU.H */
  4631. #else
  4632. #ifdef datageneral
  4633. #define CKMAXPATH 256 /* == $MXPL from PARU.H */
  4634. #else
  4635. #define CKMAXPATH 255
  4636. #endif /* STRATUS */
  4637. #endif /* datageneral */
  4638. #endif /* VMS */
  4639. #endif /* UNIX */
  4640. #endif /* pdp11 */
  4641. #endif /* MAC */
  4642. #endif /* MAXPATHLEN */
  4643. #endif /* CKMAXPATH */
  4644. #ifdef pdp11
  4645. #define NOCHANNELIO
  4646. #else
  4647. #ifndef CKMAXOPEN
  4648. #ifdef QNX
  4649. #define CKMAXOPEN 390
  4650. #else
  4651. #ifdef VMS
  4652. #define CKMAXOPEN 64
  4653. #else
  4654. #ifdef OPEN_MAX
  4655. #define CKMAXOPEN OPEN_MAX
  4656. #else
  4657. #ifdef FOPEN_MAX
  4658. #define CKMAXOPEN FOPEN_MAX
  4659. #else
  4660. #define CKMAXOPEN 64
  4661. #endif /* FOPEN_MAX */
  4662. #endif /* OPEN_MAX */
  4663. #endif /* VMS */
  4664. #endif /* QNX */
  4665. #endif /* CKMAXOPEN */
  4666. /* Maximum channels for FOPEN = CKMAXOPEN minus logs, stdio, etc */
  4667. #ifndef Z_MINCHAN
  4668. #define Z_MINCHAN 16
  4669. #endif /* Z_MINCHAN */
  4670. #ifndef Z_MAXCHAN
  4671. #define Z_MAXCHAN (CKMAXOPEN-ZNFILS-5)
  4672. #endif /* Z_MAXCHAN */
  4673. #endif /* pdp11 */
  4674. /* New-format nzltor() and nzrtol() functions that handle pathnames */
  4675. #ifndef NZLTOR
  4676. #ifdef UNIX
  4677. #define NZLTOR
  4678. #else
  4679. #ifdef VMS
  4680. #define NZLTOR
  4681. #else
  4682. #ifdef OS2
  4683. #define NZLTOR
  4684. #else
  4685. #ifdef STRATUS
  4686. #define NZLTOR
  4687. #endif /* STRATUS */
  4688. #endif /* OS2 */
  4689. #endif /* VMS */
  4690. #endif /* UNIX */
  4691. #endif /* NZLTOR */
  4692. #ifdef NZLTOR
  4693. _PROTOTYP( VOID nzltor, (char *, char *, int, int, int) );
  4694. _PROTOTYP( VOID nzrtol, (char *, char *, int, int, int) );
  4695. #endif /* NZLTOR */
  4696. /* Implementations with a zrmdir() function */
  4697. #ifndef ZRMDIR
  4698. #ifdef OS2
  4699. #define ZRMDIR
  4700. #else /* OS2 */
  4701. #ifdef UNIX
  4702. #define ZRMDIR
  4703. #else
  4704. #ifdef VMS
  4705. #define ZRMDIR
  4706. #else /* VMS */
  4707. #ifdef STRATUS
  4708. #define ZRMDIR
  4709. #endif /* STRATUS */
  4710. #endif /* VMS */
  4711. #endif /* UNIX */
  4712. #endif /* OS2 */
  4713. #endif /* ZRMDIR */
  4714. #ifdef ZRMDIR
  4715. _PROTOTYP( int zrmdir, (char *) );
  4716. #endif /* ZRMDIR */
  4717. #ifndef FILECASE
  4718. #ifdef UNIXOROSK
  4719. #define FILECASE 1
  4720. #else
  4721. #define FILECASE 0
  4722. #endif /* UNIXOROSK */
  4723. #ifndef CKCMAI
  4724. extern int filecase;
  4725. #endif /* CKCMAI */
  4726. #endif /* FILECASE */
  4727. /* Funny names for library functions department... */
  4728. #ifdef ZILOG
  4729. #define setjmp setret
  4730. #define longjmp longret
  4731. #define jmp_buf ret_buf
  4732. #define getcwd curdir
  4733. #endif /* ZILOG */
  4734. #ifdef STRATUS
  4735. /* The C-runtime conflicts with things we do in Stratus VOS ckltio.c ... */
  4736. #define printf vosprtf
  4737. _PROTOTYP( int vosprtf, (char *fmt, ...) );
  4738. #define perror(txt) printf("%sn", txt)
  4739. /* char_varying is a string type from PL/I that VOS uses extensively */
  4740. #define CV char_varying
  4741. #endif /* STRATUS */
  4742. #ifdef NT
  4743. extern int OSVer;
  4744. #define isWin95() (OSVer==VER_PLATFORM_WIN32_WINDOWS)
  4745. #else
  4746. #define isWin95() (0)
  4747. #endif /* NT */
  4748. #ifndef BPRINT
  4749. #ifdef OS2
  4750. #define BPRINT
  4751. #endif /* OS2 */
  4752. #endif /* BPRINT */
  4753. #ifndef SESLIMIT
  4754. #ifdef OS2
  4755. #define SESLIMIT
  4756. #endif /* OS2 */
  4757. #endif /* SESLIMIT */
  4758. #ifndef PCTERM
  4759. #ifdef NT
  4760. #define PCTERM
  4761. #endif /* NT */
  4762. #endif /* PCTERM */
  4763. #ifdef BEOSORBEBOX
  4764. #define query ckquery
  4765. #endif /* BEOSORBEBOX */
  4766. #ifdef NETCONN /* Special "network" types... */
  4767. #ifdef OS2
  4768. #ifndef NETFILE
  4769. #define NETFILE
  4770. #endif /* NETFILE */
  4771. #ifndef NOPUSH
  4772. #ifndef NETCMD
  4773. #define NETCMD
  4774. #endif /* NETCMD */
  4775. #endif /* NOPUSH */
  4776. #ifdef NT
  4777. #ifndef NETDLL
  4778. #define NETDLL
  4779. #endif /* NETDLL */
  4780. #ifndef SSH
  4781. #define SSH
  4782. #endif /* SSH */
  4783. #endif /* NT */
  4784. #endif /* OS2 */
  4785. #endif /* NETCONN */
  4786. #ifndef PTYORPIPE /* NETCMD and/or NETPTY defined */
  4787. #ifdef NETCMD
  4788. #define PTYORPIPE
  4789. #else
  4790. #ifdef NETPTY
  4791. #define PTYORPIPE
  4792. #endif /* NETPTY */
  4793. #endif /* NETCMD */
  4794. #endif /* PTYORPIPE */
  4795. /* Platforms that have memcpy() -- only after all headers included */
  4796. #ifndef USE_MEMCPY
  4797. #ifdef VMS
  4798. #define USE_MEMCPY
  4799. #else
  4800. #ifdef NEXT
  4801. #define USE_MEMCPY
  4802. #else
  4803. #ifdef OS2
  4804. #define USE_MEMCPY
  4805. #else
  4806. #ifdef __linux__
  4807. #define USE_MEMCPY
  4808. #else
  4809. #ifdef SOLARIS
  4810. #define USE_MEMCPY
  4811. #else
  4812. #ifdef SUNOS4
  4813. #define USE_MEMCPY
  4814. #else
  4815. #ifdef AIXRS
  4816. #define USE_MEMCPY
  4817. #else
  4818. #ifdef HPUX
  4819. #define USE_MEMCPY
  4820. #else
  4821. #ifdef POSIX
  4822. #define USE_MEMCPY
  4823. #else
  4824. #ifdef SVR4
  4825. #define USE_MEMCPY
  4826. #else
  4827. #ifdef OSF
  4828. #define USE_MEMCPY
  4829. #else
  4830. #ifdef datageneral
  4831. #define USE_MEMCPY
  4832. #else
  4833. #ifdef STRATUS
  4834. #define USE_MEMCPY
  4835. #endif /* STRATUS */
  4836. #endif /* datageneral */
  4837. #endif /* SVR4 */
  4838. #endif /* OSF */
  4839. #endif /* POSIX */
  4840. #endif /* HPUX */
  4841. #endif /* AIXRS */
  4842. #endif /* SUNOS */
  4843. #endif /* SOLARIS */
  4844. #endif /* __linux__ */
  4845. #endif /* OS2 */
  4846. #endif /* NEXT */
  4847. #endif /* VMS */
  4848. #endif /* USE_MEMCPY */
  4849. #ifndef USE_MEMCPY
  4850. #define memcpy(a,b,c) ckmemcpy((a),(b),(c))
  4851. #endif /* USE_MEMCPY */
  4852. /* User authentication for IKS -- So far K95 and UNIX only */
  4853. #ifdef NOICP
  4854. #ifndef NOLOGIN
  4855. #define NOLOGIN
  4856. #endif /* NOLOGIN */
  4857. #endif /* NOICP */
  4858. #ifndef NOLOGIN
  4859. #ifdef OS2ORUNIX
  4860. #define CK_LOGIN
  4861. #ifdef NT
  4862. #define NTCREATETOKEN
  4863. #endif /* NT */
  4864. #endif /* UNIX */
  4865. #endif /* NOLOGIN */
  4866. #ifdef OS2
  4867. #define CKSPINNER
  4868. #endif /* OS2 */
  4869. #ifdef CK_LOGIN /* Telnet protocol required */
  4870. #ifndef TNCODE /* for login to IKSD. */
  4871. #define TNCODE
  4872. #endif /* TNCODE */
  4873. #endif /* CK_LOGIN */
  4874. #ifdef CK_AUTHENTICATION
  4875. #ifdef NOSENDUID
  4876. #undef NOSENDUID
  4877. #endif /* NOSENDUID */
  4878. #endif /* CK_AUTHENTICAITON */
  4879. #ifdef TNCODE /* Should TELNET send user ID? */
  4880. #ifndef NOSENDUID
  4881. #ifndef CKSENDUID
  4882. #define CKSENDUID
  4883. #endif /* CKSENDUID */
  4884. #endif /* NOSENDUID */
  4885. #endif /* TNCODE */
  4886. /* UNIX platforms that don't have getusershell() */
  4887. #ifdef UNIX
  4888. #ifndef NOGETUSERSHELL
  4889. #ifdef IRIX
  4890. #define NOGETUSERSHELL
  4891. #else
  4892. #ifdef PTX
  4893. #define NOGETUSERSHELL
  4894. #else
  4895. #ifdef AIXRS
  4896. #define NOGETUSERSHELL
  4897. #else
  4898. #ifdef SINIX
  4899. #define NOGETUSERSHELL
  4900. #else
  4901. #ifdef UNIXWARE
  4902. #define NOGETUSERSHELL
  4903. #else
  4904. #ifdef COHERENT
  4905. #define NOGETUSERSHELL
  4906. #endif /* COHERENT */
  4907. #endif /* UNIXWARE */
  4908. #endif /* SINIX */
  4909. #endif /* AIXRX */
  4910. #endif /* PTX */
  4911. #endif /* IRIX */
  4912. #endif /* NOGETUSERSHELL */
  4913. #endif /* UNIX */
  4914. #ifdef CK_LOGIN
  4915. #ifdef NT
  4916. #ifndef NOSYSLOG
  4917. #ifndef CKSYSLOG
  4918. #define CKSYSLOG
  4919. #endif /* CKSYSLOG */
  4920. #endif /* NOSYSLOG */
  4921. #endif /* NT */
  4922. #ifdef UNIX
  4923. #ifndef NOSYSLOG
  4924. #ifndef CKSYSLOG
  4925. #define CKSYSLOG
  4926. #endif /* CKSYSLOG */
  4927. #endif /* NOSYSLOG */
  4928. #ifndef NOWTMP
  4929. #ifndef CKWTMP
  4930. #define CKWTMP
  4931. #endif /* CKWTMP */
  4932. #endif /* NOWTMP */
  4933. #ifndef NOGETUSERSHELL
  4934. #ifndef GETUSERSHELL
  4935. #define GETUSERSHELL
  4936. #endif /* GETUSERSHELL */
  4937. #endif /* NOGETUSERSHELL */
  4938. #endif /* UNIX */
  4939. _PROTOTYP( int ckxlogin, (CHAR *, CHAR *, CHAR *, int));
  4940. _PROTOTYP( int ckxlogout, (VOID));
  4941. #endif /* CK_LOGIN */
  4942. #ifdef CKSYSLOG /* Syslogging levels */
  4943. #define SYSLG_NO 0 /* No logging */
  4944. #define SYSLG_LI 1 /* Login/out */
  4945. #define SYSLG_DI 2 /* Dialing out */
  4946. #define SYSLG_AC 3 /* Making any kind of connection */
  4947. #define SYSLG_PR 4                      /* Protocol Operations */
  4948. #define SYSLG_FC 5 /* File creation */
  4949. #define SYSLG_FA 6 /* File reading */
  4950. #define SYSLG_CM 7 /* Top-level commands */
  4951. #define SYSLG_CX 8 /* All commands */
  4952. #define SYSLG_DB 9 /* Debug */
  4953. #define SYSLGMAX 9 /* Highest level */
  4954. #define SYSLG_DF SYSLG_FA /* Default level */
  4955. /* Logging function */
  4956. _PROTOTYP(VOID cksyslog,(int, int, char *, char *, char *));
  4957. #endif /* CKSYSLOG */
  4958. #ifndef CKCMAI
  4959. extern int ckxlogging, ckxsyslog, ikdbopen;
  4960. #endif /* CKCMAI */
  4961. #ifndef CK_KEYTAB
  4962. #define CK_KEYTAB
  4963. /* Keyword Table Template */
  4964. /* Note: formerly defined in ckucmd.h but now more widely used */
  4965. struct keytab { /* Keyword table */
  4966.     char *kwd; /* Pointer to keyword string */
  4967.     int kwval; /* Associated value */
  4968.     int flgs; /* Flags (as defined above) */
  4969. };
  4970. #endif /* CK_KEYTAB */
  4971. /* Local Echo Buffer prototypes */
  4972. _PROTOTYP( VOID le_init, (void) );
  4973. _PROTOTYP( VOID le_clean, (void));
  4974. _PROTOTYP( int le_inbuf, (void));
  4975. _PROTOTYP( int le_putstr, (CHAR *));
  4976. _PROTOTYP( int le_puts, (CHAR *, int));
  4977. _PROTOTYP( int le_putchar, (CHAR));
  4978. _PROTOTYP( int le_getchar, (CHAR *));
  4979. #ifndef NOHTTP
  4980. #ifndef NOCMDATE2TM
  4981. #ifndef CMDATE2TM
  4982. #ifdef OS2ORUNIX
  4983. #define CMDATE2TM
  4984. #endif /* OS2ORUNIX */
  4985. #endif /* CMDATE2TM */
  4986. #endif /* NOCMDATE2TM */
  4987. #ifdef CMDATE2TM
  4988. _PROTOTYP( struct tm * cmdate2tm, (char *,int));
  4989. #endif /* CMDATE2TM */
  4990. #endif /* NOHTTP */
  4991. _PROTOTYP( int readpass, (char *, char *, int));
  4992. _PROTOTYP( int readtext, (char *, char *, int));
  4993. #include "ckclib.h"
  4994. #endif /* CKCDEB_H */
  4995. /* End of ckcdeb.h */