xref: /freebsd/contrib/ncurses/include/tic.h (revision 21817992b3314c908ab50f0bb88d2ee750b9c4ac)
10e3d5408SPeter Wemm /****************************************************************************
2*21817992SBaptiste Daroussin  * Copyright 2018-2022,2023 Thomas E. Dickey                                *
3e1865124SBaptiste Daroussin  * Copyright 1998-2012,2017 Free Software Foundation, Inc.                  *
40e3d5408SPeter Wemm  *                                                                          *
50e3d5408SPeter Wemm  * Permission is hereby granted, free of charge, to any person obtaining a  *
60e3d5408SPeter Wemm  * copy of this software and associated documentation files (the            *
70e3d5408SPeter Wemm  * "Software"), to deal in the Software without restriction, including      *
80e3d5408SPeter Wemm  * without limitation the rights to use, copy, modify, merge, publish,      *
90e3d5408SPeter Wemm  * distribute, distribute with modifications, sublicense, and/or sell       *
100e3d5408SPeter Wemm  * copies of the Software, and to permit persons to whom the Software is    *
110e3d5408SPeter Wemm  * furnished to do so, subject to the following conditions:                 *
120e3d5408SPeter Wemm  *                                                                          *
130e3d5408SPeter Wemm  * The above copyright notice and this permission notice shall be included  *
140e3d5408SPeter Wemm  * in all copies or substantial portions of the Software.                   *
150e3d5408SPeter Wemm  *                                                                          *
160e3d5408SPeter Wemm  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
170e3d5408SPeter Wemm  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
180e3d5408SPeter Wemm  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
190e3d5408SPeter Wemm  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
200e3d5408SPeter Wemm  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
210e3d5408SPeter Wemm  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
220e3d5408SPeter Wemm  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
230e3d5408SPeter Wemm  *                                                                          *
240e3d5408SPeter Wemm  * Except as contained in this notice, the name(s) of the above copyright   *
250e3d5408SPeter Wemm  * holders shall not be used in advertising or otherwise to promote the     *
260e3d5408SPeter Wemm  * sale, use or other dealings in this Software without prior written       *
270e3d5408SPeter Wemm  * authorization.                                                           *
280e3d5408SPeter Wemm  ****************************************************************************/
290e3d5408SPeter Wemm 
300e3d5408SPeter Wemm /****************************************************************************
310e3d5408SPeter Wemm  *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
320e3d5408SPeter Wemm  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
334a1a9510SRong-En Fan  *     and: Thomas E. Dickey 1996 on                                        *
340e3d5408SPeter Wemm  ****************************************************************************/
350e3d5408SPeter Wemm 
360e3d5408SPeter Wemm /*
37*21817992SBaptiste Daroussin  * $Id: tic.h,v 1.87 2023/04/22 13:37:21 tom Exp $
38aae38d10SBaptiste Daroussin  *	tic.h - Global variables and structures for the terminfo compiler.
390e3d5408SPeter Wemm  */
400e3d5408SPeter Wemm 
410e3d5408SPeter Wemm #ifndef __TIC_H
420e3d5408SPeter Wemm #define __TIC_H
4373f0a83dSXin LI /* *INDENT-OFF* */
440e3d5408SPeter Wemm #ifdef __cplusplus
450e3d5408SPeter Wemm extern "C" {
460e3d5408SPeter Wemm #endif
470e3d5408SPeter Wemm 
48aae38d10SBaptiste Daroussin #include <ncurses_cfg.h>
49aae38d10SBaptiste Daroussin 
500e3d5408SPeter Wemm #include <curses.h>	/* for the _tracef() prototype, ERR/OK, bool defs */
510e3d5408SPeter Wemm 
520e3d5408SPeter Wemm /*
53aae38d10SBaptiste Daroussin ** The format of SVr2 compiled terminfo files is as follows:
540e3d5408SPeter Wemm **
550e3d5408SPeter Wemm **		Header (12 bytes), containing information given below
560e3d5408SPeter Wemm **		Names Section, containing the names of the terminal
570e3d5408SPeter Wemm **		Boolean Section, containing the values of all of the
580e3d5408SPeter Wemm **				boolean capabilities
590e3d5408SPeter Wemm **				A null byte may be inserted here to make
600e3d5408SPeter Wemm **				sure that the Number Section begins on an
610e3d5408SPeter Wemm **				even word boundary.
620e3d5408SPeter Wemm **		Number Section, containing the values of all of the numeric
630e3d5408SPeter Wemm **				capabilities, each as a short integer
640e3d5408SPeter Wemm **		String Section, containing short integer offsets into the
650e3d5408SPeter Wemm **				String Table, one per string capability
660e3d5408SPeter Wemm **		String Table, containing the actual characters of the string
670e3d5408SPeter Wemm **				capabilities.
680e3d5408SPeter Wemm **
69aae38d10SBaptiste Daroussin ** In the SVr2 format, "short" means signed 16-bit numbers, which is sometimes
70aae38d10SBaptiste Daroussin ** inconvenient.  The numbers are signed, to provide for absent and canceled
71aae38d10SBaptiste Daroussin ** values.  ncurses6.1 introduced an extension to this compiled format, by
72aae38d10SBaptiste Daroussin ** making the Number Section a list of signed 32-bit integers.
73aae38d10SBaptiste Daroussin **
740e3d5408SPeter Wemm **	NOTE that all short integers in the file are stored using VAX/PDP-style
750e3d5408SPeter Wemm **	byte-order, i.e., least-significant byte first.
760e3d5408SPeter Wemm **
770e3d5408SPeter Wemm **	There is no structure definition here because it would only confuse
780e3d5408SPeter Wemm **	matters.  Terminfo format is a raw byte layout, not a structure
790e3d5408SPeter Wemm **	dump.  If you happen to be on a little-endian machine with 16-bit
800e3d5408SPeter Wemm **	shorts that requires no padding between short members in a struct,
810e3d5408SPeter Wemm **	then there is a natural C structure that captures the header, but
820e3d5408SPeter Wemm **	not very helpfully.
830e3d5408SPeter Wemm */
840e3d5408SPeter Wemm 
850e3d5408SPeter Wemm #define MAGIC		0432	/* first two bytes of a compiled entry */
86aae38d10SBaptiste Daroussin #define MAGIC2		01036	/* first two bytes of a compiled 32-bit entry */
870e3d5408SPeter Wemm 
884a1a9510SRong-En Fan #undef  BYTE
894a1a9510SRong-En Fan #define BYTE(p,n)	(unsigned char)((p)[n])
904a1a9510SRong-En Fan 
914a1a9510SRong-En Fan #define IS_NEG1(p)	((BYTE(p,0) == 0377) && (BYTE(p,1) == 0377))
924a1a9510SRong-En Fan #define IS_NEG2(p)	((BYTE(p,0) == 0376) && (BYTE(p,1) == 0377))
934a1a9510SRong-En Fan #define LOW_MSB(p)	(BYTE(p,0) + 256*BYTE(p,1))
944a1a9510SRong-En Fan 
95aae38d10SBaptiste Daroussin #define IS_TIC_MAGIC(p)	(LOW_MSB(p) == MAGIC || LOW_MSB(p) == MAGIC2)
96aae38d10SBaptiste Daroussin 
97aae38d10SBaptiste Daroussin #define quick_prefix(s) (!strncmp((s), "b64:", (size_t)4) || !strncmp((s), "hex:", (size_t)4))
984a1a9510SRong-En Fan 
990e3d5408SPeter Wemm /*
1000e3d5408SPeter Wemm  * The "maximum" here is misleading; XSI guarantees minimum values, which a
1010e3d5408SPeter Wemm  * given implementation may exceed.
1020e3d5408SPeter Wemm  */
1030e3d5408SPeter Wemm #define MAX_NAME_SIZE	512	/* maximum legal name field size (XSI:127) */
104aae38d10SBaptiste Daroussin #define MAX_ENTRY_SIZE1	4096	/* maximum legal entry size (SVr2) */
105aae38d10SBaptiste Daroussin #define MAX_ENTRY_SIZE2	32768	/* maximum legal entry size (ncurses6.1) */
106aae38d10SBaptiste Daroussin 
107aae38d10SBaptiste Daroussin #if NCURSES_EXT_COLORS && HAVE_INIT_EXTENDED_COLOR
108aae38d10SBaptiste Daroussin #define MAX_ENTRY_SIZE MAX_ENTRY_SIZE2
109aae38d10SBaptiste Daroussin #else
110aae38d10SBaptiste Daroussin #define MAX_ENTRY_SIZE MAX_ENTRY_SIZE1
111aae38d10SBaptiste Daroussin #endif
1120e3d5408SPeter Wemm 
1134a1a9510SRong-En Fan /*
1144a1a9510SRong-En Fan  * The maximum size of individual name or alias is guaranteed in XSI to be at
1154a1a9510SRong-En Fan  * least 14, since that corresponds to the older filename lengths.  Newer
1164a1a9510SRong-En Fan  * systems allow longer aliases, though not many terminal descriptions are
1174a1a9510SRong-En Fan  * written to use them.  The MAX_ALIAS symbol is used for warnings.
1180e3d5408SPeter Wemm  */
1190e3d5408SPeter Wemm #if HAVE_LONG_FILE_NAMES
1204a1a9510SRong-En Fan #define MAX_ALIAS	32	/* smaller than POSIX minimum for PATH_MAX */
1210e3d5408SPeter Wemm #else
1220e3d5408SPeter Wemm #define MAX_ALIAS	14	/* SVr3 filename length */
1230e3d5408SPeter Wemm #endif
1240e3d5408SPeter Wemm 
1250e3d5408SPeter Wemm /* location of user's personal info directory */
1260e3d5408SPeter Wemm #define PRIVATE_INFO	"%s/.terminfo"	/* plug getenv("HOME") into %s */
1270e3d5408SPeter Wemm 
12815589c42SPeter Wemm /*
12915589c42SPeter Wemm  * Some traces are designed to be used via tic's verbose option (and similar in
13015589c42SPeter Wemm  * infocmp and toe) rather than the 'trace()' function.  So we use the bits
13115589c42SPeter Wemm  * above the normal trace() parameter as a debug-level.
13215589c42SPeter Wemm  */
13315589c42SPeter Wemm 
13415589c42SPeter Wemm #define MAX_DEBUG_LEVEL 15
1354a1a9510SRong-En Fan #define DEBUG_LEVEL(n)	((n) << TRACE_SHIFT)
13615589c42SPeter Wemm 
13715589c42SPeter Wemm #define set_trace_level(n) \
138*21817992SBaptiste Daroussin 	_nc_tracing &= TRACE_MAXIMUM, \
13915589c42SPeter Wemm 	_nc_tracing |= DEBUG_LEVEL(n)
14015589c42SPeter Wemm 
1410e3d5408SPeter Wemm #ifdef TRACE
14215589c42SPeter Wemm #define DEBUG(n, a)	if (_nc_tracing >= DEBUG_LEVEL(n)) _tracef a
1430e3d5408SPeter Wemm #else
1440e3d5408SPeter Wemm #define DEBUG(n, a)	/*nothing*/
1450e3d5408SPeter Wemm #endif
1460e3d5408SPeter Wemm 
1470e3d5408SPeter Wemm /*
1480e3d5408SPeter Wemm  * These are the types of tokens returned by the scanner.  The first
1490e3d5408SPeter Wemm  * three are also used in the hash table of capability names.  The scanner
1500e3d5408SPeter Wemm  * returns one of these values after loading the specifics into the global
1510e3d5408SPeter Wemm  * structure curr_token.
1520e3d5408SPeter Wemm  */
1530e3d5408SPeter Wemm 
1540e3d5408SPeter Wemm #define BOOLEAN 0		/* Boolean capability */
1550e3d5408SPeter Wemm #define NUMBER 1		/* Numeric capability */
1560e3d5408SPeter Wemm #define STRING 2		/* String-valued capability */
1570e3d5408SPeter Wemm #define CANCEL 3		/* Capability to be cancelled in following tc's */
1580e3d5408SPeter Wemm #define NAMES  4		/* The names for a terminal type */
1590e3d5408SPeter Wemm #define UNDEF  5		/* Undefined */
1600e3d5408SPeter Wemm 
1610e3d5408SPeter Wemm #define NO_PUSHBACK	-1	/* used in pushtype to indicate no pushback */
1620e3d5408SPeter Wemm 
1630e3d5408SPeter Wemm /*
1640e3d5408SPeter Wemm  * The global structure in which the specific parts of a
1650e3d5408SPeter Wemm  * scanned token are returned.
1660e3d5408SPeter Wemm  */
1670e3d5408SPeter Wemm 
1680e3d5408SPeter Wemm struct token
1690e3d5408SPeter Wemm {
1700e3d5408SPeter Wemm 	char	*tk_name;	/* name of capability */
1710e3d5408SPeter Wemm 	int	tk_valnumber;	/* value of capability (if a number) */
1720e3d5408SPeter Wemm 	char	*tk_valstring;	/* value of capability (if a string) */
1730e3d5408SPeter Wemm };
1740e3d5408SPeter Wemm 
1750e3d5408SPeter Wemm /*
176aae38d10SBaptiste Daroussin  * Offsets to string capabilities, with the corresponding functionkey codes.
1770e3d5408SPeter Wemm  */
1780e3d5408SPeter Wemm struct tinfo_fkeys {
1790e3d5408SPeter Wemm 	unsigned offset;
1800e3d5408SPeter Wemm 	chtype code;
1810e3d5408SPeter Wemm 	};
1820e3d5408SPeter Wemm 
18306bfebdeSXin LI typedef short HashValue;
18406bfebdeSXin LI 
1850e3d5408SPeter Wemm /*
186aae38d10SBaptiste Daroussin  * The file comp_captab.c contains an array of these structures, one per
187aae38d10SBaptiste Daroussin  * possible capability.  These are indexed by a hash table array of pointers to
188aae38d10SBaptiste Daroussin  * the same structures for use by the parser.
1890e3d5408SPeter Wemm  */
1900e3d5408SPeter Wemm struct name_table_entry
1910e3d5408SPeter Wemm {
1920e3d5408SPeter Wemm 	const char *nte_name;	/* name to hash on */
1930e3d5408SPeter Wemm 	int	nte_type;	/* BOOLEAN, NUMBER or STRING */
19406bfebdeSXin LI 	HashValue nte_index;	/* index of associated variable in its array */
19506bfebdeSXin LI 	HashValue nte_link;	/* index in table of next hash, or -1 */
1960e3d5408SPeter Wemm };
1970e3d5408SPeter Wemm 
19806bfebdeSXin LI /*
199aae38d10SBaptiste Daroussin  * Use this structure to hide differences between terminfo and termcap tables.
20006bfebdeSXin LI  */
20106bfebdeSXin LI typedef struct {
20206bfebdeSXin LI 	unsigned table_size;
20306bfebdeSXin LI 	const HashValue *table_data;
20406bfebdeSXin LI 	HashValue (*hash_of)(const char *);
20506bfebdeSXin LI 	int (*compare_names)(const char *, const char *);
20606bfebdeSXin LI } HashData;
20706bfebdeSXin LI 
2080e3d5408SPeter Wemm struct alias
2090e3d5408SPeter Wemm {
2100e3d5408SPeter Wemm 	const char	*from;
2110e3d5408SPeter Wemm 	const char	*to;
2120e3d5408SPeter Wemm 	const char	*source;
2130e3d5408SPeter Wemm };
2140e3d5408SPeter Wemm 
2150e3d5408SPeter Wemm #define NOTFOUND	((struct name_table_entry *) 0)
2160e3d5408SPeter Wemm 
21773f0a83dSXin LI /*
218aae38d10SBaptiste Daroussin  * The file comp_userdefs.c contains an array of these structures, one per
219aae38d10SBaptiste Daroussin  * possible capability.  These are indexed by a hash table array of pointers to
220aae38d10SBaptiste Daroussin  * the same structures for use by the parser.
221aae38d10SBaptiste Daroussin  */
222aae38d10SBaptiste Daroussin struct user_table_entry
223aae38d10SBaptiste Daroussin {
224aae38d10SBaptiste Daroussin 	const char *ute_name;	/* name to hash on */
225aae38d10SBaptiste Daroussin 	int	ute_type;	/* mask (BOOLEAN, NUMBER, STRING) */
226aae38d10SBaptiste Daroussin 	unsigned ute_argc;	/* number of parameters */
227aae38d10SBaptiste Daroussin 	unsigned ute_args;	/* bit-mask for string parameters */
228aae38d10SBaptiste Daroussin 	HashValue ute_index;	/* index of associated variable in its array */
229aae38d10SBaptiste Daroussin 	HashValue ute_link;	/* index in table of next hash, or -1 */
230aae38d10SBaptiste Daroussin };
231aae38d10SBaptiste Daroussin 
232aae38d10SBaptiste Daroussin /*
23373f0a83dSXin LI  * The casts are required for correct sign-propagation with systems such as
23473f0a83dSXin LI  * AIX, IRIX64, Solaris which default to unsigned characters.  The C standard
23573f0a83dSXin LI  * leaves this detail unspecified.
23673f0a83dSXin LI  */
23773f0a83dSXin LI 
2380e3d5408SPeter Wemm /* out-of-band values for representing absent capabilities */
2394a1a9510SRong-En Fan #define ABSENT_BOOLEAN		((signed char)-1)	/* 255 */
24039f2269fSPeter Wemm #define ABSENT_NUMERIC		(-1)
2410e3d5408SPeter Wemm #define ABSENT_STRING		(char *)0
2420e3d5408SPeter Wemm 
2430e3d5408SPeter Wemm /* out-of-band values for representing cancels */
2444a1a9510SRong-En Fan #define CANCELLED_BOOLEAN	((signed char)-2)	/* 254 */
24539f2269fSPeter Wemm #define CANCELLED_NUMERIC	(-2)
24639f2269fSPeter Wemm #define CANCELLED_STRING	(char *)(-1)
2470e3d5408SPeter Wemm 
24839f2269fSPeter Wemm #define VALID_BOOLEAN(s) ((unsigned char)(s) <= 1) /* reject "-1" */
2490e3d5408SPeter Wemm #define VALID_NUMERIC(s) ((s) >= 0)
2500e3d5408SPeter Wemm #define VALID_STRING(s)  ((s) != CANCELLED_STRING && (s) != ABSENT_STRING)
2510e3d5408SPeter Wemm 
2520e3d5408SPeter Wemm /* termcap entries longer than this may break old binaries */
2530e3d5408SPeter Wemm #define MAX_TERMCAP_LENGTH	1023
2540e3d5408SPeter Wemm 
2550e3d5408SPeter Wemm /* this is a documented limitation of terminfo */
2560e3d5408SPeter Wemm #define MAX_TERMINFO_LENGTH	4096
2570e3d5408SPeter Wemm 
2580e3d5408SPeter Wemm #ifndef TERMINFO
2590e3d5408SPeter Wemm #define TERMINFO "/usr/share/terminfo"
2600e3d5408SPeter Wemm #endif
2610e3d5408SPeter Wemm 
26273f0a83dSXin LI #ifdef NCURSES_TERM_ENTRY_H_incl
26373f0a83dSXin LI 
264aae38d10SBaptiste Daroussin /*
265aae38d10SBaptiste Daroussin  * These entrypoints are used only by the ncurses utilities such as tic.
266aae38d10SBaptiste Daroussin  */
267aae38d10SBaptiste Daroussin #ifdef NCURSES_INTERNALS
26818259542SPeter Wemm /* access.c */
2694a1a9510SRong-En Fan extern NCURSES_EXPORT(unsigned) _nc_pathlast (const char *);
2704a1a9510SRong-En Fan extern NCURSES_EXPORT(bool) _nc_is_abs_path (const char *);
2714a1a9510SRong-En Fan extern NCURSES_EXPORT(bool) _nc_is_dir_path (const char *);
2724a1a9510SRong-En Fan extern NCURSES_EXPORT(bool) _nc_is_file_path (const char *);
2737a69bbfbSPeter Wemm extern NCURSES_EXPORT(char *) _nc_basename (char *);
27439f2269fSPeter Wemm extern NCURSES_EXPORT(char *) _nc_rootname (char *);
27518259542SPeter Wemm 
276aae38d10SBaptiste Daroussin /* comp_captab.c */
277aae38d10SBaptiste Daroussin extern NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool);
278aae38d10SBaptiste Daroussin extern NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool);
279aae38d10SBaptiste Daroussin extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool);
280aae38d10SBaptiste Daroussin 
2810e3d5408SPeter Wemm /* comp_hash.c: name lookup */
2827a69bbfbSPeter Wemm extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_type_entry
28306bfebdeSXin LI 	(const char *, int, bool);
284aae38d10SBaptiste Daroussin extern NCURSES_EXPORT(struct user_table_entry const *) _nc_find_user_entry
285aae38d10SBaptiste Daroussin 	(const char *);
2860e3d5408SPeter Wemm 
2870e3d5408SPeter Wemm /* comp_scan.c: lexical analysis */
2887a69bbfbSPeter Wemm extern NCURSES_EXPORT(int)  _nc_get_token (bool);
2897a69bbfbSPeter Wemm extern NCURSES_EXPORT(void) _nc_panic_mode (char);
2907a69bbfbSPeter Wemm extern NCURSES_EXPORT(void) _nc_push_token (int);
2917a69bbfbSPeter Wemm extern NCURSES_EXPORT_VAR(int) _nc_curr_col;
2927a69bbfbSPeter Wemm extern NCURSES_EXPORT_VAR(int) _nc_curr_line;
2937a69bbfbSPeter Wemm extern NCURSES_EXPORT_VAR(int) _nc_syntax;
29473f0a83dSXin LI extern NCURSES_EXPORT_VAR(int) _nc_strict_bsd;
2957a69bbfbSPeter Wemm extern NCURSES_EXPORT_VAR(long) _nc_comment_end;
2967a69bbfbSPeter Wemm extern NCURSES_EXPORT_VAR(long) _nc_comment_start;
2977a69bbfbSPeter Wemm extern NCURSES_EXPORT_VAR(long) _nc_curr_file_pos;
2987a69bbfbSPeter Wemm extern NCURSES_EXPORT_VAR(long) _nc_start_line;
2990e3d5408SPeter Wemm #define SYN_TERMINFO	0
3000e3d5408SPeter Wemm #define SYN_TERMCAP	1
3010e3d5408SPeter Wemm 
3020e3d5408SPeter Wemm /* comp_error.c: warning & abort messages */
3034a1a9510SRong-En Fan extern NCURSES_EXPORT(const char *) _nc_get_source (void);
304*21817992SBaptiste Daroussin extern GCC_NORETURN NCURSES_EXPORT(void) _nc_err_abort (const char *const,...) GCC_PRINTFLIKE(1,2);
3054a1a9510SRong-En Fan extern NCURSES_EXPORT(void) _nc_get_type (char *name);
3064a1a9510SRong-En Fan extern NCURSES_EXPORT(void) _nc_set_source (const char *const);
3074a1a9510SRong-En Fan extern NCURSES_EXPORT(void) _nc_set_type (const char *const);
308*21817992SBaptiste Daroussin extern GCC_NORETURN NCURSES_EXPORT(void) _nc_syserr_abort (const char *const,...) GCC_PRINTFLIKE(1,2);
3097a69bbfbSPeter Wemm extern NCURSES_EXPORT(void) _nc_warning (const char *const,...) GCC_PRINTFLIKE(1,2);
3107a69bbfbSPeter Wemm extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings;
3110e3d5408SPeter Wemm 
312aae38d10SBaptiste Daroussin /* comp_scan.c */
313aae38d10SBaptiste Daroussin extern NCURSES_EXPORT_VAR(struct token)	_nc_curr_token;
3140e3d5408SPeter Wemm 
315aae38d10SBaptiste Daroussin /* comp_userdefs.c */
316aae38d10SBaptiste Daroussin NCURSES_EXPORT(const struct user_table_entry *) _nc_get_userdefs_table (void);
317aae38d10SBaptiste Daroussin NCURSES_EXPORT(const HashData *) _nc_get_hash_user (void);
3180e3d5408SPeter Wemm 
3190e3d5408SPeter Wemm /* captoinfo.c: capability conversion */
3207a69bbfbSPeter Wemm extern NCURSES_EXPORT(char *) _nc_captoinfo (const char *, const char *, int const);
3217a69bbfbSPeter Wemm extern NCURSES_EXPORT(char *) _nc_infotocap (const char *, const char *, int const);
3220e3d5408SPeter Wemm 
3234a1a9510SRong-En Fan /* home_terminfo.c */
3244a1a9510SRong-En Fan extern NCURSES_EXPORT(char *) _nc_home_terminfo (void);
3254a1a9510SRong-En Fan 
326aae38d10SBaptiste Daroussin /* init_keytry.c */
327aae38d10SBaptiste Daroussin #if	BROKEN_LINKER
328aae38d10SBaptiste Daroussin #define	_nc_tinfo_fkeys	_nc_tinfo_fkeysf()
329aae38d10SBaptiste Daroussin extern NCURSES_EXPORT(const struct tinfo_fkeys *) _nc_tinfo_fkeysf (void);
330aae38d10SBaptiste Daroussin #else
331aae38d10SBaptiste Daroussin extern NCURSES_EXPORT_VAR(const struct tinfo_fkeys) _nc_tinfo_fkeys[];
332aae38d10SBaptiste Daroussin #endif
333aae38d10SBaptiste Daroussin 
3344a1a9510SRong-En Fan /* lib_tparm.c */
3354a1a9510SRong-En Fan #define NUM_PARM 9
3364a1a9510SRong-En Fan 
3374a1a9510SRong-En Fan extern NCURSES_EXPORT_VAR(int) _nc_tparm_err;
3384a1a9510SRong-En Fan 
339*21817992SBaptiste Daroussin extern NCURSES_EXPORT(int) _nc_tparm_analyze(TERMINAL *, const char *, char **, int *);
340*21817992SBaptiste Daroussin extern NCURSES_EXPORT(void) _nc_reset_tparm(TERMINAL *);
3414a1a9510SRong-En Fan 
342aae38d10SBaptiste Daroussin /* lib_trace.c */
343aae38d10SBaptiste Daroussin extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;
344aae38d10SBaptiste Daroussin extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
345aae38d10SBaptiste Daroussin extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
346aae38d10SBaptiste Daroussin 
3470e3d5408SPeter Wemm /* lib_tputs.c */
3487a69bbfbSPeter Wemm extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent;	/* Add one for every null sent */
3490e3d5408SPeter Wemm 
350*21817992SBaptiste Daroussin /* comp_expand.c: expand string into readable form */
351*21817992SBaptiste Daroussin extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int);
352*21817992SBaptiste Daroussin 
353*21817992SBaptiste Daroussin /* comp_hash.c: name lookup */
354*21817992SBaptiste Daroussin extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_entry
355*21817992SBaptiste Daroussin 	(const char *, const HashValue *);
356*21817992SBaptiste Daroussin extern NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool);
357*21817992SBaptiste Daroussin 
3580e3d5408SPeter Wemm /* comp_main.c: compiler main */
3590e3d5408SPeter Wemm extern const char * _nc_progname;
3600e3d5408SPeter Wemm 
3614a1a9510SRong-En Fan /* db_iterator.c */
3624a1a9510SRong-En Fan extern NCURSES_EXPORT(const char *) _nc_next_db(DBDIRS *, int *);
3637a69bbfbSPeter Wemm extern NCURSES_EXPORT(const char *) _nc_tic_dir (const char *);
3644a1a9510SRong-En Fan extern NCURSES_EXPORT(void) _nc_first_db(DBDIRS *, int *);
3654a1a9510SRong-En Fan extern NCURSES_EXPORT(void) _nc_last_db(void);
3660e3d5408SPeter Wemm 
3670e3d5408SPeter Wemm /* write_entry.c */
3687a69bbfbSPeter Wemm extern NCURSES_EXPORT(int) _nc_tic_written (void);
3690e3d5408SPeter Wemm 
370aae38d10SBaptiste Daroussin #endif /* NCURSES_INTERNALS */
371aae38d10SBaptiste Daroussin 
37273f0a83dSXin LI #endif /* NCURSES_TERM_ENTRY_H_incl */
37373f0a83dSXin LI 
3740e3d5408SPeter Wemm #ifdef __cplusplus
3750e3d5408SPeter Wemm }
3760e3d5408SPeter Wemm #endif
3770e3d5408SPeter Wemm 
37873f0a83dSXin LI /* *INDENT-ON* */
3790e3d5408SPeter Wemm #endif /* __TIC_H */
380