1*0a6a1f1dSLionel Sambuc.\" $NetBSD: terminfo.3,v 1.12 2014/03/18 18:20:38 riastradh Exp $ 251e66a47SVivek Prakash.\" 30c3ae37fSLionel Sambuc.\" Copyright (c) 2009, 2011 The NetBSD Foundation, Inc. 451e66a47SVivek Prakash.\" All rights reserved. 551e66a47SVivek Prakash.\" 651e66a47SVivek Prakash.\" This code is derived from software contributed to The NetBSD Foundation 751e66a47SVivek Prakash.\" by Roy Marples. 851e66a47SVivek Prakash.\" 951e66a47SVivek Prakash.\" Redistribution and use in source and binary forms, with or without 1051e66a47SVivek Prakash.\" modification, are permitted provided that the following conditions 1151e66a47SVivek Prakash.\" are met: 1251e66a47SVivek Prakash.\" 1. Redistributions of source code must retain the above copyright 1351e66a47SVivek Prakash.\" notice, this list of conditions and the following disclaimer. 1451e66a47SVivek Prakash.\" 2. Redistributions in binary form must reproduce the above copyright 1551e66a47SVivek Prakash.\" notice, this list of conditions and the following disclaimer in the 1651e66a47SVivek Prakash.\" documentation and/or other materials provided with the distribution. 1751e66a47SVivek Prakash.\" 1851e66a47SVivek Prakash.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 1951e66a47SVivek Prakash.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 2051e66a47SVivek Prakash.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 2151e66a47SVivek Prakash.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 2251e66a47SVivek Prakash.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2351e66a47SVivek Prakash.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2451e66a47SVivek Prakash.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2551e66a47SVivek Prakash.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2651e66a47SVivek Prakash.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2751e66a47SVivek Prakash.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2851e66a47SVivek Prakash.\" POSSIBILITY OF SUCH DAMAGE. 2951e66a47SVivek Prakash.\" 3084d9c625SLionel Sambuc.Dd January 25, 2013 3151e66a47SVivek Prakash.Dt TERMINFO 3 3251e66a47SVivek Prakash.Os 3351e66a47SVivek Prakash.Sh NAME 3451e66a47SVivek Prakash.Nm setupterm , 3551e66a47SVivek Prakash.Nm set_curterm , 3651e66a47SVivek Prakash.Nm del_curterm , 370c3ae37fSLionel Sambuc.Nm termname , 380c3ae37fSLionel Sambuc.Nm longname , 3951e66a47SVivek Prakash.Nm tigetflag , 4051e66a47SVivek Prakash.Nm tigetnum , 4151e66a47SVivek Prakash.Nm tigetstr , 4251e66a47SVivek Prakash.Nm tparm , 4351e66a47SVivek Prakash.Nm tputs , 4451e66a47SVivek Prakash.Nm putp 4551e66a47SVivek Prakash.Nd terminal independent operation routines 4651e66a47SVivek Prakash.Sh LIBRARY 4751e66a47SVivek Prakash.Lb libterminfo 4851e66a47SVivek Prakash.Sh SYNOPSIS 4951e66a47SVivek Prakash.In term.h 5051e66a47SVivek Prakash.Vt char PC ; 5151e66a47SVivek Prakash.Vt short ospeed ; 5251e66a47SVivek Prakash.Vt TERMINAL *cur_term ; 5351e66a47SVivek Prakash.Ft int 5451e66a47SVivek Prakash.Fn setupterm "const char *name" "int fildes" "int *errret" 5551e66a47SVivek Prakash.Ft TERMINAL * 560c3ae37fSLionel Sambuc.Fn set_curterm "TERMINAL *nterm" 5751e66a47SVivek Prakash.Ft int 580c3ae37fSLionel Sambuc.Fn del_curterm "TERMINAL *oterm" 590c3ae37fSLionel Sambuc.Ft char * 600c3ae37fSLionel Sambuc.Fn termname "void" 610c3ae37fSLionel Sambuc.Ft char * 620c3ae37fSLionel Sambuc.Fn longname "void" 6351e66a47SVivek Prakash.Ft int 6451e66a47SVivek Prakash.Fn tigetnum "const char *id" 6551e66a47SVivek Prakash.Ft int 6651e66a47SVivek Prakash.Fn tigetflag "const char *id" 6751e66a47SVivek Prakash.Ft char * 6851e66a47SVivek Prakash.Fn tigetstr "const char *id" 6951e66a47SVivek Prakash.Ft char * 7051e66a47SVivek Prakash.Fn tparm "const char *cm" "long p1" "long p2" "long p3" "long p4" "long p5" "long p6" "long p7" "long p8" "long p9" 7151e66a47SVivek Prakash.Ft int 7251e66a47SVivek Prakash.Fn tputs "const char *cp" "int affcnt" "int (*outc)(int)" 7351e66a47SVivek Prakash.Ft int 7451e66a47SVivek Prakash.Fn putp "const char *cp" 7551e66a47SVivek Prakash.Ft int 7651e66a47SVivek Prakash.Fn ti_setupterm "TERMINAL **" "const char *name" "int fildes" "int *error" 7751e66a47SVivek Prakash.Ft int 7851e66a47SVivek Prakash.Fn ti_getflag "const TERMINAL *" "const char *id" 7951e66a47SVivek Prakash.Ft int 8051e66a47SVivek Prakash.Fn ti_getnum "const TERMINAL *" "const char *id" 8151e66a47SVivek Prakash.Ft const char * 8251e66a47SVivek Prakash.Fn ti_getstr "const TERMINAL *" "const char *id" 8351e66a47SVivek Prakash.Ft char * 840c3ae37fSLionel Sambuc.Fn tiparm "const char *cm" "..." 8551e66a47SVivek Prakash.Ft char * 860c3ae37fSLionel Sambuc.Fn ti_tiparm "TERMINAL *" "const char *cm" "..." 8751e66a47SVivek Prakash.Ft int 8851e66a47SVivek Prakash.Fn ti_puts "const TERMINAL *term" "const char *str" "int affcnt" "int (*outc)(int, void *)" 8951e66a47SVivek Prakash.Ft int 9051e66a47SVivek Prakash.Fn ti_putp "const TERMINAL *term" "const char *str" 9151e66a47SVivek Prakash.Sh DESCRIPTION 9251e66a47SVivek PrakashThese functions extract and use capabilities from a terminal capability 9351e66a47SVivek Prakashdatabase, usually 9451e66a47SVivek Prakash.Pa /usr/share/misc/terminfo , 9551e66a47SVivek Prakashthe format of which is described in 9651e66a47SVivek Prakash.Xr terminfo 5 . 9751e66a47SVivek PrakashThese are low level routines; 9851e66a47SVivek Prakashsee 9951e66a47SVivek Prakash.Xr curses 3 10051e66a47SVivek Prakashfor a higher level package. 10151e66a47SVivek Prakash.Pp 10251e66a47SVivek PrakashThe 10351e66a47SVivek Prakash.Fn setupterm 10451e66a47SVivek Prakashfunction extracts the entry for terminal 10551e66a47SVivek Prakash.Fa name 10651e66a47SVivek Prakashand then calls 10751e66a47SVivek Prakash.Fn set_curterm 10851e66a47SVivek Prakashto set 10951e66a47SVivek Prakash.Va cur_term 11051e66a47SVivek Prakashto it. 11151e66a47SVivek PrakashIf 11251e66a47SVivek Prakash.Fa name 11351e66a47SVivek Prakashis 11451e66a47SVivek Prakash.Dv NULL 11551e66a47SVivek Prakashthen it is replaced by the environment variable 11651e66a47SVivek Prakash.Ev TERM . 11751e66a47SVivek PrakashThe 11851e66a47SVivek Prakash.Fn setupterm 11951e66a47SVivek Prakashfunction returns 0 on success and \-1 on error. 12051e66a47SVivek Prakash.Va errret 12151e66a47SVivek Prakashis set to \-1 if the 12251e66a47SVivek Prakash.Nm terminfo 12351e66a47SVivek Prakashdatabase could not be opened, 12451e66a47SVivek Prakash0 if the terminal could not be found in the database, and 12551e66a47SVivek Prakash1 if all went well. 12651e66a47SVivek Prakash.Pp 12751e66a47SVivek PrakashThe 12851e66a47SVivek Prakash.Fn set_curterm 12951e66a47SVivek Prakashfunction sets the variable 13051e66a47SVivek Prakash.Va cur_term 13151e66a47SVivek Prakashto 13251e66a47SVivek Prakash.Va nterm 13351e66a47SVivek Prakashand makes all of the 13451e66a47SVivek Prakash.Nm terminfo 13551e66a47SVivek Prakashboolean, numeric and string variables use the values from 13651e66a47SVivek Prakash.Va nterm . 13751e66a47SVivek PrakashThe global variables 13851e66a47SVivek Prakash.Va PC 13951e66a47SVivek Prakashand 14051e66a47SVivek Prakash.Va ospeed 14151e66a47SVivek Prakashare then set. 14251e66a47SVivek PrakashThe old value of 14351e66a47SVivek Prakash.Va cur_term 14451e66a47SVivek Prakashis returned. 14551e66a47SVivek PrakashThe 14651e66a47SVivek Prakash.Fn del_curterm 14751e66a47SVivek Prakashfunction frees space pointed to by 14851e66a47SVivek Prakash.Va oterm . 14951e66a47SVivek Prakash.Pp 15051e66a47SVivek PrakashThe 1510c3ae37fSLionel Sambuc.Fn termname 1520c3ae37fSLionel Sambucfunction returns the name of 1530c3ae37fSLionel Sambuc.Va cur_term . 1540c3ae37fSLionel SambucThe 1550c3ae37fSLionel Sambuc.Fn longname 1560c3ae37fSLionel Sambucfunction returns the description of 1570c3ae37fSLionel Sambuc.Va cur_term . 1580c3ae37fSLionel Sambuc.Pp 1590c3ae37fSLionel SambucThe 16051e66a47SVivek Prakash.Fn tigetflag 16151e66a47SVivek Prakashfunction gets the boolean value of capability 16251e66a47SVivek Prakash.Va id , 16351e66a47SVivek Prakashreturning \-1 if it is not a valid capability. 16451e66a47SVivek PrakashThe 16551e66a47SVivek Prakash.Fn tigetnum 16651e66a47SVivek Prakashfunction gets the numeric value of the capability 16751e66a47SVivek Prakash.Va id , 16851e66a47SVivek Prakashreturning \-2 if it is not a valid capability. 16951e66a47SVivek PrakashThe 17051e66a47SVivek Prakash.Fn tigetstr 17151e66a47SVivek Prakashfunction returns the string value of the capability 17251e66a47SVivek Prakash.Va id , 17351e66a47SVivek Prakashreturning (char *)-1 if it is not a valid capability. 17451e66a47SVivek Prakash.Pp 17551e66a47SVivek PrakashThe 17651e66a47SVivek Prakash.Fn tparm 17751e66a47SVivek Prakashfunction returns a string decoded from 17851e66a47SVivek Prakash.Va cm 17951e66a47SVivek Prakashwith the parameters 18051e66a47SVivek Prakash.Va p1 18151e66a47SVivek Prakash\&... 18251e66a47SVivek Prakash.Va p9 18351e66a47SVivek Prakashapplied. 18451e66a47SVivek PrakashSome capabilities require string parameters and only platforms that can fit 18551e66a47SVivek Prakasha 18651e66a47SVivek Prakash.Vt char * 18751e66a47SVivek Prakashpointer inside a 18851e66a47SVivek Prakash.Vt long 18951e66a47SVivek Prakashcan use them. 19084d9c625SLionel SambucFor platforms which don't support this, 19184d9c625SLionel Sambuc.Dv NULL 19284d9c625SLionel Sambucis returned and 19384d9c625SLionel Sambuc.Va errno 19484d9c625SLionel Sambucis set to 19584d9c625SLionel Sambuc.Er ENOTSUPP . 19651e66a47SVivek PrakashThe string encoding and parameter application is described in 19751e66a47SVivek Prakash.Xr terminfo 5 . 19851e66a47SVivek Prakash.Pp 19951e66a47SVivek PrakashThe 20051e66a47SVivek Prakash.Fn tputs 20151e66a47SVivek Prakashfunction applies padding information to the string 20251e66a47SVivek Prakash.Va cp ; 20351e66a47SVivek Prakash.Va affcnt 20451e66a47SVivek Prakashgives the number of lines affected by the operation, 20551e66a47SVivek Prakashor 1 if this is not applicable; 20651e66a47SVivek Prakash.Va outc 20751e66a47SVivek Prakashis a function which is called by each character in turn. 20851e66a47SVivek PrakashThe external variable 20951e66a47SVivek Prakash.Va ospeed 21051e66a47SVivek Prakashcontrols how many padding characters are sent in relation to the terminal 21151e66a47SVivek Prakashspeed. 21251e66a47SVivek PrakashThe 21351e66a47SVivek Prakash.Fn putp 21451e66a47SVivek Prakashfunction calls tputs(str, 1, putchar). 21551e66a47SVivek PrakashThe output from 21651e66a47SVivek Prakash.Fn putp 21751e66a47SVivek Prakashalways goes to stdout. 21851e66a47SVivek Prakash.Ss NetBSD Extensions To Terminfo 21951e66a47SVivek PrakashThe 2200c3ae37fSLionel Sambuc.Fn tiparm 22151e66a47SVivek Prakashfunction allows variadic parameters instead of 9 fixed longs. 22284d9c625SLionel SambucNumeric parameters must be passed as 22384d9c625SLionel Sambuc.Vt int . 22484d9c625SLionel SambucString parameters must be passed as 22551e66a47SVivek Prakash.Vt char * 22684d9c625SLionel Sambucand works on all platforms, unlike 22784d9c625SLionel Sambuc.Fn tparm . 22851e66a47SVivek Prakash.Pp 22951e66a47SVivek PrakashThe 23051e66a47SVivek Prakash.Fn ti_* 23151e66a47SVivek Prakashfunctions correspond to the standard 23251e66a47SVivek Prakash.Fn t* 23351e66a47SVivek Prakashfunctions but take an additional 23451e66a47SVivek Prakash.Ft TERMINAL * 23551e66a47SVivek Prakashparameter so that the terminal can be specified instead of assuming 23651e66a47SVivek Prakash.Va cur_term . 23751e66a47SVivek PrakashThese functions use private variables to the 23851e66a47SVivek Prakash.Ft TERMINAL 23951e66a47SVivek Prakashinstead of the global variables, such as 24051e66a47SVivek Prakash.Va PC 24151e66a47SVivek Prakashand 24251e66a47SVivek Prakash.Va ospeed . 24351e66a47SVivek Prakash.Sh SEE ALSO 24451e66a47SVivek Prakash.Xr ex 1 , 24551e66a47SVivek Prakash.Xr curses 3 , 24651e66a47SVivek Prakash.Xr terminfo 5 24751e66a47SVivek Prakash.Sh AUTHORS 24884d9c625SLionel Sambuc.An Roy Marples Aq Mt roy@NetBSD.org 249