PC, UP, BC, ospeed, tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs -
   direct curses interface to the terminfo capability database


   #include <curses.h>
   #include <term.h>

   extern char PC;
   extern char * UP;
   extern char * BC;
   extern short ospeed;

   int tgetent(char *bp, const char *name);
   int tgetflag(char *id);
   int tgetnum(char *id);
   char *tgetstr(char *id, char **area);
   char *tgoto(const char *cap, int col, int row);
   int tputs(const char *str, int affcnt, int (*putc)(int));


   These routines are included as a conversion aid for programs  that  use
   the  termcap  library.   Their parameters are the same and the routines
   are emulated using the terminfo database.  Thus, they can only be  used
   to  query  the  capabilities  of entries for which a terminfo entry has
   been compiled.

   The tgetent routine loads the entry for name.  It returns:

      1  on success,

      0  if there is no such entry (or that it is a generic  type,  having
         too little information for curses applications to run), and

      -1 if the terminfo database could not be found.

   This differs from the termcap library in two ways:

      ·   The  emulation  ignores  the  buffer  pointer  bp.   The termcap
          library would store a copy of the terminal  description  in  the
          area  referenced  by  this pointer.  However, ncurses stores its
          terminal descriptions in compiled binary form, which is not  the
          same thing.

      ·   There is a difference in return codes.  The termcap library does
          not check if the terminal description is marked with the generic
          capability,   or   if   the  terminal  description  has  cursor-

   The tgetflag routine gets the boolean entry for id, or zero  if  it  is
   not available.

   The  tgetnum  routine gets the numeric entry for id, or -1 if it is not

   The tgetstr routine returns the string entry for id, or zero if  it  is
   not  available.   Use  tputs  to  output the returned string.  The area
   parameter is used as follows:

      ·   It is assumed to be the address of a pointer to a buffer managed
          by the calling application.

      ·   However,  ncurses  checks  to  ensure that area is not NULL, and
          also that the resulting buffer pointer is not NULL.   If  either
          check fails, the area parameter is ignored.

      ·   If  the  checks succeed, ncurses also copies the return value to
          the buffer pointed to by  area,  and  the  area  value  will  be
          updated to point past the null ending this value.

      ·   The   return   value  itself  is  an  address  in  the  terminal
          description which is loaded into memory.

   Only the first two characters of the id parameter of tgetflag,  tgetnum
   and tgetstr are compared in lookups.

   The tgoto routine expands the given capability using the parameters.

   ·   Because  the  capability may have padding characters, the output of
       tgoto should be passed to  tputs  rather  than  some  other  output
       function such as printf.

   ·   While  tgoto  is  assumed  to  be used for the two-parameter cursor
       positioning  capability,  termcap  applications  also  use  it  for
       single-parameter capabilities.

       Doing  this  shows  a  quirk  in tgoto: most hardware terminals use
       cursor addressing with row first, but the  original  developers  of
       the termcap interface chose to put the column parameter first.  The
       tgoto function swaps the order of parameters.  It  does  this  also
       for  calls  requiring  only  a single parameter.  In that case, the
       first parameter is merely a placeholder.

   ·   Normally the ncurses library is compiled with terminfo support.  In
       that case, tgoto uses tparm (a more capable formatter).

   The  tputs  routine is described on the terminfo(3NCURSES) manual page.
   It can retrieve capabilities by either termcap or terminfo name.

   The variables PC, UP and BC are set by tgetent to the terminfo  entry's
   data for pad_char, cursor_up and backspace_if_not_bs, respectively.  UP
   is not used by ncurses.  PC is used in the tdelay_output function.   BC
   is  used in the tgoto emulation.  The variable ospeed is set by ncurses
   in a system-specific coding to reflect the terminal speed.


   Except where explicitly noted, routines that return an  integer  return
   ERR  upon  failure  and OK (SVr4 only specifies "an integer value other
   than ERR") upon successful completion.

   Routines that return pointers return NULL on error.


   If you call tgetstr to fetch ca or any other parameterized  string,  be
   aware  that it will be returned in terminfo notation, not the older and
   not-quite-compatible termcap notation.  This will not cause problems if
   all  you do with it is call tgoto or tparm, which both expand terminfo-
   style strings as terminfo.   (The  tgoto  function,  if  configured  to
   support  termcap,  will check if the string is indeed terminfo-style by
   looking for "%p" parameters or "$<..>" delays, and  invoke  a  termcap-
   style parser if the string does not appear to be terminfo).

   Because   terminfo  conventions  for  representing  padding  in  string
   capabilities differ from termcap's, tputs("50"); will put out a literal
   "50" rather than busy-waiting for 50 milliseconds.  Cope with it.

   Note  that termcap has nothing analogous to terminfo's sgr string.  One
   consequence of this is that termcap applications  assume  me  (terminfo
   sgr0)  does not reset the alternate character set.  This implementation
   checks for, and modifies the data shown to  the  termcap  interface  to
   accommodate termcap's limitation in this respect.


   The  XSI  Curses standard, Issue 4 describes these functions.  However,
   they are marked TO BE WITHDRAWN and may be removed in future versions.

   Neither the XSI Curses standard nor the SVr4 man pages  documented  the
   return  values  of  tgetent  correctly,  though  all three were in fact
   returned ever since SVr1.  In particular, an omission in the XSI Curses
   documentation  has  been misinterpreted to mean that tgetent returns OK
   or  ERR.   Because  the  purpose  of  these  functions  is  to  provide
   compatibility  with  the  termcap library, that is a defect in XCurses,
   Issue 4, Version 2 rather than in ncurses.

   External  variables  are  provided  for  support  of  certain   termcap
   applications.  However, termcap applications' use of those variables is
   poorly documented, e.g., not distinguishing between input  and  output.
   In  particular, some applications are reported to declare and/or modify

   The comment that only the first two characters of the id parameter  are
   used escapes many application developers.  The original BSD 4.2 termcap
   library (and historical relics thereof) did not require a trailing null
   NUL  on  the  parameter  name  passed to tgetstr, tgetnum and tgetflag.
   Some applications assume that the termcap interface  does  not  require
   the  trailing  NUL  for  the parameter name.  Taking into account these

   ·   As a special case,  tgetflag  matched  against  a  single-character
       identifier   provided   that   was  at  the  end  of  the  terminal
       description.  You should not rely upon this  behavior  in  portable
       programs.   This  implementation  disallows matches against single-
       character capability names.

   ·   This implementation disallows  matches  by  the  termcap  interface
       against  extended  capability  names  which  are  longer  than  two


   ncurses(3NCURSES), terminfo(5), terminfo_variables(3NCURSES), putc(3).



Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.

Free Software

Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.

Free Books

The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.