ttyio.h
上传用户:andy_li
上传日期:2007-01-06
资源大小:1019k
文件大小:4k
源码类别:

压缩解压

开发平台:

MultiPlatform

  1. /*
  2.    ttyio.h
  3.  */
  4. #ifndef __ttyio_h   /* don't include more than once */
  5. #define __ttyio_h
  6. #ifndef __crypt_h
  7. #  include "crypt.h"  /* ensure that encryption header file has been seen */
  8. #endif
  9. #if (CRYPT || (defined(UNZIP) && !defined(FUNZIP)))
  10. /*
  11.  * Non-echo keyboard/console input support is needed and enabled.
  12.  */
  13. #ifndef __G         /* UnZip only, for now (DLL stuff) */
  14. #  define __G
  15. #  define __G__
  16. #  define __GDEF
  17. #  define __GPRO    void
  18. #  define __GPRO__
  19. #endif
  20. #ifndef ZCONST      /* UnZip only (until have configure script like Zip) */
  21. #  define ZCONST const
  22. #endif
  23. #if (defined(MSDOS) || defined(OS2) || defined(WIN32))
  24. #  ifndef DOS_OS2_W32
  25. #    define DOS_OS2_W32
  26. #  endif
  27. #endif
  28. #if (defined(DOS_OS2_W32) || defined(__human68k__))
  29. #  ifndef DOS_H68_OS2_W32
  30. #    define DOS_H68_OS2_W32
  31. #  endif
  32. #endif
  33. #if (defined(DOS_OS2_W32) || defined(FLEXOS))
  34. #  ifndef DOS_FLX_OS2_W32
  35. #    define DOS_FLX_OS2_W32
  36. #  endif
  37. #endif
  38. #if (defined(DOS_H68_OS2_W32) || defined(FLEXOS))
  39. #  ifndef DOS_FLX_H68_OS2_W32
  40. #    define DOS_FLX_H68_OS2_W32
  41. #  endif
  42. #endif
  43. #if (defined(VM_CMS) || defined(MVS))
  44. #  ifndef CMS_MVS
  45. #    define CMS_MVS
  46. #  endif
  47. #endif
  48. /* Function prototypes */
  49. /* The following systems supply a `non-echo' character input function "getch()"
  50.  * (or an alias) and do not need the echoff() / echon() function pair.
  51.  */
  52. #ifdef AMIGA
  53. #  define echoff(f)
  54. #  define echon()
  55. #  define getch() Agetch()
  56. #  define HAVE_WORKING_GETCH
  57. #endif /* AMIGA */
  58. #ifdef ATARI
  59. #  define echoff(f)
  60. #  define echon()
  61. #  include <osbind.h>
  62. #  define getch() (Cnecin() & 0x000000ff)
  63. #  define HAVE_WORKING_GETCH
  64. #endif
  65. #ifdef MACOS
  66. #  define echoff(f)
  67. #  define echon()
  68. #  define getch() macgetch()
  69. #  define HAVE_WORKING_GETCH
  70. #endif
  71. #ifdef QDOS
  72. #  define echoff(f)
  73. #  define echon()
  74. #  define HAVE_WORKING_GETCH
  75. #endif
  76. #ifdef RISCOS
  77. #  define echoff(f)
  78. #  define echon()
  79. #  define getch() SWI_OS_ReadC()
  80. #  define HAVE_WORKING_GETCH
  81. #endif
  82. #ifdef DOS_H68_OS2_W32
  83. #  define echoff(f)
  84. #  define echon()
  85. #  ifdef WIN32
  86. #    ifndef getch
  87. #      define getch() getch_win32()
  88. #    endif
  89. #  else /* !WIN32 */
  90. #    ifdef __EMX__
  91. #      ifndef getch
  92. #        define getch() _read_kbd(0, 1, 0)
  93. #      endif
  94. #    else /* !__EMX__ */
  95. #      ifdef __GO32__
  96. #        include <pc.h>
  97. #        define getch() getkey()
  98. #      else /* !__GO32__ */
  99. #        include <conio.h>
  100. #      endif /* ?__GO32__ */
  101. #    endif /* ?__EMX__ */
  102. #  endif /* ?WIN32 */
  103. #  define HAVE_WORKING_GETCH
  104. #endif /* DOS_H68_OS2_W32 */
  105. #ifdef FLEXOS
  106. #  define echoff(f)
  107. #  define echon()
  108. #  define getch() getchar() /* not correct, but may not be on a console */
  109. #  define HAVE_WORKING_GETCH
  110. #endif
  111. /* For VM/CMS and MVS, we do not (yet) have any support to switch terminal
  112.  * input echo on and off. The following "fake" definitions allow inclusion
  113.  * of crypt support and UnZip's "pause prompting" features, but without
  114.  * any echo suppression.
  115.  */
  116. #ifdef CMS_MVS
  117. #  define echoff(f)
  118. #  define echon()
  119. #endif
  120. /* VMS has a single echo() function in ttyio.c to toggle terminal
  121.  * input echo on and off.
  122.  */
  123. #ifdef VMS
  124. #  define echoff(f)  echo(0)
  125. #  define echon()    echo(1)
  126.    int echo OF((int));
  127. #endif
  128. /* For all other systems, ttyio.c supplies the two functions Echoff() and
  129.  * Echon() for suppressing and (re)enabling console input echo.
  130.  */
  131. #ifndef echoff
  132. #  define echoff(f)  Echoff(__G__ f)
  133. #  define echon()    Echon(__G)
  134.    void Echoff OF((__GPRO__ int f));
  135.    void Echon OF((__GPRO));
  136. #endif
  137. /* this stuff is used by MORE and also now by the ctrl-S code; fileio.c only */
  138. #if (defined(UNZIP) && !defined(FUNZIP))
  139. #  ifdef HAVE_WORKING_GETCH
  140. #    define FGETCH(f)  getch()
  141. #  endif
  142. #  ifndef FGETCH
  143.      /* default for all systems where no getch()-like function is available */
  144.      int zgetch OF((__GPRO__ int f));
  145. #    define FGETCH(f)  zgetch(__G__ f)
  146. #  endif
  147. #endif /* UNZIP && !FUNZIP */
  148. #if (CRYPT && !defined(WINDLL))
  149.    char *getp OF((__GPRO__ ZCONST char *m, char *p, int n));
  150. #endif
  151. #else /* !(CRYPT || (UNZIP && !FUNZIP)) */
  152. /*
  153.  * No need for non-echo keyboard/console input; provide dummy definitions.
  154.  */
  155. #define echoff(f)
  156. #define echon()
  157. #endif /* ?(CRYPT || (UNZIP && !FUNZIP)) */
  158. #endif /* !__ttyio_h */