Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.   Copyright (c) 1990-2004 Info-ZIP.  All rights reserved.
  3.  
  4.   See the accompanying file LICENSE, version 2000-Apr-09 or later
  5.   (the contents of which are also included in zip.h) for terms of use.
  6.   If, for some reason, all these files are missing, the Info-ZIP license
  7.   also may be found at:  ftp://ftp.info-zip.org/pub/infozip/license.html
  8. */
  9. /*
  10.    ttyio.h
  11.  */
  12.  
  13. #ifndef __ttyio_h   /* don't include more than once */
  14. #define __ttyio_h
  15.  
  16. #ifndef __crypt_h
  17. #  include "crypt.h"  /* ensure that encryption header file has been seen */
  18. #endif
  19.  
  20. #if (CRYPT || (defined(UNZIP) && !defined(FUNZIP)))
  21. /*
  22.  * Non-echo keyboard/console input support is needed and enabled.
  23.  */
  24.  
  25. #ifndef __G         /* UnZip only, for now (DLL stuff) */
  26. #  define __G
  27. #  define __G__
  28. #  define __GDEF
  29. #  define __GPRO    void
  30. #  define __GPRO__
  31. #endif
  32.  
  33. #ifndef ZCONST      /* UnZip only (until have configure script like Zip) */
  34. #  define ZCONST const
  35. #endif
  36.  
  37. #if (defined(MSDOS) || defined(OS2) || defined(WIN32))
  38. #  ifndef DOS_OS2_W32
  39. #    define DOS_OS2_W32
  40. #  endif
  41. #endif
  42.  
  43. #if (defined(DOS_OS2_W32) || defined(__human68k__))
  44. #  ifndef DOS_H68_OS2_W32
  45. #    define DOS_H68_OS2_W32
  46. #  endif
  47. #endif
  48.  
  49. #if (defined(DOS_OS2_W32) || defined(FLEXOS))
  50. #  ifndef DOS_FLX_OS2_W32
  51. #    define DOS_FLX_OS2_W32
  52. #  endif
  53. #endif
  54.  
  55. #if (defined(DOS_H68_OS2_W32) || defined(FLEXOS))
  56. #  ifndef DOS_FLX_H68_OS2_W32
  57. #    define DOS_FLX_H68_OS2_W32
  58. #  endif
  59. #endif
  60.  
  61. #if (defined(__ATHEOS__) || defined(__BEOS__) || defined(UNIX))
  62. #  ifndef ATH_BEO_UNX
  63. #    define ATH_BEO_UNX
  64. #  endif
  65. #endif
  66.  
  67. #if (defined(VM_CMS) || defined(MVS))
  68. #  ifndef CMS_MVS
  69. #    define CMS_MVS
  70. #  endif
  71. #endif
  72.  
  73.  
  74. /* Function prototypes */
  75.  
  76. /* The following systems supply a `non-echo' character input function "getch()"
  77.  * (or an alias) and do not need the echoff() / echon() function pair.
  78.  */
  79. #ifdef AMIGA
  80. #  define echoff(f)
  81. #  define echon()
  82. #  define getch() Agetch()
  83. #  define HAVE_WORKING_GETCH
  84. #endif /* AMIGA */
  85.  
  86. #ifdef ATARI
  87. #  define echoff(f)
  88. #  define echon()
  89. #  include <osbind.h>
  90. #  define getch() (Cnecin() & 0x000000ff)
  91. #  define HAVE_WORKING_GETCH
  92. #endif
  93.  
  94. #ifdef MACOS
  95. #  define echoff(f)
  96. #  define echon()
  97. #  define getch() macgetch()
  98. #  define HAVE_WORKING_GETCH
  99. #endif
  100.  
  101. #ifdef NLM
  102. #  define echoff(f)
  103. #  define echon()
  104. #  define HAVE_WORKING_GETCH
  105. #endif
  106.  
  107. #ifdef QDOS
  108. #  define echoff(f)
  109. #  define echon()
  110. #  define HAVE_WORKING_GETCH
  111. #endif
  112.  
  113. #ifdef RISCOS
  114. #  define echoff(f)
  115. #  define echon()
  116. #  define getch() SWI_OS_ReadC()
  117. #  define HAVE_WORKING_GETCH
  118. #endif
  119.  
  120. #ifdef DOS_H68_OS2_W32
  121. #  define echoff(f)
  122. #  define echon()
  123. #  ifdef WIN32
  124. #    ifndef getch
  125. #      define getch() getch_win32()
  126. #    endif
  127. #  else /* !WIN32 */
  128. #    ifdef __EMX__
  129. #      ifndef getch
  130. #        define getch() _read_kbd(0, 1, 0)
  131. #      endif
  132. #    else /* !__EMX__ */
  133. #      ifdef __GO32__
  134. #        include <pc.h>
  135. #        define getch() getkey()
  136. #      else /* !__GO32__ */
  137. #        include <conio.h>
  138. #      endif /* ?__GO32__ */
  139. #    endif /* ?__EMX__ */
  140. #  endif /* ?WIN32 */
  141. #  define HAVE_WORKING_GETCH
  142. #endif /* DOS_H68_OS2_W32 */
  143.  
  144. #ifdef FLEXOS
  145. #  define echoff(f)
  146. #  define echon()
  147. #  define getch() getchar() /* not correct, but may not be on a console */
  148. #  define HAVE_WORKING_GETCH
  149. #endif
  150.  
  151. /* For VM/CMS and MVS, we do not (yet) have any support to switch terminal
  152.  * input echo on and off. The following "fake" definitions allow inclusion
  153.  * of crypt support and UnZip's "pause prompting" features, but without
  154.  * any echo suppression.
  155.  */
  156. #ifdef CMS_MVS
  157. #  define echoff(f)
  158. #  define echon()
  159. #endif
  160.  
  161. #ifdef TANDEM
  162. #  define echoff(f)
  163. #  define echon()
  164. #  define getch() zgetch() /* defined in TANDEMC */
  165. #  define HAVE_WORKING_GETCH
  166. #endif
  167.  
  168. /* The THEOS C runtime library supplies the function conmask() to toggle
  169.  * terminal input echo on (conmask("e")) and off (conmask("n")).  But,
  170.  * since THEOS C RTL also contains a working non-echo getch() function,
  171.  * the echo toggles are not needed.
  172.  */
  173. #ifdef THEOS
  174. #  define echoff(f)
  175. #  define echon()
  176. #  define HAVE_WORKING_GETCH
  177. #endif
  178.  
  179. /* VMS has a single echo() function in ttyio.c to toggle terminal
  180.  * input echo on and off.
  181.  */
  182. #ifdef VMS
  183. #  define echoff(f)  echo(0)
  184. #  define echon()    echo(1)
  185. #  define getch()    tt_getch()
  186. #  define FGETCH(f)  tt_getch()
  187.    int echo OF((int));
  188.    int tt_getch OF((void));
  189. #endif
  190.  
  191. /* For all other systems, ttyio.c supplies the two functions Echoff() and
  192.  * Echon() for suppressing and (re)enabling console input echo.
  193.  */
  194. #ifndef echoff
  195. #  define echoff(f)  Echoff(__G__ f)
  196. #  define echon()    Echon(__G)
  197.    void Echoff OF((__GPRO__ int f));
  198.    void Echon OF((__GPRO));
  199. #endif
  200.  
  201. /* this stuff is used by MORE and also now by the ctrl-S code; fileio.c only */
  202. #if (defined(UNZIP) && !defined(FUNZIP))
  203. #  ifdef HAVE_WORKING_GETCH
  204. #    define FGETCH(f)  getch()
  205. #  endif
  206. #  ifndef FGETCH
  207.      /* default for all systems where no getch()-like function is available */
  208.      int zgetch OF((__GPRO__ int f));
  209. #    define FGETCH(f)  zgetch(__G__ f)
  210. #  endif
  211. #endif /* UNZIP && !FUNZIP */
  212.  
  213. #if (CRYPT && !defined(WINDLL))
  214.    char *getp OF((__GPRO__ ZCONST char *m, char *p, int n));
  215. #endif
  216.  
  217. #else /* !(CRYPT || (UNZIP && !FUNZIP)) */
  218.  
  219. /*
  220.  * No need for non-echo keyboard/console input; provide dummy definitions.
  221.  */
  222. #define echoff(f)
  223. #define echon()
  224.  
  225. #endif /* ?(CRYPT || (UNZIP && !FUNZIP)) */
  226.  
  227. #endif /* !__ttyio_h */
  228.