summaryrefslogtreecommitdiffstats
path: root/ncurses-5.2/ncurses/tinfo
diff options
context:
space:
mode:
Diffstat (limited to 'ncurses-5.2/ncurses/tinfo')
-rw-r--r--ncurses-5.2/ncurses/tinfo/MKcaptab.awk70
-rwxr-xr-xncurses-5.2/ncurses/tinfo/MKfallback.sh75
-rw-r--r--ncurses-5.2/ncurses/tinfo/MKnames.awk98
-rw-r--r--ncurses-5.2/ncurses/tinfo/README8
-rw-r--r--ncurses-5.2/ncurses/tinfo/access.c94
-rw-r--r--ncurses-5.2/ncurses/tinfo/add_tries.c125
-rw-r--r--ncurses-5.2/ncurses/tinfo/alloc_entry.c225
-rw-r--r--ncurses-5.2/ncurses/tinfo/alloc_ttype.c489
-rw-r--r--ncurses-5.2/ncurses/tinfo/captoinfo.c831
-rw-r--r--ncurses-5.2/ncurses/tinfo/comp_error.c132
-rw-r--r--ncurses-5.2/ncurses/tinfo/comp_expand.c189
-rw-r--r--ncurses-5.2/ncurses/tinfo/comp_hash.c325
-rw-r--r--ncurses-5.2/ncurses/tinfo/comp_parse.c484
-rw-r--r--ncurses-5.2/ncurses/tinfo/comp_scan.c797
-rw-r--r--ncurses-5.2/ncurses/tinfo/doalloc.c74
-rw-r--r--ncurses-5.2/ncurses/tinfo/free_ttype.c72
-rw-r--r--ncurses-5.2/ncurses/tinfo/getenv_num.c56
-rw-r--r--ncurses-5.2/ncurses/tinfo/home_terminfo.c65
-rw-r--r--ncurses-5.2/ncurses/tinfo/init_keytry.c78
-rw-r--r--ncurses-5.2/ncurses/tinfo/keys.list158
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_acs.c139
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_baudrate.c178
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_cur_term.c70
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_data.c84
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_has_cap.c63
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_kernel.c130
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_longname.c58
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_napms.c89
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_options.c255
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_print.c96
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_raw.c236
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_setup.c414
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_termcap.c192
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_termname.c46
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_tgoto.c197
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_ti.c103
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_tparm.c740
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_tputs.c324
-rw-r--r--ncurses-5.2/ncurses/tinfo/lib_ttyflags.c163
-rw-r--r--ncurses-5.2/ncurses/tinfo/make_keys.c134
-rw-r--r--ncurses-5.2/ncurses/tinfo/name_match.c96
-rw-r--r--ncurses-5.2/ncurses/tinfo/parse_entry.c952
-rw-r--r--ncurses-5.2/ncurses/tinfo/read_entry.c501
-rw-r--r--ncurses-5.2/ncurses/tinfo/read_termcap.c1111
-rw-r--r--ncurses-5.2/ncurses/tinfo/setbuf.c144
-rw-r--r--ncurses-5.2/ncurses/tinfo/strings.c139
-rw-r--r--ncurses-5.2/ncurses/tinfo/write_entry.c581
47 files changed, 0 insertions, 11680 deletions
diff --git a/ncurses-5.2/ncurses/tinfo/MKcaptab.awk b/ncurses-5.2/ncurses/tinfo/MKcaptab.awk
deleted file mode 100644
index b96143d..0000000
--- a/ncurses-5.2/ncurses/tinfo/MKcaptab.awk
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/sh
-# $Id$
-AWK=${1-awk}
-DATA=${2-../include/Caps}
-
-cat <<'EOF'
-/*
- * comp_captab.c -- The names of the capabilities indexed via a hash
- * table for the compiler.
- *
- */
-
-#include <ncurses_cfg.h>
-#include <tic.h>
-#include <term.h>
-
-EOF
-
-./make_hash 1 info <$DATA
-./make_hash 3 cap <$DATA
-
-cat <<'EOF'
-const struct alias _nc_capalias_table[] =
-{
-EOF
-
-$AWK <$DATA '
-$1 == "capalias" {
- if ($3 == "IGNORE")
- to = "(char *)NULL";
- else
- to = "\"" $3 "\"";
- printf "\t{\"%s\", %s, \"%s\"},\t /* %s */\n",
- $2, to, $4, $5
- }
-'
-
-cat <<'EOF'
- {(char *)NULL, (char *)NULL, (char *)NULL}
-};
-
-const struct alias _nc_infoalias_table[] =
-{
-EOF
-
-$AWK <$DATA '
-$1 == "infoalias" {
- if ($3 == "IGNORE")
- to = "(char *)NULL";
- else
- to = "\"" $3 "\"";
- printf "\t{\"%s\", %s, \"%s\"},\t /* %s */\n",
- $2, to, $4, $5
- }
-'
-
-cat <<'EOF'
- {(char *)NULL, (char *)NULL, (char *)NULL}
-};
-
-const struct name_table_entry *_nc_get_table(bool termcap)
-{
- return termcap ? _nc_cap_table: _nc_info_table ;
-}
-
-const struct name_table_entry * const * _nc_get_hash_table(bool termcap)
-{
- return termcap ? _nc_cap_hash_table: _nc_info_hash_table ;
-}
-EOF
diff --git a/ncurses-5.2/ncurses/tinfo/MKfallback.sh b/ncurses-5.2/ncurses/tinfo/MKfallback.sh
deleted file mode 100755
index 17e95ac..0000000
--- a/ncurses-5.2/ncurses/tinfo/MKfallback.sh
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/bin/sh
-# $Id$
-#
-# MKfallback.sh -- create fallback table for entry reads
-#
-# This script generates source code for a custom version of read_entry.c
-# that (instead of reading capabilities for an argument terminal type
-# from an on-disk terminfo tree) tries to match the type with one of a
-# specified list of types generated in.
-#
-cat <<EOF
-/*
- * DO NOT EDIT THIS FILE BY HAND! It is generated by MKfallback.sh.
- */
-
-#include <curses.priv.h>
-#include <term.h>
-
-EOF
-
-if [ "$*" ]
-then
- cat <<EOF
-#include <tic.h>
-
-/* fallback entries for: $* */
-EOF
- for x in $*
- do
- echo "/* $x */"
- infocmp -E $x
- done
-
- cat <<EOF
-static const TERMTYPE fallbacks[$#] =
-{
-EOF
- comma=""
- for x in $*
- do
- echo "$comma /* $x */"
- infocmp -e $x
- comma=","
- done
-
- cat <<EOF
-};
-
-EOF
-fi
-
-cat <<EOF
-const TERMTYPE *_nc_fallback(const char *name GCC_UNUSED)
-{
-EOF
-
-if [ "$*" ]
-then
- cat <<EOF
- const TERMTYPE *tp;
-
- for (tp = fallbacks;
- tp < fallbacks + sizeof(fallbacks)/sizeof(TERMTYPE);
- tp++)
- if (_nc_name_match(tp->term_names, name, "|"))
- return(tp);
-EOF
-else
- echo " /* the fallback list is empty */";
-fi
-
-cat <<EOF
- return((TERMTYPE *)0);
-}
-EOF
diff --git a/ncurses-5.2/ncurses/tinfo/MKnames.awk b/ncurses-5.2/ncurses/tinfo/MKnames.awk
deleted file mode 100644
index 075fafa..0000000
--- a/ncurses-5.2/ncurses/tinfo/MKnames.awk
+++ /dev/null
@@ -1,98 +0,0 @@
-# $Id$
-BEGIN {
- print "/* This file was generated by MKnames.awk */" > "namehdr"
- print "" > "namehdr"
- print "#include <curses.priv.h>" > "namehdr"
- print "" > "namehdr"
- print "#define IT NCURSES_CONST char * const" > "namehdr"
- print "" > "namehdr"
- print "#if BROKEN_LINKER" > "namehdr"
- print "#include <term.h>" > "namehdr"
- print "#define DCL(it) static IT data##it[]" > "namehdr"
- print "#else" > "namehdr"
- print "#define DCL(it) IT it[]" > "namehdr"
- print "#endif" > "namehdr"
- print "" > "namehdr"
- print "/*" > "boolnames"
- print " * names.c - Arrays of capability names and codes" > "boolnames"
- print " *" > "boolnames"
- print " */" > "boolnames"
- print "" > "boolnames"
- print "DCL(boolnames) = {" > "boolnames"
- print "DCL(boolfnames) = {" > "boolfnames"
- print "DCL(boolcodes) = {" > "boolcodes"
- print "DCL(numnames) = {" > "numnames"
- print "DCL(numfnames) = {" > "numfnames"
- print "DCL(numcodes) = {" > "numcodes"
- print "DCL(strnames) = {" > "strnames"
- print "DCL(strfnames) = {" > "strfnames"
- print "DCL(strcodes) = {" > "strcodes"
- }
-
-$1 ~ /^#/ {next;}
-
-$1 == "SKIPWARN" {next;}
-
-$3 == "bool" {
- printf "\t\t\"%s\",\n", $2 > "boolnames"
- printf "\t\t\"%s\",\n", $1 > "boolfnames"
- printf "\t\t\"%s\",\n", $4 > "boolcodes"
- }
-
-$3 == "num" {
- printf "\t\t\"%s\",\n", $2 > "numnames"
- printf "\t\t\"%s\",\n", $1 > "numfnames"
- printf "\t\t\"%s\",\n", $4 > "numcodes"
- }
-
-$3 == "str" {
- printf "\t\t\"%s\",\n", $2 > "strnames"
- printf "\t\t\"%s\",\n", $1 > "strfnames"
- printf "\t\t\"%s\",\n", $4 > "strcodes"
- }
-
-END {
- print "\t\t(NCURSES_CONST char *)0," > "boolnames"
- print "};" > "boolnames"
- print "" > "boolnames"
- print "\t\t(NCURSES_CONST char *)0," > "boolfnames"
- print "};" > "boolfnames"
- print "" > "boolfnames"
- print "\t\t(NCURSES_CONST char *)0," > "boolcodes"
- print "};" > "boolcodes"
- print "" > "boolcodes"
- print "\t\t(NCURSES_CONST char *)0," > "numnames"
- print "};" > "numnames"
- print "" > "numnames"
- print "\t\t(NCURSES_CONST char *)0," > "numfnames"
- print "};" > "numfnames"
- print "" > "numfnames"
- print "\t\t(NCURSES_CONST char *)0," > "numcodes"
- print "};" > "numcodes"
- print "" > "numcodes"
- print "\t\t(NCURSES_CONST char *)0," > "strnames"
- print "};" > "strnames"
- print "" > "strnames"
- print "\t\t(NCURSES_CONST char *)0," > "strfnames"
- print "};" > "strfnames"
- print "" > "strfnames"
- print "\t\t(NCURSES_CONST char *)0," > "strcodes"
- print "};" > "strcodes"
- print "" > "strcodes"
- print "#if BROKEN_LINKER" > "nameftr"
- print "#define FIX(it) IT *_nc_##it(void) { return data##it; }" > "nameftr"
- print "FIX(boolnames)" > "nameftr"
- print "FIX(boolfnames)" > "nameftr"
- print "FIX(numnames)" > "nameftr"
- print "FIX(numfnames)" > "nameftr"
- print "FIX(strnames)" > "nameftr"
- print "FIX(strfnames)" > "nameftr"
- print "#endif /* BROKEN_LINKER */" > "nameftr"
- print "" > "codeftr"
- print "#if BROKEN_LINKER" > "codeftr"
- print "#define FIX(it) IT *_nc_##it(void) { return data##it; }" > "codeftr"
- print "FIX(boolcodes)" > "codeftr"
- print "FIX(numcodes)" > "codeftr"
- print "FIX(strcodes)" > "codeftr"
- print "#endif /* BROKEN_LINKER */" > "codeftr"
- }
diff --git a/ncurses-5.2/ncurses/tinfo/README b/ncurses-5.2/ncurses/tinfo/README
deleted file mode 100644
index 02de383..0000000
--- a/ncurses-5.2/ncurses/tinfo/README
+++ /dev/null
@@ -1,8 +0,0 @@
--- $Id$
-
-The files in this directory (tinfo) are those that support the terminfo
-database and interfaces for ncurses. The terminfo library can be built
-separately, as a lower-level library for ncurses, but usually is bundled.
-
-In addition to the standard documented interfaces, ncurses uses internal
-functions which reside in tinfo to satisfy linkage requirements.
diff --git a/ncurses-5.2/ncurses/tinfo/access.c b/ncurses-5.2/ncurses/tinfo/access.c
deleted file mode 100644
index 7d5e526..0000000
--- a/ncurses-5.2/ncurses/tinfo/access.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1998,2000 *
- ****************************************************************************/
-
-#include <curses.priv.h>
-#include <tic.h>
-
-MODULE_ID("$Id$")
-
-char *
-_nc_basename(char *path)
-{
- char *result = strrchr(path, '/');
-#ifdef __EMX__
- if (result == 0)
- result = strrchr(path, '\\');
-#endif
- if (result == 0)
- result = path;
- else
- result++;
- return result;
-}
-
-int
-_nc_access(const char *path, int mode)
-{
- if (access(path, mode) < 0) {
- if ((mode & W_OK) != 0
- && errno == ENOENT
- && strlen(path) < PATH_MAX) {
- char head[PATH_MAX];
- char *leaf = _nc_basename(strcpy(head, path));
-
- if (leaf == 0)
- leaf = head;
- *leaf = '\0';
- if (head == leaf)
- (void) strcpy(head, ".");
-
- return access(head, R_OK | W_OK | X_OK);
- }
- return -1;
- }
- return 0;
-}
-
-#ifndef USE_ROOT_ENVIRON
-/*
- * Returns true if we allow application to use environment variables that are
- * used for searching lists of directories, etc.
- */
-int
-_nc_env_access(void)
-{
-#if HAVE_ISSETUGID
- if (issetugid())
- return FALSE;
-#elif HAVE_GETEUID && HAVE_GETEGID
- if (getuid() != geteuid()
- || getgid() != getegid())
- return FALSE;
-#endif
- return getuid() != 0; /* ...finally, disallow root */
-}
-#endif
diff --git a/ncurses-5.2/ncurses/tinfo/add_tries.c b/ncurses-5.2/ncurses/tinfo/add_tries.c
deleted file mode 100644
index ad2838a..0000000
--- a/ncurses-5.2/ncurses/tinfo/add_tries.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1998 *
- ****************************************************************************/
-
-/*
-** add_tries.c
-**
-** Add keycode/string to tries-tree.
-**
-*/
-
-#include <curses.priv.h>
-
-MODULE_ID("$Id$")
-
-#define SET_TRY(dst,src) if ((dst->ch = *src++) == 128) dst->ch = '\0'
-#define CMP_TRY(a,b) ((a)? (a == b) : (b == 128))
-
-void
-_nc_add_to_try(struct tries **tree, const char *str, unsigned short code)
-{
- static bool out_of_memory = FALSE;
- struct tries *ptr, *savedptr;
- unsigned const char *txt = (unsigned const char *) str;
-
- if (txt == 0 || *txt == '\0' || out_of_memory || code == 0)
- return;
-
- if ((*tree) != 0) {
- ptr = savedptr = (*tree);
-
- for (;;) {
- unsigned char cmp = *txt;
-
- while (!CMP_TRY(ptr->ch, cmp)
- && ptr->sibling != 0)
- ptr = ptr->sibling;
-
- if (CMP_TRY(ptr->ch, cmp)) {
- if (*(++txt) == '\0') {
- ptr->value = code;
- return;
- }
- if (ptr->child != 0)
- ptr = ptr->child;
- else
- break;
- } else {
- if ((ptr->sibling = typeCalloc(struct tries, 1)) == 0) {
- out_of_memory = TRUE;
- return;
- }
-
- savedptr = ptr = ptr->sibling;
- SET_TRY(ptr, txt);
- ptr->value = 0;
-
- break;
- }
- } /* end for (;;) */
- } else { /* (*tree) == 0 :: First sequence to be added */
- savedptr = ptr = (*tree) = typeCalloc(struct tries, 1);
-
- if (ptr == 0) {
- out_of_memory = TRUE;
- return;
- }
-
- SET_TRY(ptr, txt);
- ptr->value = 0;
- }
-
- /* at this point, we are adding to the try. ptr->child == 0 */
-
- while (*txt) {
- ptr->child = typeCalloc(struct tries, 1);
-
- ptr = ptr->child;
-
- if (ptr == 0) {
- out_of_memory = TRUE;
-
- while ((ptr = savedptr) != 0) {
- savedptr = ptr->child;
- free(ptr);
- }
-
- return;
- }
-
- SET_TRY(ptr, txt);
- ptr->value = 0;
- }
-
- ptr->value = code;
- return;
-}
diff --git a/ncurses-5.2/ncurses/tinfo/alloc_entry.c b/ncurses-5.2/ncurses/tinfo/alloc_entry.c
deleted file mode 100644
index 4a79125..0000000
--- a/ncurses-5.2/ncurses/tinfo/alloc_entry.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * alloc_entry.c -- allocation functions for terminfo entries
- *
- * _nc_copy_entry()
- * _nc_init_entry()
- * _nc_merge_entry()
- * _nc_save_str()
- * _nc_wrap_entry()
- *
- */
-
-#include <curses.priv.h>
-
-#include <tic.h>
-#include <term_entry.h>
-
-MODULE_ID("$Id$")
-
-#define ABSENT_OFFSET -1
-#define CANCELLED_OFFSET -2
-
-#define MAX_STRTAB 4096 /* documented maximum entry size */
-
-static char stringbuf[MAX_STRTAB]; /* buffer for string capabilities */
-static size_t next_free; /* next free character in stringbuf */
-
-void
-_nc_init_entry(TERMTYPE * const tp)
-/* initialize a terminal type data block */
-{
- int i;
-
-#if NCURSES_XNAMES
- tp->num_Booleans = BOOLCOUNT;
- tp->num_Numbers = NUMCOUNT;
- tp->num_Strings = STRCOUNT;
- tp->ext_Booleans = 0;
- tp->ext_Numbers = 0;
- tp->ext_Strings = 0;
-#endif
- if (tp->Booleans == 0)
- tp->Booleans = typeMalloc(char, BOOLCOUNT);
- if (tp->Numbers == 0)
- tp->Numbers = typeMalloc(short, NUMCOUNT);
- if (tp->Strings == 0)
- tp->Strings = typeMalloc(char *, STRCOUNT);
-
- for_each_boolean(i, tp)
- tp->Booleans[i] = FALSE;
-
- for_each_number(i, tp)
- tp->Numbers[i] = ABSENT_NUMERIC;
-
- for_each_string(i, tp)
- tp->Strings[i] = ABSENT_STRING;
-
- next_free = 0;
-}
-
-ENTRY *
-_nc_copy_entry(ENTRY * oldp)
-{
- ENTRY *newp = typeCalloc(ENTRY, 1);
-
- if (newp != 0) {
- *newp = *oldp;
- _nc_copy_termtype(&(newp->tterm), &(oldp->tterm));
- }
- return newp;
-}
-
-char *
-_nc_save_str(const char *const string)
-/* save a copy of string in the string buffer */
-{
- size_t old_next_free = next_free;
- size_t len = strlen(string) + 1;
-
- if (next_free + len < MAX_STRTAB) {
- strcpy(&stringbuf[next_free], string);
- DEBUG(7, ("Saved string %s", _nc_visbuf(string)));
- DEBUG(7, ("at location %d", (int) next_free));
- next_free += len;
- }
- return (stringbuf + old_next_free);
-}
-
-void
-_nc_wrap_entry(ENTRY * const ep)
-/* copy the string parts to allocated storage, preserving pointers to it */
-{
- int offsets[MAX_ENTRY_SIZE / 2], useoffsets[MAX_USES];
- int i, n;
- TERMTYPE *tp = &(ep->tterm);
-
- n = tp->term_names - stringbuf;
- for_each_string(i, &(ep->tterm)) {
- if (tp->Strings[i] == ABSENT_STRING)
- offsets[i] = ABSENT_OFFSET;
- else if (tp->Strings[i] == CANCELLED_STRING)
- offsets[i] = CANCELLED_OFFSET;
- else
- offsets[i] = tp->Strings[i] - stringbuf;
- }
-
- for (i = 0; i < ep->nuses; i++) {
- if (ep->uses[i].name == 0)
- useoffsets[i] = ABSENT_OFFSET;
- else
- useoffsets[i] = ep->uses[i].name - stringbuf;
- }
-
- if ((tp->str_table = typeMalloc(char, next_free)) == (char *) 0)
- _nc_err_abort("Out of memory");
- (void) memcpy(tp->str_table, stringbuf, next_free);
-
- tp->term_names = tp->str_table + n;
- for_each_string(i, &(ep->tterm)) {
- if (offsets[i] == ABSENT_OFFSET)
- tp->Strings[i] = ABSENT_STRING;
- else if (offsets[i] == CANCELLED_OFFSET)
- tp->Strings[i] = CANCELLED_STRING;
- else
- tp->Strings[i] = tp->str_table + offsets[i];
- }
-
-#if NCURSES_XNAMES
- if ((n = NUM_EXT_NAMES(tp)) != 0) {
- unsigned length = 0;
- for (i = 0; i < n; i++) {
- length += strlen(tp->ext_Names[i]) + 1;
- offsets[i] = tp->ext_Names[i] - stringbuf;
- }
- if ((tp->ext_str_table = typeMalloc(char, length)) == 0)
- _nc_err_abort("Out of memory");
- for (i = 0, length = 0; i < n; i++) {
- tp->ext_Names[i] = tp->ext_str_table + length;
- strcpy(tp->ext_Names[i], stringbuf + offsets[i]);
- length += strlen(tp->ext_Names[i]) + 1;
- }
- }
-#endif
-
- for (i = 0; i < ep->nuses; i++) {
- if (useoffsets[i] == ABSENT_OFFSET)
- ep->uses[i].name = 0;
- else
- ep->uses[i].name = (tp->str_table + useoffsets[i]);
- }
-}
-
-void
-_nc_merge_entry(TERMTYPE * const to, TERMTYPE * const from)
-/* merge capabilities from `from' entry into `to' entry */
-{
- int i;
-
-#if NCURSES_XNAMES
- _nc_align_termtype(to, from);
-#endif
- for_each_boolean(i, from) {
- int mergebool = from->Booleans[i];
-
- if (mergebool == CANCELLED_BOOLEAN)
- to->Booleans[i] = FALSE;
- else if (mergebool == TRUE)
- to->Booleans[i] = mergebool;
- }
-
- for_each_number(i, from) {
- int mergenum = from->Numbers[i];
-
- if (mergenum == CANCELLED_NUMERIC)
- to->Numbers[i] = ABSENT_NUMERIC;
- else if (mergenum != ABSENT_NUMERIC)
- to->Numbers[i] = mergenum;
- }
-
- /*
- * Note: the copies of strings this makes don't have their own
- * storage. This is OK right now, but will be a problem if we
- * we ever want to deallocate entries.
- */
- for_each_string(i, from) {
- char *mergestring = from->Strings[i];
-
- if (mergestring == CANCELLED_STRING)
- to->Strings[i] = ABSENT_STRING;
- else if (mergestring != ABSENT_STRING)
- to->Strings[i] = mergestring;
- }
-}
diff --git a/ncurses-5.2/ncurses/tinfo/alloc_ttype.c b/ncurses-5.2/ncurses/tinfo/alloc_ttype.c
deleted file mode 100644
index 5f8d650..0000000
--- a/ncurses-5.2/ncurses/tinfo/alloc_ttype.c
+++ /dev/null
@@ -1,489 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1999 *
- ****************************************************************************/
-
-/*
- * align_ttype.c -- functions for TERMTYPE
- *
- * _nc_align_termtype()
- * _nc_copy_termtype()
- *
- */
-
-#include <curses.priv.h>
-
-#include <tic.h>
-#include <term_entry.h>
-
-MODULE_ID("$Id$")
-
-#if NCURSES_XNAMES
-/*
- * Merge the a/b lists into dst. Both a/b are sorted (see _nc_extend_names()),
- * so we do not have to worry about order dependencies.
- */
-static int
-merge_names(char **dst, char **a, int na, char **b, int nb)
-{
- int n = 0;
- while (na > 0 && nb > 0) {
- int cmp = strcmp(*a, *b);
- if (cmp < 0) {
- dst[n++] = *a++;
- na--;
- } else if (cmp > 0) {
- dst[n++] = *b++;
- nb--;
- } else if (cmp == 0) {
- dst[n++] = *a;
- a++, b++;
- na--, nb--;
- }
- }
- while (na-- > 0) {
- dst[n++] = *a++;
- }
- while (nb-- > 0) {
- dst[n++] = *b++;
- }
- DEBUG(4, ("merge_names -> %d", n));
- return n;
-}
-
-static bool
-find_name(char **table, int length, char *name)
-{
- while (length-- > 0) {
- if (!strcmp(*table++, name)) {
- DEBUG(4, ("found name '%s'", name));
- return TRUE;
- }
- }
- DEBUG(4, ("did not find name '%s'", name));
- return FALSE;
-}
-
-static void
-realign_data(TERMTYPE * to, char **ext_Names, int ext_Booleans, int
- ext_Numbers, int ext_Strings)
-{
- int n, m, base;
- int limit = (to->ext_Booleans + to->ext_Numbers + to->ext_Strings);
-
- if (to->ext_Booleans != ext_Booleans) {
- to->num_Booleans += (ext_Booleans - to->ext_Booleans);
- to->Booleans = typeRealloc(char, to->num_Booleans, to->Booleans);
- for (n = to->ext_Booleans - 1,
- m = ext_Booleans - 1,
- base = to->num_Booleans - (m + 1); m >= 0; m--) {
- if (find_name(to->ext_Names, limit, ext_Names[m])) {
- to->Booleans[base + m] = to->Booleans[base + n--];
- } else {
- to->Booleans[base + m] = FALSE;
- }
- }
- to->ext_Booleans = ext_Booleans;
- }
- if (to->ext_Numbers != ext_Numbers) {
- to->num_Numbers += (ext_Numbers - to->ext_Numbers);
- to->Numbers = typeRealloc(short, to->num_Numbers, to->Numbers);
- for (n = to->ext_Numbers - 1,
- m = ext_Numbers - 1,
- base = to->num_Numbers - (m + 1); m >= 0; m--) {
- if (find_name(to->ext_Names, limit, ext_Names[m + ext_Booleans])) {
- to->Numbers[base + m] = to->Numbers[base + n--];
- } else {
- to->Numbers[base + m] = ABSENT_NUMERIC;
- }
- }
- to->ext_Numbers = ext_Numbers;
- }
- if (to->ext_Strings != ext_Strings) {
- to->num_Strings += (ext_Strings - to->ext_Strings);
- to->Strings = typeRealloc(char *, to->num_Strings, to->Strings);
- for (n = to->ext_Strings - 1,
- m = ext_Strings - 1,
- base = to->num_Strings - (m + 1); m >= 0; m--) {
- if (find_name(to->ext_Names, limit, ext_Names[m + ext_Booleans + ext_Numbers])) {
- to->Strings[base + m] = to->Strings[base + n--];
- } else {
- to->Strings[base + m] = ABSENT_STRING;
- }
- }
- to->ext_Strings = ext_Strings;
- }
-}
-
-/*
- * Returns the first index in ext_Names[] for the given token-type
- */
-static int
-_nc_first_ext_name(TERMTYPE * tp, int token_type)
-{
- int first;
-
- switch (token_type) {
- case BOOLEAN:
- first = 0;
- break;
- case NUMBER:
- first = tp->ext_Booleans;
- break;
- case STRING:
- first = tp->ext_Booleans + tp->ext_Numbers;
- break;
- default:
- first = 0;
- break;
- }
- return first;
-}
-
-/*
- * Returns the last index in ext_Names[] for the given token-type
- */
-static int
-_nc_last_ext_name(TERMTYPE * tp, int token_type)
-{
- int last;
-
- switch (token_type) {
- case BOOLEAN:
- last = tp->ext_Booleans;
- break;
- case NUMBER:
- last = tp->ext_Booleans + tp->ext_Numbers;
- break;
- default:
- case STRING:
- last = NUM_EXT_NAMES(tp);
- break;
- }
- return last;
-}
-
-/*
- * Lookup an entry from extended-names, returning -1 if not found
- */
-static int
-_nc_find_ext_name(TERMTYPE * tp, char *name, int token_type)
-{
- unsigned j;
- unsigned first = _nc_first_ext_name(tp, token_type);
- unsigned last = _nc_last_ext_name(tp, token_type);
-
- for (j = first; j < last; j++) {
- if (!strcmp(name, tp->ext_Names[j])) {
- return j;
- }
- }
- return -1;
-}
-
-/*
- * Translate an index into ext_Names[] into the corresponding index into data
- * (e.g., Booleans[]).
- */
-static int
-_nc_ext_data_index(TERMTYPE * tp, int n, int token_type)
-{
- switch (token_type) {
- case BOOLEAN:
- n += (tp->num_Booleans - tp->ext_Booleans);
- break;
- case NUMBER:
- n += (tp->num_Numbers - tp->ext_Numbers)
- - (tp->ext_Booleans);
- break;
- default:
- case STRING:
- n += (tp->num_Strings - tp->ext_Strings)
- - (tp->ext_Booleans + tp->ext_Numbers);
- }
- return n;
-}
-
-/*
- * Adjust tables to remove (not free) an extended name and its corresponding
- * data.
- */
-static bool
-_nc_del_ext_name(TERMTYPE * tp, char *name, int token_type)
-{
- int j;
- int first, last;
-
- if ((first = _nc_find_ext_name(tp, name, token_type)) >= 0) {
- last = NUM_EXT_NAMES(tp) - 1;
- for (j = first; j < last; j++) {
- tp->ext_Names[j] = tp->ext_Names[j + 1];
- }
- first = _nc_ext_data_index(tp, first, token_type);
- switch (token_type) {
- case BOOLEAN:
- last = tp->num_Booleans - 1;
- for (j = first; j < last; j++)
- tp->Booleans[j] = tp->Booleans[j + 1];
- tp->ext_Booleans -= 1;
- tp->num_Booleans -= 1;
- break;
- case NUMBER:
- last = tp->num_Numbers - 1;
- for (j = first; j < last; j++)
- tp->Numbers[j] = tp->Numbers[j + 1];
- tp->ext_Numbers -= 1;
- tp->num_Numbers -= 1;
- break;
- case STRING:
- last = tp->num_Strings - 1;
- for (j = first; j < last; j++)
- tp->Strings[j] = tp->Strings[j + 1];
- tp->ext_Strings -= 1;
- tp->num_Strings -= 1;
- break;
- }
- return TRUE;
- }
- return FALSE;
-}
-
-/*
- * Adjust tables to insert an extended name, making room for new data. The
- * index into the corresponding data array is returned.
- */
-static int
-_nc_ins_ext_name(TERMTYPE * tp, char *name, int token_type)
-{
- unsigned first = _nc_first_ext_name(tp, token_type);
- unsigned last = _nc_last_ext_name(tp, token_type);
- unsigned total = NUM_EXT_NAMES(tp) + 1;
- unsigned j, k;
-
- for (j = first; j < last; j++) {
- int cmp = strcmp(name, tp->ext_Names[j]);
- if (cmp == 0)
- /* already present */
- return _nc_ext_data_index(tp, j, token_type);
- if (cmp < 0) {
- break;
- }
- }
-
- tp->ext_Names = typeRealloc(char *, total, tp->ext_Names);
- for (k = total - 1; k > j; k--)
- tp->ext_Names[k] = tp->ext_Names[k - 1];
- tp->ext_Names[j] = name;
- j = _nc_ext_data_index(tp, j, token_type);
-
- switch (token_type) {
- case BOOLEAN:
- tp->ext_Booleans += 1;
- tp->num_Booleans += 1;
- tp->Booleans = typeRealloc(char, tp->num_Booleans, tp->Booleans);
- for (k = tp->num_Booleans - 1; k > j; k--)
- tp->Booleans[k] = tp->Booleans[k - 1];
- break;
- case NUMBER:
- tp->ext_Numbers += 1;
- tp->num_Numbers += 1;
- tp->Numbers = typeRealloc(short, tp->num_Numbers, tp->Numbers);
- for (k = tp->num_Numbers - 1; k > j; k--)
- tp->Numbers[k] = tp->Numbers[k - 1];
- break;
- case STRING:
- tp->ext_Strings += 1;
- tp->num_Strings += 1;
- tp->Strings = typeRealloc(char *, tp->num_Strings, tp->Strings);
- for (k = tp->num_Strings - 1; k > j; k--)
- tp->Strings[k] = tp->Strings[k - 1];
- break;
- }
- return j;
-}
-
-/*
- * Look for strings that are marked cancelled, which happen to be the same name
- * as a boolean or number. We'll get this as a special case when we get a
- * cancellation of a name that is inherited from another entry.
- */
-static void
-adjust_cancels(TERMTYPE * to, TERMTYPE * from)
-{
- int first = to->ext_Booleans + to->ext_Numbers;
- int last = first + to->ext_Strings;
- int j, k;
-
- for (j = first; j < last;) {
- char *name = to->ext_Names[j];
- unsigned j_str = to->num_Strings - first - to->ext_Strings;
-
- if (to->Strings[j + j_str] == CANCELLED_STRING) {
- if ((k = _nc_find_ext_name(from, to->ext_Names[j], BOOLEAN)) >= 0) {
- if (_nc_del_ext_name(to, name, STRING)
- || _nc_del_ext_name(to, name, NUMBER)) {
- k = _nc_ins_ext_name(to, name, BOOLEAN);
- to->Booleans[k] = FALSE;
- } else {
- j++;
- }
- } else if ((k = _nc_find_ext_name(from, to->ext_Names[j],
- NUMBER)) >= 0) {
- if (_nc_del_ext_name(to, name, STRING)
- || _nc_del_ext_name(to, name, BOOLEAN)) {
- k = _nc_ins_ext_name(to, name, NUMBER);
- to->Numbers[k] = CANCELLED_NUMERIC;
- } else {
- j++;
- }
- }
- } else {
- j++;
- }
- }
-}
-
-void
-_nc_align_termtype(TERMTYPE * to, TERMTYPE * from)
-{
- int na = NUM_EXT_NAMES(to);
- int nb = NUM_EXT_NAMES(from);
- int n;
- bool same;
- char **ext_Names;
- int ext_Booleans, ext_Numbers, ext_Strings;
-
- DEBUG(2, ("align_termtype to(%d:%s), from(%d:%s)", na, to->term_names,
- nb, from->term_names));
-
- if (na != 0 || nb != 0) {
- if ((na == nb) /* check if the arrays are equivalent */
- &&(to->ext_Booleans == from->ext_Booleans)
- && (to->ext_Numbers == from->ext_Numbers)
- && (to->ext_Strings == from->ext_Strings)) {
- for (n = 0, same = TRUE; n < na; n++) {
- if (strcmp(to->ext_Names[n], from->ext_Names[n])) {
- same = FALSE;
- break;
- }
- }
- if (same)
- return;
- }
- /*
- * This is where we pay for having a simple extension representation.
- * Allocate a new ext_Names array and merge the two ext_Names arrays
- * into it, updating to's counts for booleans, etc. Fortunately we do
- * this only for the terminfo compiler (tic) and comparer (infocmp).
- */
- ext_Names = typeMalloc(char *, na + nb);
-
- if (to->ext_Strings && (from->ext_Booleans + from->ext_Numbers))
- adjust_cancels(to, from);
-
- if (from->ext_Strings && (to->ext_Booleans + to->ext_Numbers))
- adjust_cancels(from, to);
-
- ext_Booleans = merge_names(ext_Names,
- to->ext_Names,
- to->ext_Booleans,
- from->ext_Names,
- from->ext_Booleans);
- ext_Numbers = merge_names(ext_Names + ext_Booleans,
- to->ext_Names
- + to->ext_Booleans,
- to->ext_Numbers,
- from->ext_Names
- + from->ext_Booleans,
- from->ext_Numbers);
- ext_Strings = merge_names(ext_Names + ext_Numbers + ext_Booleans,
- to->ext_Names
- + to->ext_Booleans
- + to->ext_Numbers,
- to->ext_Strings,
- from->ext_Names
- + from->ext_Booleans
- + from->ext_Numbers,
- from->ext_Strings);
- /*
- * Now we must reallocate the Booleans, etc., to allow the data to be
- * overlaid.
- */
- if (na != (ext_Booleans + ext_Numbers + ext_Strings)) {
- realign_data(to, ext_Names, ext_Booleans, ext_Numbers, ext_Strings);
- FreeIfNeeded(to->ext_Names);
- to->ext_Names = ext_Names;
- DEBUG(2, ("realigned %d extended names for '%s' (to)",
- NUM_EXT_NAMES(to), to->term_names));
- }
- if (nb != (ext_Booleans + ext_Numbers + ext_Strings)) {
- nb = (ext_Booleans + ext_Numbers + ext_Strings);
- realign_data(from, ext_Names, ext_Booleans, ext_Numbers, ext_Strings);
- from->ext_Names = typeRealloc(char *, nb, from->ext_Names);
- memcpy(from->ext_Names, ext_Names, sizeof(char *) * nb);
- DEBUG(2, ("realigned %d extended names for '%s' (from)",
- NUM_EXT_NAMES(from), from->term_names));
- }
- }
-}
-#endif
-
-void
-_nc_copy_termtype(TERMTYPE * dst, TERMTYPE * src)
-{
- int i;
-
- *dst = *src; /* ...to copy the sizes and string-tables */
- dst->Booleans = typeMalloc(char, NUM_BOOLEANS(dst));
- dst->Numbers = typeMalloc(short, NUM_NUMBERS(dst));
- dst->Strings = typeMalloc(char *, NUM_STRINGS(dst));
-
- /* FIXME: use memcpy for these and similar loops */
- for_each_boolean(i, dst)
- dst->Booleans[i] = src->Booleans[i];
- for_each_number(i, dst)
- dst->Numbers[i] = src->Numbers[i];
- for_each_string(i, dst)
- dst->Strings[i] = src->Strings[i];
-
- /* FIXME: we probably should also copy str_table and ext_str_table,
- * but tic and infocmp are not written to exploit that (yet).
- */
-
-#if NCURSES_XNAMES
- if ((i = NUM_EXT_NAMES(src)) != 0) {
- dst->ext_Names = typeMalloc(char *, i);
- memcpy(dst->ext_Names, src->ext_Names, i * sizeof(char *));
- } else {
- dst->ext_Names = 0;
- }
-#endif
-
-}
diff --git a/ncurses-5.2/ncurses/tinfo/captoinfo.c b/ncurses-5.2/ncurses/tinfo/captoinfo.c
deleted file mode 100644
index 5a0d2c5..0000000
--- a/ncurses-5.2/ncurses/tinfo/captoinfo.c
+++ /dev/null
@@ -1,831 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * captoinfo.c --- conversion between termcap and terminfo formats
- *
- * The captoinfo() code was swiped from Ross Ridge's mytinfo package,
- * adapted to fit ncurses by Eric S. Raymond <esr@snark.thyrsus.com>.
- *
- * There is just one entry point:
- *
- * char *captoinfo(n, s, parametrized)
- *
- * Convert value s for termcap string capability named n into terminfo
- * format.
- *
- * This code recognizes all the standard 4.4BSD %-escapes:
- *
- * %% output `%'
- * %d output value as in printf %d
- * %2 output value as in printf %2d
- * %3 output value as in printf %3d
- * %. output value as in printf %c
- * %+x add x to value, then do %.
- * %>xy if value > x then add y, no output
- * %r reverse order of two parameters, no output
- * %i increment by one, no output
- * %n exclusive-or all parameters with 0140 (Datamedia 2500)
- * %B BCD (16*(value/10)) + (value%10), no output
- * %D Reverse coding (value - 2*(value%16)), no output (Delta Data).
- *
- * Also, %02 and %03 are accepted as synonyms for %2 and %3.
- *
- * Besides all the standard termcap escapes, this translator understands
- * the following extended escapes:
- *
- * used by GNU Emacs termcap libraries
- * %a[+*-/=][cp]x GNU arithmetic.
- * %m xor the first two parameters by 0177
- * %b backup to previous parameter
- * %f skip this parameter
- *
- * used by the University of Waterloo (MFCF) termcap libraries
- * %-x subtract parameter FROM char x and output it as a char
- * %ax add the character x to parameter
- *
- * If #define WATERLOO is on, also enable these translations:
- *
- * %sx subtract parameter FROM the character x
- *
- * By default, this Waterloo translations are not compiled in, because
- * the Waterloo %s conflicts with the way terminfo uses %s in strings for
- * function programming.
- *
- * Note the two definitions of %a: the GNU definition is translated if the
- * characters after the 'a' are valid for it, otherwise the UW definition
- * is translated.
- */
-
-#include <curses.priv.h>
-
-#include <ctype.h>
-#include <tic.h>
-
-MODULE_ID("$Id$")
-
-#define MAX_PUSHED 16 /* max # args we can push onto the stack */
-
-static int stack[MAX_PUSHED]; /* the stack */
-static int stackptr; /* the next empty place on the stack */
-static int onstack; /* the top of stack */
-static int seenm; /* seen a %m */
-static int seenn; /* seen a %n */
-static int seenr; /* seen a %r */
-static int param; /* current parameter */
-static char *dp; /* pointer to end of the converted string */
-
-static char *my_string;
-static size_t my_length;
-
-static char *
-init_string(void)
-/* initialize 'my_string', 'my_length' */
-{
- if (my_string == 0)
- my_string = typeMalloc(char, my_length = 256);
- if (my_string == 0)
- _nc_err_abort("Out of memory");
-
- *my_string = '\0';
- return my_string;
-}
-
-static char *
-save_string(char *d, const char *const s)
-{
- size_t have = (d - my_string);
- size_t need = have + strlen(s) + 2;
- if (need > my_length) {
- my_string = (char *) realloc(my_string, my_length = (need + need));
- if (my_string == 0)
- _nc_err_abort("Out of memory");
- d = my_string + have;
- }
- (void) strcpy(d, s);
- return d + strlen(d);
-}
-
-static inline char *
-save_char(char *s, char c)
-{
- static char temp[2];
- temp[0] = c;
- return save_string(s, temp);
-}
-
-static void
-push(void)
-/* push onstack on to the stack */
-{
- if (stackptr > MAX_PUSHED)
- _nc_warning("string too complex to convert");
- else
- stack[stackptr++] = onstack;
-}
-
-static void
-pop(void)
-/* pop the top of the stack into onstack */
-{
- if (stackptr == 0) {
- if (onstack == 0)
- _nc_warning("I'm confused");
- else
- onstack = 0;
- } else
- onstack = stack[--stackptr];
- param++;
-}
-
-static int
-cvtchar(register const char *sp)
-/* convert a character to a terminfo push */
-{
- unsigned char c = 0;
- int len;
-
- switch (*sp) {
- case '\\':
- switch (*++sp) {
- case '\'':
- case '$':
- case '\\':
- case '%':
- c = *sp;
- len = 2;
- break;
- case '\0':
- c = '\\';
- len = 1;
- break;
- case '0':
- case '1':
- case '2':
- case '3':
- len = 1;
- while (isdigit(*sp)) {
- c = 8 * c + (*sp++ - '0');
- len++;
- }
- break;
- default:
- c = *sp;
- len = 2;
- break;
- }
- break;
- case '^':
- c = (*++sp & 0x1f);
- len = 2;
- break;
- default:
- c = *sp;
- len = 1;
- }
- if (isgraph(c) && c != ',' && c != '\'' && c != '\\' && c != ':') {
- dp = save_string(dp, "%\'");
- dp = save_char(dp, c);
- dp = save_char(dp, '\'');
- } else {
- dp = save_string(dp, "%{");
- if (c > 99)
- dp = save_char(dp, c / 100 + '0');
- if (c > 9)
- dp = save_char(dp, ((int) (c / 10)) % 10 + '0');
- dp = save_char(dp, c % 10 + '0');
- dp = save_char(dp, '}');
- }
- return len;
-}
-
-static void
-getparm(int parm, int n)
-/* push n copies of param on the terminfo stack if not already there */
-{
- if (seenr) {
- if (parm == 1)
- parm = 2;
- else if (parm == 2)
- parm = 1;
- }
- if (onstack == parm) {
- if (n > 1) {
- _nc_warning("string may not be optimal");
- dp = save_string(dp, "%Pa");
- while (n--) {
- dp = save_string(dp, "%ga");
- }
- }
- return;
- }
- if (onstack != 0)
- push();
-
- onstack = parm;
-
- while (n--) {
- dp = save_string(dp, "%p");
- dp = save_char(dp, '0' + parm);
- }
-
- if (seenn && parm < 3) {
- dp = save_string(dp, "%{96}%^");
- }
-
- if (seenm && parm < 3) {
- dp = save_string(dp, "%{127}%^");
- }
-}
-
-char *
-_nc_captoinfo(
-/* convert a termcap string to terminfo format */
- register const char *cap, /* relevant terminfo capability index */
- register const char *s, /* string value of the capability */
- int const parametrized /* do % translations if 1, pad translations if >=0 */
-)
-{
- const char *capstart;
-
- stackptr = 0;
- onstack = 0;
- seenm = 0;
- seenn = 0;
- seenr = 0;
- param = 1;
-
- dp = init_string();
-
- /* skip the initial padding (if we haven't been told not to) */
- capstart = 0;
- if (s == 0)
- s = "";
- if (parametrized >= 0 && isdigit(*s))
- for (capstart = s;; s++)
- if (!(isdigit(*s) || *s == '*' || *s == '.'))
- break;
-
- while (*s != '\0') {
- switch (*s) {
- case '%':
- s++;
- if (parametrized < 1) {
- dp = save_char(dp, '%');
- break;
- }
- switch (*s++) {
- case '%':
- dp = save_char(dp, '%');
- break;
- case 'r':
- if (seenr++ == 1) {
- _nc_warning("saw %%r twice in %s", cap);
- }
- break;
- case 'm':
- if (seenm++ == 1) {
- _nc_warning("saw %%m twice in %s", cap);
- }
- break;
- case 'n':
- if (seenn++ == 1) {
- _nc_warning("saw %%n twice in %s", cap);
- }
- break;
- case 'i':
- dp = save_string(dp, "%i");
- break;
- case '6':
- case 'B':
- getparm(param, 1);
- dp = save_string(dp, "%{10}%/%{16}%*");
- getparm(param, 1);
- dp = save_string(dp, "%{10}%m%+");
- break;
- case '8':
- case 'D':
- getparm(param, 2);
- dp = save_string(dp, "%{2}%*%-");
- break;
- case '>':
- getparm(param, 2);
- /* %?%{x}%>%t%{y}%+%; */
- dp = save_string(dp, "%?");
- s += cvtchar(s);
- dp = save_string(dp, "%>%t");
- s += cvtchar(s);
- dp = save_string(dp, "%+%;");
- break;
- case 'a':
- if ((*s == '=' || *s == '+' || *s == '-'
- || *s == '*' || *s == '/')
- && (s[1] == 'p' || s[1] == 'c')
- && s[2] != '\0') {
- int l;
- l = 2;
- if (*s != '=')
- getparm(param, 1);
- if (s[1] == 'p') {
- getparm(param + s[2] - '@', 1);
- if (param != onstack) {
- pop();
- param--;
- }
- l++;
- } else
- l += cvtchar(s + 2);
- switch (*s) {
- case '+':
- dp = save_string(dp, "%+");
- break;
- case '-':
- dp = save_string(dp, "%-");
- break;
- case '*':
- dp = save_string(dp, "%*");
- break;
- case '/':
- dp = save_string(dp, "%/");
- break;
- case '=':
- if (seenr) {
- if (param == 1)
- onstack = 2;
- else if (param == 2)
- onstack = 1;
- else
- onstack = param;
- } else
- onstack = param;
- break;
- }
- s += l;
- break;
- }
- getparm(param, 1);
- s += cvtchar(s);
- dp = save_string(dp, "%+");
- break;
- case '+':
- getparm(param, 1);
- s += cvtchar(s);
- dp = save_string(dp, "%+%c");
- pop();
- break;
- case 's':
-#ifdef WATERLOO
- s += cvtchar(s);
- getparm(param, 1);
- dp = save_string(dp, "%-");
-#else
- getparm(param, 1);
- dp = save_string(dp, "%s");
- pop();
-#endif /* WATERLOO */
- break;
- case '-':
- s += cvtchar(s);
- getparm(param, 1);
- dp = save_string(dp, "%-%c");
- pop();
- break;
- case '.':
- getparm(param, 1);
- dp = save_string(dp, "%c");
- pop();
- break;
- case '0': /* not clear any of the historical termcaps did this */
- if (*s == '3')
- goto see03;
- else if (*s != '2')
- goto invalid;
- /* FALLTHRU */
- case '2':
- getparm(param, 1);
- dp = save_string(dp, "%2d");
- pop();
- break;
- case '3':
- see03:
- getparm(param, 1);
- dp = save_string(dp, "%3d");
- pop();
- break;
- case 'd':
- getparm(param, 1);
- dp = save_string(dp, "%d");
- pop();
- break;
- case 'f':
- param++;
- break;
- case 'b':
- param--;
- break;
- case '\\':
- dp = save_string(dp, "%\\");
- break;
- default:
- invalid:
- dp = save_char(dp, '%');
- s--;
- _nc_warning("unknown %% code %s (%#x) in %s",
- unctrl(*s), (*s) & 0xff, cap);
- break;
- }
- break;
-#ifdef REVISIBILIZE
- case '\\':
- dp = save_char(dp, *s++);
- dp = save_char(dp, *s++);
- break;
- case '\n':
- dp = save_string(dp, "\\n");
- s++;
- break;
- case '\t':
- dp = save_string(dp, "\\t");
- s++;
- break;
- case '\r':
- dp = save_string(dp, "\\r");
- s++;
- break;
- case '\200':
- dp = save_string(dp, "\\0");
- s++;
- break;
- case '\f':
- dp = save_string(dp, "\\f");
- s++;
- break;
- case '\b':
- dp = save_string(dp, "\\b");
- s++;
- break;
- case ' ':
- dp = save_string(dp, "\\s");
- s++;
- break;
- case '^':
- dp = save_string(dp, "\\^");
- s++;
- break;
- case ':':
- dp = save_string(dp, "\\:");
- s++;
- break;
- case ',':
- dp = save_string(dp, "\\,");
- s++;
- break;
- default:
- if (*s == '\033') {
- dp = save_string(dp, "\\E");
- s++;
- } else if (*s > 0 && *s < 32) {
- dp = save_char(dp, '^');
- dp = save_char(dp, *s + '@');
- s++;
- } else if (*s <= 0 || *s >= 127) {
- dp = save_char(dp, '\\');
- dp = save_char(dp, ((*s & 0300) >> 6) + '0');
- dp = save_char(dp, ((*s & 0070) >> 3) + '0');
- dp = save_char(dp, (*s & 0007) + '0');
- s++;
- } else
- dp = save_char(dp, *s++);
- break;
-#else
- default:
- dp = save_char(dp, *s++);
- break;
-#endif
- }
- }
-
- /*
- * Now, if we stripped off some leading padding, add it at the end
- * of the string as mandatory padding.
- */
- if (capstart) {
- dp = save_string(dp, "$<");
- for (s = capstart;; s++)
- if (isdigit(*s) || *s == '*' || *s == '.')
- dp = save_char(dp, *s);
- else
- break;
- dp = save_string(dp, "/>");
- }
-
- (void) save_char(dp, '\0');
- return (my_string);
-}
-
-/*
- * Check for an expression that corresponds to "%B" (BCD):
- * (parameter / 10) * 16 + (parameter % 10)
- */
-static int
-bcd_expression(const char *str)
-{
- /* leave this non-const for HPUX */
- static char fmt[] = "%%p%c%%{10}%%/%%{16}%%*%%p%c%%{10}%%m%%+";
- int len = 0;
- char ch1, ch2;
-
- if (sscanf(str, fmt, &ch1, &ch2) == 2
- && isdigit(ch1)
- && isdigit(ch2)
- && (ch1 == ch2)) {
- len = 28;
-#ifndef NDEBUG
- {
- char buffer[80];
- int tst;
- sprintf(buffer, fmt, ch1, ch2);
- tst = strlen(buffer) - 1;
- assert(len == tst);
- }
-#endif
- }
- return len;
-}
-
-static char *
-save_tc_char(char *bufptr, int c1)
-{
- char temp[80];
-
- if (is7bits(c1) && isprint(c1)) {
- if (c1 == ':' || c1 == '\\')
- bufptr = save_char(bufptr, '\\');
- bufptr = save_char(bufptr, c1);
- } else {
- if (c1 == (c1 & 0x1f)) /* iscntrl() returns T on 255 */
- (void) strcpy(temp, unctrl(c1));
- else
- (void) sprintf(temp, "\\%03o", c1);
- bufptr = save_string(bufptr, temp);
- }
- return bufptr;
-}
-
-static char *
-save_tc_inequality(char *bufptr, int c1, int c2)
-{
- bufptr = save_string(bufptr, "%>");
- bufptr = save_tc_char(bufptr, c1);
- bufptr = save_tc_char(bufptr, c2);
- return bufptr;
-}
-
-/*
- * Here are the capabilities infotocap assumes it can translate to:
- *
- * %% output `%'
- * %d output value as in printf %d
- * %2 output value as in printf %2d
- * %3 output value as in printf %3d
- * %. output value as in printf %c
- * %+c add character c to value, then do %.
- * %>xy if value > x then add y, no output
- * %r reverse order of two parameters, no output
- * %i increment by one, no output
- * %n exclusive-or all parameters with 0140 (Datamedia 2500)
- * %B BCD (16*(value/10)) + (value%10), no output
- * %D Reverse coding (value - 2*(value%16)), no output (Delta Data).
- * %m exclusive-or all parameters with 0177 (not in 4.4BSD)
- */
-
-char *
-_nc_infotocap(
-/* convert a terminfo string to termcap format */
- register const char *cap GCC_UNUSED, /* relevant termcap capability index */
- register const char *str, /* string value of the capability */
- int const parametrized /* do % translations if 1, pad translations if >=0 */
-)
-{
- int seenone = 0, seentwo = 0, saw_m = 0, saw_n = 0;
- const char *padding;
- const char *trimmed = 0;
- char ch1 = 0, ch2 = 0;
- char *bufptr = init_string();
- int len;
- bool syntax_error = FALSE;
-
- /* we may have to move some trailing mandatory padding up front */
- padding = str + strlen(str) - 1;
- if (*padding == '>' && *--padding == '/') {
- --padding;
- while (isdigit(*padding) || *padding == '.' || *padding == '*')
- padding--;
- if (*padding == '<' && *--padding == '$')
- trimmed = padding;
- padding += 2;
-
- while (isdigit(*padding) || *padding == '.' || *padding == '*')
- bufptr = save_char(bufptr, *padding++);
- }
-
- for (; *str && str != trimmed; str++) {
- int c1, c2;
- char *cp = 0;
-
- if (str[0] == '\\' && (str[1] == '^' || str[1] == ',')) {
- bufptr = save_char(bufptr, *++str);
- } else if (str[0] == '$' && str[1] == '<') { /* discard padding */
- str += 2;
- while (isdigit(*str) || *str == '.' || *str == '*' || *str ==
- '/' || *str == '>')
- str++;
- --str;
- } else if (str[0] == '%' && str[1] == '%') { /* escaped '%' */
- bufptr = save_string(bufptr, "%%");
- } else if (*str != '%' || (parametrized < 1)) {
- bufptr = save_char(bufptr, *str);
- } else if (sscanf(str, "%%?%%{%d}%%>%%t%%{%d}%%+%%;", &c1, &c2) == 2) {
- str = strchr(str, ';');
- bufptr = save_tc_inequality(bufptr, c1, c2);
- } else if (sscanf(str, "%%?%%{%d}%%>%%t%%'%c'%%+%%;", &c1, &ch2) == 2) {
- str = strchr(str, ';');
- bufptr = save_tc_inequality(bufptr, c1, c2);
- } else if (sscanf(str, "%%?%%'%c'%%>%%t%%{%d}%%+%%;", &ch1, &c2) == 2) {
- str = strchr(str, ';');
- bufptr = save_tc_inequality(bufptr, c1, c2);
- } else if (sscanf(str, "%%?%%'%c'%%>%%t%%'%c'%%+%%;", &ch1, &ch2) == 2) {
- str = strchr(str, ';');
- bufptr = save_tc_inequality(bufptr, c1, c2);
- } else if ((len = bcd_expression(str)) != 0) {
- str += len;
- bufptr = save_string(bufptr, "%B");
- } else if ((sscanf(str, "%%{%d}%%+%%c", &c1) == 1
- || sscanf(str, "%%'%c'%%+%%c", &ch1) == 1)
- && (cp = strchr(str, '+'))) {
- str = cp + 2;
- bufptr = save_string(bufptr, "%+");
-
- if (ch1)
- c1 = ch1;
- bufptr = save_tc_char(bufptr, c1);
- }
- /* FIXME: this "works" for 'delta' */
- else if (strncmp(str, "%{2}%*%-", 8) == 0) {
- str += 7;
- bufptr = save_string(bufptr, "%D");
- } else if (strncmp(str, "%{96}%^", 7) == 0) {
- str += 6;
- if (saw_m++ == 0) {
- bufptr = save_string(bufptr, "%n");
- }
- } else if (strncmp(str, "%{127}%^", 8) == 0) {
- str += 7;
- if (saw_n++ == 0) {
- bufptr = save_string(bufptr, "%m");
- }
- } else { /* cm-style format element */
- str++;
- switch (*str) {
- case '%':
- bufptr = save_char(bufptr, '%');
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- bufptr = save_char(bufptr, '%');
- while (isdigit(*str))
- bufptr = save_char(bufptr, *str++);
- if (strchr("doxX.", *str)) {
- if (*str != 'd') /* termcap doesn't have octal, hex */
- return 0;
- }
- break;
-
- case 'd':
- bufptr = save_string(bufptr, "%d");
- break;
-
- case 'c':
- bufptr = save_string(bufptr, "%.");
- break;
-
- /*
- * %s isn't in termcap, but it's convenient to pass it through
- * so we can represent things like terminfo pfkey strings in
- * termcap notation.
- */
- case 's':
- bufptr = save_string(bufptr, "%s");
- break;
-
- case 'p':
- str++;
- if (*str == '1')
- seenone = 1;
- else if (*str == '2') {
- if (!seenone && !seentwo) {
- bufptr = save_string(bufptr, "%r");
- seentwo++;
- }
- } else if (*str >= '3')
- return (0);
- break;
-
- case 'i':
- bufptr = save_string(bufptr, "%i");
- break;
-
- default:
- bufptr = save_char(bufptr, *str);
- syntax_error = TRUE;
- break;
- } /* endswitch (*str) */
- } /* endelse (*str == '%') */
-
- if (*str == '\0')
- break;
-
- } /* endwhile (*str) */
-
- return (syntax_error ? NULL : my_string);
-}
-
-#ifdef MAIN
-
-int curr_line;
-
-int
-main(int argc, char *argv[])
-{
- int c, tc = FALSE;
-
- while ((c = getopt(argc, argv, "c")) != EOF)
- switch (c) {
- case 'c':
- tc = TRUE;
- break;
- }
-
- curr_line = 0;
- for (;;) {
- char buf[BUFSIZ];
-
- ++curr_line;
- if (fgets(buf, sizeof(buf), stdin) == 0)
- break;
- buf[strlen(buf) - 1] = '\0';
- _nc_set_source(buf);
-
- if (tc) {
- char *cp = _nc_infotocap("to termcap", buf, 1);
-
- if (cp)
- (void) fputs(cp, stdout);
- } else
- (void) fputs(_nc_captoinfo("to terminfo", buf, 1), stdout);
- (void) putchar('\n');
- }
- return (0);
-}
-#endif /* MAIN */
-
-/* captoinfo.c ends here */
diff --git a/ncurses-5.2/ncurses/tinfo/comp_error.c b/ncurses-5.2/ncurses/tinfo/comp_error.c
deleted file mode 100644
index b457ee4..0000000
--- a/ncurses-5.2/ncurses/tinfo/comp_error.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-
-/*
- * comp_error.c -- Error message routines
- *
- */
-
-#include <curses.priv.h>
-
-#include <tic.h>
-
-MODULE_ID("$Id$")
-
-bool _nc_suppress_warnings = FALSE;
-int _nc_curr_line = 0; /* current line # in input */
-int _nc_curr_col = 0; /* current column # in input */
-
-static const char *sourcename;
-static char termtype[MAX_NAME_SIZE+1];
-
-void _nc_set_source(const char *const name)
-{
- sourcename = name;
-}
-
-void _nc_set_type(const char *const name)
-{
- if (name)
- strncpy( termtype, name, MAX_NAME_SIZE );
- else
- termtype[0] = '\0';
-}
-
-void _nc_get_type(char *name)
-{
- strcpy( name, termtype );
-}
-
-static inline void where_is_problem(void)
-{
- fprintf (stderr, "\"%s\"", sourcename);
- if (_nc_curr_line >= 0)
- fprintf (stderr, ", line %d", _nc_curr_line);
- if (_nc_curr_col >= 0)
- fprintf (stderr, ", col %d", _nc_curr_col);
- if (termtype[0])
- fprintf (stderr, ", terminal '%s'", termtype);
- fputc(':', stderr);
- fputc(' ', stderr);
-}
-
-void _nc_warning(const char *const fmt, ...)
-{
-va_list argp;
-
- if (_nc_suppress_warnings)
- return;
-
- where_is_problem();
- va_start(argp,fmt);
- vfprintf (stderr, fmt, argp);
- fprintf (stderr, "\n");
- va_end(argp);
-}
-
-
-void _nc_err_abort(const char *const fmt, ...)
-{
-va_list argp;
-
- where_is_problem();
- va_start(argp,fmt);
- vfprintf (stderr, fmt, argp);
- fprintf (stderr, "\n");
- va_end(argp);
- exit(EXIT_FAILURE);
-}
-
-
-void _nc_syserr_abort(const char *const fmt, ...)
-{
-va_list argp;
-
- where_is_problem();
- va_start(argp,fmt);
- vfprintf (stderr, fmt, argp);
- fprintf (stderr, "\n");
- va_end(argp);
-
- /* If we're debugging, try to show where the problem occurred - this
- * will dump core.
- */
-#if defined(TRACE) || !defined(NDEBUG)
- abort();
-#else
- /* Dumping core in production code is not a good idea.
- */
- exit(EXIT_FAILURE);
-#endif
-}
diff --git a/ncurses-5.2/ncurses/tinfo/comp_expand.c b/ncurses-5.2/ncurses/tinfo/comp_expand.c
deleted file mode 100644
index 2abe0a7..0000000
--- a/ncurses-5.2/ncurses/tinfo/comp_expand.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1998 *
- ****************************************************************************/
-
-#include <curses.priv.h>
-
-#include <ctype.h>
-#include <tic.h>
-
-MODULE_ID("$Id$")
-
-static int trailing_spaces(const char *src)
-{
- while (*src == ' ')
- src++;
- return *src == 0;
-}
-
-/* this deals with differences over whether 0x7f and 0x80..0x9f are controls */
-#define CHAR_OF(s) (*(unsigned const char *)(s))
-#define REALCTL(s) (CHAR_OF(s) < 127 && iscntrl(CHAR_OF(s)))
-#define REALPRINT(s) (CHAR_OF(s) < 127 && isprint(CHAR_OF(s)))
-
-char *_nc_tic_expand(const char *srcp, bool tic_format, int numbers)
-{
-static char * buffer;
-static size_t length;
-
-int bufp;
-const char *ptr, *str = VALID_STRING(srcp) ? srcp : "";
-bool islong = (strlen(str) > 3);
-size_t need = (2 + strlen(str)) * 4;
-int ch;
-
- if (buffer == 0 || need > length) {
- if ((buffer = typeRealloc(char, length = need, buffer)) == 0)
- return 0;
- }
-
- bufp = 0;
- ptr = str;
- while ((ch = (*str & 0xff)) != 0) {
- if (ch == '%' && REALPRINT(str+1)) {
- buffer[bufp++] = *str++;
- /*
- * Though the character literals are more compact, most
- * terminal descriptions use numbers and are not easy
- * to read in character-literal form.
- */
- switch (numbers) {
- case -1:
- if (str[0] == S_QUOTE
- && str[1] != '\\'
- && REALPRINT(str+1)
- && str[2] == S_QUOTE) {
- sprintf(buffer+bufp, "{%d}", str[1]);
- bufp += strlen(buffer+bufp);
- str += 2;
- } else {
- buffer[bufp++] = *str;
- }
- break;
- /*
- * If we have a "%{number}", try to translate it into
- * a "%'char'" form, since that will run a little faster
- * when we're interpreting it. Also, having one form
- * for the constant makes it simpler to compare terminal
- * descriptions.
- */
- case 1:
- if (str[0] == L_BRACE
- && isdigit(str[1])) {
- char *dst = 0;
- long value = strtol(str+1, &dst, 0);
- if (dst != 0
- && *dst == R_BRACE
- && value < 127
- && value != '\\' /* FIXME */
- && isprint((int)value)) {
- ch = (int)value;
- buffer[bufp++] = S_QUOTE;
- if (ch == '\\'
- || ch == S_QUOTE)
- buffer[bufp++] = '\\';
- buffer[bufp++] = ch;
- buffer[bufp++] = S_QUOTE;
- str = dst;
- } else {
- buffer[bufp++] = *str;
- }
- } else {
- buffer[bufp++] = *str;
- }
- break;
- default:
- buffer[bufp++] = *str;
- break;
- }
- }
- else if (ch == 128) {
- buffer[bufp++] = '\\';
- buffer[bufp++] = '0';
- }
- else if (ch == '\033') {
- buffer[bufp++] = '\\';
- buffer[bufp++] = 'E';
- }
- else if (ch == '\\' && tic_format && (str == srcp || str[-1] != '^')) {
- buffer[bufp++] = '\\';
- buffer[bufp++] = '\\';
- }
- else if (ch == ' ' && tic_format && (str == srcp || trailing_spaces(str))) {
- buffer[bufp++] = '\\';
- buffer[bufp++] = 's';
- }
- else if ((ch == ',' || ch == ':' || ch == '^') && tic_format) {
- buffer[bufp++] = '\\';
- buffer[bufp++] = ch;
- }
- else if (REALPRINT(str) && (ch != ',' && ch != ':' && !(ch == '!' && !tic_format) && ch != '^'))
- buffer[bufp++] = ch;
-#if 0 /* FIXME: this would be more readable (in fact the whole 'islong' logic should be removed) */
- else if (ch == '\b') {
- buffer[bufp++] = '\\';
- buffer[bufp++] = 'b';
- }
- else if (ch == '\f') {
- buffer[bufp++] = '\\';
- buffer[bufp++] = 'f';
- }
- else if (ch == '\t' && islong) {
- buffer[bufp++] = '\\';
- buffer[bufp++] = 't';
- }
-#endif
- else if (ch == '\r' && (islong || (strlen(srcp) > 2 && str[1] == '\0'))) {
- buffer[bufp++] = '\\';
- buffer[bufp++] = 'r';
- }
- else if (ch == '\n' && islong) {
- buffer[bufp++] = '\\';
- buffer[bufp++] = 'n';
- }
-#define UnCtl(c) ((c) + '@')
- else if (REALCTL(str) && ch != '\\' && (!islong || isdigit(str[1])))
- {
- (void) sprintf(&buffer[bufp], "^%c", UnCtl(ch));
- bufp += 2;
- }
- else
- {
- (void) sprintf(&buffer[bufp], "\\%03o", ch);
- bufp += 4;
- }
-
- str++;
- }
-
- buffer[bufp] = '\0';
- return(buffer);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/comp_hash.c b/ncurses-5.2/ncurses/tinfo/comp_hash.c
deleted file mode 100644
index f21b262..0000000
--- a/ncurses-5.2/ncurses/tinfo/comp_hash.c
+++ /dev/null
@@ -1,325 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-
-/*
- * comp_hash.c --- Routines to deal with the hashtable of capability
- * names.
- *
- */
-
-#include <curses.priv.h>
-
-#include <tic.h>
-#include <hashsize.h>
-
-#ifdef MAIN_PROGRAM
-#include <ctype.h>
-#undef DEBUG
-#define DEBUG(level, params) /*nothing*/
-#endif
-
-MODULE_ID("$Id$")
-
-static int hash_function(const char *);
-
-/*
- * _nc_make_hash_table()
- *
- * Takes the entries in table[] and hashes them into hash_table[]
- * by name. There are CAPTABSIZE entries in table[] and HASHTABSIZE
- * slots in hash_table[].
- *
- */
-
-#ifdef MAIN_PROGRAM
-
-#undef MODULE_ID
-#define MODULE_ID(id) /*nothing*/
-#include <tinfo/doalloc.c>
-
-static void _nc_make_hash_table(struct name_table_entry *table,
- struct name_table_entry **hash_table)
-{
-int i;
-int hashvalue;
-int collisions = 0;
-
- for (i = 0; i < CAPTABSIZE; i++) {
- hashvalue = hash_function(table[i].nte_name);
-
- if (hash_table[hashvalue] != (struct name_table_entry *) 0)
- collisions++;
-
- if (hash_table[hashvalue] != 0)
- table[i].nte_link = (short)(hash_table[hashvalue] - table);
- hash_table[hashvalue] = &table[i];
- }
-
- DEBUG(4, ("Hash table complete: %d collisions out of %d entries", collisions, CAPTABSIZE));
-}
-#endif
-
-
-/*
- * int hash_function(string)
- *
- * Computes the hashing function on the given string.
- *
- * The current hash function is the sum of each consectutive pair
- * of characters, taken as two-byte integers, mod Hashtabsize.
- *
- */
-
-static
-int
-hash_function(const char *string)
-{
-long sum = 0;
-
- DEBUG(9, ("hashing %s", string));
- while (*string) {
- sum += (long)(*string + (*(string + 1) << 8));
- string++;
- }
-
- DEBUG(9, ("sum is %ld", sum));
- return (int)(sum % HASHTABSIZE);
-}
-
-
-/*
- * struct name_table_entry *
- * find_entry(string)
- *
- * Finds the entry for the given string in the hash table if present.
- * Returns a pointer to the entry in the table or 0 if not found.
- *
- */
-
-#ifndef MAIN_PROGRAM
-struct name_table_entry const *
-_nc_find_entry(const char *string, const struct name_table_entry *const *hash_table)
-{
-int hashvalue;
-struct name_table_entry const *ptr;
-
- hashvalue = hash_function(string);
-
- if ((ptr = hash_table[hashvalue]) != 0) {
- while (strcmp(ptr->nte_name, string) != 0) {
- if (ptr->nte_link < 0)
- return 0;
- ptr = ptr->nte_link + hash_table[HASHTABSIZE];
- }
- }
-
- return (ptr);
-}
-
-/*
- * struct name_table_entry *
- * find_type_entry(string, type, table)
- *
- * Finds the first entry for the given name with the given type in the
- * given table if present (as distinct from find_entry, which finds the
- * the last entry regardless of type). You can use this if you detect
- * a name clash. It's slower, though. Returns a pointer to the entry
- * in the table or 0 if not found.
- */
-
-struct name_table_entry const *
-_nc_find_type_entry(const char *string,
- int type,
- const struct name_table_entry *table)
-{
-struct name_table_entry const *ptr;
-
- for (ptr = table; ptr < table + CAPTABSIZE; ptr++) {
- if (ptr->nte_type == type && strcmp(string, ptr->nte_name) == 0)
- return(ptr);
- }
-
- return ((struct name_table_entry *)NULL);
-}
-#endif
-
-#ifdef MAIN_PROGRAM
-/*
- * This filter reads from standard input a list of tab-delimited columns,
- * (e.g., from Caps.filtered) computes the hash-value of a specified column and
- * writes the hashed tables to standard output.
- *
- * By compiling the hash table at build time, we're able to make the entire
- * set of terminfo and termcap tables readonly (and also provide some runtime
- * performance enhancement).
- */
-
-#define MAX_COLUMNS BUFSIZ /* this _has_ to be worst-case */
-
-static char **parse_columns(char *buffer)
-{
- static char **list;
-
- int col = 0;
-
- if (list == 0 && (list = typeCalloc(char *, MAX_COLUMNS)) == 0)
- return(0);
-
- if (*buffer != '#') {
- while (*buffer != '\0') {
- char *s;
- for (s = buffer; (*s != '\0') && !isspace(*s); s++)
- /*EMPTY*/;
- if (s != buffer) {
- char mark = *s;
- *s = '\0';
- if ((s - buffer) > 1
- && (*buffer == '"')
- && (s[-1] == '"')) { /* strip the quotes */
- buffer++;
- s[-1] = '\0';
- }
- list[col] = buffer;
- col++;
- if (mark == '\0')
- break;
- while (*++s && isspace(*s))
- /*EMPTY*/;
- buffer = s;
- } else
- break;
- }
- }
- return col ? list : 0;
-}
-
-int main(int argc, char **argv)
-{
- struct name_table_entry *name_table = typeCalloc(struct name_table_entry, CAPTABSIZE);
- struct name_table_entry **hash_table = typeCalloc(struct name_table_entry *, HASHTABSIZE);
- const char *root_name = "";
- int column = 0;
- int n;
- char buffer[BUFSIZ];
-
- static const char * typenames[] = { "BOOLEAN", "NUMBER", "STRING" };
-
- short BoolCount = 0;
- short NumCount = 0;
- short StrCount = 0;
-
- /* The first argument is the column-number (starting with 0).
- * The second is the root name of the tables to generate.
- */
- if (argc <= 2
- || (column = atoi(argv[1])) <= 0
- || (column >= MAX_COLUMNS)
- || *(root_name = argv[2]) == 0) {
- fprintf(stderr, "usage: make_hash column root_name\n");
- exit(EXIT_FAILURE);
- }
-
- /*
- * Read the table into our arrays.
- */
- for (n = 0; (n < CAPTABSIZE) && fgets(buffer, BUFSIZ, stdin); ) {
- char **list, *nlp = strchr(buffer, '\n');
- if (nlp)
- *nlp = '\0';
- list = parse_columns(buffer);
- if (list == 0) /* blank or comment */
- continue;
- name_table[n].nte_link = -1; /* end-of-hash */
- name_table[n].nte_name = strdup(list[column]);
- if (!strcmp(list[2], "bool")) {
- name_table[n].nte_type = BOOLEAN;
- name_table[n].nte_index = BoolCount++;
- } else if (!strcmp(list[2], "num")) {
- name_table[n].nte_type = NUMBER;
- name_table[n].nte_index = NumCount++;
- } else if (!strcmp(list[2], "str")) {
- name_table[n].nte_type = STRING;
- name_table[n].nte_index = StrCount++;
- } else {
- fprintf(stderr, "Unknown type: %s\n", list[2]);
- exit(EXIT_FAILURE);
- }
- n++;
- }
- _nc_make_hash_table(name_table, hash_table);
-
- /*
- * Write the compiled tables to standard output
- */
- printf("static struct name_table_entry const _nc_%s_table[] =\n",
- root_name);
- printf("{\n");
- for (n = 0; n < CAPTABSIZE; n++) {
- sprintf(buffer, "\"%s\"",
- name_table[n].nte_name);
- printf("\t{ %15s,\t%10s,\t%3d, %3d }%c\n",
- buffer,
- typenames[name_table[n].nte_type],
- name_table[n].nte_index,
- name_table[n].nte_link,
- n < CAPTABSIZE - 1 ? ',' : ' ');
- }
- printf("};\n\n");
-
- printf("const struct name_table_entry * const _nc_%s_hash_table[%d] =\n",
- root_name,
- HASHTABSIZE+1);
- printf("{\n");
- for (n = 0; n < HASHTABSIZE; n++) {
- if (hash_table[n] != 0) {
- sprintf(buffer, "_nc_%s_table + %3ld",
- root_name,
- (long) (hash_table[n] - name_table));
- } else {
- strcpy(buffer, "0");
- }
- printf("\t%s,\n", buffer);
- }
- printf("\t_nc_%s_table\t/* base-of-table */\n", root_name);
- printf("};\n\n");
-
- printf("#if (BOOLCOUNT!=%d)||(NUMCOUNT!=%d)||(STRCOUNT!=%d)\n",
- BoolCount, NumCount, StrCount);
- printf("#error\t--> term.h and comp_captab.c disagree about the <--\n");
- printf("#error\t--> numbers of booleans, numbers and/or strings <--\n");
- printf("#endif\n\n");
-
- return EXIT_SUCCESS;
-}
-#endif
diff --git a/ncurses-5.2/ncurses/tinfo/comp_parse.c b/ncurses-5.2/ncurses/tinfo/comp_parse.c
deleted file mode 100644
index d659f3a..0000000
--- a/ncurses-5.2/ncurses/tinfo/comp_parse.c
+++ /dev/null
@@ -1,484 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * comp_parse.c -- parser driver loop and use handling.
- *
- * _nc_read_entry_source(FILE *, literal, bool, bool (*hook)())
- * _nc_resolve_uses(void)
- * _nc_free_entries(void)
- *
- * Use this code by calling _nc_read_entry_source() on as many source
- * files as you like (either terminfo or termcap syntax). If you
- * want use-resolution, call _nc_resolve_uses(). To free the list
- * storage, do _nc_free_entries().
- *
- */
-
-#include <curses.priv.h>
-
-#include <ctype.h>
-
-#include <tic.h>
-#include <term_entry.h>
-
-MODULE_ID("$Id$")
-
-static void sanity_check(TERMTYPE *);
-void (*_nc_check_termtype) (TERMTYPE *) = sanity_check;
-
-/****************************************************************************
- *
- * Entry queue handling
- *
- ****************************************************************************/
-/*
- * The entry list is a doubly linked list with NULLs terminating the lists:
- *
- * --------- --------- ---------
- * | | | | | | offset
- * |-------| |-------| |-------|
- * | ----+-->| ----+-->| NULL | next
- * |-------| |-------| |-------|
- * | NULL |<--+---- |<--+---- | last
- * --------- --------- ---------
- * ^ ^
- * | |
- * | |
- * _nc_head _nc_tail
- */
-
-ENTRY *_nc_head = 0, *_nc_tail = 0;
-
-static void
-enqueue(ENTRY * ep)
-/* add an entry to the in-core list */
-{
- ENTRY *newp = _nc_copy_entry(ep);
-
- if (newp == 0)
- _nc_err_abort("Out of memory");
-
- newp->last = _nc_tail;
- _nc_tail = newp;
-
- newp->next = 0;
- if (newp->last)
- newp->last->next = newp;
-}
-
-void
-_nc_free_entries(ENTRY * headp)
-/* free the allocated storage consumed by list entries */
-{
- ENTRY *ep, *next;
-
- for (ep = headp; ep; ep = next) {
- /*
- * This conditional lets us disconnect storage from the list.
- * To do this, copy an entry out of the list, then null out
- * the string-table member in the original and any use entries
- * it references.
- */
- FreeIfNeeded(ep->tterm.str_table);
-
- next = ep->next;
-
- free(ep);
- if (ep == _nc_head)
- _nc_head = 0;
- if (ep == _nc_tail)
- _nc_tail = 0;
- }
-}
-
-static char *
-force_bar(char *dst, char *src)
-{
- if (strchr(src, '|') == 0) {
- size_t len = strlen(src);
- if (len > MAX_NAME_SIZE)
- len = MAX_NAME_SIZE;
- (void) strncpy(dst, src, len);
- (void) strcpy(dst + len, "|");
- src = dst;
- }
- return src;
-}
-
-bool
-_nc_entry_match(char *n1, char *n2)
-/* do any of the aliases in a pair of terminal names match? */
-{
- char *pstart, *qstart, *pend, *qend;
- char nc1[MAX_NAME_SIZE + 2], nc2[MAX_NAME_SIZE + 2];
-
- n1 = force_bar(nc1, n1);
- n2 = force_bar(nc2, n2);
-
- for (pstart = n1; (pend = strchr(pstart, '|')); pstart = pend + 1)
- for (qstart = n2; (qend = strchr(qstart, '|')); qstart = qend + 1)
- if ((pend - pstart == qend - qstart)
- && memcmp(pstart, qstart, (size_t) (pend - pstart)) == 0)
- return (TRUE);
-
- return (FALSE);
-}
-
-/****************************************************************************
- *
- * Entry compiler and resolution logic
- *
- ****************************************************************************/
-
-void
-_nc_read_entry_source(FILE * fp, char *buf,
- int literal, bool silent,
- bool(*hook) (ENTRY *))
-/* slurp all entries in the given file into core */
-{
- ENTRY thisentry;
- bool oldsuppress = _nc_suppress_warnings;
- int immediate = 0;
-
- if (silent)
- _nc_suppress_warnings = TRUE; /* shut the lexer up, too */
-
- _nc_reset_input(fp, buf);
- for (;;) {
- memset(&thisentry, 0, sizeof(thisentry));
- if (_nc_parse_entry(&thisentry, literal, silent) == ERR)
- break;
- if (!isalnum(thisentry.tterm.term_names[0]))
- _nc_err_abort("terminal names must start with letter or digit");
-
- /*
- * This can be used for immediate compilation of entries with no
- * use references to disk, so as to avoid chewing up a lot of
- * core when the resolution code could fetch entries off disk.
- */
- if (hook != NULLHOOK && (*hook) (&thisentry))
- immediate++;
- else
- enqueue(&thisentry);
- }
-
- if (_nc_tail) {
- /* set up the head pointer */
- for (_nc_head = _nc_tail; _nc_head->last; _nc_head = _nc_head->last)
- continue;
-
- DEBUG(1, ("head = %s", _nc_head->tterm.term_names));
- DEBUG(1, ("tail = %s", _nc_tail->tterm.term_names));
- }
-#ifdef TRACE
- else if (!immediate)
- DEBUG(1, ("no entries parsed"));
-#endif
-
- _nc_suppress_warnings = oldsuppress;
-}
-
-int
-_nc_resolve_uses(bool fullresolve)
-/* try to resolve all use capabilities */
-{
- ENTRY *qp, *rp, *lastread = 0;
- bool keepgoing;
- int i, j, unresolved, total_unresolved, multiples;
-
- DEBUG(2, ("RESOLUTION BEGINNING"));
-
- /*
- * Check for multiple occurrences of the same name.
- */
- multiples = 0;
- for_entry_list(qp) {
- int matchcount = 0;
-
- for_entry_list(rp)
- if (qp > rp
- && _nc_entry_match(qp->tterm.term_names, rp->tterm.term_names)) {
- matchcount++;
- if (matchcount == 1) {
- (void) fprintf(stderr, "Name collision between %s",
- _nc_first_name(qp->tterm.term_names));
- multiples++;
- }
- if (matchcount >= 1)
- (void) fprintf(stderr, " %s", _nc_first_name(rp->tterm.term_names));
- }
- if (matchcount >= 1)
- (void) putc('\n', stderr);
- }
- if (multiples > 0)
- return (FALSE);
-
- DEBUG(2, ("NO MULTIPLE NAME OCCURRENCES"));
-
- /*
- * First resolution stage: compute link pointers corresponding to names.
- */
- total_unresolved = 0;
- _nc_curr_col = -1;
- for_entry_list(qp) {
- unresolved = 0;
- for (i = 0; i < qp->nuses; i++) {
- bool foundit;
- char *child = _nc_first_name(qp->tterm.term_names);
- char *lookfor = qp->uses[i].name;
- long lookline = qp->uses[i].line;
-
- foundit = FALSE;
-
- _nc_set_type(child);
-
- /* first, try to resolve from in-core records */
- for_entry_list(rp)
- if (rp != qp
- && _nc_name_match(rp->tterm.term_names, lookfor, "|")) {
- DEBUG(2, ("%s: resolving use=%s (in core)",
- child, lookfor));
-
- qp->uses[i].link = rp;
- foundit = TRUE;
- }
-
- /* if that didn't work, try to merge in a compiled entry */
- if (!foundit) {
- TERMTYPE thisterm;
- char filename[PATH_MAX];
-
- memset(&thisterm, 0, sizeof(thisterm));
- if (_nc_read_entry(lookfor, filename, &thisterm) == 1) {
- DEBUG(2, ("%s: resolving use=%s (compiled)",
- child, lookfor));
-
- rp = typeMalloc(ENTRY, 1);
- if (rp == 0)
- _nc_err_abort("Out of memory");
- rp->tterm = thisterm;
- rp->nuses = 0;
- rp->next = lastread;
- lastread = rp;
-
- qp->uses[i].link = rp;
- foundit = TRUE;
- }
- }
-
- /* no good, mark this one unresolvable and complain */
- if (!foundit) {
- unresolved++;
- total_unresolved++;
-
- _nc_curr_line = lookline;
- _nc_warning("resolution of use=%s failed", lookfor);
- qp->uses[i].link = 0;
- }
- }
- }
- if (total_unresolved) {
- /* free entries read in off disk */
- _nc_free_entries(lastread);
- return (FALSE);
- }
-
- DEBUG(2, ("NAME RESOLUTION COMPLETED OK"));
-
- /*
- * OK, at this point all (char *) references in `name' mwmbers
- * have been successfully converred to (ENTRY *) pointers in
- * `link' members. Time to do the actual merges.
- */
- if (fullresolve) {
- do {
- TERMTYPE merged;
-
- keepgoing = FALSE;
-
- for_entry_list(qp) {
- if (qp->nuses > 0) {
- DEBUG(2, ("%s: attempting merge",
- _nc_first_name(qp->tterm.term_names)));
- /*
- * If any of the use entries we're looking for is
- * incomplete, punt. We'll catch this entry on a
- * subsequent pass.
- */
- for (i = 0; i < qp->nuses; i++)
- if (qp->uses[i].link->nuses) {
- DEBUG(2, ("%s: use entry %d unresolved",
- _nc_first_name(qp->tterm.term_names), i));
- goto incomplete;
- }
-
- /*
- * First, make sure there's no garbage in the
- * merge block. as a side effect, copy into
- * the merged entry the name field and string
- * table pointer.
- */
- _nc_copy_termtype(&merged, &(qp->tterm));
-
- /*
- * Now merge in each use entry in the proper
- * (reverse) order.
- */
- for (; qp->nuses; qp->nuses--)
- _nc_merge_entry(&merged,
- &qp->uses[qp->nuses - 1].link->tterm);
-
- /*
- * Now merge in the original entry.
- */
- _nc_merge_entry(&merged, &qp->tterm);
-
- /*
- * Replace the original entry with the merged one.
- */
- FreeIfNeeded(qp->tterm.Booleans);
- FreeIfNeeded(qp->tterm.Numbers);
- FreeIfNeeded(qp->tterm.Strings);
- qp->tterm = merged;
-
- /*
- * We know every entry is resolvable because name resolution
- * didn't bomb. So go back for another pass.
- */
- /* FALLTHRU */
- incomplete:
- keepgoing = TRUE;
- }
- }
- } while
- (keepgoing);
-
- DEBUG(2, ("MERGES COMPLETED OK"));
-
- /*
- * The exit condition of the loop above is such that all entries
- * must now be resolved. Now handle cancellations. In a resolved
- * entry there should be no cancellation markers.
- */
- for_entry_list(qp) {
- for_each_boolean(j, &(qp->tterm))
- if (qp->tterm.Booleans[j] == CANCELLED_BOOLEAN)
- qp->tterm.Booleans[j] = ABSENT_BOOLEAN;
- for_each_number(j, &(qp->tterm))
- if (qp->tterm.Numbers[j] == CANCELLED_NUMERIC)
- qp->tterm.Numbers[j] = ABSENT_NUMERIC;
- for_each_string(j, &(qp->tterm))
- if (qp->tterm.Strings[j] == CANCELLED_STRING)
- qp->tterm.Strings[j] = ABSENT_STRING;
- }
- }
-
- /*
- * We'd like to free entries read in off disk at this point, but can't.
- * The merge_entry() code doesn't copy the strings in the use entries,
- * it just aliases them. If this ever changes, do a
- * free_entries(lastread) here.
- */
-
- DEBUG(2, ("RESOLUTION FINISHED"));
-
- if (fullresolve)
- if (_nc_check_termtype != 0) {
- _nc_curr_col = -1;
- for_entry_list(qp) {
- _nc_curr_line = qp->startline;
- _nc_set_type(_nc_first_name(qp->tterm.term_names));
- _nc_check_termtype(&qp->tterm);
- }
- DEBUG(2, ("SANITY CHECK FINISHED"));
- }
-
- return (TRUE);
-}
-
-/*
- * This bit of legerdemain turns all the terminfo variable names into
- * references to locations in the arrays Booleans, Numbers, and Strings ---
- * precisely what's needed.
- */
-
-#undef CUR
-#define CUR tp->
-
-static void
-sanity_check(TERMTYPE * tp)
-{
- if (!PRESENT(exit_attribute_mode)) {
-#ifdef __UNUSED__ /* this casts too wide a net */
- bool terminal_entry = !strchr(tp->term_names, '+');
- if (terminal_entry &&
- (PRESENT(set_attributes)
- || PRESENT(enter_standout_mode)
- || PRESENT(enter_underline_mode)
- || PRESENT(enter_blink_mode)
- || PRESENT(enter_bold_mode)
- || PRESENT(enter_dim_mode)
- || PRESENT(enter_secure_mode)
- || PRESENT(enter_protected_mode)
- || PRESENT(enter_reverse_mode)))
- _nc_warning("no exit_attribute_mode");
-#endif /* __UNUSED__ */
- PAIRED(enter_standout_mode, exit_standout_mode)
- PAIRED(enter_underline_mode, exit_underline_mode)
- }
-
- /* listed in structure-member order of first argument */
- PAIRED(enter_alt_charset_mode, exit_alt_charset_mode);
- ANDMISSING(enter_alt_charset_mode, acs_chars);
- ANDMISSING(exit_alt_charset_mode, acs_chars);
- ANDMISSING(enter_blink_mode, exit_attribute_mode);
- ANDMISSING(enter_bold_mode, exit_attribute_mode);
- PAIRED(exit_ca_mode, enter_ca_mode);
- PAIRED(enter_delete_mode, exit_delete_mode);
- ANDMISSING(enter_dim_mode, exit_attribute_mode);
- PAIRED(enter_insert_mode, exit_insert_mode);
- ANDMISSING(enter_secure_mode, exit_attribute_mode);
- ANDMISSING(enter_protected_mode, exit_attribute_mode);
- ANDMISSING(enter_reverse_mode, exit_attribute_mode);
- PAIRED(from_status_line, to_status_line);
- PAIRED(meta_off, meta_on);
-
- PAIRED(prtr_on, prtr_off);
- PAIRED(save_cursor, restore_cursor);
- PAIRED(enter_xon_mode, exit_xon_mode);
- PAIRED(enter_am_mode, exit_am_mode);
- ANDMISSING(label_off, label_on);
- PAIRED(display_clock, remove_clock);
- ANDMISSING(set_color_pair, initialize_pair);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/comp_scan.c b/ncurses-5.2/ncurses/tinfo/comp_scan.c
deleted file mode 100644
index dc0dd8f..0000000
--- a/ncurses-5.2/ncurses/tinfo/comp_scan.c
+++ /dev/null
@@ -1,797 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * comp_scan.c --- Lexical scanner for terminfo compiler.
- *
- * _nc_reset_input()
- * _nc_get_token()
- * _nc_panic_mode()
- * int _nc_syntax;
- * int _nc_curr_line;
- * long _nc_curr_file_pos;
- * long _nc_comment_start;
- * long _nc_comment_end;
- */
-
-#include <curses.priv.h>
-
-#include <ctype.h>
-#include <term_entry.h>
-#include <tic.h>
-
-MODULE_ID("$Id$")
-
-/*
- * Maximum length of string capability we'll accept before raising an error.
- * Yes, there is a real capability in /etc/termcap this long, an "is".
- */
-#define MAXCAPLEN 600
-
-#define iswhite(ch) (ch == ' ' || ch == '\t')
-
-int _nc_syntax = 0; /* termcap or terminfo? */
-long _nc_curr_file_pos = 0; /* file offset of current line */
-long _nc_comment_start = 0; /* start of comment range before name */
-long _nc_comment_end = 0; /* end of comment range before name */
-long _nc_start_line = 0; /* start line of current entry */
-
-struct token _nc_curr_token =
-{0, 0, 0};
-
-/*****************************************************************************
- *
- * Token-grabbing machinery
- *
- *****************************************************************************/
-
-static bool first_column; /* See 'next_char()' below */
-static char separator; /* capability separator */
-static int pushtype; /* type of pushback token */
-static char pushname[MAX_NAME_SIZE + 1];
-
-#if NCURSES_EXT_FUNCS
-bool _nc_disable_period = FALSE; /* used by tic -a option */
-#endif
-
-static int last_char(void);
-static int next_char(void);
-static long stream_pos(void);
-static bool end_of_stream(void);
-static void push_back(char c);
-
-/* Assume we may be looking at a termcap-style continuation */
-static inline int
-eat_escaped_newline(int ch)
-{
- if (ch == '\\')
- while ((ch = next_char()) == '\n' || iswhite(ch))
- continue;
- return ch;
-}
-
-/*
- * int
- * get_token()
- *
- * Scans the input for the next token, storing the specifics in the
- * global structure 'curr_token' and returning one of the following:
- *
- * NAMES A line beginning in column 1. 'name'
- * will be set to point to everything up to but
- * not including the first separator on the line.
- * BOOLEAN An entry consisting of a name followed by
- * a separator. 'name' will be set to point to
- * the name of the capability.
- * NUMBER An entry of the form
- * name#digits,
- * 'name' will be set to point to the capability
- * name and 'valnumber' to the number given.
- * STRING An entry of the form
- * name=characters,
- * 'name' is set to the capability name and
- * 'valstring' to the string of characters, with
- * input translations done.
- * CANCEL An entry of the form
- * name@,
- * 'name' is set to the capability name and
- * 'valnumber' to -1.
- * EOF The end of the file has been reached.
- *
- * A `separator' is either a comma or a semicolon, depending on whether
- * we are in termcap or terminfo mode.
- *
- */
-
-int
-_nc_get_token(void)
-{
- static const char terminfo_punct[] = "@%&*!#";
- long number;
- int type;
- int ch;
- char *numchk;
- char numbuf[80];
- unsigned found;
- static char buffer[MAX_ENTRY_SIZE];
- char *ptr;
- int dot_flag = FALSE;
- long token_start;
-
- if (pushtype != NO_PUSHBACK) {
- int retval = pushtype;
-
- _nc_set_type(pushname);
- DEBUG(3, ("pushed-back token: `%s', class %d",
- _nc_curr_token.tk_name, pushtype));
-
- pushtype = NO_PUSHBACK;
- pushname[0] = '\0';
-
- /* currtok wasn't altered by _nc_push_token() */
- return (retval);
- }
-
- if (end_of_stream())
- return (EOF);
-
- start_token:
- token_start = stream_pos();
- while ((ch = next_char()) == '\n' || iswhite(ch))
- continue;
-
- ch = eat_escaped_newline(ch);
-
- if (ch == EOF)
- type = EOF;
- else {
- /* if this is a termcap entry, skip a leading separator */
- if (separator == ':' && ch == ':')
- ch = next_char();
-
- if (ch == '.'
-#if NCURSES_EXT_FUNCS
- && !_nc_disable_period
-#endif
- ) {
- dot_flag = TRUE;
- DEBUG(8, ("dot-flag set"));
-
- while ((ch = next_char()) == '.' || iswhite(ch))
- continue;
- }
-
- if (ch == EOF) {
- type = EOF;
- goto end_of_token;
- }
-
- /* have to make some punctuation chars legal for terminfo */
- if (!isalnum(ch)
-#if NCURSES_EXT_FUNCS
- && !(ch == '.' && _nc_disable_period)
-#endif
- && !strchr(terminfo_punct, (char) ch)) {
- _nc_warning("Illegal character (expected alphanumeric or %s) - %s",
- terminfo_punct, unctrl(ch));
- _nc_panic_mode(separator);
- goto start_token;
- }
-
- ptr = buffer;
- *(ptr++) = ch;
-
- if (first_column) {
- char *desc;
-
- _nc_comment_start = token_start;
- _nc_comment_end = _nc_curr_file_pos;
- _nc_start_line = _nc_curr_line;
-
- _nc_syntax = ERR;
- while ((ch = next_char()) != '\n') {
- if (ch == EOF)
- _nc_err_abort("premature EOF");
- else if (ch == ':' && last_char() != ',') {
- _nc_syntax = SYN_TERMCAP;
- separator = ':';
- break;
- } else if (ch == ',') {
- _nc_syntax = SYN_TERMINFO;
- separator = ',';
- /*
- * Fall-through here is not an accident.
- * The idea is that if we see a comma, we
- * figure this is terminfo unless we
- * subsequently run into a colon -- but
- * we don't stop looking for that colon until
- * hitting a newline. This allows commas to
- * be embedded in description fields of
- * either syntax.
- */
- /* FALLTHRU */
- } else
- ch = eat_escaped_newline(ch);
-
- *ptr++ = ch;
- }
- ptr[0] = '\0';
- if (_nc_syntax == ERR) {
- /*
- * Grrr...what we ought to do here is barf,
- * complaining that the entry is malformed.
- * But because a couple of name fields in the
- * 8.2 termcap file end with |\, we just have
- * to assume it's termcap syntax.
- */
- _nc_syntax = SYN_TERMCAP;
- separator = ':';
- } else if (_nc_syntax == SYN_TERMINFO) {
- /* throw away trailing /, *$/ */
- for (--ptr; iswhite(*ptr) || *ptr == ','; ptr--)
- continue;
- ptr[1] = '\0';
- }
-
- /*
- * This is the soonest we have the terminal name
- * fetched. Set up for following warning messages.
- */
- ptr = strchr(buffer, '|');
- if (ptr == (char *) NULL)
- ptr = buffer + strlen(buffer);
- ch = *ptr;
- *ptr = '\0';
- _nc_set_type(buffer);
- *ptr = ch;
-
- /*
- * Compute the boundary between the aliases and the
- * description field for syntax-checking purposes.
- */
- desc = strrchr(buffer, '|');
- if (desc) {
- if (*desc == '\0')
- _nc_warning("empty longname field");
- else if (strchr(desc, ' ') == (char *) NULL)
- _nc_warning("older tic versions may treat the description field as an alias");
- }
- if (!desc)
- desc = buffer + strlen(buffer);
-
- /*
- * Whitespace in a name field other than the long name
- * can confuse rdist and some termcap tools. Slashes
- * are a no-no. Other special characters can be
- * dangerous due to shell expansion.
- */
- for (ptr = buffer; ptr < desc; ptr++) {
- if (isspace(*ptr)) {
- _nc_warning("whitespace in name or alias field");
- break;
- } else if (*ptr == '/') {
- _nc_warning("slashes aren't allowed in names or aliases");
- break;
- } else if (strchr("$[]!*?", *ptr)) {
- _nc_warning("dubious character `%c' in name or alias field", *ptr);
- break;
- }
- }
-
- ptr = buffer;
-
- _nc_curr_token.tk_name = buffer;
- type = NAMES;
- } else {
- while ((ch = next_char()) != EOF) {
- if (!isalnum(ch)) {
- if (_nc_syntax == SYN_TERMINFO) {
- if (ch != '_')
- break;
- } else { /* allow ';' for "k;" */
- if (ch != ';')
- break;
- }
- }
- *(ptr++) = ch;
- }
-
- *ptr++ = '\0';
- switch (ch) {
- case ',':
- case ':':
- if (ch != separator)
- _nc_err_abort("Separator inconsistent with syntax");
- _nc_curr_token.tk_name = buffer;
- type = BOOLEAN;
- break;
- case '@':
- if ((ch = next_char()) != separator)
- _nc_warning("Missing separator after `%s', have %s",
- buffer, unctrl(ch));
- _nc_curr_token.tk_name = buffer;
- type = CANCEL;
- break;
-
- case '#':
- found = 0;
- while (isalnum(ch = next_char())) {
- numbuf[found++] = ch;
- if (found >= sizeof(numbuf) - 1)
- break;
- }
- numbuf[found] = '\0';
- number = strtol(numbuf, &numchk, 0);
- if (numchk == numbuf)
- _nc_warning("no value given for `%s'", buffer);
- if ((*numchk != '\0') || (ch != separator))
- _nc_warning("Missing separator");
- _nc_curr_token.tk_name = buffer;
- _nc_curr_token.tk_valnumber = number;
- type = NUMBER;
- break;
-
- case '=':
- ch = _nc_trans_string(ptr, buffer + sizeof(buffer));
- if (ch != separator)
- _nc_warning("Missing separator");
- _nc_curr_token.tk_name = buffer;
- _nc_curr_token.tk_valstring = ptr;
- type = STRING;
- break;
-
- case EOF:
- type = EOF;
- break;
- default:
- /* just to get rid of the compiler warning */
- type = UNDEF;
- _nc_warning("Illegal character - %s", unctrl(ch));
- }
- } /* end else (first_column == FALSE) */
- } /* end else (ch != EOF) */
-
- end_of_token:
-
-#ifdef TRACE
- if (dot_flag == TRUE)
- DEBUG(8, ("Commented out "));
-
- if (_nc_tracing >= DEBUG_LEVEL(7)) {
- switch (type) {
- case BOOLEAN:
- _tracef("Token: Boolean; name='%s'",
- _nc_curr_token.tk_name);
- break;
-
- case NUMBER:
- _tracef("Token: Number; name='%s', value=%d",
- _nc_curr_token.tk_name,
- _nc_curr_token.tk_valnumber);
- break;
-
- case STRING:
- _tracef("Token: String; name='%s', value=%s",
- _nc_curr_token.tk_name,
- _nc_visbuf(_nc_curr_token.tk_valstring));
- break;
-
- case CANCEL:
- _tracef("Token: Cancel; name='%s'",
- _nc_curr_token.tk_name);
- break;
-
- case NAMES:
-
- _tracef("Token: Names; value='%s'",
- _nc_curr_token.tk_name);
- break;
-
- case EOF:
- _tracef("Token: End of file");
- break;
-
- default:
- _nc_warning("Bad token type");
- }
- }
-#endif
-
- if (dot_flag == TRUE) /* if commented out, use the next one */
- type = _nc_get_token();
-
- DEBUG(3, ("token: `%s', class %d", _nc_curr_token.tk_name, type));
-
- return (type);
-}
-
-/*
- * char
- * trans_string(ptr)
- *
- * Reads characters using next_char() until encountering a separator, nl,
- * or end-of-file. The returned value is the character which caused
- * reading to stop. The following translations are done on the input:
- *
- * ^X goes to ctrl-X (i.e. X & 037)
- * {\E,\n,\r,\b,\t,\f} go to
- * {ESCAPE,newline,carriage-return,backspace,tab,formfeed}
- * {\^,\\} go to {carat,backslash}
- * \ddd (for ddd = up to three octal digits) goes to the character ddd
- *
- * \e == \E
- * \0 == \200
- *
- */
-
-char
-_nc_trans_string(char *ptr, char *last)
-{
- int count = 0;
- int number;
- int i, c;
- chtype ch, last_ch = '\0';
- bool ignored = FALSE;
- bool long_warning = FALSE;
-
- while ((ch = c = next_char()) != (chtype) separator && c != EOF) {
- if (ptr == (last - 1))
- break;
- if ((_nc_syntax == SYN_TERMCAP) && c == '\n')
- break;
- if (ch == '^' && last_ch != '%') {
- ch = c = next_char();
- if (c == EOF)
- _nc_err_abort("Premature EOF");
-
- if (!(is7bits(ch) && isprint(ch))) {
- _nc_warning("Illegal ^ character - %s", unctrl(ch));
- }
- if (ch == '?') {
- *(ptr++) = '\177';
- if (_nc_tracing)
- _nc_warning("Allow ^? as synonym for \\177");
- } else {
- if ((ch &= 037) == 0)
- ch = 128;
- *(ptr++) = (char) (ch);
- }
- } else if (ch == '\\') {
- ch = c = next_char();
- if (c == EOF)
- _nc_err_abort("Premature EOF");
-
- if (ch >= '0' && ch <= '7') {
- number = ch - '0';
- for (i = 0; i < 2; i++) {
- ch = c = next_char();
- if (c == EOF)
- _nc_err_abort("Premature EOF");
-
- if (c < '0' || c > '7') {
- if (isdigit(c)) {
- _nc_warning("Non-octal digit `%c' in \\ sequence", c);
- /* allow the digit; it'll do less harm */
- } else {
- push_back((char) c);
- break;
- }
- }
-
- number = number * 8 + c - '0';
- }
-
- if (number == 0)
- number = 0200;
- *(ptr++) = (char) number;
- } else {
- switch (c) {
- case 'E':
- case 'e':
- *(ptr++) = '\033';
- break;
-
- case 'a':
- *(ptr++) = '\007';
- break;
-
- case 'l':
- case 'n':
- *(ptr++) = '\n';
- break;
-
- case 'r':
- *(ptr++) = '\r';
- break;
-
- case 'b':
- *(ptr++) = '\010';
- break;
-
- case 's':
- *(ptr++) = ' ';
- break;
-
- case 'f':
- *(ptr++) = '\014';
- break;
-
- case 't':
- *(ptr++) = '\t';
- break;
-
- case '\\':
- *(ptr++) = '\\';
- break;
-
- case '^':
- *(ptr++) = '^';
- break;
-
- case ',':
- *(ptr++) = ',';
- break;
-
- case ':':
- *(ptr++) = ':';
- break;
-
- case '\n':
- continue;
-
- default:
- _nc_warning("Illegal character %s in \\ sequence",
- unctrl(ch));
- *(ptr++) = (char) ch;
- } /* endswitch (ch) */
- } /* endelse (ch < '0' || ch > '7') */
- }
- /* end else if (ch == '\\') */
- else if (ch == '\n' && (_nc_syntax == SYN_TERMINFO)) {
- /* newlines embedded in a terminfo string are ignored */
- ignored = TRUE;
- } else {
- *(ptr++) = (char) ch;
- }
-
- if (!ignored) {
- last_ch = ch;
- count++;
- }
- ignored = FALSE;
-
- if (count > MAXCAPLEN && !long_warning) {
- _nc_warning("Very long string found. Missing separator?");
- long_warning = TRUE;
- }
- } /* end while */
-
- *ptr = '\0';
-
- return (ch);
-}
-
-/*
- * _nc_push_token()
- *
- * Push a token of given type so that it will be reread by the next
- * get_token() call.
- */
-
-void
-_nc_push_token(int tokclass)
-{
- /*
- * This implementation is kind of bogus, it will fail if we ever do
- * more than one pushback at a time between get_token() calls. It
- * relies on the fact that curr_tok is static storage that nothing
- * but get_token() touches.
- */
- pushtype = tokclass;
- _nc_get_type(pushname);
-
- DEBUG(3, ("pushing token: `%s', class %d",
- _nc_curr_token.tk_name, pushtype));
-}
-
-/*
- * Panic mode error recovery - skip everything until a "ch" is found.
- */
-void
-_nc_panic_mode(char ch)
-{
- int c;
-
- for (;;) {
- c = next_char();
- if (c == ch)
- return;
- if (c == EOF)
- return;
- }
-}
-
-/*****************************************************************************
- *
- * Character-stream handling
- *
- *****************************************************************************/
-
-#define LEXBUFSIZ 1024
-
-static char *bufptr; /* otherwise, the input buffer pointer */
-static char *bufstart; /* start of buffer so we can compute offsets */
-static FILE *yyin; /* scanner's input file descriptor */
-
-/*
- * _nc_reset_input()
- *
- * Resets the input-reading routines. Used on initialization,
- * or after a seek has been done. Exactly one argument must be
- * non-null.
- */
-
-void
-_nc_reset_input(FILE * fp, char *buf)
-{
- pushtype = NO_PUSHBACK;
- pushname[0] = '\0';
- yyin = fp;
- bufstart = bufptr = buf;
- _nc_curr_file_pos = 0L;
- if (fp != 0)
- _nc_curr_line = 0;
- _nc_curr_col = 0;
-}
-
-/*
- * int last_char()
- *
- * Returns the final nonblank character on the current input buffer
- */
-static int
-last_char(void)
-{
- size_t len = strlen(bufptr);
- while (len--) {
- if (!isspace(bufptr[len]))
- return bufptr[len];
- }
- return 0;
-}
-
-/*
- * int next_char()
- *
- * Returns the next character in the input stream. Comments and leading
- * white space are stripped.
- *
- * The global state variable 'firstcolumn' is set TRUE if the character
- * returned is from the first column of the input line.
- *
- * The global variable _nc_curr_line is incremented for each new line.
- * The global variable _nc_curr_file_pos is set to the file offset of the
- * beginning of each line.
- */
-
-static int
-next_char(void)
-{
- if (!yyin) {
- if (*bufptr == '\0')
- return (EOF);
- if (*bufptr == '\n') {
- _nc_curr_line++;
- _nc_curr_col = 0;
- }
- } else if (!bufptr || !*bufptr) {
- /*
- * In theory this could be recoded to do its I/O one
- * character at a time, saving the buffer space. In
- * practice, this turns out to be quite hard to get
- * completely right. Try it and see. If you succeed,
- * don't forget to hack push_back() correspondingly.
- */
- static char line[LEXBUFSIZ];
- size_t len;
-
- do {
- _nc_curr_file_pos = ftell(yyin);
-
- if ((bufstart = fgets(line, LEXBUFSIZ, yyin)) != NULL) {
- _nc_curr_line++;
- _nc_curr_col = 0;
- }
- bufptr = bufstart;
- } while
- (bufstart != NULL && line[0] == '#');
-
- if (bufstart == NULL || *bufstart == 0)
- return (EOF);
-
- while (iswhite(*bufptr))
- bufptr++;
-
- /*
- * Treat a trailing <cr><lf> the same as a <newline> so we can read
- * files on OS/2, etc.
- */
- if ((len = strlen(bufptr)) > 1) {
- if (bufptr[len - 1] == '\n'
- && bufptr[len - 2] == '\r') {
- len--;
- bufptr[len - 1] = '\n';
- bufptr[len] = '\0';
- }
- }
-
- /*
- * If we don't have a trailing newline, it's because the line is simply
- * too long. Give up. (FIXME: We could instead reallocate the line
- * buffer and allow arbitrary-length lines).
- */
- if (len == 0 || (bufptr[len - 1] != '\n'))
- return (EOF);
- }
-
- first_column = (bufptr == bufstart);
-
- _nc_curr_col++;
- return (*bufptr++);
-}
-
-static void
-push_back(char c)
-/* push a character back onto the input stream */
-{
- if (bufptr == bufstart)
- _nc_syserr_abort("Can't backspace off beginning of line");
- *--bufptr = c;
-}
-
-static long
-stream_pos(void)
-/* return our current character position in the input stream */
-{
- return (yyin ? ftell(yyin) : (bufptr ? bufptr - bufstart : 0));
-}
-
-static bool
-end_of_stream(void)
-/* are we at end of input? */
-{
- return ((yyin ? feof(yyin) : (bufptr && *bufptr == '\0'))
- ? TRUE : FALSE);
-}
-
-/* comp_scan.c ends here */
diff --git a/ncurses-5.2/ncurses/tinfo/doalloc.c b/ncurses-5.2/ncurses/tinfo/doalloc.c
deleted file mode 100644
index 77668a4..0000000
--- a/ncurses-5.2/ncurses/tinfo/doalloc.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1998 *
- ****************************************************************************/
-
-
-/*
- * Wrapper for malloc/realloc. Standard implementations allow realloc with
- * a null pointer, but older libraries may not (e.g., SunOS).
- *
- * Also if realloc fails, we discard the old memory to avoid leaks.
- */
-
-#include <curses.priv.h>
-
-MODULE_ID("$Id$")
-
-void *_nc_doalloc(void *oldp, size_t amount)
-{
- void *newp;
-
- if (oldp != 0) {
- if ((newp = realloc(oldp, amount)) == 0) {
- free(oldp);
- errno = ENOMEM; /* just in case 'free' reset */
- }
- } else {
- newp = typeMalloc(char, amount);
- }
- return newp;
-}
-
-#if !HAVE_STRDUP
-char *_nc_strdup(const char *src)
-{
- char *dst;
- if (src != 0) {
- dst = typeMalloc(char, strlen(src) + 1);
- if (dst != 0) {
- (void)strcpy(dst, src);
- }
- } else {
- dst = 0;
- }
- return dst;
-}
-#endif
diff --git a/ncurses-5.2/ncurses/tinfo/free_ttype.c b/ncurses-5.2/ncurses/tinfo/free_ttype.c
deleted file mode 100644
index ea7585c..0000000
--- a/ncurses-5.2/ncurses/tinfo/free_ttype.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1999 *
- ****************************************************************************/
-
-
-/*
- * free_ttype.c -- allocation functions for TERMTYPE
- *
- * _nc_free_termtype()
- * use_extended_names()
- *
- */
-
-#include <curses.priv.h>
-
-#include <tic.h>
-#include <term_entry.h>
-
-MODULE_ID("$Id$")
-
-void _nc_free_termtype(TERMTYPE *ptr)
-{
- FreeIfNeeded(ptr->str_table);
- FreeIfNeeded(ptr->term_names);
- FreeIfNeeded(ptr->Booleans);
- FreeIfNeeded(ptr->Numbers);
- FreeIfNeeded(ptr->Strings);
-#if NCURSES_XNAMES
- FreeIfNeeded(ptr->ext_str_table);
- FreeIfNeeded(ptr->ext_Names);
-#endif
- memset(ptr, 0, sizeof(TERMTYPE));
-}
-
-#if NCURSES_XNAMES
-bool _nc_user_definable = TRUE;
-
-int use_extended_names(bool flag)
-{
- int oldflag = _nc_user_definable;
- _nc_user_definable = flag;
- return oldflag;
-}
-#endif
diff --git a/ncurses-5.2/ncurses/tinfo/getenv_num.c b/ncurses-5.2/ncurses/tinfo/getenv_num.c
deleted file mode 100644
index 5fd8561..0000000
--- a/ncurses-5.2/ncurses/tinfo/getenv_num.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1998 *
- ****************************************************************************/
-
-/*
- * getenv_num.c -- obtain a number from the environment
- */
-
-#include <curses.priv.h>
-
-MODULE_ID("$Id$")
-
-int
-_nc_getenv_num(const char *name)
-{
- char *dst = 0;
- char *src = getenv(name);
- long value;
-
- if ((src == 0)
- || (value = strtol(src, &dst, 0)) < 0
- || (dst == src)
- || (*dst != '\0')
- || (int)value < value)
- value = -1;
-
- return (int) value;
-}
diff --git a/ncurses-5.2/ncurses/tinfo/home_terminfo.c b/ncurses-5.2/ncurses/tinfo/home_terminfo.c
deleted file mode 100644
index ca8be5f..0000000
--- a/ncurses-5.2/ncurses/tinfo/home_terminfo.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1998,2000 *
- ****************************************************************************/
-
-/*
- * home_terminfo.c -- return the $HOME/.terminfo string, expanded
- */
-
-#include <curses.priv.h>
-#include <tic.h>
-
-MODULE_ID("$Id$");
-
-#define my_length (strlen(home) + sizeof(PRIVATE_INFO))
-
-/* ncurses extension...fall back on user's private directory */
-
-char *
-_nc_home_terminfo(void)
-{
- char *home;
- static char *temp = 0;
-
- if (use_terminfo_vars()) {
- if (temp == 0) {
- if ((home = getenv("HOME")) != 0
- && my_length <= PATH_MAX) {
- temp = typeMalloc(char, my_length);
- if (temp == 0)
- _nc_err_abort("Out of memory");
- (void) sprintf(temp, PRIVATE_INFO, home);
- }
- }
- return temp;
- }
- return 0;
-}
diff --git a/ncurses-5.2/ncurses/tinfo/init_keytry.c b/ncurses-5.2/ncurses/tinfo/init_keytry.c
deleted file mode 100644
index e34115d..0000000
--- a/ncurses-5.2/ncurses/tinfo/init_keytry.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-#include <curses.priv.h>
-
-#include <term.h> /* keypad_xmit, keypad_local, meta_on, meta_off */
- /* cursor_visible,cursor_normal,cursor_invisible */
-#include <tic.h> /* struct tinfo_fkeys */
-
-MODULE_ID("$Id$")
-
-/*
-** _nc_init_keytry()
-**
-** Construct the try for the current terminal's keypad keys.
-**
-*/
-
-#if BROKEN_LINKER
-#undef _nc_tinfo_fkeys
-#endif
-
-/* LINT_PREPRO
-#if 0*/
-#include <init_keytry.h>
-/* LINT_PREPRO
-#endif*/
-
-#if BROKEN_LINKER
-struct tinfo_fkeys *_nc_tinfo_fkeysf(void)
-{
- return _nc_tinfo_fkeys;
-}
-#endif
-
-void _nc_init_keytry(void)
-{
- size_t n;
-
- /* The SP->_keytry value is initialized in newterm(), where the SP
- * structure is created, because we can not tell where keypad() or
- * mouse_activate() (which will call keyok()) are first called.
- */
-
- for (n = 0; _nc_tinfo_fkeys[n].code; n++)
- if (_nc_tinfo_fkeys[n].offset < STRCOUNT)
- _nc_add_to_try(&(SP->_keytry),
- CUR Strings[_nc_tinfo_fkeys[n].offset],
- _nc_tinfo_fkeys[n].code);
-#ifdef TRACE
- _nc_trace_tries(SP->_keytry);
-#endif
-}
diff --git a/ncurses-5.2/ncurses/tinfo/keys.list b/ncurses-5.2/ncurses/tinfo/keys.list
deleted file mode 100644
index 3ad8918..0000000
--- a/ncurses-5.2/ncurses/tinfo/keys.list
+++ /dev/null
@@ -1,158 +0,0 @@
-# $Id$
-# The first column is the #define symbol that is in curses.h
-# The second column is the term.h symbol, for terminfo
-# Not all keycodes have corresponding terminfo capabilities.
-KEY_A1 key_a1
-KEY_A3 key_a3
-KEY_B2 key_b2
-KEY_BACKSPACE key_backspace
-KEY_BEG key_beg
-KEY_BREAK
-KEY_BTAB key_btab
-KEY_C1 key_c1
-KEY_C3 key_c3
-KEY_CANCEL key_cancel
-KEY_CATAB key_catab
-KEY_CLEAR key_clear
-KEY_CLOSE key_close
-KEY_COMMAND key_command
-KEY_COPY key_copy
-KEY_CREATE key_create
-KEY_CTAB key_ctab
-KEY_DC key_dc
-KEY_DL key_dl
-KEY_DOWN key_down
-KEY_EIC key_eic
-KEY_END key_end
-KEY_ENTER key_enter
-KEY_EOL key_eol
-KEY_EOS key_eos
-KEY_EXIT key_exit
-KEY_F(0) key_f0
-KEY_F(1) key_f1
-KEY_F(10) key_f10
-KEY_F(11) key_f11
-KEY_F(12) key_f12
-KEY_F(13) key_f13
-KEY_F(14) key_f14
-KEY_F(15) key_f15
-KEY_F(16) key_f16
-KEY_F(17) key_f17
-KEY_F(18) key_f18
-KEY_F(19) key_f19
-KEY_F(2) key_f2
-KEY_F(20) key_f20
-KEY_F(21) key_f21
-KEY_F(22) key_f22
-KEY_F(23) key_f23
-KEY_F(24) key_f24
-KEY_F(25) key_f25
-KEY_F(26) key_f26
-KEY_F(27) key_f27
-KEY_F(28) key_f28
-KEY_F(29) key_f29
-KEY_F(3) key_f3
-KEY_F(30) key_f30
-KEY_F(31) key_f31
-KEY_F(32) key_f32
-KEY_F(33) key_f33
-KEY_F(34) key_f34
-KEY_F(35) key_f35
-KEY_F(36) key_f36
-KEY_F(37) key_f37
-KEY_F(38) key_f38
-KEY_F(39) key_f39
-KEY_F(4) key_f4
-KEY_F(40) key_f40
-KEY_F(41) key_f41
-KEY_F(42) key_f42
-KEY_F(43) key_f43
-KEY_F(44) key_f44
-KEY_F(45) key_f45
-KEY_F(46) key_f46
-KEY_F(47) key_f47
-KEY_F(48) key_f48
-KEY_F(49) key_f49
-KEY_F(5) key_f5
-KEY_F(50) key_f50
-KEY_F(51) key_f51
-KEY_F(52) key_f52
-KEY_F(53) key_f53
-KEY_F(54) key_f54
-KEY_F(55) key_f55
-KEY_F(56) key_f56
-KEY_F(57) key_f57
-KEY_F(58) key_f58
-KEY_F(59) key_f59
-KEY_F(6) key_f6
-KEY_F(60) key_f60
-KEY_F(61) key_f61
-KEY_F(62) key_f62
-KEY_F(63) key_f63
-KEY_F(7) key_f7
-KEY_F(8) key_f8
-KEY_F(9) key_f9
-KEY_FIND key_find
-KEY_HELP key_help
-KEY_HOME key_home
-KEY_IC key_ic
-KEY_IL key_il
-KEY_LEFT key_left
-KEY_LL key_ll
-KEY_MARK key_mark
-KEY_MESSAGE key_message
-KEY_MOUSE key_mouse
-KEY_MOVE key_move
-KEY_NEXT key_next
-KEY_NPAGE key_npage
-KEY_OPEN key_open
-KEY_OPTIONS key_options
-KEY_PPAGE key_ppage
-KEY_PREVIOUS key_previous
-KEY_PRINT key_print
-KEY_REDO key_redo
-KEY_REFERENCE key_reference
-KEY_REFRESH key_refresh
-KEY_REPLACE key_replace
-KEY_RESET
-KEY_RESIZE
-KEY_RESTART key_restart
-KEY_RESUME key_resume
-KEY_RIGHT key_right
-KEY_SAVE key_save
-KEY_SBEG key_sbeg
-KEY_SCANCEL key_scancel
-KEY_SCOMMAND key_scommand
-KEY_SCOPY key_scopy
-KEY_SCREATE key_screate
-KEY_SDC key_sdc
-KEY_SDL key_sdl
-KEY_SELECT key_select
-KEY_SEND key_send
-KEY_SEOL key_seol
-KEY_SEXIT key_sexit
-KEY_SF key_sf
-KEY_SFIND key_sfind
-KEY_SHELP key_shelp
-KEY_SHOME key_shome
-KEY_SIC key_sic
-KEY_SLEFT key_sleft
-KEY_SMESSAGE key_smessage
-KEY_SMOVE key_smove
-KEY_SNEXT key_snext
-KEY_SOPTIONS key_soptions
-KEY_SPREVIOUS key_sprevious
-KEY_SPRINT key_sprint
-KEY_SR key_sr
-KEY_SREDO key_sredo
-KEY_SREPLACE key_sreplace
-KEY_SRESET
-KEY_SRIGHT key_sright
-KEY_SRSUME key_srsume
-KEY_SSAVE key_ssave
-KEY_SSUSPEND key_ssuspend
-KEY_STAB key_stab
-KEY_SUNDO key_sundo
-KEY_SUSPEND key_suspend
-KEY_UNDO key_undo
-KEY_UP key_up
diff --git a/ncurses-5.2/ncurses/tinfo/lib_acs.c b/ncurses-5.2/ncurses/tinfo/lib_acs.c
deleted file mode 100644
index a24d338..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_acs.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-
-
-#include <curses.priv.h>
-#include <term.h> /* ena_acs, acs_chars */
-
-MODULE_ID("$Id$")
-
-chtype acs_map[ACS_LEN] = { 0 };
-
-void _nc_init_acs(void)
-{
- T(("initializing ACS map"));
-
- /*
- * Initializations for a UNIX-like multi-terminal environment. Use
- * ASCII chars and count on the terminfo description to do better.
- */
- ACS_ULCORNER = '+'; /* should be upper left corner */
- ACS_LLCORNER = '+'; /* should be lower left corner */
- ACS_URCORNER = '+'; /* should be upper right corner */
- ACS_LRCORNER = '+'; /* should be lower right corner */
- ACS_RTEE = '+'; /* should be tee pointing left */
- ACS_LTEE = '+'; /* should be tee pointing right */
- ACS_BTEE = '+'; /* should be tee pointing up */
- ACS_TTEE = '+'; /* should be tee pointing down */
- ACS_HLINE = '-'; /* should be horizontal line */
- ACS_VLINE = '|'; /* should be vertical line */
- ACS_PLUS = '+'; /* should be large plus or crossover */
- ACS_S1 = '~'; /* should be scan line 1 */
- ACS_S9 = '_'; /* should be scan line 9 */
- ACS_DIAMOND = '+'; /* should be diamond */
- ACS_CKBOARD = ':'; /* should be checker board (stipple) */
- ACS_DEGREE = '\''; /* should be degree symbol */
- ACS_PLMINUS = '#'; /* should be plus/minus */
- ACS_BULLET = 'o'; /* should be bullet */
- ACS_LARROW = '<'; /* should be arrow pointing left */
- ACS_RARROW = '>'; /* should be arrow pointing right */
- ACS_DARROW = 'v'; /* should be arrow pointing down */
- ACS_UARROW = '^'; /* should be arrow pointing up */
- ACS_BOARD = '#'; /* should be board of squares */
- ACS_LANTERN = '#'; /* should be lantern symbol */
- ACS_BLOCK = '#'; /* should be solid square block */
- /* these defaults were invented for ncurses */
- ACS_S3 = '-'; /* should be scan line 3 */
- ACS_S7 = '-'; /* should be scan line 7 */
- ACS_LEQUAL = '<'; /* should be less-than-or-equal-to */
- ACS_GEQUAL = '>'; /* should be greater-than-or-equal-to */
- ACS_PI = '*'; /* should be greek pi */
- ACS_NEQUAL = '!'; /* should be not-equal */
- ACS_STERLING = 'f'; /* should be pound-sterling symbol */
-
- if (ena_acs != NULL)
- {
- TPUTS_TRACE("ena_acs");
- putp(ena_acs);
- }
-
-#define ALTCHAR(c) ((chtype)(((unsigned char)(c)) | A_ALTCHARSET))
-
- if (acs_chars != NULL) {
- size_t i = 0;
- size_t length = strlen(acs_chars);
-
- while (i < length)
- switch (acs_chars[i]) {
- case 'l':case 'm':case 'k':case 'j':
- case 'u':case 't':case 'v':case 'w':
- case 'q':case 'x':case 'n':case 'o':
- case 's':case '`':case 'a':case 'f':
- case 'g':case '~':case ',':case '+':
- case '.':case '-':case 'h':case 'i':
- case '0':case 'p':case 'r':case 'y':
- case 'z':case '{':case '|':case '}':
- acs_map[(unsigned int)acs_chars[i]] =
- ALTCHAR(acs_chars[i+1]);
- i++;
- /* FALLTHRU */
- default:
- i++;
- break;
- }
- }
-#ifdef TRACE
- /* Show the equivalent mapping, noting if it does not match the
- * given attribute, whether by re-ordering or duplication.
- */
- if (_nc_tracing & TRACE_CALLS) {
- size_t n, m;
- char show[SIZEOF(acs_map) + 1];
- for (n = 1, m = 0; n < SIZEOF(acs_map); n++) {
- if (acs_map[n] != 0) {
- show[m++] = (char)n;
- show[m++] = TextOf(acs_map[n]);
- }
- }
- show[m] = 0;
- _tracef("%s acs_chars %s",
- (acs_chars == NULL)
- ? "NULL"
- : (strcmp(acs_chars, show)
- ? "DIFF"
- : "SAME"),
- _nc_visbuf(show));
- }
-#endif /* TRACE */
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_baudrate.c b/ncurses-5.2/ncurses/tinfo/lib_baudrate.c
deleted file mode 100644
index cb0c53c..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_baudrate.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * lib_baudrate.c
- *
- */
-
-#include <curses.priv.h>
-#include <term.h> /* cur_term, pad_char */
-#include <termcap.h> /* ospeed */
-
-MODULE_ID("$Id$")
-
-/*
- * int
- * baudrate()
- *
- * Returns the current terminal's baud rate.
- *
- */
-
-struct speed {
- int s; /* value for 'ospeed' is an index */
- int sp; /* the actual speed */
-};
-
-static struct speed const speeds[] =
-{
- {B0, 0},
- {B50, 50},
- {B75, 75},
- {B110, 110},
- {B134, 134},
- {B150, 150},
- {B200, 200},
- {B300, 300},
- {B600, 600},
- {B1200, 1200},
- {B1800, 1800},
- {B2400, 2400},
- {B4800, 4800},
- {B9600, 9600},
-#ifdef B19200
- {B19200, 19200},
-#else
-#ifdef EXTA
- {EXTA, 19200},
-#endif
-#endif
-#ifdef B38400
- {B38400, 38400},
-#else
-#ifdef EXTB
- {EXTB, 38400},
-#endif
-#endif
-#ifdef B57600
- {B57600, 57600},
-#endif
-#ifdef B115200
- {B115200, 115200},
-#endif
-#ifdef B230400
- {B230400, 230400},
-#endif
-#ifdef B460800
- {B460800, 460800},
-#endif
-};
-
-int
-_nc_baudrate(int OSpeed)
-{
- static int last_OSpeed;
- static int last_baudrate;
-
- int result;
- unsigned i;
-
- if (OSpeed == last_OSpeed) {
- result = last_baudrate;
- } else {
- result = ERR;
- if (OSpeed >= 0) {
- for (i = 0; i < SIZEOF(speeds); i++) {
- if (speeds[i].s == OSpeed) {
- result = speeds[i].sp;
- break;
- }
- }
- }
- last_baudrate = result;
- }
- return (result);
-}
-
-int
-_nc_ospeed(int BaudRate)
-{
- int result = 1;
- unsigned i;
-
- if (BaudRate >= 0) {
- for (i = 0; i < SIZEOF(speeds); i++) {
- if (speeds[i].sp == BaudRate) {
- result = speeds[i].s;
- break;
- }
- }
- }
- return (result);
-}
-
-int
-baudrate(void)
-{
- int result;
-
- T((T_CALLED("baudrate()")));
-
- /*
- * In debugging, allow the environment symbol to override when we're
- * redirecting to a file, so we can construct repeatable test-cases
- * that take into account costs that depend on baudrate.
- */
-#ifdef TRACE
- if (SP && !isatty(fileno(SP->_ofp))
- && getenv("BAUDRATE") != 0) {
- int ret;
- if ((ret = _nc_getenv_num("BAUDRATE")) <= 0)
- ret = 9600;
- ospeed = _nc_ospeed(ret);
- returnCode(ret);
- } else
-#endif
-
-#ifdef TERMIOS
- ospeed = cfgetospeed(&cur_term->Nttyb);
-#else
- ospeed = cur_term->Nttyb.sg_ospeed;
-#endif
- result = _nc_baudrate(ospeed);
- if (cur_term != 0)
- cur_term->_baudrate = result;
-
- returnCode(result);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_cur_term.c b/ncurses-5.2/ncurses/tinfo/lib_cur_term.c
deleted file mode 100644
index e67e64e..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_cur_term.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1997 *
- ****************************************************************************/
-/*
- * Module that "owns" the 'cur_term' variable:
- *
- * TERMINAL *set_curterm(TERMINAL *)
- * int del_curterm(TERMINAL *)
- */
-
-#include <curses.priv.h>
-#include <term_entry.h> /* TTY, cur_term */
-#include <termcap.h> /* ospeed */
-
-MODULE_ID("$Id$")
-
-TERMINAL *cur_term = 0;
-
-TERMINAL *set_curterm(TERMINAL *termp)
-{
- TERMINAL *oldterm = cur_term;
-
- if ((cur_term = termp) != 0) {
- ospeed = _nc_ospeed(cur_term->_baudrate);
- PC = (pad_char != NULL) ? pad_char[0] : 0;
- }
- return oldterm;
-}
-
-int del_curterm(TERMINAL *termp)
-{
- T((T_CALLED("del_curterm(%p)"), termp));
-
- if (termp != 0) {
- _nc_free_termtype(&(termp->type));
- free(termp);
- if (termp == cur_term)
- cur_term = 0;
- returnCode(OK);
- }
- returnCode(ERR);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_data.c b/ncurses-5.2/ncurses/tinfo/lib_data.c
deleted file mode 100644
index ccd5a75..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_data.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
-** lib_data.c
-**
-** Common data that may/may not be allocated, but is referenced globally
-**
-*/
-
-#include <curses.priv.h>
-
-MODULE_ID("$Id$")
-
-/*
- * OS/2's native linker complains if we don't initialize public data when
- * constructing a dll (reported by J.J.G.Ripoll).
- */
-WINDOW *stdscr = 0;
-WINDOW *curscr = 0;
-WINDOW *newscr = 0;
-
-SCREEN *_nc_screen_chain = 0;
-
-/*
- * The variable 'SP' will be defined as a function on systems that cannot link
- * data-only modules, since it is used in a lot of places within ncurses and we
- * cannot guarantee that any application will use any particular function. We
- * put the WINDOW variables in this module, because it appears that any
- * application that uses them will also use 'SP'.
- *
- * This module intentionally does not reference other ncurses modules, to avoid
- * module coupling that increases the size of the executable.
- */
-#if BROKEN_LINKER
-static SCREEN *my_screen;
-
-SCREEN *_nc_screen(void)
-{
- return my_screen;
-}
-
-int _nc_alloc_screen(void)
-{
- return ((my_screen = typeCalloc(SCREEN, 1)) != 0);
-}
-
-void _nc_set_screen(SCREEN *sp)
-{
- my_screen = sp;
-}
-#else
-SCREEN *SP = NULL; /* Some linkers require initialized data... */
-#endif
diff --git a/ncurses-5.2/ncurses/tinfo/lib_has_cap.c b/ncurses-5.2/ncurses/tinfo/lib_has_cap.c
deleted file mode 100644
index 42d8e10..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_has_cap.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-
-/*
-** lib_has_cap.c
-**
-** The routines to query terminal capabilities
-**
-*/
-
-#include <curses.priv.h>
-
-#include <term.h>
-
-MODULE_ID("$Id$")
-
-bool has_ic(void)
-{
- T((T_CALLED("has_ic()")));
- returnCode(cur_term &&
- (insert_character || parm_ich
- || (enter_insert_mode && exit_insert_mode))
- && (delete_character || parm_dch));
-}
-
-bool has_il(void)
-{
- T((T_CALLED("has_il()")));
- returnCode(cur_term
- && (insert_line || parm_insert_line)
- && (delete_line || parm_delete_line));
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_kernel.c b/ncurses-5.2/ncurses/tinfo/lib_kernel.c
deleted file mode 100644
index 06bc183..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_kernel.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-
-/*
- * lib_kernel.c
- *
- * Misc. low-level routines:
- * erasechar()
- * killchar()
- * flushinp()
- *
- * The baudrate() and delay_output() functions could logically live here,
- * but are in other modules to reduce the static-link size of programs
- * that use only these facilities.
- */
-
-#include <curses.priv.h>
-#include <term.h> /* cur_term */
-
-MODULE_ID("$Id$")
-
-/*
- * erasechar()
- *
- * Return erase character as given in cur_term->Ottyb.
- *
- */
-
-char
-erasechar(void)
-{
- T((T_CALLED("erasechar()")));
-
- if (cur_term != 0) {
-#ifdef TERMIOS
- returnCode(cur_term->Ottyb.c_cc[VERASE]);
-#else
- returnCode(cur_term->Ottyb.sg_erase);
-#endif
- }
- returnCode(ERR);
-}
-
-
-
-/*
- * killchar()
- *
- * Return kill character as given in cur_term->Ottyb.
- *
- */
-
-char
-killchar(void)
-{
- T((T_CALLED("killchar()")));
-
- if (cur_term != 0) {
-#ifdef TERMIOS
- returnCode(cur_term->Ottyb.c_cc[VKILL]);
-#else
- returnCode(cur_term->Ottyb.sg_kill);
-#endif
- }
- returnCode(ERR);
-}
-
-
-
-/*
- * flushinp()
- *
- * Flush any input on cur_term->Filedes
- *
- */
-
-int flushinp(void)
-{
- T((T_CALLED("flushinp()")));
-
- if (cur_term != 0) {
-#ifdef TERMIOS
- tcflush(cur_term->Filedes, TCIFLUSH);
-#else
- errno = 0;
- do {
- ioctl(cur_term->Filedes, TIOCFLUSH, 0);
- } while
- (errno == EINTR);
-#endif
- if (SP) {
- SP->_fifohead = -1;
- SP->_fifotail = 0;
- SP->_fifopeek = 0;
- }
- returnCode(OK);
- }
- returnCode(ERR);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_longname.c b/ncurses-5.2/ncurses/tinfo/lib_longname.c
deleted file mode 100644
index e965942..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_longname.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-
-/*
-** lib_longname.c
-**
-** The routine longname().
-**
-*/
-
-#include <curses.priv.h>
-
-MODULE_ID("$Id$")
-
-char *
-longname(void)
-{
-char *ptr;
-
- T((T_CALLED("longname()")));
-
- for (ptr = ttytype + strlen(ttytype); ptr > ttytype; ptr--)
- if (*ptr == '|')
- returnPtr(ptr + 1);
-
- returnPtr(ttytype);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_napms.c b/ncurses-5.2/ncurses/tinfo/lib_napms.c
deleted file mode 100644
index e2119a4..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_napms.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * lib_napms.c
- *
- * The routine napms.
- *
- */
-
-#include <curses.priv.h>
-
-#if HAVE_NANOSLEEP
-#include <time.h>
-#if HAVE_SYS_TIME_H
-#include <sys/time.h> /* needed for MacOS X DP3 */
-#endif
-#elif USE_FUNC_POLL
-#if HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#elif HAVE_SELECT
-#if HAVE_SYS_TIME_H && HAVE_SYS_TIME_SELECT
-#include <sys/time.h>
-#endif
-#if HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
-#endif
-
-MODULE_ID("$Id$")
-
-int
-napms(int ms)
-{
- T((T_CALLED("napms(%d)"), ms));
-
-#if HAVE_NANOSLEEP
- {
- struct timespec ts;
- ts.tv_sec = ms / 1000;
- ts.tv_nsec = (ms % 1000) * 1000000;
- nanosleep(&ts, NULL);
- }
-#elif USE_FUNC_POLL
- {
- struct pollfd fds[1];
- poll(fds, 0, ms);
- }
-#elif HAVE_SELECT
- {
- struct timeval tval;
- tval.tv_sec = ms / 1000;
- tval.tv_usec = (ms % 1000) * 1000;
- select(0, NULL, NULL, NULL, &tval);
- }
-#endif
- returnCode(OK);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_options.c b/ncurses-5.2/ncurses/tinfo/lib_options.c
deleted file mode 100644
index 9c38552..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_options.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
-** lib_options.c
-**
-** The routines to handle option setting.
-**
-*/
-
-#include <curses.priv.h>
-
-#include <term.h>
-
-MODULE_ID("$Id$")
-
-int
-idlok(WINDOW *win, bool flag)
-{
- T((T_CALLED("idlok(%p,%d)"), win, flag));
-
- if (win) {
- _nc_idlok = win->_idlok = (flag && (has_il() || change_scroll_region));
- returnCode(OK);
- } else
- returnCode(ERR);
-}
-
-void
-idcok(WINDOW *win, bool flag)
-{
- T((T_CALLED("idcok(%p,%d)"), win, flag));
-
- if (win)
- _nc_idcok = win->_idcok = (flag && has_ic());
-
- returnVoid;
-}
-
-int
-halfdelay(int t)
-{
- T((T_CALLED("halfdelay(%d)"), t));
-
- if (t < 1 || t > 255)
- returnCode(ERR);
-
- cbreak();
- SP->_cbreak = t + 1;
- returnCode(OK);
-}
-
-int
-nodelay(WINDOW *win, bool flag)
-{
- T((T_CALLED("nodelay(%p,%d)"), win, flag));
-
- if (win) {
- if (flag == TRUE)
- win->_delay = 0;
- else
- win->_delay = -1;
- returnCode(OK);
- } else
- returnCode(ERR);
-}
-
-int
-notimeout(WINDOW *win, bool f)
-{
- T((T_CALLED("notimout(%p,%d)"), win, f));
-
- if (win) {
- win->_notimeout = f;
- returnCode(OK);
- } else
- returnCode(ERR);
-}
-
-void
-wtimeout(WINDOW *win, int delay)
-{
- T((T_CALLED("wtimeout(%p,%d)"), win, delay));
-
- if (win) {
- win->_delay = delay;
- }
-}
-
-int
-keypad(WINDOW *win, bool flag)
-{
- T((T_CALLED("keypad(%p,%d)"), win, flag));
-
- if (win) {
- win->_use_keypad = flag;
- returnCode(_nc_keypad(flag));
- } else
- returnCode(ERR);
-}
-
-int
-meta(WINDOW *win GCC_UNUSED, bool flag)
-{
- /* Ok, we stay relaxed and don't signal an error if win is NULL */
- T((T_CALLED("meta(%p,%d)"), win, flag));
-
- SP->_use_meta = flag;
-
- if (flag && meta_on) {
- TPUTS_TRACE("meta_on");
- putp(meta_on);
- } else if (!flag && meta_off) {
- TPUTS_TRACE("meta_off");
- putp(meta_off);
- }
- returnCode(OK);
-}
-
-/* curs_set() moved here to narrow the kernel interface */
-
-int
-curs_set(int vis)
-{
- int cursor = SP->_cursor;
-
- T((T_CALLED("curs_set(%d)"), vis));
-
- if (vis < 0 || vis > 2)
- returnCode(ERR);
-
- if (vis == cursor)
- returnCode(cursor);
-
- switch (vis) {
- case 2:
- if (cursor_visible) {
- TPUTS_TRACE("cursor_visible");
- putp(cursor_visible);
- } else
- returnCode(ERR);
- break;
- case 1:
- if (cursor_normal) {
- TPUTS_TRACE("cursor_normal");
- putp(cursor_normal);
- } else
- returnCode(ERR);
- break;
- case 0:
- if (cursor_invisible) {
- TPUTS_TRACE("cursor_invisible");
- putp(cursor_invisible);
- } else
- returnCode(ERR);
- break;
- }
- SP->_cursor = vis;
- _nc_flush();
-
- returnCode(cursor == -1 ? 1 : cursor);
-}
-
-int
-typeahead(int fd)
-{
- T((T_CALLED("typeahead(%d)"), fd));
- SP->_checkfd = fd;
- returnCode(OK);
-}
-
-/*
-** has_key()
-**
-** Return TRUE if the current terminal has the given key
-**
-*/
-
-#if NCURSES_EXT_FUNCS
-static int
-has_key_internal(int keycode, struct tries *tp)
-{
- if (tp == 0)
- return (FALSE);
- else if (tp->value == keycode)
- return (TRUE);
- else
- return (has_key_internal(keycode, tp->child)
- || has_key_internal(keycode, tp->sibling));
-}
-
-int
-has_key(int keycode)
-{
- T((T_CALLED("has_key(%d)"), keycode));
- returnCode(has_key_internal(keycode, SP->_keytry));
-}
-#endif /* NCURSES_EXT_FUNCS */
-
-/* Turn the keypad on/off
- *
- * Note: we flush the output because changing this mode causes some terminals
- * to emit different escape sequences for cursor and keypad keys. If we don't
- * flush, then the next wgetch may get the escape sequence that corresponds to
- * the terminal state _before_ switching modes.
- */
-int
-_nc_keypad(bool flag)
-{
- if (flag && keypad_xmit) {
- TPUTS_TRACE("keypad_xmit");
- putp(keypad_xmit);
- _nc_flush();
- } else if (!flag && keypad_local) {
- TPUTS_TRACE("keypad_local");
- putp(keypad_local);
- _nc_flush();
- }
-
- if (flag && !SP->_tried) {
- _nc_init_keytry();
- SP->_tried = TRUE;
- }
- return (OK);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_print.c b/ncurses-5.2/ncurses/tinfo/lib_print.c
deleted file mode 100644
index b32d858..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_print.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-
-#include <curses.priv.h>
-
-#include <term.h>
-
-MODULE_ID("$Id$")
-
-int mcprint(char *data, int len)
-/* ship binary character data to the printer via mc4/mc5/mc5p */
-{
- char *mybuf, *switchon;
- size_t onsize, offsize, res;
-
- errno = 0;
- if (!cur_term || (!prtr_non && (!prtr_on || !prtr_off)))
- {
- errno = ENODEV;
- return(ERR);
- }
-
- if (prtr_non)
- {
- switchon = tparm(prtr_non, len);
- onsize = strlen(switchon);
- offsize = 0;
- }
- else
- {
- switchon = prtr_on;
- onsize = strlen(prtr_on);
- offsize = strlen(prtr_off);
- }
-
- if ((mybuf = typeMalloc(char, onsize + len + offsize + 1)) == (char *)0)
- {
- errno = ENOMEM;
- return(ERR);
- }
-
- (void) strcpy(mybuf, switchon);
- memcpy(mybuf + onsize, data, len);
- if (offsize)
- (void) strcpy(mybuf + onsize + len, prtr_off);
-
- /*
- * We're relying on the atomicity of UNIX writes here. The
- * danger is that output from a refresh() might get interspersed
- * with the printer data after the write call returns but before the
- * data has actually been shipped to the terminal. If the write(2)
- * operation is truly atomic we're protected from this.
- */
- res = write(cur_term->Filedes, mybuf, onsize + len + offsize);
-
- /*
- * By giving up our scheduler slot here we increase the odds that the
- * kernel will ship the contiguous clist items from the last write
- * immediately.
- */
- (void) sleep(0);
-
- free(mybuf);
- return(res);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_raw.c b/ncurses-5.2/ncurses/tinfo/lib_raw.c
deleted file mode 100644
index 2f60540..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_raw.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * raw.c
- *
- * Routines:
- * raw()
- * cbreak()
- * noraw()
- * nocbreak()
- * qiflush()
- * noqiflush()
- * intrflush()
- *
- */
-
-#include <curses.priv.h>
-#include <term.h> /* cur_term */
-
-MODULE_ID("$Id$")
-
-#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
-#define _POSIX_SOURCE
-#endif
-
-#if HAVE_SYS_TERMIO_H
-#include <sys/termio.h> /* needed for ISC */
-#endif
-
-#ifdef __EMX__
-#include <io.h>
-#endif
-
-#define COOKED_INPUT (IXON|BRKINT|PARMRK)
-
-#ifdef TRACE
-#define BEFORE(N) if (_nc_tracing&TRACE_BITS) _tracef("%s before bits: %s", N, _nc_tracebits())
-#define AFTER(N) if (_nc_tracing&TRACE_BITS) _tracef("%s after bits: %s", N, _nc_tracebits())
-#else
-#define BEFORE(s)
-#define AFTER(s)
-#endif /* TRACE */
-
-int
-raw(void)
-{
- T((T_CALLED("raw()")));
- if (SP != 0 && cur_term != 0) {
-
- SP->_raw = TRUE;
- SP->_cbreak = 1;
-
-#ifdef __EMX__
- setmode(SP->_ifd, O_BINARY);
-#endif
-
-#ifdef TERMIOS
- BEFORE("raw");
- cur_term->Nttyb.c_lflag &= ~(ICANON | ISIG | IEXTEN);
- cur_term->Nttyb.c_iflag &= ~(COOKED_INPUT);
- cur_term->Nttyb.c_cc[VMIN] = 1;
- cur_term->Nttyb.c_cc[VTIME] = 0;
- AFTER("raw");
-#else
- cur_term->Nttyb.sg_flags |= RAW;
-#endif
- returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
- }
- returnCode(ERR);
-}
-
-int
-cbreak(void)
-{
- T((T_CALLED("cbreak()")));
-
- SP->_cbreak = 1;
-
-#ifdef __EMX__
- setmode(SP->_ifd, O_BINARY);
-#endif
-
-#ifdef TERMIOS
- BEFORE("cbreak");
- cur_term->Nttyb.c_lflag &= ~ICANON;
- cur_term->Nttyb.c_iflag &= ~ICRNL;
- cur_term->Nttyb.c_lflag |= ISIG;
- cur_term->Nttyb.c_cc[VMIN] = 1;
- cur_term->Nttyb.c_cc[VTIME] = 0;
- AFTER("cbreak");
-#else
- cur_term->Nttyb.sg_flags |= CBREAK;
-#endif
- returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
-}
-
-void
-qiflush(void)
-{
- T((T_CALLED("qiflush()")));
-
- /*
- * Note: this implementation may be wrong. See the comment under
- * intrflush().
- */
-
-#ifdef TERMIOS
- BEFORE("qiflush");
- cur_term->Nttyb.c_lflag &= ~(NOFLSH);
- AFTER("qiflush");
- (void) _nc_set_tty_mode(&cur_term->Nttyb);
- returnVoid;
-#endif
-}
-
-int
-noraw(void)
-{
- T((T_CALLED("noraw()")));
-
- SP->_raw = FALSE;
- SP->_cbreak = 0;
-
-#ifdef __EMX__
- setmode(SP->_ifd, O_TEXT);
-#endif
-
-#ifdef TERMIOS
- BEFORE("noraw");
- cur_term->Nttyb.c_lflag |= ISIG | ICANON |
- (cur_term->Ottyb.c_lflag & IEXTEN);
- cur_term->Nttyb.c_iflag |= COOKED_INPUT;
- AFTER("noraw");
-#else
- cur_term->Nttyb.sg_flags &= ~(RAW | CBREAK);
-#endif
- returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
-}
-
-int
-nocbreak(void)
-{
- T((T_CALLED("nocbreak()")));
-
- SP->_cbreak = 0;
-
-#ifdef __EMX__
- setmode(SP->_ifd, O_TEXT);
-#endif
-
-#ifdef TERMIOS
- BEFORE("nocbreak");
- cur_term->Nttyb.c_lflag |= ICANON;
- cur_term->Nttyb.c_iflag |= ICRNL;
- AFTER("nocbreak");
-#else
- cur_term->Nttyb.sg_flags &= ~CBREAK;
-#endif
- returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
-}
-
-void
-noqiflush(void)
-{
- T((T_CALLED("noqiflush()")));
-
- /*
- * Note: this implementation may be wrong. See the comment under
- * intrflush().
- */
-
-#ifdef TERMIOS
- BEFORE("noqiflush");
- cur_term->Nttyb.c_lflag |= NOFLSH;
- AFTER("noqiflush");
- (void) _nc_set_tty_mode(&cur_term->Nttyb);
- returnVoid;
-#endif
-}
-
-int
-intrflush(WINDOW *win GCC_UNUSED, bool flag)
-{
- T((T_CALLED("intrflush(%d)"), flag));
-
- /*
- * This call does the same thing as the qiflush()/noqiflush() pair. We
- * know for certain that SVr3 intrflush() tweaks the NOFLSH bit; on the
- * other hand, the match (in the SVr4 man pages) between the language
- * describing NOFLSH in termio(7) and the language describing
- * qiflush()/noqiflush() in curs_inopts(3x) is too exact to be coincidence.
- */
-
-#ifdef TERMIOS
- BEFORE("intrflush");
- if (flag)
- cur_term->Nttyb.c_lflag &= ~(NOFLSH);
- else
- cur_term->Nttyb.c_lflag |= (NOFLSH);
- AFTER("intrflush");
- returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
-#else
- returnCode(ERR);
-#endif
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_setup.c b/ncurses-5.2/ncurses/tinfo/lib_setup.c
deleted file mode 100644
index 64c7afb..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_setup.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * Terminal setup routines common to termcap and terminfo:
- *
- * use_env(bool)
- * setupterm(char *, int, int *)
- */
-
-#include <curses.priv.h>
-#include <tic.h> /* for MAX_NAME_SIZE */
-#include <term_entry.h>
-
-#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
-#define _POSIX_SOURCE
-#endif
-
-#include <term.h> /* lines, columns, cur_term */
-
-MODULE_ID("$Id$")
-
-/****************************************************************************
- *
- * Terminal size computation
- *
- ****************************************************************************/
-
-#if HAVE_SIZECHANGE
-# if !defined(sun) || !TERMIOS
-# if HAVE_SYS_IOCTL_H
-# include <sys/ioctl.h>
-# endif
-# endif
-#endif
-
-#if NEED_PTEM_H
- /* On SCO, they neglected to define struct winsize in termios.h -- it's only
- * in termio.h and ptem.h (the former conflicts with other definitions).
- */
-# include <sys/stream.h>
-# include <sys/ptem.h>
-#endif
-
-/*
- * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
- * Solaris, IRIX) define TIOCGWINSZ and struct winsize.
- */
-#ifdef TIOCGSIZE
-# define IOCTL_WINSIZE TIOCGSIZE
-# define STRUCT_WINSIZE struct ttysize
-# define WINSIZE_ROWS(n) (int)n.ts_lines
-# define WINSIZE_COLS(n) (int)n.ts_cols
-#else
-# ifdef TIOCGWINSZ
-# define IOCTL_WINSIZE TIOCGWINSZ
-# define STRUCT_WINSIZE struct winsize
-# define WINSIZE_ROWS(n) (int)n.ws_row
-# define WINSIZE_COLS(n) (int)n.ws_col
-# endif
-#endif
-
-static int _use_env = TRUE;
-
-static void do_prototype(void);
-
-void
-use_env(bool f)
-{
- _use_env = f;
-}
-
-int LINES = 0, COLS = 0, TABSIZE = 0;
-
-static void
-_nc_get_screensize(int *linep, int *colp)
-/* Obtain lines/columns values from the environment and/or terminfo entry */
-{
- /* figure out the size of the screen */
- T(("screen size: terminfo lines = %d columns = %d", lines, columns));
-
- if (!_use_env) {
- *linep = (int) lines;
- *colp = (int) columns;
- } else { /* usually want to query LINES and COLUMNS from environment */
- int value;
-
- *linep = *colp = 0;
-
- /* first, look for environment variables */
- if ((value = _nc_getenv_num("LINES")) > 0) {
- *linep = value;
- }
- if ((value = _nc_getenv_num("COLUMNS")) > 0) {
- *colp = value;
- }
- T(("screen size: environment LINES = %d COLUMNS = %d", *linep, *colp));
-
-#ifdef __EMX__
- if (*linep <= 0 || *colp <= 0) {
- int screendata[2];
- _scrsize(screendata);
- *colp = screendata[0];
- *linep = screendata[1];
- T(("EMX screen size: environment LINES = %d COLUMNS = %d",
- *linep, *colp));
- }
-#endif
-#if HAVE_SIZECHANGE
- /* if that didn't work, maybe we can try asking the OS */
- if (*linep <= 0 || *colp <= 0) {
- if (isatty(cur_term->Filedes)) {
- STRUCT_WINSIZE size;
-
- errno = 0;
- do {
- if (ioctl(cur_term->Filedes, IOCTL_WINSIZE, &size) < 0
- && errno != EINTR)
- goto failure;
- } while
- (errno == EINTR);
-
- /*
- * Solaris lets users override either dimension with an
- * environment variable.
- */
- if (*linep <= 0)
- *linep = WINSIZE_ROWS(size);
- if (*colp <= 0)
- *colp = WINSIZE_COLS(size);
- }
- /* FALLTHRU */
- failure:;
- }
-#endif /* HAVE_SIZECHANGE */
-
- /* if we can't get dynamic info about the size, use static */
- if (*linep <= 0 || *colp <= 0)
- if (lines > 0 && columns > 0) {
- *linep = (int) lines;
- *colp = (int) columns;
- }
-
- /* the ultimate fallback, assume fixed 24x80 size */
- if (*linep <= 0 || *colp <= 0) {
- *linep = 24;
- *colp = 80;
- }
-
- /*
- * Put the derived values back in the screen-size caps, so
- * tigetnum() and tgetnum() will do the right thing.
- */
- lines = (short) (*linep);
- columns = (short) (*colp);
- }
-
- T(("screen size is %dx%d", *linep, *colp));
-
- if (VALID_NUMERIC(init_tabs))
- TABSIZE = (int) init_tabs;
- else
- TABSIZE = 8;
- T(("TABSIZE = %d", TABSIZE));
-
-}
-
-#if USE_SIZECHANGE
-void
-_nc_update_screensize(void)
-{
- int my_lines, my_cols;
-
- _nc_get_screensize(&my_lines, &my_cols);
- if (SP != 0 && SP->_resize != 0)
- SP->_resize(my_lines, my_cols);
-}
-#endif
-
-/****************************************************************************
- *
- * Terminal setup
- *
- ****************************************************************************/
-
-#define ret_error(code, fmt, arg) if (errret) {\
- *errret = code;\
- returnCode(ERR);\
- } else {\
- fprintf(stderr, fmt, arg);\
- exit(EXIT_FAILURE);\
- }
-
-#define ret_error0(code, msg) if (errret) {\
- *errret = code;\
- returnCode(ERR);\
- } else {\
- fprintf(stderr, msg);\
- exit(EXIT_FAILURE);\
- }
-
-#if USE_DATABASE
-static int
-grab_entry(const char *const tn, TERMTYPE * const tp)
-/* return 1 if entry found, 0 if not found, -1 if database not accessible */
-{
- char filename[PATH_MAX];
- int status;
-
- /*
- * $TERM shouldn't contain pathname delimiters.
- */
- if (strchr(tn, '/'))
- return 0;
-
- if ((status = _nc_read_entry(tn, filename, tp)) != 1) {
-
-#if !PURE_TERMINFO
- /*
- * Try falling back on the termcap file.
- * Note: allowing this call links the entire terminfo/termcap
- * compiler into the startup code. It's preferable to build a
- * real terminfo database and use that.
- */
- status = _nc_read_termcap_entry(tn, tp);
-#endif /* PURE_TERMINFO */
-
- }
-
- /*
- * If we have an entry, force all of the cancelled strings to null
- * pointers so we don't have to test them in the rest of the library.
- * (The terminfo compiler bypasses this logic, since it must know if
- * a string is cancelled, for merging entries).
- */
- if (status == 1) {
- int n;
- for_each_boolean(n, tp)
- if (!VALID_BOOLEAN(tp->Booleans[n]))
- tp->Booleans[n] = FALSE;
- for_each_string(n, tp)
- if (tp->Strings[n] == CANCELLED_STRING)
- tp->Strings[n] = ABSENT_STRING;
- }
- return (status);
-}
-#endif
-
-char ttytype[NAMESIZE] = "";
-
-/*
- * setupterm(termname, Filedes, errret)
- *
- * Find and read the appropriate object file for the terminal
- * Make cur_term point to the structure.
- *
- */
-
-int
-setupterm(NCURSES_CONST char *tname, int Filedes, int *errret)
-{
- struct term *term_ptr;
- int status;
-
- T((T_CALLED("setupterm(%s,%d,%p)"), _nc_visbuf(tname), Filedes, errret));
-
- if (tname == 0) {
- tname = getenv("TERM");
- if (tname == 0 || *tname == '\0') {
- ret_error0(-1, "TERM environment variable not set.\n");
- }
- }
- if (strlen(tname) > MAX_NAME_SIZE) {
- ret_error(-1, "TERM environment must be <= %d characters.\n",
- MAX_NAME_SIZE);
- }
-
- T(("your terminal name is %s", tname));
-
- term_ptr = typeCalloc(TERMINAL, 1);
-
- if (term_ptr == 0) {
- ret_error0(-1, "Not enough memory to create terminal structure.\n");
- }
-#if USE_DATABASE
- status = grab_entry(tname, &term_ptr->type);
-#else
- status = 0;
-#endif
-
- /* try fallback list if entry on disk */
- if (status != 1) {
- const TERMTYPE *fallback = _nc_fallback(tname);
-
- if (fallback) {
- term_ptr->type = *fallback;
- status = 1;
- }
- }
-
- if (status == -1) {
- ret_error0(-1, "terminals database is inaccessible\n");
- } else if (status == 0) {
- ret_error(0, "'%s': unknown terminal type.\n", tname);
- }
-
- /*
- * Improve on SVr4 curses. If an application mixes curses and termcap
- * calls, it may call both initscr and tgetent. This is not really a
- * good thing to do, but can happen if someone tries using ncurses with
- * the readline library. The problem we are fixing is that when
- * tgetent calls setupterm, the resulting Ottyb struct in cur_term is
- * zeroed. A subsequent call to endwin uses the zeroed terminal
- * settings rather than the ones saved in initscr. So we check if
- * cur_term appears to contain terminal settings for the same output
- * file as our current call - and copy those terminal settings. (SVr4
- * curses does not do this, however applications that are working
- * around the problem will still work properly with this feature).
- */
- if (cur_term != 0) {
- if (cur_term->Filedes == Filedes)
- term_ptr->Ottyb = cur_term->Ottyb;
- }
-
- set_curterm(term_ptr);
-
- if (command_character && getenv("CC"))
- do_prototype();
-
- strncpy(ttytype, cur_term->type.term_names, NAMESIZE - 1);
- ttytype[NAMESIZE - 1] = '\0';
-
- /*
- * Allow output redirection. This is what SVr3 does.
- * If stdout is directed to a file, screen updates go
- * to standard error.
- */
- if (Filedes == STDOUT_FILENO && !isatty(Filedes))
- Filedes = STDERR_FILENO;
- cur_term->Filedes = Filedes;
-
- _nc_get_screensize(&LINES, &COLS);
-
- if (errret)
- *errret = 1;
-
- T((T_CREATE("screen %s %dx%d"), tname, LINES, COLS));
-
- if (generic_type) {
- ret_error(0, "'%s': I need something more specific.\n", tname);
- }
- if (hard_copy) {
- ret_error(1, "'%s': I can't handle hardcopy terminals.\n", tname);
- }
- returnCode(OK);
-}
-
-/*
-** do_prototype()
-**
-** Take the real command character out of the CC environment variable
-** and substitute it in for the prototype given in 'command_character'.
-**
-*/
-
-static void
-do_prototype(void)
-{
- int i;
- char CC;
- char proto;
- char *tmp;
-
- tmp = getenv("CC");
- CC = *tmp;
- proto = *command_character;
-
- for_each_string(i, &(cur_term->type)) {
- for (tmp = cur_term->type.Strings[i]; *tmp; tmp++) {
- if (*tmp == proto)
- *tmp = CC;
- }
- }
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_termcap.c b/ncurses-5.2/ncurses/tinfo/lib_termcap.c
deleted file mode 100644
index 73f30e9..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_termcap.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-#include <curses.priv.h>
-
-#include <termcap.h>
-#include <tic.h>
-
-#define __INTERNAL_CAPS_VISIBLE
-#include <term_entry.h>
-
-MODULE_ID("$Id$")
-
-/*
- some of the code in here was contributed by:
- Magnus Bengtsson, d6mbeng@dtek.chalmers.se
-*/
-
-char *UP = 0;
-char *BC = 0;
-
-/***************************************************************************
- *
- * tgetent(bufp, term)
- *
- * In termcap, this function reads in the entry for terminal `term' into the
- * buffer pointed to by bufp. It must be called before any of the functions
- * below are called.
- * In this terminfo emulation, tgetent() simply calls setupterm() (which
- * does a bit more than tgetent() in termcap does), and returns its return
- * value (1 if successful, 0 if no terminal with the given name could be
- * found, or -1 if no terminal descriptions have been installed on the
- * system). The bufp argument is ignored.
- *
- ***************************************************************************/
-
-int
-tgetent(char *bufp GCC_UNUSED, const char *name)
-{
- int errcode;
-
- T((T_CALLED("tgetent()")));
-
- setupterm((NCURSES_CONST char *) name, STDOUT_FILENO, &errcode);
-
- if (errcode == 1) {
-
- if (cursor_left)
- if ((backspaces_with_bs = !strcmp(cursor_left, "\b")) == 0)
- backspace_if_not_bs = cursor_left;
-
- /* we're required to export these */
- if (pad_char != NULL)
- PC = pad_char[0];
- if (cursor_up != NULL)
- UP = cursor_up;
- if (backspace_if_not_bs != NULL)
- BC = backspace_if_not_bs;
-
- (void) baudrate(); /* sets ospeed as a side-effect */
-
-/* LINT_PREPRO
-#if 0*/
-#include <capdefaults.c>
-/* LINT_PREPRO
-#endif*/
-
- }
- returnCode(errcode);
-}
-
-/***************************************************************************
- *
- * tgetflag(str)
- *
- * Look up boolean termcap capability str and return its value (TRUE=1 if
- * present, FALSE=0 if not).
- *
- ***************************************************************************/
-
-int
-tgetflag(NCURSES_CONST char *id)
-{
- int i;
-
- T((T_CALLED("tgetflag(%s)"), id));
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_boolean(i, tp) {
- const char *capname = ExtBoolname(tp, i, boolcodes);
- if (!strncmp(id, capname, 2)) {
- /* setupterm forces invalid booleans to false */
- returnCode(tp->Booleans[i]);
- }
- }
- }
- returnCode(0); /* Solaris does this */
-}
-
-/***************************************************************************
- *
- * tgetnum(str)
- *
- * Look up numeric termcap capability str and return its value, or -1 if
- * not given.
- *
- ***************************************************************************/
-
-int
-tgetnum(NCURSES_CONST char *id)
-{
- int i;
-
- T((T_CALLED("tgetnum(%s)"), id));
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_number(i, tp) {
- const char *capname = ExtNumname(tp, i, numcodes);
- if (!strncmp(id, capname, 2)) {
- if (!VALID_NUMERIC(tp->Numbers[i]))
- returnCode(ABSENT_NUMERIC);
- returnCode(tp->Numbers[i]);
- }
- }
- }
- returnCode(ABSENT_NUMERIC);
-}
-
-/***************************************************************************
- *
- * tgetstr(str, area)
- *
- * Look up string termcap capability str and return a pointer to its value,
- * or NULL if not given.
- *
- ***************************************************************************/
-
-char *
-tgetstr(NCURSES_CONST char *id, char **area)
-{
- int i;
-
- T((T_CALLED("tgetstr(%s,%p)"), id, area));
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_string(i, tp) {
- const char *capname = ExtStrname(tp, i, strcodes);
- if (!strncmp(id, capname, 2)) {
- TR(TRACE_DATABASE,("found match : %s", _nc_visbuf(tp->Strings[i])));
- /* setupterm forces canceled strings to null */
- if (area != 0
- && *area != 0
- && VALID_STRING(tp->Strings[i])) {
- (void) strcpy(*area, tp->Strings[i]);
- *area += strlen(*area) + 1;
- }
- returnPtr(tp->Strings[i]);
- }
- }
- }
- returnPtr(NULL);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_termname.c b/ncurses-5.2/ncurses/tinfo/lib_termname.c
deleted file mode 100644
index 6f32df1..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_termname.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-#include <curses.priv.h>
-#include <tic.h> /* for MAX_ALIAS */
-
-MODULE_ID("$Id$")
-
-char *termname(void)
-{
-char *name = getenv("TERM");
-static char ret[MAX_ALIAS+1];
-
- T(("termname() called"));
-
- if (name != 0) {
- (void) strncpy(ret, name, sizeof(ret) - 1);
- name = ret;
- }
- return name;
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_tgoto.c b/ncurses-5.2/ncurses/tinfo/lib_tgoto.c
deleted file mode 100644
index 4e0bc5f..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_tgoto.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey *
- ****************************************************************************/
-
-#include <curses.priv.h>
-
-#include <ctype.h>
-#include <termcap.h>
-
-MODULE_ID("$Id$")
-
-#if !PURE_TERMINFO
-static bool
-is_termcap(const char *string)
-{
- bool result = TRUE;
-
- while ((*string != '\0') && result) {
- if (*string == '%') {
- switch (*++string) {
- case 'p':
- result = FALSE;
- break;
- case '\0':
- string--;
- break;
- }
- } else if (string[0] == '$' && string[1] == '<') {
- result = FALSE;
- }
- string++;
- }
- return result;
-}
-
-static char *
-tgoto_internal(const char *string, int x, int y)
-{
- static char *result;
- static size_t length;
-
- int swap_arg;
- int param[3];
- size_t used = 0;
- size_t need = 10;
- int *value = param;
- bool need_BC = FALSE;
-
- if (BC)
- need += strlen(BC);
-
- param[0] = y;
- param[1] = x;
- param[2] = 0;
-
- while (*string != 0) {
- if ((used + need) > length) {
- length += (used + need);
- if ((result = _nc_doalloc(result, length)) == 0) {
- length = 0;
- break;
- }
- }
- if (*string == '%') {
- char *fmt = 0;
-
- switch (*++string) {
- case '\0':
- string--;
- break;
- case 'd':
- fmt = "%d";
- break;
- case '2':
- fmt = "%02d";
- *value %= 100;
- break;
- case '3':
- fmt = "%03d";
- *value %= 1000;
- break;
- case '+':
- *value += (*++string & 0xff);
- /* FALLTHRU */
- case '.':
- /*
- * Guard against tputs() seeing a truncated string. The
- * termcap documentation refers to a similar fixup for \n
- * and \r, but I don't see that it could work -TD
- */
- if (*value == 0) {
- if (BC != 0) {
- *value += 1;
- need_BC = TRUE;
- } else {
- *value = 0200; /* tputs will treat this as \0 */
- }
- }
- result[used++] = *value++;
- break;
- case '%':
- result[used++] = *string;
- break;
- case 'r':
- swap_arg = param[0];
- param[0] = param[1];
- param[1] = swap_arg;
- break;
- case 'i':
- param[0] += 1;
- param[1] += 1;
- break;
- case '>':
- if (*value > string[1])
- *value += string[2];
- string += 2;
- break;
- case 'n': /* Datamedia 2500 */
- param[0] ^= 0140;
- param[1] ^= 0140;
- break;
- case 'B': /* BCD */
- *value = 16 * (*value / 10) + (*value % 10);
- break;
- case 'D': /* Reverse coding (Delta Data) */
- *value -= 2 * (*value / 16);
- break;
- }
- if (fmt != 0) {
- sprintf(result + used, fmt, *value++);
- used += strlen(result + used);
- fmt = 0;
- }
- if (value - param > 2) {
- value = param + 2;
- *value = 0;
- }
- } else {
- result[used++] = *string;
- }
- string++;
- }
- if (need_BC) {
- strcpy(result + used, BC);
- used += strlen(BC);
- }
- result[used] = '\0';
- return result;
-}
-#endif
-
-/*
- * Retained solely for upward compatibility. Note the intentional reversing of
- * the last two arguments when invoking tparm().
- */
-char *
-tgoto(const char *string, int x, int y)
-{
- char *result;
-
- T((T_CALLED("tgoto(%s, %d, %d)"), _nc_visbuf(string), x, y));
-#if !PURE_TERMINFO
- if (is_termcap(string))
- result = tgoto_internal(string, x, y);
- else
-#endif
- result = tparm((NCURSES_CONST char *) string, y, x);
- returnPtr(result);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_ti.c b/ncurses-5.2/ncurses/tinfo/lib_ti.c
deleted file mode 100644
index 74900ce..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_ti.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-#include <curses.priv.h>
-
-#include <term_entry.h>
-#include <tic.h>
-
-MODULE_ID("$Id$")
-
-int
-tigetflag(NCURSES_CONST char *str)
-{
- int i;
-
- T((T_CALLED("tigetflag(%s)"), str));
-
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_boolean(i, tp) {
- const char *capname = ExtBoolname(tp, i, boolnames);
- if (!strcmp(str, capname)) {
- /* setupterm forces invalid booleans to false */
- returnCode(tp->Booleans[i]);
- }
- }
- }
-
- returnCode(ABSENT_BOOLEAN);
-}
-
-int
-tigetnum(NCURSES_CONST char *str)
-{
- int i;
-
- T((T_CALLED("tigetnum(%s)"), str));
-
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_number(i, tp) {
- const char *capname = ExtNumname(tp, i, numnames);
- if (!strcmp(str, capname)) {
- if (!VALID_NUMERIC(tp->Numbers[i]))
- returnCode(ABSENT_NUMERIC);
- returnCode(tp->Numbers[i]);
- }
- }
- }
-
- returnCode(CANCELLED_NUMERIC); /* Solaris returns a -1 instead */
-}
-
-char *
-tigetstr(NCURSES_CONST char *str)
-{
- int i;
-
- T((T_CALLED("tigetstr(%s)"), str));
-
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_string(i, tp) {
- const char *capname = ExtStrname(tp, i, strnames);
- if (!strcmp(str, capname)) {
- /* setupterm forces cancelled strings to null */
- returnPtr(tp->Strings[i]);
- }
- }
- }
-
- returnPtr(CANCELLED_STRING);
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_tparm.c b/ncurses-5.2/ncurses/tinfo/lib_tparm.c
deleted file mode 100644
index d6b454d..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_tparm.c
+++ /dev/null
@@ -1,740 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * tparm.c
- *
- */
-
-#include <curses.priv.h>
-
-#include <ctype.h>
-#include <term.h>
-#include <tic.h>
-
-MODULE_ID("$Id$")
-
-/*
- * char *
- * tparm(string, ...)
- *
- * Substitute the given parameters into the given string by the following
- * rules (taken from terminfo(5)):
- *
- * Cursor addressing and other strings requiring parame-
- * ters in the terminal are described by a parameterized string
- * capability, with like escapes %x in it. For example, to
- * address the cursor, the cup capability is given, using two
- * parameters: the row and column to address to. (Rows and
- * columns are numbered from zero and refer to the physical
- * screen visible to the user, not to any unseen memory.) If
- * the terminal has memory relative cursor addressing, that can
- * be indicated by
- *
- * The parameter mechanism uses a stack and special %
- * codes to manipulate it. Typically a sequence will push one
- * of the parameters onto the stack and then print it in some
- * format. Often more complex operations are necessary.
- *
- * The % encodings have the following meanings:
- *
- * %% outputs `%'
- * %c print pop() like %c in printf()
- * %s print pop() like %s in printf()
- * %[[:]flags][width[.precision]][doxXs]
- * as in printf, flags are [-+#] and space
- * The ':' is used to avoid making %+ or %-
- * patterns (see below).
- *
- * %p[1-9] push ith parm
- * %P[a-z] set dynamic variable [a-z] to pop()
- * %g[a-z] get dynamic variable [a-z] and push it
- * %P[A-Z] set static variable [A-Z] to pop()
- * %g[A-Z] get static variable [A-Z] and push it
- * %l push strlen(pop)
- * %'c' push char constant c
- * %{nn} push integer constant nn
- *
- * %+ %- %* %/ %m
- * arithmetic (%m is mod): push(pop() op pop())
- * %& %| %^ bit operations: push(pop() op pop())
- * %= %> %< logical operations: push(pop() op pop())
- * %A %O logical and & or operations for conditionals
- * %! %~ unary operations push(op pop())
- * %i add 1 to first two parms (for ANSI terminals)
- *
- * %? expr %t thenpart %e elsepart %;
- * if-then-else, %e elsepart is optional.
- * else-if's are possible ala Algol 68:
- * %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e b5 %;
- *
- * For those of the above operators which are binary and not commutative,
- * the stack works in the usual way, with
- * %gx %gy %m
- * resulting in x mod y, not the reverse.
- */
-
-#define STACKSIZE 20
-
-typedef struct {
- union {
- unsigned int num;
- char *str;
- } data;
- bool num_type;
-} stack_frame;
-
-static stack_frame stack[STACKSIZE];
-static int stack_ptr;
-
-#ifdef TRACE
-static const char *tname;
-#endif /* TRACE */
-
-static char *out_buff;
-static size_t out_size;
-static size_t out_used;
-
-#if NO_LEAKS
-void
-_nc_free_tparm(void)
-{
- if (out_buff != 0) {
- FreeAndNull(out_buff);
- out_size = 0;
- out_used = 0;
- }
-}
-#endif
-
-static void
-really_get_space(size_t need)
-{
- out_size = need * 2;
- out_buff = typeRealloc(char, out_size, out_buff);
- if (out_buff == 0)
- _nc_err_abort("Out of memory");
-}
-
-static inline void
-get_space(size_t need)
-{
- need += out_used;
- if (need > out_size)
- really_get_space(need);
-}
-
-static inline void
-save_text(const char *fmt, const char *s, int len)
-{
- size_t s_len = strlen(s);
- if (len > (int) s_len)
- s_len = len;
-
- get_space(s_len + 1);
-
- (void) sprintf(out_buff + out_used, fmt, s);
- out_used += strlen(out_buff + out_used);
-}
-
-static inline void
-save_number(const char *fmt, int number, int len)
-{
- if (len < 30)
- len = 30; /* actually log10(MAX_INT)+1 */
-
- get_space(len + 1);
-
- (void) sprintf(out_buff + out_used, fmt, number);
- out_used += strlen(out_buff + out_used);
-}
-
-static inline void
-save_char(int c)
-{
- if (c == 0)
- c = 0200;
- get_space(1);
- out_buff[out_used++] = c;
-}
-
-static inline void
-npush(int x)
-{
- if (stack_ptr < STACKSIZE) {
- stack[stack_ptr].num_type = TRUE;
- stack[stack_ptr].data.num = x;
- stack_ptr++;
- }
-}
-
-static inline int
-npop(void)
-{
- int result = 0;
- if (stack_ptr > 0) {
- stack_ptr--;
- if (stack[stack_ptr].num_type)
- result = stack[stack_ptr].data.num;
- }
- return result;
-}
-
-static inline void
-spush(char *x)
-{
- if (stack_ptr < STACKSIZE) {
- stack[stack_ptr].num_type = FALSE;
- stack[stack_ptr].data.str = x;
- stack_ptr++;
- }
-}
-
-static inline char *
-spop(void)
-{
- static char dummy[] = ""; /* avoid const-cast */
- char *result = dummy;
- if (stack_ptr > 0) {
- stack_ptr--;
- if (!stack[stack_ptr].num_type && stack[stack_ptr].data.str != 0)
- result = stack[stack_ptr].data.str;
- }
- return result;
-}
-
-static inline const char *
-parse_format(const char *s, char *format, int *len)
-{
- bool done = FALSE;
- bool allowminus = FALSE;
- bool dot = FALSE;
- bool err = FALSE;
- char *fmt = format;
- int prec = 0;
- int width = 0;
- int value = 0;
-
- *len = 0;
- *format++ = '%';
- while (*s != '\0' && !done) {
- switch (*s) {
- case 'c': /* FALLTHRU */
- case 'd': /* FALLTHRU */
- case 'o': /* FALLTHRU */
- case 'x': /* FALLTHRU */
- case 'X': /* FALLTHRU */
- case 's':
- *format++ = *s;
- done = TRUE;
- break;
- case '.':
- *format++ = *s++;
- if (dot) {
- err = TRUE;
- } else {
- dot = TRUE;
- prec = value;
- }
- value = 0;
- break;
- case '#':
- *format++ = *s++;
- break;
- case ' ':
- *format++ = *s++;
- break;
- case ':':
- s++;
- allowminus = TRUE;
- break;
- case '-':
- if (allowminus) {
- *format++ = *s++;
- } else {
- done = TRUE;
- }
- break;
- default:
- if (isdigit(*s)) {
- value = (value * 10) + (*s - '0');
- if (value > 10000)
- err = TRUE;
- *format++ = *s++;
- } else {
- done = TRUE;
- }
- }
- }
-
- /*
- * If we found an error, ignore (and remove) the flags.
- */
- if (err) {
- prec = width = value = 0;
- format = fmt;
- *format++ = '%';
- *format++ = *s;
- }
-
- if (dot)
- width = value;
- else
- prec = value;
-
- *format = '\0';
- /* return maximum string length in print */
- *len = (prec > width) ? prec : width;
- return s;
-}
-
-#define isUPPER(c) ((c) >= 'A' && (c) <= 'Z')
-#define isLOWER(c) ((c) >= 'a' && (c) <= 'z')
-
-static inline char *
-tparam_internal(const char *string, va_list ap)
-{
-#define NUM_VARS 26
- char *p_is_s[9];
- int param[9];
- int lastpop;
- int popcount;
- int number;
- int len;
- int level;
- int x, y;
- int i;
- size_t len2;
- register const char *cp;
- static size_t len_fmt;
- static char dummy[] = "";
- static char *format;
- static int dynamic_var[NUM_VARS];
- static int static_vars[NUM_VARS];
-
- out_used = 0;
- if (string == NULL)
- return NULL;
-
- if ((len2 = strlen(string)) > len_fmt) {
- len_fmt = len2 + len_fmt + 2;
- if ((format = typeRealloc(char, len_fmt, format)) == 0)
- return 0;
- }
-
- /*
- * Find the highest parameter-number referred to in the format string.
- * Use this value to limit the number of arguments copied from the
- * variable-length argument list.
- */
-
- number = 0;
- lastpop = -1;
- popcount = 0;
- memset(p_is_s, 0, sizeof(p_is_s));
-
- /*
- * Analyze the string to see how many parameters we need from the varargs
- * list, and what their types are. We will only accept string parameters
- * if they appear as a %l or %s format following an explicit parameter
- * reference (e.g., %p2%s). All other parameters are numbers.
- *
- * 'number' counts coarsely the number of pop's we see in the string, and
- * 'popcount' shows the highest parameter number in the string. We would
- * like to simply use the latter count, but if we are reading termcap
- * strings, there may be cases that we cannot see the explicit parameter
- * numbers.
- */
- for (cp = string; (cp - string) < (int) len2;) {
- if (*cp == '%') {
- cp++;
- cp = parse_format(cp, format, &len);
- switch (*cp) {
- default:
- break;
-
- case 'd': /* FALLTHRU */
- case 'o': /* FALLTHRU */
- case 'x': /* FALLTHRU */
- case 'X': /* FALLTHRU */
- case 'c': /* FALLTHRU */
- number++;
- lastpop = -1;
- break;
-
- case 'l':
- case 's':
- if (lastpop > 0)
- p_is_s[lastpop - 1] = dummy;
- ++number;
- break;
-
- case 'p':
- cp++;
- i = (*cp - '0');
- if (i >= 0 && i <= 9) {
- lastpop = i;
- if (lastpop > popcount)
- popcount = lastpop;
- }
- break;
-
- case 'P':
- case 'g':
- cp++;
- break;
-
- case S_QUOTE:
- cp += 2;
- lastpop = -1;
- break;
-
- case L_BRACE:
- cp++;
- while (*cp >= '0' && *cp <= '9') {
- cp++;
- }
- break;
-
- case '+':
- case '-':
- case '*':
- case '/':
- case 'm':
- case 'A':
- case 'O':
- case '&':
- case '|':
- case '^':
- case '=':
- case '<':
- case '>':
- case '!':
- case '~':
- lastpop = -1;
- number += 2;
- break;
-
- case 'i':
- lastpop = -1;
- if (popcount < 2)
- popcount = 2;
- break;
- }
- }
- if (*cp != '\0')
- cp++;
- }
-
- if (number > 9)
- number = 9;
- for (i = 0; i < max(popcount, number); i++) {
- /*
- * A few caps (such as plab_norm) have string-valued parms.
- * We'll have to assume that the caller knows the difference, since
- * a char* and an int may not be the same size on the stack.
- */
- if (p_is_s[i] != 0) {
- p_is_s[i] = va_arg(ap, char *);
- } else {
- param[i] = va_arg(ap, int);
- }
- }
-
- /*
- * This is a termcap compatibility hack. If there are no explicit pop
- * operations in the string, load the stack in such a way that
- * successive pops will grab successive parameters. That will make
- * the expansion of (for example) \E[%d;%dH work correctly in termcap
- * style, which means tparam() will expand termcap strings OK.
- */
- stack_ptr = 0;
- if (popcount == 0) {
- popcount = number;
- for (i = number - 1; i >= 0; i--)
- npush(param[i]);
- }
-#ifdef TRACE
- if (_nc_tracing & TRACE_CALLS) {
- for (i = 0; i < popcount; i++) {
- if (p_is_s[i] != 0)
- save_text(", %s", _nc_visbuf(p_is_s[i]), 0);
- else
- save_number(", %d", param[i], 0);
- }
- _tracef(T_CALLED("%s(%s%s)"), tname, _nc_visbuf(string), out_buff);
- out_used = 0;
- }
-#endif /* TRACE */
-
- while (*string) {
- if (*string != '%') {
- save_char(*string);
- } else {
- string++;
- string = parse_format(string, format, &len);
- switch (*string) {
- default:
- break;
- case '%':
- save_char('%');
- break;
-
- case 'd': /* FALLTHRU */
- case 'o': /* FALLTHRU */
- case 'x': /* FALLTHRU */
- case 'X': /* FALLTHRU */
- case 'c': /* FALLTHRU */
- save_number(format, npop(), len);
- break;
-
- case 'l':
- save_number("%d", strlen(spop()), 0);
- break;
-
- case 's':
- save_text(format, spop(), len);
- break;
-
- case 'p':
- string++;
- i = (*string - '1');
- if (i >= 0 && i < 9) {
- if (p_is_s[i])
- spush(p_is_s[i]);
- else
- npush(param[i]);
- }
- break;
-
- case 'P':
- string++;
- if (isUPPER(*string)) {
- i = (*string - 'A');
- static_vars[i] = npop();
- } else if (isLOWER(*string)) {
- i = (*string - 'a');
- dynamic_var[i] = npop();
- }
- break;
-
- case 'g':
- string++;
- if (isUPPER(*string)) {
- i = (*string - 'A');
- npush(static_vars[i]);
- } else if (isLOWER(*string)) {
- i = (*string - 'a');
- npush(dynamic_var[i]);
- }
- break;
-
- case S_QUOTE:
- string++;
- npush(*string);
- string++;
- break;
-
- case L_BRACE:
- number = 0;
- string++;
- while (*string >= '0' && *string <= '9') {
- number = number * 10 + *string - '0';
- string++;
- }
- npush(number);
- break;
-
- case '+':
- npush(npop() + npop());
- break;
-
- case '-':
- y = npop();
- x = npop();
- npush(x - y);
- break;
-
- case '*':
- npush(npop() * npop());
- break;
-
- case '/':
- y = npop();
- x = npop();
- npush(y ? (x / y) : 0);
- break;
-
- case 'm':
- y = npop();
- x = npop();
- npush(y ? (x % y) : 0);
- break;
-
- case 'A':
- npush(npop() && npop());
- break;
-
- case 'O':
- npush(npop() || npop());
- break;
-
- case '&':
- npush(npop() & npop());
- break;
-
- case '|':
- npush(npop() | npop());
- break;
-
- case '^':
- npush(npop() ^ npop());
- break;
-
- case '=':
- y = npop();
- x = npop();
- npush(x == y);
- break;
-
- case '<':
- y = npop();
- x = npop();
- npush(x < y);
- break;
-
- case '>':
- y = npop();
- x = npop();
- npush(x > y);
- break;
-
- case '!':
- npush(!npop());
- break;
-
- case '~':
- npush(~npop());
- break;
-
- case 'i':
- if (p_is_s[0] == 0)
- param[0]++;
- if (p_is_s[1] == 0)
- param[1]++;
- break;
-
- case '?':
- break;
-
- case 't':
- x = npop();
- if (!x) {
- /* scan forward for %e or %; at level zero */
- string++;
- level = 0;
- while (*string) {
- if (*string == '%') {
- string++;
- if (*string == '?')
- level++;
- else if (*string == ';') {
- if (level > 0)
- level--;
- else
- break;
- } else if (*string == 'e' && level == 0)
- break;
- }
-
- if (*string)
- string++;
- }
- }
- break;
-
- case 'e':
- /* scan forward for a %; at level zero */
- string++;
- level = 0;
- while (*string) {
- if (*string == '%') {
- string++;
- if (*string == '?')
- level++;
- else if (*string == ';') {
- if (level > 0)
- level--;
- else
- break;
- }
- }
-
- if (*string)
- string++;
- }
- break;
-
- case ';':
- break;
-
- } /* endswitch (*string) */
- } /* endelse (*string == '%') */
-
- if (*string == '\0')
- break;
-
- string++;
- } /* endwhile (*string) */
-
- get_space(1);
- out_buff[out_used] = '\0';
-
- T((T_RETURN("%s"), _nc_visbuf(out_buff)));
- return (out_buff);
-}
-
-char *
-tparm(NCURSES_CONST char *string,...)
-{
- va_list ap;
- char *result;
-
- va_start(ap, string);
-#ifdef TRACE
- tname = "tparm";
-#endif /* TRACE */
- result = tparam_internal(string, ap);
- va_end(ap);
- return result;
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_tputs.c b/ncurses-5.2/ncurses/tinfo/lib_tputs.c
deleted file mode 100644
index 8cadc6a..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_tputs.c
+++ /dev/null
@@ -1,324 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * tputs.c
- * delay_output()
- * _nc_outch()
- * tputs()
- *
- */
-
-#include <curses.priv.h>
-#include <ctype.h>
-#include <term.h> /* padding_baud_rate, xon_xoff */
-#include <termcap.h> /* ospeed */
-#include <tic.h>
-
-MODULE_ID("$Id$")
-
-char PC = 0; /* used by termcap library */
-short ospeed = 0; /* used by termcap library */
-
-int _nc_nulls_sent = 0; /* used by 'tack' program */
-
-static int (*my_outch) (int c) = _nc_outch;
-
-int
-delay_output(int ms)
-{
- T((T_CALLED("delay_output(%d)"), ms));
-
- if (no_pad_char) {
- _nc_flush();
- napms(ms);
- } else {
- register int nullcount;
-
- nullcount = (ms * _nc_baudrate(ospeed)) / 10000;
- for (_nc_nulls_sent += nullcount; nullcount > 0; nullcount--)
- my_outch(PC);
- if (my_outch == _nc_outch)
- _nc_flush();
- }
-
- returnCode(OK);
-}
-
-void
-_nc_flush(void)
-{
- (void) fflush(NC_OUTPUT);
-}
-
-int
-_nc_outch(int ch)
-{
-#ifdef TRACE
- _nc_outchars++;
-#endif /* TRACE */
-
- if (SP != 0
- && SP->_cleanup) {
- char tmp = ch;
- /*
- * POSIX says write() is safe in a signal handler, but the
- * buffered I/O is not.
- */
- write(fileno(NC_OUTPUT), &tmp, 1);
- } else {
- putc(ch, NC_OUTPUT);
- }
- return OK;
-}
-
-#if USE_WIDEC_SUPPORT
-/*
- * Reference: The Unicode Standard 2.0
- *
- * No surrogates supported (we're storing only one 16-bit Unicode value per
- * cell).
- */
-int
-_nc_utf8_outch(int ch)
-{
- static const unsigned byteMask = 0xBF;
- static const unsigned otherMark = 0x80;
- static const unsigned firstMark[] =
- {0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC};
-
- int result[7], *ptr;
- int count = 0;
-
- if ((unsigned int) ch < 0x80)
- count = 1;
- else if ((unsigned int) ch < 0x800)
- count = 2;
- else if ((unsigned int) ch < 0x10000)
- count = 3;
- else if ((unsigned int) ch < 0x200000)
- count = 4;
- else if ((unsigned int) ch < 0x4000000)
- count = 5;
- else if ((unsigned int) ch <= 0x7FFFFFFF)
- count = 6;
- else {
- count = 3;
- ch = 0xFFFD;
- }
- ptr = result + count;
- switch (count) {
- case 6:
- *--ptr = (ch | otherMark) & byteMask;
- ch >>= 6;
- /* FALLTHRU */
- case 5:
- *--ptr = (ch | otherMark) & byteMask;
- ch >>= 6;
- /* FALLTHRU */
- case 4:
- *--ptr = (ch | otherMark) & byteMask;
- ch >>= 6;
- /* FALLTHRU */
- case 3:
- *--ptr = (ch | otherMark) & byteMask;
- ch >>= 6;
- /* FALLTHRU */
- case 2:
- *--ptr = (ch | otherMark) & byteMask;
- ch >>= 6;
- /* FALLTHRU */
- case 1:
- *--ptr = (ch | firstMark[count]);
- break;
- }
- while (count--)
- _nc_outch(*ptr++);
- return OK;
-}
-#endif
-
-int
-putp(const char *string)
-{
- return tputs(string, 1, _nc_outch);
-}
-
-int
-tputs(const char *string, int affcnt, int (*outc) (int))
-{
- bool always_delay;
- bool normal_delay;
- int number;
-#if BSD_TPUTS
- int trailpad;
-#endif /* BSD_TPUTS */
-
-#ifdef TRACE
- char addrbuf[32];
-
- if (_nc_tracing & TRACE_TPUTS) {
- if (outc == _nc_outch)
- (void) strcpy(addrbuf, "_nc_outch");
- else
- (void) sprintf(addrbuf, "%p", outc);
- if (_nc_tputs_trace) {
- _tracef("tputs(%s = %s, %d, %s) called", _nc_tputs_trace,
- _nc_visbuf(string), affcnt, addrbuf);
- } else {
- _tracef("tputs(%s, %d, %s) called", _nc_visbuf(string), affcnt, addrbuf);
- }
- _nc_tputs_trace = (char *) NULL;
- }
-#endif /* TRACE */
-
- if (!VALID_STRING(string))
- return ERR;
-
- if (cur_term == 0) {
- always_delay = FALSE;
- normal_delay = TRUE;
- } else {
- always_delay = (string == bell) || (string == flash_screen);
- normal_delay =
- !xon_xoff
- && padding_baud_rate
-#if NCURSES_NO_PADDING
- && (SP == 0 || !(SP->_no_padding))
-#endif
- && (_nc_baudrate(ospeed) >= padding_baud_rate);
- }
-
-#if BSD_TPUTS
- /*
- * This ugly kluge deals with the fact that some ancient BSD programs
- * (like nethack) actually do the likes of tputs("50") to get delays.
- */
- trailpad = 0;
- if (isdigit(*string)) {
- while (isdigit(*string)) {
- trailpad = trailpad * 10 + (*string - '0');
- string++;
- }
- trailpad *= 10;
- if (*string == '.') {
- string++;
- if (isdigit(*string)) {
- trailpad += (*string - '0');
- string++;
- }
- while (isdigit(*string))
- string++;
- }
-
- if (*string == '*') {
- trailpad *= affcnt;
- string++;
- }
- }
-#endif /* BSD_TPUTS */
-
- my_outch = outc; /* redirect delay_output() */
- while (*string) {
- if (*string != '$')
- (*outc) (*string);
- else {
- string++;
- if (*string != '<') {
- (*outc) ('$');
- if (*string)
- (*outc) (*string);
- } else {
- bool mandatory;
-
- string++;
- if ((!isdigit(*string) && *string != '.') || !strchr(string, '>')) {
- (*outc) ('$');
- (*outc) ('<');
- continue;
- }
-
- number = 0;
- while (isdigit(*string)) {
- number = number * 10 + (*string - '0');
- string++;
- }
- number *= 10;
- if (*string == '.') {
- string++;
- if (isdigit(*string)) {
- number += (*string - '0');
- string++;
- }
- while (isdigit(*string))
- string++;
- }
-
- mandatory = FALSE;
- while (*string == '*' || *string == '/') {
- if (*string == '*') {
- number *= affcnt;
- string++;
- } else { /* if (*string == '/') */
- mandatory = TRUE;
- string++;
- }
- }
-
- if (number > 0
- && (always_delay
- || normal_delay
- || mandatory))
- delay_output(number / 10);
-
- } /* endelse (*string == '<') */
- } /* endelse (*string == '$') */
-
- if (*string == '\0')
- break;
-
- string++;
- }
-
-#if BSD_TPUTS
- /*
- * Emit any BSD-style prefix padding that we've accumulated now.
- */
- if (trailpad > 0
- && (always_delay || normal_delay))
- delay_output(trailpad / 10);
-#endif /* BSD_TPUTS */
-
- my_outch = _nc_outch;
- return OK;
-}
diff --git a/ncurses-5.2/ncurses/tinfo/lib_ttyflags.c b/ncurses-5.2/ncurses/tinfo/lib_ttyflags.c
deleted file mode 100644
index 3af19a2..0000000
--- a/ncurses-5.2/ncurses/tinfo/lib_ttyflags.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/*
- * def_prog_mode()
- * def_shell_mode()
- * reset_prog_mode()
- * reset_shell_mode()
- * savetty()
- * resetty()
- */
-
-#include <curses.priv.h>
-#include <term.h> /* cur_term */
-
-MODULE_ID("$Id$")
-
-#undef tabs
-
-#ifdef TAB3
-# define tabs TAB3
-#else
-# ifdef XTABS
-# define tabs XTABS
-# else
-# ifdef OXTABS
-# define tabs OXTABS
-# else
-# define tabs 0
-# endif
-# endif
-#endif
-
-int _nc_get_tty_mode(TTY *buf)
-{
- if (cur_term == 0
- || GET_TTY(cur_term->Filedes, buf) != 0)
- return(ERR);
- TR(TRACE_BITS,("_nc_get_tty_mode: %s", _nc_tracebits()));
- return (OK);
-}
-
-int _nc_set_tty_mode(TTY *buf)
-{
- if (cur_term == 0
- || SET_TTY(cur_term->Filedes, buf) != 0)
- return(ERR);
- TR(TRACE_BITS,("_nc_set_tty_mode: %s", _nc_tracebits()));
- return (OK);
-}
-
-int def_shell_mode(void)
-{
- T((T_CALLED("def_shell_mode()")));
-
- /*
- * Turn off the XTABS bit in the tty structure if it was on. If XTABS
- * was on, remove the tab and backtab capabilities.
- */
-
- if (_nc_get_tty_mode(&cur_term->Ottyb) != OK)
- returnCode(ERR);
-#ifdef TERMIOS
- if (cur_term->Ottyb.c_oflag & tabs)
- tab = back_tab = NULL;
-#else
- if (cur_term->Ottyb.sg_flags & XTABS)
- tab = back_tab = NULL;
-#endif
- returnCode(OK);
-}
-
-int def_prog_mode(void)
-{
- T((T_CALLED("def_prog_mode()")));
-
- if (_nc_get_tty_mode(&cur_term->Nttyb) != OK)
- returnCode(ERR);
-#ifdef TERMIOS
- cur_term->Nttyb.c_oflag &= ~tabs;
-#else
- cur_term->Nttyb.sg_flags &= ~XTABS;
-#endif
- returnCode(OK);
-}
-
-int reset_prog_mode(void)
-{
- T((T_CALLED("reset_prog_mode()")));
-
- if (cur_term != 0) {
- _nc_set_tty_mode(&cur_term->Nttyb);
- if (SP) {
- if (stdscr && stdscr->_use_keypad)
- _nc_keypad(TRUE);
- NC_BUFFERED(TRUE);
- }
- returnCode(OK);
- }
- returnCode(ERR);
-}
-
-int reset_shell_mode(void)
-{
- T((T_CALLED("reset_shell_mode()")));
-
- if (cur_term != 0) {
- if (SP)
- {
- _nc_keypad(FALSE);
- _nc_flush();
- NC_BUFFERED(FALSE);
- }
- returnCode(_nc_set_tty_mode(&cur_term->Ottyb));
- }
- returnCode(ERR);
-}
-
-/*
-** savetty() and resetty()
-**
-*/
-
-static TTY buf;
-
-int savetty(void)
-{
- T((T_CALLED("savetty()")));
-
- returnCode(_nc_get_tty_mode(&buf));
-}
-
-int resetty(void)
-{
- T((T_CALLED("resetty()")));
-
- returnCode(_nc_set_tty_mode(&buf));
-}
diff --git a/ncurses-5.2/ncurses/tinfo/make_keys.c b/ncurses-5.2/ncurses/tinfo/make_keys.c
deleted file mode 100644
index 9903957..0000000
--- a/ncurses-5.2/ncurses/tinfo/make_keys.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1997 *
- ****************************************************************************/
-
-/*
- * This replaces an awk script which translated keys.list into keys.tries by
- * making the output show the indices into the TERMTYPE Strings array. Doing
- * it that way lets us cut down on the size of the init_keytry() function.
- */
-#include <curses.priv.h>
-
-MODULE_ID("$Id$")
-
-#include <names.c>
-
-#define UNKNOWN (SIZEOF(strnames) + SIZEOF(strfnames))
-
-static size_t lookup(const char *name)
-{
- size_t n;
- bool found = FALSE;
- for (n = 0; strnames[n] != 0; n++) {
- if (!strcmp(name, strnames[n])) {
- found = TRUE;
- break;
- }
- }
- if (!found) {
- for (n = 0; strfnames[n] != 0; n++) {
- if (!strcmp(name, strfnames[n])) {
- found = TRUE;
- break;
- }
- }
- }
- return found ? n : UNKNOWN;
-}
-
-static void make_keys(FILE *ifp, FILE *ofp)
-{
- char buffer[BUFSIZ];
- char from[BUFSIZ];
- char to[BUFSIZ];
- int maxlen = 16;
-
- while (fgets(buffer, sizeof(buffer), ifp) != 0) {
- if (*buffer == '#')
- continue;
- if (sscanf(buffer, "%s %s", to, from) == 2) {
- int code = lookup(from);
- if (code == UNKNOWN)
- continue;
- if ((int)strlen(from) > maxlen)
- maxlen = strlen(from);
- fprintf(ofp, "\t{ %4d, %-*.*s },\t/* %s */\n",
- code,
- maxlen, maxlen,
- to,
- from);
- }
- }
-}
-
-static void write_list(FILE *ofp, const char **list)
-{
- while (*list != 0)
- fprintf(ofp, "%s\n", *list++);
-}
-
-int main(int argc, char *argv[])
-{
- static const char *prefix[] = {
- "#ifndef NCU_KEYS_H",
- "#define NCU_KEYS_H 1",
- "",
- "/* This file was generated by MAKE_KEYS */",
- "",
- "#if BROKEN_LINKER",
- "static",
- "#endif",
- "struct tinfo_fkeys _nc_tinfo_fkeys[] = {",
- 0
- };
- static const char *suffix[] = {
- "\t{ 0, 0} };",
- "",
- "#endif /* NCU_KEYS_H */",
- 0
- };
-
- write_list(stdout, prefix);
- if (argc > 1) {
- int n;
- for (n = 1; n < argc; n++) {
- FILE *fp = fopen(argv[n], "r");
- if (fp != 0) {
- make_keys(fp, stdout);
- fclose(fp);
- }
- }
- } else {
- make_keys(stdin, stdout);
- }
- write_list(stdout, suffix);
- return EXIT_SUCCESS;
-}
diff --git a/ncurses-5.2/ncurses/tinfo/name_match.c b/ncurses-5.2/ncurses/tinfo/name_match.c
deleted file mode 100644
index 8785ac4..0000000
--- a/ncurses-5.2/ncurses/tinfo/name_match.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1999 *
- ****************************************************************************/
-
-#include <curses.priv.h>
-#include <term.h>
-#include <tic.h>
-
-MODULE_ID("$Id$")
-
-/*
- * _nc_first_name(char *names)
- *
- * Extract the primary name from a compiled entry.
- */
-
-char *_nc_first_name(const char *const sp)
-/* get the first name from the given name list */
-{
- static char buf[MAX_NAME_SIZE+1];
- register unsigned n;
-
- for (n = 0; n < sizeof(buf)-1; n++) {
- if ((buf[n] = sp[n]) == '\0'
- || (buf[n] == '|'))
- break;
- }
- buf[n] = '\0';
- return(buf);
-}
-
-/*
- * int _nc_name_match(namelist, name, delim)
- *
- * Is the given name matched in namelist?
- */
-
-int _nc_name_match(const char *const namelst, const char *const name, const char *const delim)
-{
- const char *s, *d, *t;
- int code, found;
-
- if ((s = namelst) != 0) {
- while (*s != '\0') {
- for (d = name; *d != '\0'; d++) {
- if (*s != *d)
- break;
- s++;
- }
- found = FALSE;
- for (code = TRUE; *s != '\0'; code = FALSE, s++) {
- for (t = delim; *t != '\0'; t++) {
- if (*s == *t) {
- found = TRUE;
- break;
- }
- }
- if (found)
- break;
- }
- if (code && *d == '\0')
- return code;
- if (*s++ == 0)
- break;
- }
- }
- return FALSE;
-}
diff --git a/ncurses-5.2/ncurses/tinfo/parse_entry.c b/ncurses-5.2/ncurses/tinfo/parse_entry.c
deleted file mode 100644
index 2ec4455..0000000
--- a/ncurses-5.2/ncurses/tinfo/parse_entry.c
+++ /dev/null
@@ -1,952 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * parse_entry.c -- compile one terminfo or termcap entry
- *
- * Get an exact in-core representation of an entry. Don't
- * try to resolve use or tc capabilities, that is someone
- * else's job. Depends on the lexical analyzer to get tokens
- * from the input stream.
- */
-
-#include <curses.priv.h>
-
-#include <ctype.h>
-#include <tic.h>
-#define __INTERNAL_CAPS_VISIBLE
-#include <term_entry.h>
-
-MODULE_ID("$Id$")
-
-#ifdef LINT
-static short const parametrized[] =
-{0};
-#else
-#include <parametrized.h>
-#endif
-
-static void postprocess_termcap(TERMTYPE *, bool);
-static void postprocess_terminfo(TERMTYPE *);
-static struct name_table_entry const *lookup_fullname(const char *name);
-
-#if NCURSES_XNAMES
-
-static struct name_table_entry const *
-_nc_extend_names(ENTRY * entryp, char *name, int token_type)
-{
- static struct name_table_entry temp;
- TERMTYPE *tp = &(entryp->tterm);
- unsigned offset = 0;
- unsigned actual;
- unsigned tindex;
- unsigned first, last, n;
- bool found;
-
- switch (token_type) {
- case BOOLEAN:
- first = 0;
- last = tp->ext_Booleans;
- offset = tp->ext_Booleans;
- tindex = tp->num_Booleans;
- break;
- case NUMBER:
- first = tp->ext_Booleans;
- last = tp->ext_Numbers + first;
- offset = tp->ext_Booleans + tp->ext_Numbers;
- tindex = tp->num_Numbers;
- break;
- case STRING:
- first = tp->ext_Booleans + tp->ext_Numbers;
- last = tp->ext_Strings + first;
- offset = tp->ext_Booleans + tp->ext_Numbers + tp->ext_Strings;
- tindex = tp->num_Strings;
- break;
- case CANCEL:
- actual = NUM_EXT_NAMES(tp);
- for (n = 0; n < actual; n++) {
- if (!strcmp(name, tp->ext_Names[n])) {
- if (n > (unsigned) (tp->ext_Booleans + tp->ext_Numbers)) {
- token_type = STRING;
- } else if (n > tp->ext_Booleans) {
- token_type = NUMBER;
- } else {
- token_type = BOOLEAN;
- }
- return _nc_extend_names(entryp, name, token_type);
- }
- }
- /* Well, we are given a cancel for a name that we don't recognize */
- return _nc_extend_names(entryp, name, STRING);
- default:
- return 0;
- }
-
- /* Adjust the 'offset' (insertion-point) to keep the lists of extended
- * names sorted.
- */
- for (n = first, found = FALSE; n < last; n++) {
- int cmp = strcmp(tp->ext_Names[n], name);
- if (cmp == 0)
- found = TRUE;
- if (cmp >= 0) {
- offset = n;
- tindex = n - first;
- switch (token_type) {
- case BOOLEAN:
- tindex += BOOLCOUNT;
- break;
- case NUMBER:
- tindex += NUMCOUNT;
- break;
- case STRING:
- tindex += STRCOUNT;
- break;
- }
- break;
- }
- }
- if (!found) {
- switch (token_type) {
- case BOOLEAN:
- tp->ext_Booleans += 1;
- tp->num_Booleans += 1;
- tp->Booleans = typeRealloc(char, tp->num_Booleans, tp->Booleans);
- for (last = tp->num_Booleans - 1; last > tindex; last--)
- tp->Booleans[last] = tp->Booleans[last - 1];
- break;
- case NUMBER:
- tp->ext_Numbers += 1;
- tp->num_Numbers += 1;
- tp->Numbers = typeRealloc(short, tp->num_Numbers, tp->Numbers);
- for (last = tp->num_Numbers - 1; last > tindex; last--)
- tp->Numbers[last] = tp->Numbers[last - 1];
- break;
- case STRING:
- tp->ext_Strings += 1;
- tp->num_Strings += 1;
- tp->Strings = typeRealloc(char *, tp->num_Strings, tp->Strings);
- for (last = tp->num_Strings - 1; last > tindex; last--)
- tp->Strings[last] = tp->Strings[last - 1];
- break;
- }
- actual = NUM_EXT_NAMES(tp);
- tp->ext_Names = typeRealloc(char *, actual, tp->ext_Names);
- while (--actual > offset)
- tp->ext_Names[actual] = tp->ext_Names[actual - 1];
- tp->ext_Names[offset] = _nc_save_str(name);
- }
-
- temp.nte_name = tp->ext_Names[offset];
- temp.nte_type = token_type;
- temp.nte_index = tindex;
- temp.nte_link = -1;
-
- return &temp;
-}
-#endif /* NCURSES_XNAMES */
-
-/*
- * int
- * _nc_parse_entry(entry, literal, silent)
- *
- * Compile one entry. Doesn't try to resolve use or tc capabilities.
- *
- * found-forward-use = FALSE
- * re-initialise internal arrays
- * get_token();
- * if the token was not a name in column 1, complain and die
- * save names in entry's string table
- * while (get_token() is not EOF and not NAMES)
- * check for existance and type-correctness
- * enter cap into structure
- * if STRING
- * save string in entry's string table
- * push back token
- */
-
-int
-_nc_parse_entry(struct entry *entryp, int literal, bool silent)
-{
- int token_type;
- struct name_table_entry const *entry_ptr;
- char *ptr, *base;
-
- token_type = _nc_get_token();
-
- if (token_type == EOF)
- return (EOF);
- if (token_type != NAMES)
- _nc_err_abort("Entry does not start with terminal names in column one");
-
- _nc_init_entry(&entryp->tterm);
-
- entryp->cstart = _nc_comment_start;
- entryp->cend = _nc_comment_end;
- entryp->startline = _nc_start_line;
- DEBUG(2, ("Comment range is %ld to %ld", entryp->cstart, entryp->cend));
-
- /* junk the 2-character termcap name, if present */
- ptr = _nc_curr_token.tk_name;
- if (ptr[2] == '|') {
- ptr = _nc_curr_token.tk_name + 3;
- _nc_curr_token.tk_name[2] = '\0';
- }
-
- entryp->tterm.str_table = entryp->tterm.term_names = _nc_save_str(ptr);
-
- DEBUG(1, ("Starting '%s'", ptr));
-
- /*
- * We do this because the one-token lookahead in the parse loop
- * results in the terminal type getting prematurely set to correspond
- * to that of the next entry.
- */
- _nc_set_type(_nc_first_name(entryp->tterm.term_names));
-
- /* check for overly-long names and aliases */
- for (base = entryp->tterm.term_names; (ptr = strchr(base, '|')) != 0;
- base = ptr + 1) {
- if (ptr - base > MAX_ALIAS) {
- _nc_warning("%s `%.*s' may be too long",
- (base == entryp->tterm.term_names)
- ? "primary name"
- : "alias",
- ptr - base, base);
- }
- }
-
- entryp->nuses = 0;
-
- for (token_type = _nc_get_token();
- token_type != EOF && token_type != NAMES;
- token_type = _nc_get_token()) {
- if (strcmp(_nc_curr_token.tk_name, "use") == 0
- || strcmp(_nc_curr_token.tk_name, "tc") == 0) {
- entryp->uses[entryp->nuses].name = _nc_save_str(_nc_curr_token.tk_valstring);
- entryp->uses[entryp->nuses].line = _nc_curr_line;
- entryp->nuses++;
- } else {
- /* normal token lookup */
- entry_ptr = _nc_find_entry(_nc_curr_token.tk_name,
- _nc_syntax ? _nc_cap_hash_table : _nc_info_hash_table);
-
- /*
- * Our kluge to handle aliasing. The reason it's done
- * this ugly way, with a linear search, is so the hashing
- * machinery doesn't have to be made really complicated
- * (also we get better warnings this way). No point in
- * making this case fast, aliased caps aren't common now
- * and will get rarer.
- */
- if (entry_ptr == NOTFOUND) {
- const struct alias *ap;
-
- if (_nc_syntax == SYN_TERMCAP) {
- for (ap = _nc_capalias_table; ap->from; ap++)
- if (strcmp(ap->from, _nc_curr_token.tk_name) == 0) {
- if (ap->to == (char *) 0) {
- _nc_warning("%s (%s termcap extension) ignored",
- ap->from, ap->source);
- goto nexttok;
- }
-
- entry_ptr = _nc_find_entry(ap->to, _nc_cap_hash_table);
- if (entry_ptr && !silent)
- _nc_warning("%s (%s termcap extension) aliased to %s",
- ap->from, ap->source, ap->to);
- break;
- }
- } else { /* if (_nc_syntax == SYN_TERMINFO) */
- for (ap = _nc_infoalias_table; ap->from; ap++)
- if (strcmp(ap->from, _nc_curr_token.tk_name) == 0) {
- if (ap->to == (char *) 0) {
- _nc_warning("%s (%s terminfo extension) ignored",
- ap->from, ap->source);
- goto nexttok;
- }
-
- entry_ptr = _nc_find_entry(ap->to, _nc_info_hash_table);
- if (entry_ptr && !silent)
- _nc_warning("%s (%s terminfo extension) aliased to %s",
- ap->from, ap->source, ap->to);
- break;
- }
-
- if (entry_ptr == NOTFOUND) {
- entry_ptr = lookup_fullname(_nc_curr_token.tk_name);
- }
- }
- }
-#if NCURSES_XNAMES
- /*
- * If we have extended-names active, we will automatically
- * define a name based on its context.
- */
- if (entry_ptr == NOTFOUND
- && _nc_user_definable
- && (entry_ptr = _nc_extend_names(entryp,
- _nc_curr_token.tk_name,
- token_type)) != 0) {
- if (_nc_tracing >= DEBUG_LEVEL(1))
- _nc_warning("extended capability '%s'", _nc_curr_token.tk_name);
- }
-#endif /* NCURSES_XNAMES */
-
- /* can't find this cap name, not even as an alias */
- if (entry_ptr == NOTFOUND) {
- if (!silent)
- _nc_warning("unknown capability '%s'",
- _nc_curr_token.tk_name);
- continue;
- }
-
- /* deal with bad type/value combinations. */
- if (token_type != CANCEL && entry_ptr->nte_type != token_type) {
- /*
- * Nasty special cases here handle situations in which type
- * information can resolve name clashes. Normal lookup
- * finds the last instance in the capability table of a
- * given name, regardless of type. find_type_entry looks
- * for a first matching instance with given type. So as
- * long as all ambiguous names occur in pairs of distinct
- * type, this will do the job.
- */
-
- /* tell max_attributes from arrow_key_map */
- if (token_type == NUMBER && !strcmp("ma", _nc_curr_token.tk_name))
- entry_ptr = _nc_find_type_entry("ma", NUMBER,
- _nc_get_table(_nc_syntax
- != 0));
-
- /* map terminfo's string MT to MT */
- else if (token_type == STRING && !strcmp("MT", _nc_curr_token.tk_name))
- entry_ptr = _nc_find_type_entry("MT", STRING,
- _nc_get_table(_nc_syntax
- != 0));
-
- /* treat strings without following "=" as empty strings */
- else if (token_type == BOOLEAN && entry_ptr->nte_type == STRING)
- token_type = STRING;
- /* we couldn't recover; skip this token */
- else {
- if (!silent) {
- const char *type_name;
- switch (entry_ptr->nte_type) {
- case BOOLEAN:
- type_name = "boolean";
- break;
- case STRING:
- type_name = "string";
- break;
- case NUMBER:
- type_name = "numeric";
- break;
- default:
- type_name = "unknown";
- break;
- }
- _nc_warning("wrong type used for %s capability '%s'",
- type_name, _nc_curr_token.tk_name);
- }
- continue;
- }
- }
-
- /* now we know that the type/value combination is OK */
- switch (token_type) {
- case CANCEL:
- switch (entry_ptr->nte_type) {
- case BOOLEAN:
- entryp->tterm.Booleans[entry_ptr->nte_index] = CANCELLED_BOOLEAN;
- break;
-
- case NUMBER:
- entryp->tterm.Numbers[entry_ptr->nte_index] = CANCELLED_NUMERIC;
- break;
-
- case STRING:
- entryp->tterm.Strings[entry_ptr->nte_index] = CANCELLED_STRING;
- break;
- }
- break;
-
- case BOOLEAN:
- entryp->tterm.Booleans[entry_ptr->nte_index] = TRUE;
- break;
-
- case NUMBER:
- entryp->tterm.Numbers[entry_ptr->nte_index] =
- _nc_curr_token.tk_valnumber;
- break;
-
- case STRING:
- ptr = _nc_curr_token.tk_valstring;
- if (_nc_syntax == SYN_TERMCAP)
- ptr = _nc_captoinfo(_nc_curr_token.tk_name,
- ptr,
- parametrized[entry_ptr->nte_index]);
- entryp->tterm.Strings[entry_ptr->nte_index] = _nc_save_str(ptr);
- break;
-
- default:
- if (!silent)
- _nc_warning("unknown token type");
- _nc_panic_mode((_nc_syntax == SYN_TERMCAP) ? ':' : ',');
- continue;
- }
- } /* end else cur_token.name != "use" */
- nexttok:
- continue; /* cannot have a label w/o statement */
- } /* endwhile (not EOF and not NAMES) */
-
- _nc_push_token(token_type);
- _nc_set_type(_nc_first_name(entryp->tterm.term_names));
-
- /*
- * Try to deduce as much as possible from extension capabilities
- * (this includes obsolete BSD capabilities). Sigh...it would be more
- * space-efficient to call this after use resolution, but it has
- * to be done before entry allocation is wrapped up.
- */
- if (!literal) {
- if (_nc_syntax == SYN_TERMCAP) {
- bool has_base_entry = FALSE;
- int i;
-
- /*
- * Don't insert defaults if this is a `+' entry meant only
- * for inclusion in other entries (not sure termcap ever
- * had these, actually).
- */
- if (strchr(entryp->tterm.term_names, '+'))
- has_base_entry = TRUE;
- else
- /*
- * Otherwise, look for a base entry that will already
- * have picked up defaults via translation.
- */
- for (i = 0; i < entryp->nuses; i++)
- if (!strchr((char *) entryp->uses[i].name, '+'))
- has_base_entry = TRUE;
-
- postprocess_termcap(&entryp->tterm, has_base_entry);
- } else
- postprocess_terminfo(&entryp->tterm);
- }
- _nc_wrap_entry(entryp);
-
- return (OK);
-}
-
-int
-_nc_capcmp(const char *s, const char *t)
-/* compare two string capabilities, stripping out padding */
-{
- if (!s && !t)
- return (0);
- else if (!s || !t)
- return (1);
-
- for (;;) {
- if (s[0] == '$' && s[1] == '<') {
- for (s += 2;; s++)
- if (!(isdigit(*s) || *s == '.' || *s == '*' || *s == '/' ||
- *s == '>'))
- break;
- }
-
- if (t[0] == '$' && t[1] == '<') {
- for (t += 2;; t++)
- if (!(isdigit(*t) || *t == '.' || *t == '*' || *t == '/' ||
- *t == '>'))
- break;
- }
-
- /* we've now pushed s and t past any padding they were pointing at */
-
- if (*s == '\0' && *t == '\0')
- return (0);
-
- if (*s != *t)
- return (*t - *s);
-
- /* else *s == *t but one is not NUL, so continue */
- s++, t++;
- }
-}
-
-static void
-append_acs0(string_desc *dst, int code, int src)
-{
- if (src != 0) {
- char temp[3];
- temp[0] = code;
- temp[1] = src;
- temp[2] = 0;
- _nc_safe_strcat(dst, temp);
- }
-}
-
-static void
-append_acs(string_desc *dst, int code, char *src)
-{
- if (src != 0 && strlen(src) == 1) {
- append_acs0(dst, code, *src);
- }
-}
-
-/*
- * The ko capability, if present, consists of a comma-separated capability
- * list. For each capability, we may assume there is a keycap that sends the
- * string which is the value of that capability.
- */
-typedef struct {
- const char *from;
- const char *to;
-} assoc;
-static assoc const ko_xlate[] =
-{
- {"al", "kil1"}, /* insert line key -> KEY_IL */
- {"bt", "kcbt"}, /* back tab -> KEY_BTAB */
- {"cd", "ked"}, /* clear-to-eos key -> KEY_EOL */
- {"ce", "kel"}, /* clear-to-eol key -> KEY_EOS */
- {"cl", "kclr"}, /* clear key -> KEY_CLEAR */
- {"ct", "tbc"}, /* clear all tabs -> KEY_CATAB */
- {"dc", "kdch1"}, /* delete char -> KEY_DC */
- {"dl", "kdl1"}, /* delete line -> KEY_DL */
- {"do", "kcud1"}, /* down key -> KEY_DOWN */
- {"ei", "krmir"}, /* exit insert key -> KEY_EIC */
- {"ho", "khome"}, /* home key -> KEY_HOME */
- {"ic", "kich1"}, /* insert char key -> KEY_IC */
- {"im", "kIC"}, /* insert-mode key -> KEY_SIC */
- {"le", "kcub1"}, /* le key -> KEY_LEFT */
- {"nd", "kcuf1"}, /* nd key -> KEY_RIGHT */
- {"nl", "kent"}, /* new line key -> KEY_ENTER */
- {"st", "khts"}, /* set-tab key -> KEY_STAB */
- {"ta", CANCELLED_STRING},
- {"up", "kcuu1"}, /* up-arrow key -> KEY_UP */
- {(char *) 0, (char *) 0},
-};
-
-/*
- * This routine fills in string caps that either had defaults under
- * termcap or can be manufactured from obsolete termcap capabilities.
- * It was lifted from Ross Ridge's mytinfo package.
- */
-
-static const char C_CR[] = "\r";
-static const char C_LF[] = "\n";
-static const char C_BS[] = "\b";
-static const char C_HT[] = "\t";
-
-/*
- * Note that WANTED and PRESENT are not simple inverses! If a capability
- * has been explicitly cancelled, it's not considered WANTED.
- */
-#define WANTED(s) ((s) == ABSENT_STRING)
-#define PRESENT(s) (((s) != ABSENT_STRING) && ((s) != CANCELLED_STRING))
-
-/*
- * This bit of legerdemain turns all the terminfo variable names into
- * references to locations in the arrays Booleans, Numbers, and Strings ---
- * precisely what's needed.
- */
-
-#undef CUR
-#define CUR tp->
-
-static void
-postprocess_termcap(TERMTYPE * tp, bool has_base)
-{
- char buf[MAX_LINE * 2 + 2];
- string_desc result;
-
- /*
- * TERMCAP DEFAULTS AND OBSOLETE-CAPABILITY TRANSLATIONS
- *
- * This first part of the code is the functional inverse of the
- * fragment in capdefaults.c.
- * ----------------------------------------------------------------------
- */
-
- /* if there was a tc entry, assume we picked up defaults via that */
- if (!has_base) {
- if (WANTED(init_3string) && termcap_init2)
- init_3string = _nc_save_str(termcap_init2);
-
- if (WANTED(reset_2string) && termcap_reset)
- reset_2string = _nc_save_str(termcap_reset);
-
- if (WANTED(carriage_return)) {
- if (carriage_return_delay > 0) {
- sprintf(buf, "%s$<%d>", C_CR, carriage_return_delay);
- carriage_return = _nc_save_str(buf);
- } else
- carriage_return = _nc_save_str(C_CR);
- }
- if (WANTED(cursor_left)) {
- if (backspace_delay > 0) {
- sprintf(buf, "%s$<%d>", C_BS, backspace_delay);
- cursor_left = _nc_save_str(buf);
- } else if (backspaces_with_bs == 1)
- cursor_left = _nc_save_str(C_BS);
- else if (PRESENT(backspace_if_not_bs))
- cursor_left = backspace_if_not_bs;
- }
- /* vi doesn't use "do", but it does seems to use nl (or '\n') instead */
- if (WANTED(cursor_down)) {
- if (PRESENT(linefeed_if_not_lf))
- cursor_down = linefeed_if_not_lf;
- else if (linefeed_is_newline != 1) {
- if (new_line_delay > 0) {
- sprintf(buf, "%s$<%d>", C_LF, new_line_delay);
- cursor_down = _nc_save_str(buf);
- } else
- cursor_down = _nc_save_str(C_LF);
- }
- }
- if (WANTED(scroll_forward) && crt_no_scrolling != 1) {
- if (PRESENT(linefeed_if_not_lf))
- cursor_down = linefeed_if_not_lf;
- else if (linefeed_is_newline != 1) {
- if (new_line_delay > 0) {
- sprintf(buf, "%s$<%d>", C_LF, new_line_delay);
- scroll_forward = _nc_save_str(buf);
- } else
- scroll_forward = _nc_save_str(C_LF);
- }
- }
- if (WANTED(newline)) {
- if (linefeed_is_newline == 1) {
- if (new_line_delay > 0) {
- sprintf(buf, "%s$<%d>", C_LF, new_line_delay);
- newline = _nc_save_str(buf);
- } else
- newline = _nc_save_str(C_LF);
- } else if (PRESENT(carriage_return) && PRESENT(scroll_forward)) {
- _nc_str_init(&result, buf, sizeof(buf));
- if (_nc_safe_strcat(&result, carriage_return)
- && _nc_safe_strcat(&result, scroll_forward))
- newline = _nc_save_str(buf);
- } else if (PRESENT(carriage_return) && PRESENT(cursor_down)) {
- _nc_str_init(&result, buf, sizeof(buf));
- if (_nc_safe_strcat(&result, carriage_return)
- && _nc_safe_strcat(&result, cursor_down))
- newline = _nc_save_str(buf);
- }
- }
- }
-
- /*
- * Inverse of capdefaults.c code ends here.
- * ----------------------------------------------------------------------
- *
- * TERMCAP-TO TERMINFO MAPPINGS FOR SOURCE TRANSLATION
- *
- * These translations will *not* be inverted by tgetent().
- */
-
- if (!has_base) {
- /*
- * We wait until now to decide if we've got a working cr because even
- * one that doesn't work can be used for newline. Unfortunately the
- * space allocated for it is wasted.
- */
- if (return_does_clr_eol == 1 || no_correctly_working_cr == 1)
- carriage_return = ABSENT_STRING;
-
- /*
- * Supposedly most termcap entries have ta now and '\t' is no longer a
- * default, but it doesn't seem to be true...
- */
- if (WANTED(tab)) {
- if (horizontal_tab_delay > 0) {
- sprintf(buf, "%s$<%d>", C_HT, horizontal_tab_delay);
- tab = _nc_save_str(buf);
- } else
- tab = _nc_save_str(C_HT);
- }
- if (init_tabs == ABSENT_NUMERIC && has_hardware_tabs == TRUE)
- init_tabs = 8;
-
- /*
- * Assume we can beep with ^G unless we're given bl@.
- */
- if (WANTED(bell))
- bell = _nc_save_str("\007");
- }
-
- /*
- * Translate the old termcap :pt: capability to it#8 + ht=\t
- */
- if (has_hardware_tabs == TRUE) {
- if (init_tabs != 8 && init_tabs != ABSENT_NUMERIC)
- _nc_warning("hardware tabs with a width other than 8: %d", init_tabs);
- else {
- if (tab && _nc_capcmp(tab, C_HT))
- _nc_warning("hardware tabs with a non-^I tab string %s",
- _nc_visbuf(tab));
- else {
- if (WANTED(tab))
- tab = _nc_save_str(C_HT);
- init_tabs = 8;
- }
- }
- }
- /*
- * Now translate the ko capability, if there is one. This
- * isn't from mytinfo...
- */
- if (PRESENT(other_non_function_keys)) {
- char *base = other_non_function_keys;
- char *bp, *cp, *dp;
- struct name_table_entry const *from_ptr;
- struct name_table_entry const *to_ptr;
- assoc const *ap;
- char buf2[MAX_TERMINFO_LENGTH];
- bool foundim;
-
- /* we're going to use this for a special case later */
- dp = strchr(other_non_function_keys, 'i');
- foundim = (dp != 0) && (dp[1] == 'm');
-
- /* look at each comma-separated capability in the ko string... */
- for (base = other_non_function_keys;
- (cp = strchr(base, ',')) != 0;
- base = cp + 1) {
- size_t len = cp - base;
-
- for (ap = ko_xlate; ap->from; ap++)
- if (len == strlen(ap->from)
- && strncmp(ap->from, base, len) == 0)
- break;
- if (!ap->to) {
- _nc_warning("unknown capability `%.*s' in ko string",
- (int) len, base);
- continue;
- } else if (ap->to == CANCELLED_STRING) /* ignore it */
- continue;
-
- /* now we know we found a match in ko_table, so... */
-
- from_ptr = _nc_find_entry(ap->from, _nc_cap_hash_table);
- to_ptr = _nc_find_entry(ap->to, _nc_info_hash_table);
-
- if (!from_ptr || !to_ptr) /* should never happen! */
- _nc_err_abort("ko translation table is invalid, I give up");
-
- if (WANTED(tp->Strings[from_ptr->nte_index])) {
- _nc_warning("no value for ko capability %s", ap->from);
- continue;
- }
-
- if (tp->Strings[to_ptr->nte_index]) {
- /* There's no point in warning about it if it's the same
- * string; that's just an inefficiency.
- */
- if (strcmp(
- tp->Strings[from_ptr->nte_index],
- tp->Strings[to_ptr->nte_index]) != 0)
- _nc_warning("%s (%s) already has an explicit value %s, ignoring ko",
- ap->to, ap->from,
- _nc_visbuf(tp->Strings[to_ptr->nte_index]));
- continue;
- }
-
- /*
- * The magic moment -- copy the mapped key string over,
- * stripping out padding.
- */
- for (dp = buf2, bp = tp->Strings[from_ptr->nte_index]; *bp; bp++) {
- if (bp[0] == '$' && bp[1] == '<') {
- while (*bp && *bp != '>') {
- ++bp;
- }
- } else
- *dp++ = *bp;
- }
- *dp++ = '\0';
-
- tp->Strings[to_ptr->nte_index] = _nc_save_str(buf2);
- }
-
- /*
- * Note: ko=im and ko=ic both want to grab the `Insert'
- * keycap. There's a kich1 but no ksmir, so the ic capability
- * got mapped to kich1 and im to kIC to avoid a collision.
- * If the description has im but not ic, hack kIC back to kich1.
- */
- if (foundim && WANTED(key_ic) && key_sic) {
- key_ic = key_sic;
- key_sic = ABSENT_STRING;
- }
- }
-
- if (!hard_copy) {
- if (WANTED(key_backspace))
- key_backspace = _nc_save_str(C_BS);
- if (WANTED(key_left))
- key_left = _nc_save_str(C_BS);
- if (WANTED(key_down))
- key_down = _nc_save_str(C_LF);
- }
-
- /*
- * Translate XENIX forms characters.
- */
- if (PRESENT(acs_ulcorner) ||
- PRESENT(acs_llcorner) ||
- PRESENT(acs_urcorner) ||
- PRESENT(acs_lrcorner) ||
- PRESENT(acs_ltee) ||
- PRESENT(acs_rtee) ||
- PRESENT(acs_btee) ||
- PRESENT(acs_ttee) ||
- PRESENT(acs_hline) ||
- PRESENT(acs_vline) ||
- PRESENT(acs_plus)) {
- char buf2[MAX_TERMCAP_LENGTH];
-
- _nc_str_init(&result, buf2, sizeof(buf2));
- _nc_safe_strcat(&result, acs_chars);
-
- append_acs (&result, 'j', acs_lrcorner);
- append_acs (&result, 'k', acs_urcorner);
- append_acs (&result, 'l', acs_ulcorner);
- append_acs (&result, 'm', acs_llcorner);
- append_acs (&result, 'n', acs_plus);
- append_acs (&result, 'q', acs_hline);
- append_acs (&result, 't', acs_ltee);
- append_acs (&result, 'u', acs_rtee);
- append_acs (&result, 'v', acs_btee);
- append_acs (&result, 'w', acs_ttee);
- append_acs (&result, 'x', acs_vline);
-
- if (buf2[0]) {
- acs_chars = _nc_save_str(buf2);
- _nc_warning("acsc string synthesized from XENIX capabilities");
- }
- } else if (acs_chars == 0
- && enter_alt_charset_mode != 0
- && exit_alt_charset_mode != 0) {
- acs_chars =
- _nc_save_str("``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~");
- }
-}
-
-static void
-postprocess_terminfo(TERMTYPE * tp)
-{
- /*
- * TERMINFO-TO-TERMINFO MAPPINGS FOR SOURCE TRANSLATION
- * ----------------------------------------------------------------------
- */
-
- /*
- * Translate AIX forms characters.
- */
- if (PRESENT(box_chars_1)) {
- char buf2[MAX_TERMCAP_LENGTH];
- string_desc result;
-
- _nc_str_init(&result, buf2, sizeof(buf2));
- _nc_safe_strcat(&result, acs_chars);
-
- append_acs0 (&result, 'l', box_chars_1[0]); /* ACS_ULCORNER */
- append_acs0 (&result, 'q', box_chars_1[1]); /* ACS_HLINE */
- append_acs0 (&result, 'k', box_chars_1[2]); /* ACS_URCORNER */
- append_acs0 (&result, 'x', box_chars_1[3]); /* ACS_VLINE */
- append_acs0 (&result, 'j', box_chars_1[4]); /* ACS_LRCORNER */
- append_acs0 (&result, 'm', box_chars_1[5]); /* ACS_LLCORNER */
- append_acs0 (&result, 'w', box_chars_1[6]); /* ACS_TTEE */
- append_acs0 (&result, 'u', box_chars_1[7]); /* ACS_RTEE */
- append_acs0 (&result, 'v', box_chars_1[8]); /* ACS_BTEE */
- append_acs0 (&result, 't', box_chars_1[9]); /* ACS_LTEE */
- append_acs0 (&result, 'n', box_chars_1[10]); /* ACS_PLUS */
-
- if (buf2[0]) {
- acs_chars = _nc_save_str(buf2);
- _nc_warning("acsc string synthesized from AIX capabilities");
- box_chars_1 = ABSENT_STRING;
- }
- }
- /*
- * ----------------------------------------------------------------------
- */
-}
-
-/*
- * Do a linear search through the terminfo tables to find a given full-name.
- * We don't expect to do this often, so there's no hashing function.
- *
- * In effect, this scans through the 3 lists of full-names, and looks them
- * up in _nc_info_table, which is organized so that the nte_index fields are
- * sorted, but the nte_type fields are not necessarily grouped together.
- */
-static struct name_table_entry const *
-lookup_fullname(const char *find)
-{
- int state = -1;
-
- for (;;) {
- int count = 0;
- NCURSES_CONST char *const *names;
-
- switch (++state) {
- case BOOLEAN:
- names = boolfnames;
- break;
- case STRING:
- names = strfnames;
- break;
- case NUMBER:
- names = numfnames;
- break;
- default:
- return NOTFOUND;
- }
-
- for (count = 0; names[count] != 0; count++) {
- if (!strcmp(names[count], find)) {
- struct name_table_entry const *entry_ptr = _nc_get_table(FALSE);
- while (entry_ptr->nte_type != state
- || entry_ptr->nte_index != count)
- entry_ptr++;
- return entry_ptr;
- }
- }
- }
-}
-
-/* parse_entry.c ends here */
diff --git a/ncurses-5.2/ncurses/tinfo/read_entry.c b/ncurses-5.2/ncurses/tinfo/read_entry.c
deleted file mode 100644
index 75d52e2..0000000
--- a/ncurses-5.2/ncurses/tinfo/read_entry.c
+++ /dev/null
@@ -1,501 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * read_entry.c -- Routine for reading in a compiled terminfo file
- *
- */
-
-#include <curses.priv.h>
-
-#include <tic.h>
-#include <term_entry.h>
-
-MODULE_ID("$Id$")
-
-#if !HAVE_TELL
-#define tell(fd) 0 /* lseek() is POSIX, but not tell() - odd... */
-#endif
-
-/*
- * int
- * _nc_read_file_entry(filename, ptr)
- *
- * Read the compiled terminfo entry in the given file into the
- * structure pointed to by ptr, allocating space for the string
- * table.
- */
-
-#undef BYTE
-#define BYTE(p,n) (unsigned char)((p)[n])
-
-#define IS_NEG1(p) ((BYTE(p,0) == 0377) && (BYTE(p,1) == 0377))
-#define IS_NEG2(p) ((BYTE(p,0) == 0376) && (BYTE(p,1) == 0377))
-#define LOW_MSB(p) (BYTE(p,0) + 256*BYTE(p,1))
-
-static bool have_tic_directory = FALSE;
-static bool keep_tic_directory = FALSE;
-
-/*
- * Record the "official" location of the terminfo directory, according to
- * the place where we're writing to, or the normal default, if not.
- */
-const char *
-_nc_tic_dir(const char *path)
-{
- static const char *result = TERMINFO;
-
- if (!keep_tic_directory) {
- if (path != 0) {
- result = path;
- have_tic_directory = TRUE;
- } else if (!have_tic_directory && use_terminfo_vars()) {
- char *envp;
- if ((envp = getenv("TERMINFO")) != 0)
- return _nc_tic_dir(envp);
- }
- }
- return result;
-}
-
-/*
- * Special fix to prevent the terminfo directory from being moved after tic
- * has chdir'd to it. If we let it be changed, then if $TERMINFO has a
- * relative path, we'll lose track of the actual directory.
- */
-void
-_nc_keep_tic_dir(const char *path)
-{
- _nc_tic_dir(path);
- keep_tic_directory = TRUE;
-}
-
-static void
-convert_shorts(char *buf, short *Numbers, int count)
-{
- int i;
- for (i = 0; i < count; i++) {
- if (IS_NEG1(buf + 2 * i))
- Numbers[i] = ABSENT_NUMERIC;
- else if (IS_NEG2(buf + 2 * i))
- Numbers[i] = CANCELLED_NUMERIC;
- else
- Numbers[i] = LOW_MSB(buf + 2 * i);
- TR(TRACE_DATABASE, ("get Numbers[%d]=%d", i, Numbers[i]));
- }
-}
-
-static void
-convert_strings(char *buf, char **Strings, int count, int size, char *table)
-{
- int i;
- char *p;
-
- for (i = 0; i < count; i++) {
- if (IS_NEG1(buf + 2 * i)) {
- Strings[i] = ABSENT_STRING;
- } else if (IS_NEG2(buf + 2 * i)) {
- Strings[i] = CANCELLED_STRING;
- } else if (LOW_MSB(buf + 2 * i) > size) {
- Strings[i] = ABSENT_STRING;
- } else {
- Strings[i] = (LOW_MSB(buf + 2 * i) + table);
- TR(TRACE_DATABASE, ("Strings[%d] = %s", i, _nc_visbuf(Strings[i])));
- }
-
- /* make sure all strings are NUL terminated */
- if (VALID_STRING(Strings[i])) {
- for (p = Strings[i]; p <= table + size; p++)
- if (*p == '\0')
- break;
- /* if there is no NUL, ignore the string */
- if (p > table + size)
- Strings[i] = ABSENT_STRING;
- }
- }
-}
-
-#define read_shorts(fd, buf, count) (read(fd, buf, (count)*2) == (count)*2)
-
-#define even_boundary(value) \
- if ((value) % 2 != 0) read(fd, buf, 1)
-
-static int
-read_termtype(int fd, TERMTYPE * ptr)
-/* return 1 if read, 0 if not found or garbled */
-{
- int name_size, bool_count, num_count, str_count, str_size;
- int i;
- char buf[MAX_ENTRY_SIZE];
-
- TR(TRACE_DATABASE, ("READ termtype header @%d", tell(fd)));
-
- memset(ptr, 0, sizeof(*ptr));
-
- /* grab the header */
- if (!read_shorts(fd, buf, 6)
- || LOW_MSB(buf) != MAGIC) {
- return (0);
- }
-
- _nc_free_termtype(ptr);
- name_size = LOW_MSB(buf + 2);
- bool_count = LOW_MSB(buf + 4);
- num_count = LOW_MSB(buf + 6);
- str_count = LOW_MSB(buf + 8);
- str_size = LOW_MSB(buf + 10);
-
- TR(TRACE_DATABASE,
- ("TERMTYPE name_size=%d, bool=%d/%d, num=%d/%d str=%d/%d(%d)",
- name_size, bool_count, BOOLCOUNT, num_count, NUMCOUNT,
- str_count, STRCOUNT, str_size));
- if (name_size < 0
- || bool_count < 0
- || num_count < 0
- || str_count < 0
- || str_size < 0) {
- return (0);
- }
-
- if (str_size) {
- /* try to allocate space for the string table */
- if (str_count * 2 >= (int) sizeof(buf)
- || (ptr->str_table = typeMalloc(char, (unsigned) str_size)) == 0) {
- return (0);
- }
- } else {
- str_count = 0;
- }
-
- /* grab the name (a null-terminate string) */
- read(fd, buf, min(MAX_NAME_SIZE, (unsigned) name_size));
- buf[MAX_NAME_SIZE] = '\0';
- ptr->term_names = typeCalloc(char, strlen(buf) + 1);
- if (ptr->term_names == NULL) {
- return (0);
- }
- (void) strcpy(ptr->term_names, buf);
- if (name_size > MAX_NAME_SIZE)
- lseek(fd, (off_t) (name_size - MAX_NAME_SIZE), 1);
-
- /* grab the booleans */
- if ((ptr->Booleans = typeCalloc(char, max(BOOLCOUNT, bool_count))) == 0
- || read(fd, ptr->Booleans, (unsigned) bool_count) < bool_count) {
- return (0);
- }
-
- /*
- * If booleans end on an odd byte, skip it. The machine they
- * originally wrote terminfo on must have been a 16-bit
- * word-oriented machine that would trap out if you tried a
- * word access off a 2-byte boundary.
- */
- even_boundary(name_size + bool_count);
-
- /* grab the numbers */
- if ((ptr->Numbers = typeCalloc(short, max(NUMCOUNT, num_count))) == 0
- || !read_shorts(fd, buf, num_count)) {
- return (0);
- }
- convert_shorts(buf, ptr->Numbers, num_count);
-
- if ((ptr->Strings = typeCalloc(char *, max(STRCOUNT, str_count))) == 0)
- return (0);
-
- if (str_count) {
- /* grab the string offsets */
- if (!read_shorts(fd, buf, str_count)) {
- return (0);
- }
- /* finally, grab the string table itself */
- if (read(fd, ptr->str_table, (unsigned) str_size) != str_size)
- return (0);
- convert_strings(buf, ptr->Strings, str_count, str_size, ptr->str_table);
- }
-#if NCURSES_XNAMES
-
- ptr->num_Booleans = BOOLCOUNT;
- ptr->num_Numbers = NUMCOUNT;
- ptr->num_Strings = STRCOUNT;
-
- /*
- * Read extended entries, if any, after the normal end of terminfo data.
- */
- even_boundary(str_size);
- TR(TRACE_DATABASE, ("READ extended_header @%d", tell(fd)));
- if (_nc_user_definable && read_shorts(fd, buf, 5)) {
- int ext_bool_count = LOW_MSB(buf + 0);
- int ext_num_count = LOW_MSB(buf + 2);
- int ext_str_count = LOW_MSB(buf + 4);
- int ext_str_size = LOW_MSB(buf + 6);
- int ext_str_limit = LOW_MSB(buf + 8);
- int need = (ext_bool_count + ext_num_count + ext_str_count);
- int base = 0;
-
- if (need >= (int) sizeof(buf)
- || ext_str_size >= (int) sizeof(buf)
- || ext_str_limit >= (int) sizeof(buf)
- || ext_bool_count < 0
- || ext_num_count < 0
- || ext_str_count < 0
- || ext_str_size < 0
- || ext_str_limit < 0)
- return (0);
-
- ptr->num_Booleans = BOOLCOUNT + ext_bool_count;
- ptr->num_Numbers = NUMCOUNT + ext_num_count;
- ptr->num_Strings = STRCOUNT + ext_str_count;
-
- ptr->Booleans = typeRealloc(char, ptr->num_Booleans, ptr->Booleans);
- ptr->Numbers = typeRealloc(short, ptr->num_Numbers, ptr->Numbers);
- ptr->Strings = typeRealloc(char *, ptr->num_Strings, ptr->Strings);
-
- TR(TRACE_DATABASE, ("extended header is %d/%d/%d(%d:%d)",
- ext_bool_count, ext_num_count, ext_str_count,
- ext_str_size, ext_str_limit));
-
- TR(TRACE_DATABASE, ("READ %d extended-booleans @%d",
- ext_bool_count, tell(fd)));
- if ((ptr->ext_Booleans = ext_bool_count) != 0) {
- if (read(fd, ptr->Booleans + BOOLCOUNT, (unsigned)
- ext_bool_count) != ext_bool_count)
- return (0);
- }
- even_boundary(ext_bool_count);
-
- TR(TRACE_DATABASE, ("READ %d extended-numbers @%d",
- ext_num_count, tell(fd)));
- if ((ptr->ext_Numbers = ext_num_count) != 0) {
- if (!read_shorts(fd, buf, ext_num_count))
- return (0);
- TR(TRACE_DATABASE, ("Before converting extended-numbers"));
- convert_shorts(buf, ptr->Numbers + NUMCOUNT, ext_num_count);
- }
-
- TR(TRACE_DATABASE, ("READ extended-offsets @%d", tell(fd)));
- if ((ext_str_count || need)
- && !read_shorts(fd, buf, ext_str_count + need))
- return (0);
-
- TR(TRACE_DATABASE, ("READ %d bytes of extended-strings @%d",
- ext_str_limit, tell(fd)));
-
- if (ext_str_limit) {
- if ((ptr->ext_str_table = typeMalloc(char, ext_str_limit)) == 0)
- return (0);
- if (read(fd, ptr->ext_str_table, ext_str_limit) != ext_str_limit)
- return (0);
- TR(TRACE_DATABASE, ("first extended-string is %s", _nc_visbuf(ptr->ext_str_table)));
- }
-
- if ((ptr->ext_Strings = ext_str_count) != 0) {
- TR(TRACE_DATABASE,
- ("Before computing extended-string capabilities str_count=%d, ext_str_count=%d",
- str_count, ext_str_count));
- convert_strings(buf, ptr->Strings + str_count, ext_str_count,
- ext_str_limit, ptr->ext_str_table);
- for (i = ext_str_count - 1; i >= 0; i--) {
- TR(TRACE_DATABASE, ("MOVE from [%d:%d] %s",
- i, i + str_count,
- _nc_visbuf(ptr->Strings[i + str_count])));
- ptr->Strings[i + STRCOUNT] = ptr->Strings[i + str_count];
- if (VALID_STRING(ptr->Strings[i + STRCOUNT]))
- base += (strlen(ptr->Strings[i + STRCOUNT]) + 1);
- TR(TRACE_DATABASE, ("... to [%d] %s",
- i + STRCOUNT,
- _nc_visbuf(ptr->Strings[i + STRCOUNT])));
- }
- }
-
- if (need) {
- if ((ptr->ext_Names = typeCalloc(char *, need)) == 0)
- return (0);
- TR(TRACE_DATABASE,
- ("ext_NAMES starting @%d in extended_strings, first = %s",
- base, _nc_visbuf(ptr->ext_str_table + base)));
- convert_strings(buf + (2 * ext_str_count), ptr->ext_Names, need,
- ext_str_limit, ptr->ext_str_table + base);
- }
-
- T(("...done reading terminfo bool %d(%d) num %d(%d) str %d(%d)",
- ptr->num_Booleans, ptr->ext_Booleans,
- ptr->num_Numbers, ptr->ext_Numbers,
- ptr->num_Strings, ptr->ext_Strings));
-
- TR(TRACE_DATABASE, ("extend: num_Booleans:%d", ptr->num_Booleans));
- } else
-#endif /* NCURSES_XNAMES */
- {
- T(("...done reading terminfo bool %d num %d str %d",
- bool_count, num_count, str_count));
-#if NCURSES_XNAMES
- TR(TRACE_DATABASE, ("normal: num_Booleans:%d", ptr->num_Booleans));
-#endif
- }
-
- for (i = bool_count; i < BOOLCOUNT; i++)
- ptr->Booleans[i] = FALSE;
- for (i = num_count; i < NUMCOUNT; i++)
- ptr->Numbers[i] = ABSENT_NUMERIC;
- for (i = str_count; i < STRCOUNT; i++)
- ptr->Strings[i] = ABSENT_STRING;
-
- return (1);
-}
-
-int
-_nc_read_file_entry(const char *const filename, TERMTYPE * ptr)
-/* return 1 if read, 0 if not found or garbled */
-{
- int code, fd = -1;
-
- if (_nc_access(filename, R_OK) < 0
- || (fd = open(filename, O_RDONLY | O_BINARY)) < 0) {
- T(("cannot open terminfo %s (errno=%d)", filename, errno));
- return (0);
- }
-
- T(("read terminfo %s", filename));
- if ((code = read_termtype(fd, ptr)) == 0)
- _nc_free_termtype(ptr);
- close(fd);
-
- return (code);
-}
-
-/*
- * Build a terminfo pathname and try to read the data. Returns 1 on success,
- * 0 on failure.
- */
-static int
-_nc_read_tic_entry(char *const filename,
- const char *const dir, const char *ttn, TERMTYPE * const tp)
-{
-/* maximum safe length of terminfo root directory name */
-#define MAX_TPATH (PATH_MAX - MAX_ALIAS - 6)
-
- if (strlen(dir) > MAX_TPATH)
- return 0;
- (void) sprintf(filename, "%s/%s", dir, ttn);
- return _nc_read_file_entry(filename, tp);
-}
-
-/*
- * Process the list of :-separated directories, looking for the terminal type.
- * We don't use strtok because it does not show us empty tokens.
- */
-static int
-_nc_read_terminfo_dirs(const char *dirs, char *const filename, const char *const
- ttn, TERMTYPE * const tp)
-{
- char *list, *a;
- const char *b;
- int code = 0;
-
- /* we'll modify the argument, so we must copy */
- if ((b = a = list = strdup(dirs)) == NULL)
- return (0);
-
- for (;;) {
- int c = *a;
- if (c == 0 || c == ':') {
- *a = 0;
- if ((b + 1) >= a)
- b = TERMINFO;
- if (_nc_read_tic_entry(filename, b, ttn, tp) == 1) {
- code = 1;
- break;
- }
- b = a + 1;
- if (c == 0)
- break;
- }
- a++;
- }
-
- free(list);
- return (code);
-}
-
-/*
- * _nc_read_entry(char *tn, char *filename, TERMTYPE *tp)
- *
- * Find and read the compiled entry for a given terminal type,
- * if it exists. We take pains here to make sure no combination
- * of environment variables and terminal type name can be used to
- * overrun the file buffer.
- */
-
-int
-_nc_read_entry(const char *const tn, char *const filename, TERMTYPE * const tp)
-{
- char *envp;
- char ttn[MAX_ALIAS + 3];
-
- /* truncate the terminal name to prevent dangerous buffer airline */
- (void) sprintf(ttn, "%c/%.*s", *tn, MAX_ALIAS, tn);
-
- /* This is System V behavior, in conjunction with our requirements for
- * writing terminfo entries.
- */
- if (have_tic_directory
- && _nc_read_tic_entry(filename, _nc_tic_dir(0), ttn, tp) == 1)
- return 1;
-
- if (use_terminfo_vars()) {
- if ((envp = getenv("TERMINFO")) != 0
- && _nc_read_tic_entry(filename, _nc_tic_dir(envp), ttn, tp) == 1)
- return 1;
-
- /* this is an ncurses extension */
- if ((envp = _nc_home_terminfo()) != 0) {
- if (_nc_read_tic_entry(filename, envp, ttn, tp) == 1) {
- return (1);
- }
- }
-
- /* this is an ncurses extension */
- if ((envp = getenv("TERMINFO_DIRS")) != 0)
- return _nc_read_terminfo_dirs(envp, filename, ttn, tp);
- }
-
- /* Try the system directory. Note that the TERMINFO_DIRS value, if
- * defined by the configure script, begins with a ":", which will be
- * interpreted as TERMINFO.
- */
-#ifdef TERMINFO_DIRS
- return _nc_read_terminfo_dirs(TERMINFO_DIRS, filename, ttn, tp);
-#else
- return _nc_read_tic_entry(filename, TERMINFO, ttn, tp);
-#endif
-}
diff --git a/ncurses-5.2/ncurses/tinfo/read_termcap.c b/ncurses-5.2/ncurses/tinfo/read_termcap.c
deleted file mode 100644
index 55029d2..0000000
--- a/ncurses-5.2/ncurses/tinfo/read_termcap.c
+++ /dev/null
@@ -1,1111 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * Termcap compatibility support
- *
- * If your OS integrator didn't install a terminfo database, you can call
- * _nc_read_termcap_entry() to support reading and translating capabilities
- * from the system termcap file. This is a kludge; it will bulk up and slow
- * down every program that uses ncurses, and translated termcap entries cannot
- * use full terminfo capabilities. Don't use it unless you absolutely have to;
- * instead, get your system people to run tic(1) from root on the terminfo
- * master included with ncurses to translate it into a terminfo database.
- *
- * If USE_GETCAP is enabled, we use what is effectively a copy of the 4.4BSD
- * getcap code to fetch entries. There are disadvantages to this; mainly that
- * getcap(3) does its own resolution, meaning that entries read in in this way
- * can't reference the terminfo tree. The only thing it buys is faster startup
- * time, getcap(3) is much faster than our tic parser.
- */
-
-#include <curses.priv.h>
-
-#include <ctype.h>
-#include <tic.h>
-#include <term_entry.h>
-
-MODULE_ID("$Id$")
-
-#if !PURE_TERMINFO
-
-#ifdef __EMX__
-#define is_pathname(s) ((((s) != 0) && ((s)[0] == '/')) \
- || (((s)[0] != 0) && ((s)[1] == ':')))
-#else
-#define is_pathname(s) ((s) != 0 && (s)[0] == '/')
-#endif
-
-#define TC_SUCCESS 0
-#define TC_UNRESOLVED -1
-#define TC_NOT_FOUND -2
-#define TC_SYS_ERR -3
-#define TC_REF_LOOP -4
-
-#if USE_GETCAP
-
-#if HAVE_BSD_CGETENT
-#define _nc_cgetcap cgetcap
-#define _nc_cgetent(buf, oline, db_array, name) cgetent(buf, db_array, name)
-#define _nc_cgetmatch cgetmatch
-#define _nc_cgetset cgetset
-#else
-static int _nc_cgetmatch(char *, const char *);
-static int _nc_getent(char **, unsigned *, int *, int, char **, int, const char
- *, int, char *);
-static int _nc_nfcmp(const char *, char *);
-
-/*-
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Casey Leedom of Lawrence Livermore National Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgment:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/* static char sccsid[] = "@(#)getcap.c 8.3 (Berkeley) 3/25/94"; */
-
-#define BFRAG 1024
-#define BSIZE 1024
-#define ESC ('[' & 037) /* ASCII ESC */
-#define MAX_RECURSION 32 /* maximum getent recursion */
-#define SFRAG 100 /* cgetstr mallocs in SFRAG chunks */
-
-#define RECOK (char)0
-#define TCERR (char)1
-#define SHADOW (char)2
-
-static size_t topreclen; /* toprec length */
-static char *toprec; /* Additional record specified by cgetset() */
-static int gottoprec; /* Flag indicating retrieval of toprecord */
-
-/*
- * Cgetset() allows the addition of a user specified buffer to be added to the
- * database array, in effect "pushing" the buffer on top of the virtual
- * database. 0 is returned on success, -1 on failure.
- */
-static int
-_nc_cgetset(const char *ent)
-{
- if (ent == 0) {
- FreeIfNeeded(toprec);
- toprec = 0;
- topreclen = 0;
- return (0);
- }
- topreclen = strlen(ent);
- if ((toprec = typeMalloc(char, topreclen + 1)) == 0) {
- errno = ENOMEM;
- return (-1);
- }
- gottoprec = 0;
- (void) strcpy(toprec, ent);
- return (0);
-}
-
-/*
- * Cgetcap searches the capability record buf for the capability cap with type
- * `type'. A pointer to the value of cap is returned on success, 0 if the
- * requested capability couldn't be found.
- *
- * Specifying a type of ':' means that nothing should follow cap (:cap:). In
- * this case a pointer to the terminating ':' or NUL will be returned if cap is
- * found.
- *
- * If (cap, '@') or (cap, terminator, '@') is found before (cap, terminator)
- * return 0.
- */
-static char *
-_nc_cgetcap(char *buf, const char *cap, int type)
-{
- register const char *cp;
- register char *bp;
-
- bp = buf;
- for (;;) {
- /*
- * Skip past the current capability field - it's either the
- * name field if this is the first time through the loop, or
- * the remainder of a field whose name failed to match cap.
- */
- for (;;) {
- if (*bp == '\0')
- return (0);
- else if (*bp++ == ':')
- break;
- }
-
- /*
- * Try to match (cap, type) in buf.
- */
- for (cp = cap; *cp == *bp && *bp != '\0'; cp++, bp++)
- continue;
- if (*cp != '\0')
- continue;
- if (*bp == '@')
- return (0);
- if (type == ':') {
- if (*bp != '\0' && *bp != ':')
- continue;
- return (bp);
- }
- if (*bp != type)
- continue;
- bp++;
- return (*bp == '@' ? 0 : bp);
- }
- /* NOTREACHED */
-}
-
-/*
- * Cgetent extracts the capability record name from the NULL terminated file
- * array db_array and returns a pointer to a malloc'd copy of it in buf. Buf
- * must be retained through all subsequent calls to cgetcap, cgetnum, cgetflag,
- * and cgetstr, but may then be freed.
- *
- * Returns:
- *
- * positive # on success (i.e., the index in db_array)
- * TC_UNRESOLVED if we had too many recurrences to resolve
- * TC_NOT_FOUND if the requested record couldn't be found
- * TC_SYS_ERR if a system error was encountered (e.g.,couldn't open a file)
- * TC_REF_LOOP if a potential reference loop is detected
- */
-static int
-_nc_cgetent(char **buf, int *oline, char **db_array, const char *name)
-{
- unsigned dummy;
-
- return (_nc_getent(buf, &dummy, oline, 0, db_array, -1, name, 0, 0));
-}
-
-/*
- * Getent implements the functions of cgetent. If fd is non-negative,
- * *db_array has already been opened and fd is the open file descriptor. We
- * do this to save time and avoid using up file descriptors for tc=
- * recursions.
- *
- * Getent returns the same success/failure codes as cgetent. On success, a
- * pointer to a malloc'd capability record with all tc= capabilities fully
- * expanded and its length (not including trailing ASCII NUL) are left in
- * *cap and *len.
- *
- * Basic algorithm:
- * + Allocate memory incrementally as needed in chunks of size BFRAG
- * for capability buffer.
- * + Recurse for each tc=name and interpolate result. Stop when all
- * names interpolated, a name can't be found, or depth exceeds
- * MAX_RECURSION.
- */
-#define DOALLOC(size) typeRealloc(char, size, record)
-static int
-_nc_getent(
- char **cap, /* termcap-content */
- unsigned *len, /* length, needed for recursion */
- int *beginning, /* line-number at match */
- int in_array, /* index in 'db_array[] */
- char **db_array, /* list of files to search */
- int fd,
- const char *name,
- int depth,
- char *nfield)
-{
- register char *r_end, *rp;
- int myfd = FALSE;
- char *record = 0;
- int tc_not_resolved;
- int current;
- int lineno;
-
- /*
- * Return with ``loop detected'' error if we've recurred more than
- * MAX_RECURSION times.
- */
- if (depth > MAX_RECURSION)
- return (TC_REF_LOOP);
-
- /*
- * Check if we have a top record from cgetset().
- */
- if (depth == 0 && toprec != 0 && _nc_cgetmatch(toprec, name) == 0) {
- if ((record = DOALLOC(topreclen + BFRAG)) == 0) {
- errno = ENOMEM;
- return (TC_SYS_ERR);
- }
- (void) strcpy(record, toprec);
- rp = record + topreclen + 1;
- r_end = rp + BFRAG;
- current = in_array;
- } else {
- int foundit;
-
- /*
- * Allocate first chunk of memory.
- */
- if ((record = DOALLOC(BFRAG)) == 0) {
- errno = ENOMEM;
- return (TC_SYS_ERR);
- }
- rp = r_end = record + BFRAG;
- foundit = FALSE;
-
- /*
- * Loop through database array until finding the record.
- */
- for (current = in_array; db_array[current] != 0; current++) {
- int eof = FALSE;
-
- /*
- * Open database if not already open.
- */
- if (fd >= 0) {
- (void) lseek(fd, (off_t) 0, SEEK_SET);
- } else if ((_nc_access(db_array[current], R_OK) < 0)
- || (fd = open(db_array[current], O_RDONLY, 0)) < 0) {
- /* No error on unfound file. */
- if (errno == ENOENT)
- continue;
- free(record);
- return (TC_SYS_ERR);
- } else {
- myfd = TRUE;
- }
- lineno = 0;
-
- /*
- * Find the requested capability record ...
- */
- {
- char buf[2048];
- register char *b_end = buf;
- register char *bp = buf;
- register int c;
-
- /*
- * Loop invariants:
- * There is always room for one more character in record.
- * R_end always points just past end of record.
- * Rp always points just past last character in record.
- * B_end always points just past last character in buf.
- * Bp always points at next character in buf.
- */
-
- for (;;) {
- int first = lineno + 1;
-
- /*
- * Read in a line implementing (\, newline)
- * line continuation.
- */
- rp = record;
- for (;;) {
- if (bp >= b_end) {
- int n;
-
- n = read(fd, buf, sizeof(buf));
- if (n <= 0) {
- if (myfd)
- (void) close(fd);
- if (n < 0) {
- free(record);
- return (TC_SYS_ERR);
- }
- fd = -1;
- eof = TRUE;
- break;
- }
- b_end = buf + n;
- bp = buf;
- }
-
- c = *bp++;
- if (c == '\n') {
- lineno++;
- if (rp == record || *(rp - 1) != '\\')
- break;
- }
- *rp++ = c;
-
- /*
- * Enforce loop invariant: if no room
- * left in record buffer, try to get
- * some more.
- */
- if (rp >= r_end) {
- unsigned pos;
- size_t newsize;
-
- pos = rp - record;
- newsize = r_end - record + BFRAG;
- record = DOALLOC(newsize);
- if (record == 0) {
- if (myfd)
- (void) close(fd);
- errno = ENOMEM;
- return (TC_SYS_ERR);
- }
- r_end = record + newsize;
- rp = record + pos;
- }
- }
- /* loop invariant lets us do this */
- *rp++ = '\0';
-
- /*
- * If encountered eof check next file.
- */
- if (eof)
- break;
-
- /*
- * Toss blank lines and comments.
- */
- if (*record == '\0' || *record == '#')
- continue;
-
- /*
- * See if this is the record we want ...
- */
- if (_nc_cgetmatch(record, name) == 0
- && (nfield == 0
- || !_nc_nfcmp(nfield, record))) {
- foundit = TRUE;
- *beginning = first;
- break; /* found it! */
- }
- }
- }
- if (foundit)
- break;
- }
-
- if (!foundit)
- return (TC_NOT_FOUND);
- }
-
- /*
- * Got the capability record, but now we have to expand all tc=name
- * references in it ...
- */
- {
- register char *newicap, *s;
- register int newilen;
- unsigned ilen;
- int diff, iret, tclen, oline;
- char *icap, *scan, *tc, *tcstart, *tcend;
-
- /*
- * Loop invariants:
- * There is room for one more character in record.
- * R_end points just past end of record.
- * Rp points just past last character in record.
- * Scan points at remainder of record that needs to be
- * scanned for tc=name constructs.
- */
- scan = record;
- tc_not_resolved = FALSE;
- for (;;) {
- if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0)
- break;
-
- /*
- * Find end of tc=name and stomp on the trailing `:'
- * (if present) so we can use it to call ourselves.
- */
- s = tc;
- while (*s != '\0') {
- if (*s++ == ':') {
- *(s - 1) = '\0';
- break;
- }
- }
- tcstart = tc - 3;
- tclen = s - tcstart;
- tcend = s;
-
- iret = _nc_getent(&icap, &ilen, &oline, current, db_array, fd,
- tc, depth + 1, 0);
- newicap = icap; /* Put into a register. */
- newilen = ilen;
- if (iret != TC_SUCCESS) {
- /* an error */
- if (iret < TC_NOT_FOUND) {
- if (myfd)
- (void) close(fd);
- free(record);
- return (iret);
- }
- if (iret == TC_UNRESOLVED)
- tc_not_resolved = TRUE;
- /* couldn't resolve tc */
- if (iret == TC_NOT_FOUND) {
- *(s - 1) = ':';
- scan = s - 1;
- tc_not_resolved = TRUE;
- continue;
- }
- }
-
- /* not interested in name field of tc'ed record */
- s = newicap;
- while (*s != '\0' && *s++ != ':') ;
- newilen -= s - newicap;
- newicap = s;
-
- /* make sure interpolated record is `:'-terminated */
- s += newilen;
- if (*(s - 1) != ':') {
- *s = ':'; /* overwrite NUL with : */
- newilen++;
- }
-
- /*
- * Make sure there's enough room to insert the
- * new record.
- */
- diff = newilen - tclen;
- if (diff >= r_end - rp) {
- unsigned pos, tcpos, tcposend;
- size_t newsize;
-
- pos = rp - record;
- newsize = r_end - record + diff + BFRAG;
- tcpos = tcstart - record;
- tcposend = tcend - record;
- record = DOALLOC(newsize);
- if (record == 0) {
- if (myfd)
- (void) close(fd);
- free(icap);
- errno = ENOMEM;
- return (TC_SYS_ERR);
- }
- r_end = record + newsize;
- rp = record + pos;
- tcstart = record + tcpos;
- tcend = record + tcposend;
- }
-
- /*
- * Insert tc'ed record into our record.
- */
- s = tcstart + newilen;
- memmove(s, tcend, (size_t) (rp - tcend));
- memmove(tcstart, newicap, (size_t) newilen);
- rp += diff;
- free(icap);
-
- /*
- * Start scan on `:' so next cgetcap works properly
- * (cgetcap always skips first field).
- */
- scan = s - 1;
- }
- }
-
- /*
- * Close file (if we opened it), give back any extra memory, and
- * return capability, length and success.
- */
- if (myfd)
- (void) close(fd);
- *len = rp - record - 1; /* don't count NUL */
- if (r_end > rp) {
- if ((record = DOALLOC((size_t) (rp - record))) == 0) {
- errno = ENOMEM;
- return (TC_SYS_ERR);
- }
- }
-
- *cap = record;
- if (tc_not_resolved)
- return (TC_UNRESOLVED);
- return (current);
-}
-
-/*
- * Cgetmatch will return 0 if name is one of the names of the capability
- * record buf, -1 if not.
- */
-static int
-_nc_cgetmatch(char *buf, const char *name)
-{
- register const char *np;
- register char *bp;
-
- /*
- * Start search at beginning of record.
- */
- bp = buf;
- for (;;) {
- /*
- * Try to match a record name.
- */
- np = name;
- for (;;) {
- if (*np == '\0') {
- if (*bp == '|' || *bp == ':' || *bp == '\0')
- return (0);
- else
- break;
- } else if (*bp++ != *np++) {
- break;
- }
- }
-
- /*
- * Match failed, skip to next name in record.
- */
- bp--; /* a '|' or ':' may have stopped the match */
- for (;;) {
- if (*bp == '\0' || *bp == ':')
- return (-1); /* match failed totally */
- else if (*bp++ == '|')
- break; /* found next name */
- }
- }
-}
-
-/*
- * Compare name field of record.
- */
-static int
-_nc_nfcmp(const char *nf, char *rec)
-{
- char *cp, tmp;
- int ret;
-
- for (cp = rec; *cp != ':'; cp++) ;
-
- tmp = *(cp + 1);
- *(cp + 1) = '\0';
- ret = strcmp(nf, rec);
- *(cp + 1) = tmp;
-
- return (ret);
-}
-#endif /* HAVE_BSD_CGETENT */
-
-/*
- * Since ncurses provides its own 'tgetent()', we cannot use the native one.
- * So we reproduce the logic to get down to cgetent() -- or our cut-down
- * version of that -- to circumvent the problem of configuring against the
- * termcap library.
- */
-#define USE_BSD_TGETENT 1
-
-#if USE_BSD_TGETENT
-/*
- * Copyright (c) 1980, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgment:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/* static char sccsid[] = "@(#)termcap.c 8.1 (Berkeley) 6/4/93" */
-
-#define PBUFSIZ 512 /* max length of filename path */
-#define PVECSIZ 32 /* max number of names in path */
-#define TBUFSIZ (2048*2)
-
-static char *tbuf;
-
-/*
- * On entry, srcp points to a non ':' character which is the beginning of the
- * token, if any. We'll try to return a string that doesn't end with a ':'.
- */
-static char *
-get_tc_token(char **srcp, int *endp)
-{
- int ch;
- bool found = FALSE;
- char *s, *base;
- char *tok = 0;
-
- *endp = TRUE;
- for (s = base = *srcp; *s != '\0';) {
- ch = *s++;
- if (ch == '\\') {
- if (*s == '\0') {
- break;
- } else if (*s++ == '\n') {
- while (isspace(*s))
- s++;
- } else {
- found = TRUE;
- }
- } else if (ch == ':') {
- if (found) {
- tok = base;
- s[-1] = '\0';
- *srcp = s;
- *endp = FALSE;
- break;
- }
- base = s;
- } else if (isgraph(ch)) {
- found = TRUE;
- }
- }
-
- /* malformed entry may end without a ':' */
- if (tok == 0 && found) {
- tok = base;
- }
-
- return tok;
-}
-
-static char *
-copy_tc_token(char *dst, const char *src, size_t len)
-{
- int ch;
-
- while ((ch = *src++) != '\0') {
- if (ch == '\\' && *src == '\n') {
- while (isspace(*src))
- src++;
- continue;
- }
- if (--len == 0) {
- dst = 0;
- break;
- }
- *dst++ = ch;
- }
- return dst;
-}
-
-/*
- * Get an entry for terminal name in buffer bp from the termcap file.
- */
-static int
-_nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
-{
- static char *the_source;
-
- register char *p;
- register char *cp;
- char *dummy = NULL;
- char **fname;
- char *home;
- int i;
- char pathbuf[PBUFSIZ]; /* holds raw path of filenames */
- char *pathvec[PVECSIZ]; /* to point to names in pathbuf */
- char **pvec; /* holds usable tail of path vector */
- char *termpath;
- string_desc desc;
-
- fname = pathvec;
- pvec = pathvec;
- tbuf = bp;
- p = pathbuf;
- cp = use_terminfo_vars() ? getenv("TERMCAP") : NULL;
-
- /*
- * TERMCAP can have one of two things in it. It can be the name of a file
- * to use instead of /etc/termcap. In this case it better start with a
- * "/". Or it can be an entry to use so we don't have to read the file.
- * In this case it has to already have the newlines crunched out. If
- * TERMCAP does not hold a file name then a path of names is searched
- * instead. The path is found in the TERMPATH variable, or becomes
- * "$HOME/.termcap /etc/termcap" if no TERMPATH exists.
- */
- _nc_str_init(&desc, pathbuf, sizeof(pathbuf));
- if (cp == NULL) {
- _nc_safe_strcpy(&desc, "/etc/termcap /usr/share/misc/termcap");
- } else if (!is_pathname(cp)) { /* TERMCAP holds an entry */
- if ((termpath = getenv("TERMPATH")) != 0) {
- _nc_safe_strcat(&desc, termpath);
- } else {
- char temp[PBUFSIZ];
- temp[0] = 0;
- if ((home = getenv("HOME")) != 0 && *home != '\0'
- && strchr(home, ' ') == 0
- && strlen(home) < sizeof(temp) - 10) { /* setup path */
- sprintf(temp, "%s/", home); /* $HOME first */
- }
- /* if no $HOME look in current directory */
- strcat(temp, ".termcap");
- _nc_safe_strcat(&desc, temp);
- _nc_safe_strcat(&desc, " /etc/termcap");
- _nc_safe_strcat(&desc, " /usr/share/misc/termcap");
- }
- } else { /* user-defined name in TERMCAP */
- _nc_safe_strcat(&desc, cp); /* still can be tokenized */
- }
-
- *fname++ = pathbuf; /* tokenize path into vector of names */
- while (*++p) {
- if (*p == ' ' || *p == ':') {
- *p = '\0';
- while (*++p)
- if (*p != ' ' && *p != ':')
- break;
- if (*p == '\0')
- break;
- *fname++ = p;
- if (fname >= pathvec + PVECSIZ) {
- fname--;
- break;
- }
- }
- }
- *fname = 0; /* mark end of vector */
- if (is_pathname(cp)) {
- if (_nc_cgetset(cp) < 0) {
- return (TC_SYS_ERR);
- }
- }
-
- i = _nc_cgetent(&dummy, lineno, pathvec, name);
-
- /* ncurses' termcap-parsing routines cannot handle multiple adjacent
- * empty fields, and mistakenly use the last valid cap entry instead of
- * the first (breaks tc= includes)
- */
- if (i >= 0) {
- char *pd, *ps, *tok;
- int endflag = FALSE;
- char *list[1023];
- size_t n, count = 0;
-
- pd = bp;
- ps = dummy;
- while (!endflag && (tok = get_tc_token(&ps, &endflag)) != 0) {
- bool ignore = FALSE;
-
- for (n = 1; n < count; n++) {
- char *s = list[n];
- if (s[0] == tok[0]
- && s[1] == tok[1]) {
- ignore = TRUE;
- break;
- }
- }
- if (ignore != TRUE) {
- list[count++] = tok;
- pd = copy_tc_token(pd, tok, TBUFSIZ - (2 + pd - bp));
- if (pd == 0) {
- i = -1;
- break;
- }
- *pd++ = ':';
- *pd = '\0';
- }
- }
- }
-
- FreeIfNeeded(dummy);
- FreeIfNeeded(the_source);
- the_source = 0;
-
- /* This is not related to the BSD cgetent(), but to fake up a suitable
- * filename for ncurses' error reporting. (If we are not using BSD
- * cgetent, then it is the actual filename).
- */
- if (i >= 0) {
- if ((the_source = strdup(pathvec[i])) != 0)
- *sourcename = the_source;
- }
-
- return (i);
-}
-#endif /* USE_BSD_TGETENT */
-#endif /* USE_GETCAP */
-
-#define MAXPATHS 32
-
-/*
- * Add a filename to the list in 'termpaths[]', checking that we really have
- * a right to open the file.
- */
-#if !USE_GETCAP
-static int
-add_tc(char *termpaths[], char *path, int count)
-{
- if (count < MAXPATHS
- && _nc_access(path, R_OK) == 0)
- termpaths[count++] = path;
- termpaths[count] = 0;
- return count;
-}
-#define ADD_TC(path, count) filecount = add_tc(termpaths, path, count)
-#endif /* !USE_GETCAP */
-
-int
-_nc_read_termcap_entry(const char *const tn, TERMTYPE * const tp)
-{
- int found = FALSE;
- ENTRY *ep;
-#if USE_GETCAP_CACHE
- char cwd_buf[PATH_MAX];
-#endif
-#if USE_GETCAP
- char *p, tc[TBUFSIZ];
- static char *source;
- static int lineno;
-
- if (use_terminfo_vars() && (p = getenv("TERMCAP")) != 0
- && !is_pathname(p) && _nc_name_match(p, tn, "|:")) {
- /* TERMCAP holds a termcap entry */
- strncpy(tc, p, sizeof(tc) - 1);
- tc[sizeof(tc) - 1] = '\0';
- _nc_set_source("TERMCAP");
- } else {
- /* we're using getcap(3) */
- if (_nc_tgetent(tc, &source, &lineno, tn) < 0)
- return (ERR);
-
- _nc_curr_line = lineno;
- _nc_set_source(source);
- }
- _nc_read_entry_source((FILE *) 0, tc, FALSE, FALSE, NULLHOOK);
-#else
- /*
- * Here is what the 4.4BSD termcap(3) page prescribes:
- *
- * It will look in the environment for a TERMCAP variable. If found, and
- * the value does not begin with a slash, and the terminal type name is the
- * same as the environment string TERM, the TERMCAP string is used instead
- * of reading a termcap file. If it does begin with a slash, the string is
- * used as a path name of the termcap file to search. If TERMCAP does not
- * begin with a slash and name is different from TERM, tgetent() searches
- * the files $HOME/.termcap and /usr/share/misc/termcap, in that order,
- * unless the environment variable TERMPATH exists, in which case it
- * specifies a list of file pathnames (separated by spaces or colons) to be
- * searched instead.
- *
- * It goes on to state:
- *
- * Whenever multiple files are searched and a tc field occurs in the
- * requested entry, the entry it names must be found in the same file or
- * one of the succeeding files.
- *
- * However, this restriction is relaxed in ncurses; tc references to
- * previous files are permitted.
- *
- * This routine returns 1 if an entry is found, 0 if not found, and -1 if
- * the database is not accessible.
- */
- FILE *fp;
- char *tc, *termpaths[MAXPATHS];
- int filecount = 0;
- bool use_buffer = FALSE;
- char tc_buf[1024];
- char pathbuf[PATH_MAX];
-
- termpaths[filecount] = 0;
- if (use_terminfo_vars() && (tc = getenv("TERMCAP")) != 0) {
- if (is_pathname(tc)) { /* interpret as a filename */
- ADD_TC(tc, 0);
- } else if (_nc_name_match(tc, tn, "|:")) { /* treat as a capability file */
- use_buffer = TRUE;
- (void) sprintf(tc_buf, "%.*s\n", (int) sizeof(tc_buf) - 2, tc);
- } else if ((tc = getenv("TERMPATH")) != 0) {
- char *cp;
-
- for (cp = tc; *cp; cp++) {
- if (*cp == ':')
- *cp = '\0';
- else if (cp == tc || cp[-1] == '\0') {
- ADD_TC(cp, filecount);
- }
- }
- }
- } else { /* normal case */
- char envhome[PATH_MAX], *h;
-
- filecount = 0;
-
- /*
- * Probably /etc/termcap is a symlink to /usr/share/misc/termcap.
- * Avoid reading the same file twice.
- */
- if (_nc_access("/etc/termcap", F_OK) == 0)
- ADD_TC("/etc/termcap", filecount);
- else
- ADD_TC("/usr/share/misc/termcap", filecount);
-
-#define PRIVATE_CAP "%s/.termcap"
-
- if ((h = getenv("HOME")) != NULL && *h != '\0'
- && (strlen(h) + sizeof(PRIVATE_CAP)) < PATH_MAX) {
- /* user's .termcap, if any, should override it */
- (void) strcpy(envhome, h);
- (void) sprintf(pathbuf, PRIVATE_CAP, envhome);
- ADD_TC(pathbuf, filecount);
- }
- }
-
- /* parse the sources */
- if (use_buffer) {
- _nc_set_source("TERMCAP");
-
- /*
- * We don't suppress warning messages here. The presumption is
- * that since it's just a single entry, they won't be a pain.
- */
- _nc_read_entry_source((FILE *) 0, tc_buf, FALSE, FALSE, NULLHOOK);
- } else {
- int i;
-
- for (i = 0; i < filecount; i++) {
-
- T(("Looking for %s in %s", tn, termpaths[i]));
- if ((fp = fopen(termpaths[i], "r")) != (FILE *) 0) {
- _nc_set_source(termpaths[i]);
-
- /*
- * Suppress warning messages. Otherwise you get 400 lines of
- * crap from archaic termcap files as ncurses complains about
- * all the obsolete capabilities.
- */
- _nc_read_entry_source(fp, (char *) 0, FALSE, TRUE, NULLHOOK);
-
- (void) fclose(fp);
- }
- }
- }
-#endif /* USE_GETCAP */
-
- if (_nc_head == 0)
- return (ERR);
-
- /* resolve all use references */
- _nc_resolve_uses(TRUE);
-
- /* find a terminal matching tn, if we can */
-#if USE_GETCAP_CACHE
- if (getcwd(cwd_buf, sizeof(cwd_buf)) != 0) {
- _nc_set_writedir((char *) 0); /* note: this does a chdir */
-#endif
- for_entry_list(ep) {
- if (_nc_name_match(ep->tterm.term_names, tn, "|:")) {
- /*
- * Make a local copy of the terminal capabilities. Free all
- * entry storage except the string table for the loaded type
- * (which we disconnected from the list by NULLing out
- * ep->tterm.str_table above).
- */
- *tp = ep->tterm;
- ep->tterm.str_table = (char *) 0;
-
- /*
- * OK, now try to write the type to user's terminfo directory.
- * Next time he loads this, it will come through terminfo.
- *
- * Advantage: Second and subsequent fetches of this entry will
- * be very fast.
- *
- * Disadvantage: After the first time a termcap type is loaded
- * by its user, editing it in the /etc/termcap file, or in
- * TERMCAP, or in a local ~/.termcap, will be ineffective
- * unless the terminfo entry is explicitly removed.
- */
-#if USE_GETCAP_CACHE
- (void) _nc_write_entry(tp);
-#endif
- found = TRUE;
- break;
- }
- }
-#if USE_GETCAP_CACHE
- chdir(cwd_buf);
- }
-#endif
-
- _nc_free_entries(_nc_head);
- return (found);
-}
-#else
-extern void _nc_read_termcap(void);
-void
-_nc_read_termcap(void)
-{
-}
-#endif /* PURE_TERMINFO */
diff --git a/ncurses-5.2/ncurses/tinfo/setbuf.c b/ncurses-5.2/ncurses/tinfo/setbuf.c
deleted file mode 100644
index 5d70d78..0000000
--- a/ncurses-5.2/ncurses/tinfo/setbuf.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-
-
-/*
-** setbuf.c
-**
-** Support for set_term(), reset_shell_mode(), reset_prog_mode().
-**
-*/
-
-#include <curses.priv.h>
-
-MODULE_ID("$Id$")
-
-/*
- * If the output file descriptor is connected to a tty (the typical case) it
- * will probably be line-buffered. Keith Bostic pointed out that we don't want
- * this; it hoses people running over networks by forcing out a bunch of small
- * packets instead of one big one, so screen updates on ptys look jerky.
- * Restore block buffering to prevent this minor lossage.
- *
- * The buffer size is a compromise. Ideally we'd like a buffer that can hold
- * the maximum possible update size (the whole screen plus cup commands to
- * change lines as it's painted). On a 66-line xterm this can become
- * excessive. So we min it with the amount of data we think we can get through
- * two Ethernet packets (maximum packet size - 100 for TCP/IP overhead).
- *
- * Why two ethernet packets? It used to be one, on the theory that said
- * packets define the maximum size of atomic update. But that's less than the
- * 2000 chars on a 25 x 80 screen, and we don't want local updates to flicker
- * either. Two packet lengths will handle up to a 35 x 80 screen.
- *
- * The magic '6' is the estimated length of the end-of-line cup sequence to go
- * to the next line. It's generous. We used to mess with the buffering in
- * init_mvcur() after cost computation, but that lost the sequences emitted by
- * init_acs() in setupscreen().
- *
- * "The setvbuf function may be used only after the stream pointed to by stream
- * has been associated with an open file and before any other operation is
- * performed on the stream." (ISO 7.9.5.6.)
- *
- * Grrrr...
- *
- * On a lighter note, many implementations do in fact allow an application to
- * reset the buffering after it has been written to. We try to do this because
- * otherwise we leave stdout in buffered mode after endwin() is called. (This
- * also happens with SVr4 curses).
- *
- * There are pros/cons:
- *
- * con:
- * There is no guarantee that we can reestablish buffering once we've
- * dropped it.
- *
- * We _may_ lose data if the implementation does not coordinate this with
- * fflush.
- *
- * pro:
- * An implementation is more likely to refuse to change the buffering than
- * to do it in one of the ways mentioned above.
- *
- * The alternative is to have the application try to change buffering
- * itself, which is certainly no improvement.
- *
- * Just in case it does not work well on a particular system, the calls to
- * change buffering are all via the macro NC_BUFFERED. Some implementations
- * do indeed get confused by changing setbuf on/off, and will overrun the
- * buffer. So we disable this by default (there may yet be a workaround).
- */
-void _nc_set_buffer(FILE *ofp, bool buffered)
-{
- /* optional optimization hack -- do before any output to ofp */
-#if HAVE_SETVBUF || HAVE_SETBUFFER
- unsigned buf_len;
- char *buf_ptr;
-
- if (getenv("NCURSES_NO_SETBUF") != 0)
- return;
-
- fflush(ofp);
- if ((SP->_buffered = buffered) != 0) {
- buf_len = min(LINES * (COLS + 6), 2800);
- if ((buf_ptr = SP->_setbuf) == 0) {
- if ((buf_ptr = typeMalloc(char, buf_len)) == NULL)
- return;
- SP->_setbuf = buf_ptr;
- /* Don't try to free this! */
- }
-#if !USE_SETBUF_0
- else return;
-#endif
- } else {
-#if !USE_SETBUF_0
- return;
-#else
- buf_len = 0;
- buf_ptr = 0;
-#endif
- }
-
-#if HAVE_SETVBUF
-#ifdef SETVBUF_REVERSED /* pre-svr3? */
- (void) setvbuf(ofp, buf_ptr, buf_len, buf_len ? _IOFBF : _IOLBF);
-#else
- (void) setvbuf(ofp, buf_ptr, buf_len ? _IOFBF : _IOLBF, buf_len);
-#endif
-#elif HAVE_SETBUFFER
- (void) setbuffer(ofp, buf_ptr, (int)buf_len);
-#endif
-
-#endif /* HAVE_SETVBUF || HAVE_SETBUFFER */
-}
diff --git a/ncurses-5.2/ncurses/tinfo/strings.c b/ncurses-5.2/ncurses/tinfo/strings.c
deleted file mode 100644
index 8198ec4..0000000
--- a/ncurses-5.2/ncurses/tinfo/strings.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Thomas E. Dickey *
- ****************************************************************************/
-
-/*
-** lib_mvcur.c
-**/
-
-#include <curses.priv.h>
-
-MODULE_ID("$Id")
-
-/****************************************************************************
- * Useful string functions (especially for mvcur)
- ****************************************************************************/
-
-#if !HAVE_STRSTR
-char *
-_nc_strstr(const char *haystack, const char *needle)
-{
- size_t len1 = strlen(haystack);
- size_t len2 = strlen(needle);
- char *result = 0;
-
- while ((len1 != 0) && (len1-- >= len2)) {
- if (!strncmp(haystack, needle, len2)) {
- result = haystack;
- break;
- }
- haystack++;
- }
- return result;
-}
-#endif
-
-/*
- * Initialize the descriptor so we can append to it.
- */
-string_desc *
-_nc_str_init(string_desc * dst, char *src, size_t len)
-{
- if (dst != 0) {
- dst->s_head = src;
- dst->s_tail = src;
- dst->s_size = len - 1;
- if (src != 0)
- *src = 0;
- }
- return dst;
-}
-
-/*
- * Initialize the descriptor for only tracking the amount of memory used.
- */
-string_desc *
-_nc_str_null(string_desc * dst, size_t len)
-{
- return _nc_str_init(dst, 0, len);
-}
-
-/*
- * Copy a descriptor
- */
-string_desc *
-_nc_str_copy(string_desc * dst, string_desc * src)
-{
- *dst = *src;
- return dst;
-}
-
-/*
- * Replaces strcat into a fixed buffer, returning false on failure.
- */
-bool
-_nc_safe_strcat(string_desc * dst, const char *src)
-{
- if (src != 0) {
- size_t len = strlen(src);
-
- if (len < dst->s_size) {
- if (dst->s_tail != 0) {
- strcpy(dst->s_tail, src);
- dst->s_tail += len;
- }
- dst->s_size -= len;
- return TRUE;
- }
- }
- return FALSE;
-}
-
-/*
- * Replaces strcpy into a fixed buffer, returning false on failure.
- */
-bool
-_nc_safe_strcpy(string_desc * dst, const char *src)
-{
- if (src != 0) {
- size_t len = strlen(src);
-
- if (len < dst->s_size) {
- if (dst->s_head != 0) {
- strcpy(dst->s_head, src);
- dst->s_tail = dst->s_head + len;
- }
- dst->s_size -= len;
- return TRUE;
- }
- }
- return FALSE;
-}
diff --git a/ncurses-5.2/ncurses/tinfo/write_entry.c b/ncurses-5.2/ncurses/tinfo/write_entry.c
deleted file mode 100644
index 3bd9781..0000000
--- a/ncurses-5.2/ncurses/tinfo/write_entry.c
+++ /dev/null
@@ -1,581 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- ****************************************************************************/
-
-/*
- * write_entry.c -- write a terminfo structure onto the file system
- */
-
-#include <curses.priv.h>
-
-#include <sys/stat.h>
-
-#include <tic.h>
-#include <term_entry.h>
-
-#ifndef S_ISDIR
-#define S_ISDIR(mode) ((mode & S_IFMT) == S_IFDIR)
-#endif
-
-#if 0
-#define TRACE_OUT(p) DEBUG(2, p)
-#else
-#define TRACE_OUT(p) /*nothing */
-#endif
-
-MODULE_ID("$Id$")
-
-static int total_written;
-
-static int write_object(FILE *, TERMTYPE *);
-
-static void
-write_file(char *filename, TERMTYPE * tp)
-{
- FILE *fp = (_nc_access(filename, W_OK) == 0) ? fopen(filename, "wb") : 0;
- if (fp == 0) {
- perror(filename);
- _nc_syserr_abort("can't open %s/%s", _nc_tic_dir(0), filename);
- }
- DEBUG(1, ("Created %s", filename));
-
- if (write_object(fp, tp) == ERR) {
- _nc_syserr_abort("error writing %s/%s", _nc_tic_dir(0), filename);
- }
- fclose(fp);
-}
-
-/*
- * make_directory(char *path)
- *
- * Make a directory if it doesn't exist.
- */
-static int
-make_directory(const char *path)
-{
- int rc;
- struct stat statbuf;
- char fullpath[PATH_MAX];
- const char *destination = _nc_tic_dir(0);
-
- if (path == destination || *path == '/') {
- if (strlen(path) + 1 > sizeof(fullpath))
- return (-1);
- (void) strcpy(fullpath, path);
- } else {
- if (strlen(destination) + strlen(path) + 2 > sizeof(fullpath))
- return (-1);
- (void) sprintf(fullpath, "%s/%s", destination, path);
- }
-
- if ((rc = stat(path, &statbuf)) < 0) {
- rc = mkdir(path, 0777);
- } else {
- if (_nc_access(path, R_OK | W_OK | X_OK) < 0) {
- rc = -1; /* permission denied */
- } else if (!(S_ISDIR(statbuf.st_mode))) {
- rc = -1; /* not a directory */
- }
- }
- return rc;
-}
-
-void
-_nc_set_writedir(char *dir)
-/* set the write directory for compiled entries */
-{
- const char *destination;
- char actual[PATH_MAX];
-
- if (dir == 0
- && use_terminfo_vars())
- dir = getenv("TERMINFO");
-
- if (dir != 0)
- (void) _nc_tic_dir(dir);
-
- destination = _nc_tic_dir(0);
- if (make_directory(destination) < 0) {
- char *home = _nc_home_terminfo();
-
- if (home != 0) {
- destination = home;
- if (make_directory(destination) < 0)
- _nc_err_abort("%s: permission denied (errno %d)",
- destination, errno);
- }
- }
-
- /*
- * Note: because of this code, this logic should be exercised
- * *once only* per run.
- */
- if (chdir(_nc_tic_dir(destination)) < 0
- || getcwd(actual, sizeof(actual)) == 0)
- _nc_err_abort("%s: not a directory", destination);
- _nc_keep_tic_dir(strdup(actual));
-}
-
-/*
- * check_writeable(char code)
- *
- * Miscellaneous initialisations
- *
- * Check for access rights to destination directories
- * Create any directories which don't exist.
- * Note: there's no reason to return the result of make_directory(), since
- * this function is called only in instances where that has to succeed.
- *
- */
-
-static void
-check_writeable(int code)
-{
- static const char dirnames[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- static bool verified[sizeof(dirnames)];
-
- char dir[2];
- char *s;
-
- if (code == 0 || (s = strchr(dirnames, code)) == 0)
- _nc_err_abort("Illegal terminfo subdirectory \"%c\"", code);
-
- if (verified[s - dirnames])
- return;
-
- dir[0] = code;
- dir[1] = '\0';
- if (make_directory(dir) < 0) {
- _nc_err_abort("%s/%s: permission denied", _nc_tic_dir(0), dir);
- }
-
- verified[s - dirnames] = TRUE;
-}
-
-/*
- * _nc_write_entry()
- *
- * Save the compiled version of a description in the filesystem.
- *
- * make a copy of the name-list
- * break it up into first-name and all-but-last-name
- * creat(first-name)
- * write object information to first-name
- * close(first-name)
- * for each name in all-but-last-name
- * link to first-name
- *
- * Using 'time()' to obtain a reference for file timestamps is unreliable,
- * e.g., with NFS, because the filesystem may have a different time
- * reference. We check for pre-existence of links by latching the first
- * timestamp from a file that we create.
- *
- * The _nc_warning() calls will report a correct line number only if
- * _nc_curr_line is properly set before the write_entry() call.
- */
-
-void
-_nc_write_entry(TERMTYPE * const tp)
-{
- struct stat statbuf;
- char name_list[MAX_TERMINFO_LENGTH];
- char *first_name, *other_names;
- char *ptr;
- char filename[PATH_MAX];
- char linkname[PATH_MAX];
-#if USE_SYMLINKS
- char symlinkname[PATH_MAX];
-#endif /* USE_SYMLINKS */
- static int call_count;
- static time_t start_time; /* time at start of writes */
-
- if (call_count++ == 0) {
- start_time = 0;
- }
-
- (void) strcpy(name_list, tp->term_names);
- DEBUG(7, ("Name list = '%s'", name_list));
-
- first_name = name_list;
-
- ptr = &name_list[strlen(name_list) - 1];
- other_names = ptr + 1;
-
- while (ptr > name_list && *ptr != '|')
- ptr--;
-
- if (ptr != name_list) {
- *ptr = '\0';
-
- for (ptr = name_list; *ptr != '\0' && *ptr != '|'; ptr++)
- continue;
-
- if (*ptr == '\0')
- other_names = ptr;
- else {
- *ptr = '\0';
- other_names = ptr + 1;
- }
- }
-
- DEBUG(7, ("First name = '%s'", first_name));
- DEBUG(7, ("Other names = '%s'", other_names));
-
- _nc_set_type(first_name);
-
- if (strlen(first_name) > sizeof(filename) - 3)
- _nc_warning("terminal name too long.");
-
- sprintf(filename, "%c/%s", first_name[0], first_name);
-
- /*
- * Has this primary name been written since the first call to
- * write_entry()? If so, the newer write will step on the older,
- * so warn the user.
- */
- if (start_time > 0 &&
- stat(filename, &statbuf) >= 0
- && statbuf.st_mtime >= start_time) {
- _nc_warning("name multiply defined.");
- }
-
- check_writeable(first_name[0]);
- write_file(filename, tp);
-
- if (start_time == 0) {
- if (stat(filename, &statbuf) < 0
- || (start_time = statbuf.st_mtime) == 0) {
- _nc_syserr_abort("error obtaining time from %s/%s",
- _nc_tic_dir(0), filename);
- }
- }
- while (*other_names != '\0') {
- ptr = other_names++;
- while (*other_names != '|' && *other_names != '\0')
- other_names++;
-
- if (*other_names != '\0')
- *(other_names++) = '\0';
-
- if (strlen(ptr) > sizeof(linkname) - 3) {
- _nc_warning("terminal alias %s too long.", ptr);
- continue;
- }
- if (strchr(ptr, '/') != 0) {
- _nc_warning("cannot link alias %s.", ptr);
- continue;
- }
-
- check_writeable(ptr[0]);
- sprintf(linkname, "%c/%s", ptr[0], ptr);
-
- if (strcmp(filename, linkname) == 0) {
- _nc_warning("self-synonym ignored");
- } else if (stat(linkname, &statbuf) >= 0 &&
- statbuf.st_mtime < start_time) {
- _nc_warning("alias %s multiply defined.", ptr);
- } else if (_nc_access(linkname, W_OK) == 0)
-#if HAVE_LINK
- {
- int code;
-#if USE_SYMLINKS
- strcpy(symlinkname, "../");
- strncat(symlinkname, filename, sizeof(symlinkname) - 4);
- symlinkname[sizeof(symlinkname) - 1] = '\0';
-#endif /* USE_SYMLINKS */
-#if HAVE_REMOVE
- code = remove(linkname);
-#else
- code = unlink(linkname);
-#endif
- if (code != 0 && errno == ENOENT)
- code = 0;
-#if USE_SYMLINKS
- if (symlink(symlinkname, linkname) < 0)
-#else
- if (link(filename, linkname) < 0)
-#endif /* USE_SYMLINKS */
- {
- /*
- * If there wasn't anything there, and we cannot
- * link to the target because it is the same as the
- * target, then the source must be on a filesystem
- * that uses caseless filenames, such as Win32, etc.
- */
- if (code == 0 && errno == EEXIST)
- _nc_warning("can't link %s to %s", filename, linkname);
- else if (code == 0 && errno == EPERM)
- write_file(linkname, tp);
- else
- _nc_syserr_abort("can't link %s to %s", filename, linkname);
- } else {
- DEBUG(1, ("Linked %s", linkname));
- }
- }
-#else /* just make copies */
- write_file(linkname, tp);
-#endif /* HAVE_LINK */
- }
-}
-
-#undef LITTLE_ENDIAN /* BSD/OS defines this as a feature macro */
-#define HI(x) ((x) / 256)
-#define LO(x) ((x) % 256)
-#define LITTLE_ENDIAN(p, x) (p)[0] = LO(x), (p)[1] = HI(x)
-
-#define WRITE_STRING(str) (fwrite(str, sizeof(char), strlen(str) + 1, fp) == strlen(str) + 1)
-
-static int
-compute_offsets(char **Strings, int strmax, short *offsets)
-{
- size_t nextfree = 0;
- int i;
-
- for (i = 0; i < strmax; i++) {
- if (Strings[i] == ABSENT_STRING) {
- offsets[i] = -1;
- } else if (Strings[i] == CANCELLED_STRING) {
- offsets[i] = -2;
- } else {
- offsets[i] = nextfree;
- nextfree += strlen(Strings[i]) + 1;
- TRACE_OUT(("put Strings[%d]=%s(%d)", i, _nc_visbuf(Strings[i]), nextfree));
- }
- }
- return nextfree;
-}
-
-static void
-convert_shorts(unsigned char *buf, short *Numbers, int count)
-{
- int i;
- for (i = 0; i < count; i++) {
- if (Numbers[i] == ABSENT_NUMERIC) { /* HI/LO won't work */
- buf[2 * i] = buf[2 * i + 1] = 0377;
- } else if (Numbers[i] == CANCELLED_NUMERIC) { /* HI/LO won't work */
- buf[2 * i] = 0376;
- buf[2 * i + 1] = 0377;
- } else {
- LITTLE_ENDIAN(buf + 2 * i, Numbers[i]);
- TRACE_OUT(("put Numbers[%d]=%d", i, Numbers[i]));
- }
- }
-}
-
-#define even_boundary(value) \
- ((value) % 2 != 0 && fwrite(&zero, sizeof(char), 1, fp) != 1)
-
-static int
-write_object(FILE * fp, TERMTYPE * tp)
-{
- char *namelist;
- size_t namelen, boolmax, nummax, strmax;
- char zero = '\0';
- size_t i;
- short nextfree;
- short offsets[MAX_ENTRY_SIZE / 2];
- unsigned char buf[MAX_ENTRY_SIZE];
- unsigned last_bool = BOOLWRITE;
- unsigned last_num = NUMWRITE;
- unsigned last_str = STRWRITE;
-
-#if NCURSES_XNAMES
- /*
- * Normally we limit the list of values to exclude the "obsolete"
- * capabilities. However, if we are accepting extended names, add
- * these as well, since they are used for supporting translation
- * to/from termcap.
- */
- if (_nc_user_definable) {
- last_bool = BOOLCOUNT;
- last_num = NUMCOUNT;
- last_str = STRCOUNT;
- }
-#endif
-
- namelist = tp->term_names;
- namelen = strlen(namelist) + 1;
-
- boolmax = 0;
- for (i = 0; i < last_bool; i++) {
- if (tp->Booleans[i] == TRUE)
- boolmax = i + 1;
- }
-
- nummax = 0;
- for (i = 0; i < last_num; i++) {
- if (tp->Numbers[i] != ABSENT_NUMERIC)
- nummax = i + 1;
- }
-
- strmax = 0;
- for (i = 0; i < last_str; i++) {
- if (tp->Strings[i] != ABSENT_STRING)
- strmax = i + 1;
- }
-
- nextfree = compute_offsets(tp->Strings, strmax, offsets);
-
- /* fill in the header */
- LITTLE_ENDIAN(buf, MAGIC);
- LITTLE_ENDIAN(buf + 2, min(namelen, MAX_NAME_SIZE + 1));
- LITTLE_ENDIAN(buf + 4, boolmax);
- LITTLE_ENDIAN(buf + 6, nummax);
- LITTLE_ENDIAN(buf + 8, strmax);
- LITTLE_ENDIAN(buf + 10, nextfree);
-
- /* write out the header */
- TRACE_OUT(("Header of %s @%ld", namelist, ftell(fp)));
- if (fwrite(buf, 12, 1, fp) != 1
- || fwrite(namelist, sizeof(char), namelen, fp) != namelen)
- return (ERR);
-
- for (i = 0; i < boolmax; i++)
- if (tp->Booleans[i] == TRUE)
- buf[i] = TRUE;
- else
- buf[i] = FALSE;
- if (fwrite(buf, sizeof(char), boolmax, fp) != boolmax)
- return (ERR);
-
- if (even_boundary(namelen + boolmax))
- return (ERR);
-
- TRACE_OUT(("Numerics begin at %04lx", ftell(fp)));
-
- /* the numerics */
- convert_shorts(buf, tp->Numbers, nummax);
- if (fwrite(buf, 2, nummax, fp) != nummax)
- return (ERR);
-
- TRACE_OUT(("String offsets begin at %04lx", ftell(fp)));
-
- /* the string offsets */
- convert_shorts(buf, offsets, strmax);
- if (fwrite(buf, 2, strmax, fp) != strmax)
- return (ERR);
-
- TRACE_OUT(("String table begins at %04lx", ftell(fp)));
-
- /* the strings */
- for (i = 0; i < strmax; i++)
- if (VALID_STRING(tp->Strings[i]))
- if (!WRITE_STRING(tp->Strings[i]))
- return (ERR);
-
-#if NCURSES_XNAMES
- if (NUM_EXT_NAMES(tp)) {
- unsigned extcnt = NUM_EXT_NAMES(tp);
-
- if (even_boundary(nextfree))
- return (ERR);
-
- nextfree = compute_offsets(tp->Strings + STRCOUNT, tp->ext_Strings, offsets);
- TRACE_OUT(("after extended string capabilities, nextfree=%d", nextfree));
- nextfree += compute_offsets(tp->ext_Names, extcnt, offsets + tp->ext_Strings);
- TRACE_OUT(("after extended capnames, nextfree=%d", nextfree));
- strmax = tp->ext_Strings + extcnt;
-
- /*
- * Write the extended header
- */
- LITTLE_ENDIAN(buf + 0, tp->ext_Booleans);
- LITTLE_ENDIAN(buf + 2, tp->ext_Numbers);
- LITTLE_ENDIAN(buf + 4, tp->ext_Strings);
- LITTLE_ENDIAN(buf + 6, strmax);
- LITTLE_ENDIAN(buf + 8, nextfree);
- TRACE_OUT(("WRITE extended-header @%ld", ftell(fp)));
- if (fwrite(buf, 10, 1, fp) != 1)
- return (ERR);
-
- TRACE_OUT(("WRITE %d booleans @%ld", tp->ext_Booleans, ftell(fp)));
- if (tp->ext_Booleans
- && fwrite(tp->Booleans + BOOLCOUNT, sizeof(char),
- tp->ext_Booleans, fp) != tp->ext_Booleans)
- return (ERR);
-
- if (even_boundary(tp->ext_Booleans))
- return (ERR);
-
- TRACE_OUT(("WRITE %d numbers @%ld", tp->ext_Numbers, ftell(fp)));
- if (tp->ext_Numbers) {
- convert_shorts(buf, tp->Numbers + NUMCOUNT, tp->ext_Numbers);
- if (fwrite(buf, 2, tp->ext_Numbers, fp) != tp->ext_Numbers)
- return (ERR);
- }
-
- /*
- * Convert the offsets for the ext_Strings and ext_Names tables,
- * in that order.
- */
- convert_shorts(buf, offsets, strmax);
- TRACE_OUT(("WRITE offsets @%ld", ftell(fp)));
- if (fwrite(buf, 2, strmax, fp) != strmax)
- return (ERR);
-
- /*
- * Write the string table after the offset tables so we do not
- * have to do anything about alignment.
- */
- for (i = 0; i < tp->ext_Strings; i++) {
- if (VALID_STRING(tp->Strings[i + STRCOUNT])) {
- TRACE_OUT(("WRITE ext_Strings[%d]=%s", i,
- _nc_visbuf(tp->Strings[i + STRCOUNT])));
- if (!WRITE_STRING(tp->Strings[i + STRCOUNT]))
- return (ERR);
- }
- }
-
- /*
- * Write the extended names
- */
- for (i = 0; i < extcnt; i++) {
- TRACE_OUT(("WRITE ext_Names[%d]=%s", i, tp->ext_Names[i]));
- if (!WRITE_STRING(tp->ext_Names[i]))
- return (ERR);
- }
-
- }
-#endif /* NCURSES_XNAMES */
-
- total_written++;
- return (OK);
-}
-
-/*
- * Returns the total number of entries written by this process
- */
-int
-_nc_tic_written(void)
-{
- return total_written;
-}