0,0 → 1,227 |
/* |
Copyright (c) 1990-2004 Info-ZIP. All rights reserved. |
|
See the accompanying file LICENSE, version 2000-Apr-09 or later |
(the contents of which are also included in zip.h) for terms of use. |
If, for some reason, all these files are missing, the Info-ZIP license |
also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html |
*/ |
/* |
ttyio.h |
*/ |
|
#ifndef __ttyio_h /* don't include more than once */ |
#define __ttyio_h |
|
#ifndef __crypt_h |
# include "crypt.h" /* ensure that encryption header file has been seen */ |
#endif |
|
#if (CRYPT || (defined(UNZIP) && !defined(FUNZIP))) |
/* |
* Non-echo keyboard/console input support is needed and enabled. |
*/ |
|
#ifndef __G /* UnZip only, for now (DLL stuff) */ |
# define __G |
# define __G__ |
# define __GDEF |
# define __GPRO void |
# define __GPRO__ |
#endif |
|
#ifndef ZCONST /* UnZip only (until have configure script like Zip) */ |
# define ZCONST const |
#endif |
|
#if (defined(MSDOS) || defined(OS2) || defined(WIN32)) |
# ifndef DOS_OS2_W32 |
# define DOS_OS2_W32 |
# endif |
#endif |
|
#if (defined(DOS_OS2_W32) || defined(__human68k__)) |
# ifndef DOS_H68_OS2_W32 |
# define DOS_H68_OS2_W32 |
# endif |
#endif |
|
#if (defined(DOS_OS2_W32) || defined(FLEXOS)) |
# ifndef DOS_FLX_OS2_W32 |
# define DOS_FLX_OS2_W32 |
# endif |
#endif |
|
#if (defined(DOS_H68_OS2_W32) || defined(FLEXOS)) |
# ifndef DOS_FLX_H68_OS2_W32 |
# define DOS_FLX_H68_OS2_W32 |
# endif |
#endif |
|
#if (defined(__ATHEOS__) || defined(__BEOS__) || defined(UNIX)) |
# ifndef ATH_BEO_UNX |
# define ATH_BEO_UNX |
# endif |
#endif |
|
#if (defined(VM_CMS) || defined(MVS)) |
# ifndef CMS_MVS |
# define CMS_MVS |
# endif |
#endif |
|
|
/* Function prototypes */ |
|
/* The following systems supply a `non-echo' character input function "getch()" |
* (or an alias) and do not need the echoff() / echon() function pair. |
*/ |
#ifdef AMIGA |
# define echoff(f) |
# define echon() |
# define getch() Agetch() |
# define HAVE_WORKING_GETCH |
#endif /* AMIGA */ |
|
#ifdef ATARI |
# define echoff(f) |
# define echon() |
# include <osbind.h> |
# define getch() (Cnecin() & 0x000000ff) |
# define HAVE_WORKING_GETCH |
#endif |
|
#ifdef MACOS |
# define echoff(f) |
# define echon() |
# define getch() macgetch() |
# define HAVE_WORKING_GETCH |
#endif |
|
#ifdef NLM |
# define echoff(f) |
# define echon() |
# define HAVE_WORKING_GETCH |
#endif |
|
#ifdef QDOS |
# define echoff(f) |
# define echon() |
# define HAVE_WORKING_GETCH |
#endif |
|
#ifdef RISCOS |
# define echoff(f) |
# define echon() |
# define getch() SWI_OS_ReadC() |
# define HAVE_WORKING_GETCH |
#endif |
|
#ifdef DOS_H68_OS2_W32 |
# define echoff(f) |
# define echon() |
# ifdef WIN32 |
# ifndef getch |
# define getch() getch_win32() |
# endif |
# else /* !WIN32 */ |
# ifdef __EMX__ |
# ifndef getch |
# define getch() _read_kbd(0, 1, 0) |
# endif |
# else /* !__EMX__ */ |
# ifdef __GO32__ |
# include <pc.h> |
# define getch() getkey() |
# else /* !__GO32__ */ |
# include <conio.h> |
# endif /* ?__GO32__ */ |
# endif /* ?__EMX__ */ |
# endif /* ?WIN32 */ |
# define HAVE_WORKING_GETCH |
#endif /* DOS_H68_OS2_W32 */ |
|
#ifdef FLEXOS |
# define echoff(f) |
# define echon() |
# define getch() getchar() /* not correct, but may not be on a console */ |
# define HAVE_WORKING_GETCH |
#endif |
|
/* For VM/CMS and MVS, we do not (yet) have any support to switch terminal |
* input echo on and off. The following "fake" definitions allow inclusion |
* of crypt support and UnZip's "pause prompting" features, but without |
* any echo suppression. |
*/ |
#ifdef CMS_MVS |
# define echoff(f) |
# define echon() |
#endif |
|
#ifdef TANDEM |
# define echoff(f) |
# define echon() |
# define getch() zgetch() /* defined in TANDEMC */ |
# define HAVE_WORKING_GETCH |
#endif |
|
/* The THEOS C runtime library supplies the function conmask() to toggle |
* terminal input echo on (conmask("e")) and off (conmask("n")). But, |
* since THEOS C RTL also contains a working non-echo getch() function, |
* the echo toggles are not needed. |
*/ |
#ifdef THEOS |
# define echoff(f) |
# define echon() |
# define HAVE_WORKING_GETCH |
#endif |
|
/* VMS has a single echo() function in ttyio.c to toggle terminal |
* input echo on and off. |
*/ |
#ifdef VMS |
# define echoff(f) echo(0) |
# define echon() echo(1) |
# define getch() tt_getch() |
# define FGETCH(f) tt_getch() |
int echo OF((int)); |
int tt_getch OF((void)); |
#endif |
|
/* For all other systems, ttyio.c supplies the two functions Echoff() and |
* Echon() for suppressing and (re)enabling console input echo. |
*/ |
#ifndef echoff |
# define echoff(f) Echoff(__G__ f) |
# define echon() Echon(__G) |
void Echoff OF((__GPRO__ int f)); |
void Echon OF((__GPRO)); |
#endif |
|
/* this stuff is used by MORE and also now by the ctrl-S code; fileio.c only */ |
#if (defined(UNZIP) && !defined(FUNZIP)) |
# ifdef HAVE_WORKING_GETCH |
# define FGETCH(f) getch() |
# endif |
# ifndef FGETCH |
/* default for all systems where no getch()-like function is available */ |
int zgetch OF((__GPRO__ int f)); |
# define FGETCH(f) zgetch(__G__ f) |
# endif |
#endif /* UNZIP && !FUNZIP */ |
|
#if (CRYPT && !defined(WINDLL)) |
char *getp OF((__GPRO__ ZCONST char *m, char *p, int n)); |
#endif |
|
#else /* !(CRYPT || (UNZIP && !FUNZIP)) */ |
|
/* |
* No need for non-echo keyboard/console input; provide dummy definitions. |
*/ |
#define echoff(f) |
#define echon() |
|
#endif /* ?(CRYPT || (UNZIP && !FUNZIP)) */ |
|
#endif /* !__ttyio_h */ |