Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
TERMCAP(1L)		     Schily's USER COMMANDS		     TERMCAP(1L)

NAME
     termcap - a termcap compiler

SYNOPSIS
     termcap [ options ]

DESCRIPTION
     termcap  reads  termcap  entries and outputs them in unified order and with
     unified escape sequences. This allows one to convert termcap files  into  a
     comparable format.

     Since  the  termcap database is an ASCII representation of the data, people
     may believe that there is no need for a compiler.	Syntax checks and unifi-
     cation however are a property of compilers.  The termcap program checks for
     correct data types, outputs all entries in a unified order and recodes  all
     strings  with  the  same escape notation.	This is needed in to compare two
     entries and it makes life easier.

     When termcap compiles entries, it checks the entries for noncompliance.  If
     any problems were found, it inserts comments in the form:

     # NOTICE(name) some reason

     or

     # BAD(name) some reason

     before  the  related  termcap  entry.   These  comments should be carefully
     checked.  Frequent problems are illegally escaped colons \: instead of \072
     that in most cases have been created by defective terminfo software.

OPTIONS
     -help  Prints a short summary of the termcap(1) options and exists.

     -version
	    Prints the termcap(1) version number string and exists.

     -dooctal
	    When printing terminal capabilities, prefer octal output  like  \003
	    before escape sequences like ^C.

     -dumplist
	    Dump the complete internal list of terminal capabilities.

     -e     Import  the  termcap  description  from  the  TERMCAP environment if
	    present.  By default, termcap(1) ignores the TERMCAP environment  in
	    case  that	it does not hold a pathname, but a preparsed termcap en-
	    try.

     if=filename
	    Read the file filename with many termcap entries  and  produce  com-
	    piled  output  in  standard order on stdout.  This option is used in
	    order to recompile a whole set of termcap entries.

	    To make the recompiling as smooth as possible, -inorder  is  assumed
	    by	default. Use -noinorder if you like to add further processing by
	    hand.

     -inorder
	    Output all capabilities in the standard order. First the boolean ca-
	    pabilities, then the numeric capabilities and at last the string ca-
	    pabilities. Without -inorder, the obsolete capabilities are  printed
	    last.

	    The  option -inorder is assumed by default if the if=name option has
	    been specified.

     -gnugoto
	    Allow the GNU tgoto() format extensions %C and %m.

     -nodisabled
	    Do not output disabled termcap entries. A comment with a warning for
	    this entry is still printed in the output.

     -noinorder
	    Output all capabilities in the standard order, but	print  obsoleted
	    capabilities,  unknown  capabilities  and disabled capabilities in a
	    separate block before any tc= entry.

     -nounknown
	    Do not output unknown termcap entries. A comment with a warning  for
	    this entry is still printed in the output.

     -nowarn
	    Do	not warn about incorrect entries that could be fixed by assuming
	    that the problem is a result from not  correctly  converting  escape
	    sequences  in  terminfo  syntax to termcap syntax. For this purpose,
	    currently null characters (\0) are converted to \200.  In  addition,
	    the  escape  sequences  \a, \e, \:, \,, \s and \l are mapped to BEL,
	    ESCAPE, ':', ',', ' ' and LINEFEED.

     -oneline
	    Output all termcap entries in a single line per entry.   This  helps
	    to	scan  the  whole  termcap  data base for terminals with specific
	    properties.

     -s     Output commands to set and export TERM and	TERMCAP.   This  can  be
	    done with

	      eval `tset -s ...`

	    to	bring  the  terminal  information into the environment of shells
	    that do not support termcap internally as e.g.   sh  (recent  Bourne
	    Shell  versions)  and  bsh already do.  Doing so makes termcap based
	    programs start up faster.  If the SHELL  environment  variable  ends
	    with  csh, C shell commands are created, otherwise Bourne shell com-
	    mands are created.

     -tc    Follow tc= entries and generate cumulative output.	Amongst  others,
	    this allows one to retrieve the cumulative size of the related term-
	    cap entry.	Termcap normally does not interpret tc= entries in order
	    to allow the entries to be reused the same way they are in the term-
	    cap file.

	    When the -tc option is used together with if=filename and termcap(1)
	    is	in  compile mode, the output will increase noticeably in size as
	    all termcap entries for all terminals will be fully  expanded.  This
	    also removes all hints to similar terminals in the output.

     -v     Increment  verbose level.  By default, termcap only prints a recoded
	    termcap entry. With increasing verbose level,  more  information  on
	    the  termcap entry is printed.  With a higher verbose level, termcap
	    prints the size of the termcap entry.

ENVIRONMENT
     HOME   To find the private files like ~/.termcap

     TERM   The type of terminal for which the output should be formatted.

     TERMCAP
	    This environment variable holds either a precompiled  termcap  entry
	    or	the  pathname to be used to find a termcap database file.  If it
	    holds a precompiled entry that does not match the TERM  environment,
	    the  termcap database is parsed as if the TERMCAP environment is not
	    set.

     TERMPATH
	    If TERMCAP is empty, then the TERMPATH environment	is  scanned  for
	    pathnames of files that contain a termcap database.  It holds a list
	    of	filenames separated by colons or spaces (i.e.,	":" or " ").  If
	    the TERMPATH  symbol  is  not  set,  the  files  $HOME/.termcap  and
	    /etc/termcap are scanned in that order.

FILES
     /etc/termcap
	    The system's terminal capabilities database.

     ~/.termcap
	    The  private  terminal  capabilities database.  This file is checked
	    first, in case that the TERMPATH environment is not defined.

SEE ALSO
     sh(1), bsh(1), tset(1B), termcap(5).

MESSAGES
     The following messages are created by termcap(1):

     # BAD(name). Skipping blank entry: 'ent'
	    A colon (":") is followed by white space. White space is  only  per-
	    mitted in a termcap entry if it appears at the beginning of a line.

	    This  error  type is usually caused by a bad manual edit.  Carefully
	    check every such problem in the source and manually correct it.

     # BAD(name). Illegal entry (3rd char 'c' for ':ccc'): 'ent'
	    A valid termcap entry is made of two characters followed by a  colon
	    (":")  in  case  of a boolean entry, a hash mark ("#") in case of an
	    integer entry, an equal sign ("=") for a string  entry,  or  the  at
	    sign ("@") for disabled entries.

	    This  error  type  is usually caused by a bad conversion from a ter-
	    minfo entry that is caused by illegal quoting.  A  bad  quoting  may
	    cause the termcap parser to be out of sync. A quoted colon ("\:") is
	    permitted  in  terminfo  but  not  in  termcap (termcap only permits
	    "\072" to include a colon in a string).

	    This error may also be caused by a bad manual edit, e.g. a backslash
	    ("\") at the end of a termcap entry that causes  the  next	terminal
	    name to be interpreted as capability, a colon (":") instead of a bar
	    ("|") in the list of alternative terminal names or superfluous colon
	    (":") in the list of capabilities.

	    Carefully  check  every such problem in the source and manually cor-
	    rect it.

     # BAD(name). Type mismatch 'ent' in 'full-ent' ...
	    The type for the current entry does not  match  the  type  from  the
	    termcap documentation.

	    This  error  type  is usually caused by a bad manual edit, e.g. from
	    typing ":", "=" or "#" instead of the correct character "="  or  "#"
	    that  is  expected	as the third character for the entry.  Carefully
	    check every such problem in the source and manually correct it.

     # BAD(name). Bad format '%c' in 'ent=value'
	    An invalid format character was found in a parameterized  string  (a
	    string that is passed to tgoto()).

	    This error type is usually caused by badly converted terminfo entry.
	    Carefully  check  every such problem in the source and manually cor-
	    rect it.

     # BAD(name). Buffer overflow in 'ent=value'
	    A string that is passed to tgoto() is  longer  than  80  characters.
	    tgoto() is not granted to work correctly in case that the parameter-
	    ized string is longer than 80 characters.

	    This error type is usually caused by badly converted terminfo entry.
	    Carefully  check  every such problem in the source and manually cor-
	    rect it.

     # NOTICE(name). Short entry (':c:') removed
	    All termcap capability names must have two characters. A single char
	    entry was found and removed.

     # NOTICE(name). Disabled entry: '.ent'
	    An entry that starts with a dot (".") was found.

	    This is usually caused by an intentional manual edit.

     # NOTICE(name). Unknown entry ('ent'): 'full-ent'
	    An entry was found that is not part of the official termcap documen-
	    tation.

	    It is unlikely that such an entry is supported by  any  program,  so
	    these  entries  may  be removed from the the termcap database.  This
	    may be done automatically by specifying the -nounknown option.

     # NOTICE(name). Canceled entry 'ent@' followed by 'full-ent'...
	    A cancelled entry in the form "xx@" was followed by  "xx=string"  or
	    "xx#number"  in the same termcap entry.  The cancel feature in term-
	    cap entries is intended to cancel entries from capabilities imported
	    via the tc=name feature.

	    Carefully check every such problem in the source whether it was  in-
	    troduced  intentionally (e.g. in order to temporarily disable a fea-
	    ture) or whether it was introduced by accident.

     # NOTICE(name). NULL char (fixed) in entry ('ent') at...
	    A "\0" string was found in a termcap entry.  This is  not  permitted
	    by the termcap documentation.

	    This  error  type  is usually caused by a bad conversion from a ter-
	    minfo entry.  This typically happens if  bad  software  converted  a
	    "\E"  string to "\" or in case that the string "\0" that is valid in
	    a terminfo entry was not converted to the  correct	termcap  equiva-
	    lent:  "\200".  termcap(1) assumes the latter and automatically con-
	    verts "\0" to "\200".  A NULL character may be used as a delay in an
	    output sequence, but it is not expected in function  key  input  se-
	    quence.   Carefully check every such problem in the source and manu-
	    ally correct it.

     # NOTICE(name). Nonoctal char 'c' in entry ('ent') at position...
	    A character outside the range '0'..'7' was found in a  '\nnn'  octal
	    sequence.

	    Carefully  check  every such problem in the source and manually cor-
	    rect it.

     # NOTICE(name). Badly quoted char '\c' (fixed) in ('ent') at ...
	    A character quoted with "\" was found but the character  is  not  in
	    the list of quotes documented by termcap.  As the character was from
	    the  list  "\a", "\e", "\:", "\,", "\s", "\l" it is assumed that the
	    problem was caused by a bad conversion from a terminfo entry.

	    Carefully check every such problem in the source and  manually  cor-
	    rect it if needed.

     # NOTICE(name). Badly quoted char '\c' in ('ent') at ...
	    A  character  quoted  with "\" was found but the character is not in
	    the list of quotes documented by termcap.  As the character was nei-
	    ther from the list "\a", "\e", "\:", "\,", "\s", "\l" it is  assumed
	    that the problem was caused by a bad manual edit.

	    Carefully  check  every such problem in the source and manually cor-
	    rect it.

NOTES
     Termcap databases that have been created from a terminfo database often are
     full of noncompliances that prevent successful parsing by termcap-compliant
     software.	The fact that terminfo permits "\:" is the cause for the  major-
     ity of all problems but fortunately can be automatically resolved.

     There  is a non-compliance between older and newer termcap entries. The ca-
     pability named "ma" in former times (around 1980) was an arrow key map  for
     the rogue(1) Dungeons of Doom game.  In newer times, the "ma" entry is used
     for  the  maximum number of attributes a terminal can handle and thus is of
     type integer.

     As the functions tgetstr() and tgetnum() both skip entries with inappropri-
     ate type, this is not a problem.  For this reason, we do not warn of a pos-
     sible string/number type conflict with the "ma" capability. It is even pos-
     sible to have a ma=maplist and ma#num-attr entry at the same time	for  the
     same terminal entry.

BUGS
     None currently known.

     Mail  bugs  and  suggestions  to  schilytools@mlists.in-berlin.de or open a
     ticket at https://codeberg.org/schilytools/schilytools/issues.

     The mailing list archive may be found at:

     https://mlists.in-berlin.de/mailman/listinfo/schilytools-mlists.in-berlin.de.

AUTHORS
     Joerg Schilling and the schilytools project authors.

SOURCE DOWNLOAD
     The source code for the termcap compiler is  included  in	the  schilytools
     project and may be retrieved from the schilytools project at Codeberg at

     https://codeberg.org/schilytools/schilytools.

     The download directory is

     https://codeberg.org/schilytools/schilytools/releases.

Joerg Schilling 		   2022/10/06			     TERMCAP(1L)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=termcap&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help