diff options
Diffstat (limited to 'chapter06/ncurses.xml')
-rw-r--r-- | chapter06/ncurses.xml | 518 |
1 files changed, 288 insertions, 230 deletions
diff --git a/chapter06/ncurses.xml b/chapter06/ncurses.xml index 9e094c868..a8ec143c3 100644 --- a/chapter06/ncurses.xml +++ b/chapter06/ncurses.xml @@ -1,286 +1,344 @@ <?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ +<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" + "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ <!ENTITY % general-entities SYSTEM "../general.ent"> %general-entities; ]> + <sect1 id="ch-system-ncurses" role="wrap"> -<title>Ncurses-&ncurses-version;</title> -<?dbhtml filename="ncurses.html"?> + <?dbhtml filename="ncurses.html"?> + + <title>Ncurses-&ncurses-version;</title> + + <indexterm zone="ch-system-ncurses"> + <primary sortas="a-Ncurses">Ncurses</primary> + </indexterm> + + <sect2 role="package"> + <title/> -<indexterm zone="ch-system-ncurses"><primary sortas="a-Ncurses">Ncurses</primary></indexterm> + <para>The Ncurses package contains libraries for terminal-independent + handling of character screens.</para> -<sect2 role="package"><title/> -<para>The Ncurses package contains libraries for terminal-independent -handling of character screens.</para> + <segmentedlist> + <segtitle>&buildtime;</segtitle> + <segtitle>&diskspace;</segtitle> -<segmentedlist> -<segtitle>&buildtime;</segtitle> -<segtitle>&diskspace;</segtitle> -<seglistitem><seg>0.6 SBU</seg><seg>18.6 MB</seg></seglistitem> -</segmentedlist> + <seglistitem> + <seg>0.6 SBU</seg> + <seg>18.6 MB</seg> + </seglistitem> + </segmentedlist> -<segmentedlist> -<segtitle>&dependencies;</segtitle> -<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils, -Gawk, GCC, Glibc, Grep, Make, and Sed</seg></seglistitem> -</segmentedlist> -</sect2> + <segmentedlist> + <segtitle>&dependencies;</segtitle> -<sect2 role="installation"> -<title>Installation of Ncurses</title> -<!-- Uncomment if using a dated ncurses release instead of a numbered one. + <seglistitem> + <seg>Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, + Make, and Sed</seg> + </seglistitem> + </segmentedlist> -<para>Since the release of Ncurses-&ncurses-version;, some bugs have been fixed -and features added. The most important news are ....... -To get these fixes and features, apply the rollup patch:</para> + </sect2> + + <sect2 role="installation"> + <title>Installation of Ncurses</title> + <!-- Uncomment if using a dated ncurses release instead of a numbered one. + + <para>Since the release of Ncurses-&ncurses-version;, some bugs have been fixed + and features added. The most important news are ....... + To get these fixes and features, apply the rollup patch:</para> <screen><userinput>bzcat ../&ncurses-rollup-patch; | patch -Np1</userinput></screen> ---> + --> -<para>Since the release of Ncurses-&ncurses-version;, a memory leak and some -display bugs were found and fixed upstream. Apply those fixes:</para> + <para>Since the release of Ncurses-&ncurses-version;, a memory leak and some + display bugs were found and fixed upstream. Apply those fixes:</para> <screen><userinput>patch -Np1 -i ../&ncurses-fixes-patch;</userinput></screen> -<para>Prepare Ncurses for compilation:</para> + <para>Prepare Ncurses for compilation:</para> <screen><userinput>./configure --prefix=/usr --with-shared --without-debug --enable-widec</userinput></screen> -<para>The meaning of the configure options:</para> - -<variablelist> -<varlistentry> -<term><parameter>--enable-widec</parameter></term> -<listitem><para>This switch causes wide-character libraries -(e.g., <filename class="libraryfile">libncursesw.so.&ncurses-version;</filename>) -to be built instead of normal ones -(e.g., <filename class="libraryfile">libncurses.so.&ncurses-version;</filename>). -These wide-character libraries are usable in both multibyte and traditional 8-bit -locales, while normal libraries work properly only in 8-bit locales. -Wide-character and normal libraries are source-compatible, but not -binary-compatible.</para> -</listitem> -</varlistentry> -<!-- -<varlistentry> -<term><parameter>- -without-cxx-binding</parameter></term> -<listitem><para>This optional switch causes the -<filename class="libraryfile">libncurses++w.a</filename> library -not to be built. Nothing in LFS and BLFS uses this library.</para> -</listitem> -</varlistentry> ---> -</variablelist> - -<para>Compile the package:</para> + <variablelist> + <title>The meaning of the configure option:</title> + + <varlistentry> + <term><parameter>--enable-widec</parameter></term> + <listitem> + <para>This switch causes wide-character libraries (e.g., <filename + class="libraryfile">libncursesw.so.&ncurses-version;</filename>) + to be built instead of normal ones (e.g., <filename + class="libraryfile">libncurses.so.&ncurses-version;</filename>). + These wide-character libraries are usable in both multibyte and + traditional 8-bit locales, while normal libraries work properly + only in 8-bit locales. Wide-character and normal libraries are + source-compatible, but not binary-compatible.</para> + </listitem> + </varlistentry> + + <!-- + <varlistentry> + <term><parameter>- -without-cxx-binding</parameter></term> + <listitem> + <para>This optional switch causes the + <filename class="libraryfile">libncurses++w.a</filename> library + not to be built. Nothing in LFS and BLFS uses this library.</para> + </listitem> + </varlistentry> + --> + + </variablelist> + + <para>Compile the package:</para> <screen><userinput>make</userinput></screen> -<para>This package does not come with a test suite.</para> + <para>This package does not come with a test suite.</para> -<para>Install the package:</para> + <para>Install the package:</para> <screen><userinput>make install</userinput></screen> -<para>Give the Ncurses libraries execute permissions:</para> + <para>Give the Ncurses libraries execute permissions:</para> <screen><userinput>chmod -v 755 /usr/lib/*.&ncurses-version;</userinput></screen> -<para>Fix a library that should not be executable:</para> + <para>Fix a library that should not be executable:</para> <screen><userinput>chmod -v 644 /usr/lib/libncurses++w.a</userinput></screen> -<para>Move the libraries to the <filename class="directory">/lib</filename> directory, -where they are expected to reside:</para> + <para>Move the libraries to the <filename class="directory">/lib</filename> directory, + where they are expected to reside:</para> <screen><userinput>mv -v /usr/lib/libncursesw.so.5* /lib</userinput></screen> -<para>Because the libraries have been moved, one symlink points to -a non-existent file. Recreate it:</para> + <para>Because the libraries have been moved, one symlink points to + a non-existent file. Recreate it:</para> <screen><userinput>ln -sfv ../../lib/libncursesw.so.5 /usr/lib/libncursesw.so</userinput></screen> -<para>Many applications still expect the linker to be able to find -non-wide-character Ncurses libraries. Trick such applications into linking with -wide-character libraries by means of symlinks and linker scripts:</para> + <para>Many applications still expect the linker to be able to find + non-wide-character Ncurses libraries. Trick such applications into linking with + wide-character libraries by means of symlinks and linker scripts:</para> <screen><userinput>for lib in curses ncurses form panel menu ; do \ - rm -vf /usr/lib/lib${lib}.so ; \ - echo "INPUT(-l${lib}w)" >/usr/lib/lib${lib}.so ; \ - ln -sfv lib${lib}w.a /usr/lib/lib${lib}.a ; \ + rm -vf /usr/lib/lib${lib}.so ; \ + echo "INPUT(-l${lib}w)" >/usr/lib/lib${lib}.so ; \ + ln -sfv lib${lib}w.a /usr/lib/lib${lib}.a ; \ done && ln -sfv libncurses++w.a /usr/lib/libncurses++.a</userinput></screen> -<para>Finally, make sure that old applications that look for -<filename class="libraryfile">-lcurses</filename> at build time are still -buildable:</para> + <para>Finally, make sure that old applications that look for + <filename class="libraryfile">-lcurses</filename> at build time are still + buildable:</para> <screen><userinput>echo "INPUT(-lncursesw)" >/usr/lib/libcursesw.so && ln -sfv libncurses.so /usr/lib/libcurses.so && ln -sfv libncursesw.a /usr/lib/libcursesw.a && ln -sfv libncurses.a /usr/lib/libcurses.a</userinput></screen> -<note><para>The instructions above don't create non-wide-character Ncurses -libraries since no package installed by compiling from sources would link -against them at runtime. -If you must have such libraries because of some binary-only application, -build them with the following commands:</para> + <note> + <para>The instructions above don't create non-wide-character Ncurses + libraries since no package installed by compiling from sources would + link against them at runtime. If you must have such libraries because + of some binary-only application, build them with the following + commands:</para> + <screen role="nodump"><userinput>make distclean && ./configure --prefix=/usr --with-shared --without-normal \ - --without-debug --without-cxx-binding && + --without-debug --without-cxx-binding && make sources libs && cp -av lib/lib*.so.5* /usr/lib</userinput></screen> -</note> -</sect2> - - -<sect2 id="contents-ncurses" role="content"><title>Contents of Ncurses</title> - -<segmentedlist> -<segtitle>Installed programs</segtitle> -<segtitle>Installed libraries</segtitle> -<seglistitem><seg>captoinfo (link to tic), clear, infocmp, infotocap (link to tic), -reset (link to tset), tack, tic, toe, tput, and tset</seg> -<seg>libcursesw.[a,so] (symlink and linker script to libncursesw.[a,so]), -libformw.[a,so], libmenuw.[a,so], -libncurses++w.a, libncursesw.[a,so], libpanelw.[a,so] and their -non-wide-character counterparts without "w" in the library names.</seg></seglistitem> -</segmentedlist> - -<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead> -<?dbfo list-presentation="list"?> -<?dbhtml list-presentation="table"?> - -<varlistentry id="captoinfo"> -<term><command>captoinfo</command></term> -<listitem> -<para>Converts a termcap description into a terminfo description</para> -<indexterm zone="ch-system-ncurses captoinfo"><primary sortas="b-captoinfo">captoinfo</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="clear"> -<term><command>clear</command></term> -<listitem> -<para>Clears the screen, if possible</para> -<indexterm zone="ch-system-ncurses clear"><primary sortas="b-clear">clear</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="infocmp"> -<term><command>infocmp</command></term> -<listitem> -<para>Compares or prints out terminfo descriptions</para> -<indexterm zone="ch-system-ncurses infocmp"><primary sortas="b-infocmp">infocmp</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="infotocap"> -<term><command>infotocap</command></term> -<listitem> -<para>Converts a terminfo description into a termcap description</para> -<indexterm zone="ch-system-ncurses infotocap"><primary sortas="b-infotocap">infotocap</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="reset"> -<term><command>reset</command></term> -<listitem> -<para>Reinitializes a terminal to its default values</para> -<indexterm zone="ch-system-ncurses reset"><primary sortas="b-reset">reset</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="tack"> -<term><command>tack</command></term> -<listitem> -<para>The terminfo action checker; it is mainly used to test the -accuracy of an entry in the terminfo database</para> -<indexterm zone="ch-system-ncurses tack"><primary sortas="b-tack">tack</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="tic"> -<term><command>tic</command></term> -<listitem> -<para>The terminfo entry-description compiler that translates a -terminfo file from source format into the binary format needed for the -ncurses library routines. A terminfo file contains information on the -capabilities of a certain terminal</para> -<indexterm zone="ch-system-ncurses tic"><primary sortas="b-tic">tic</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="toe"> -<term><command>toe</command></term> -<listitem> -<para>Lists all available terminal types, giving the primary name and -description for each</para> -<indexterm zone="ch-system-ncurses toe"><primary sortas="b-toe">toe</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="tput"> -<term><command>tput</command></term> -<listitem> -<para>Makes the values of terminal-dependent capabilities available to -the shell; it can also be used to reset or initialize a terminal or -report its long name</para> -<indexterm zone="ch-system-ncurses tput"><primary sortas="b-tput">tput</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="tset"> -<term><command>tset</command></term> -<listitem> -<para>Can be used to initialize terminals</para> -<indexterm zone="ch-system-ncurses tset"><primary sortas="b-tset">tset</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="libcurses"> -<term><filename class="libraryfile">libcurses</filename></term> -<listitem> -<para>A link to <filename>libncurses</filename></para> -<indexterm zone="ch-system-ncurses libcurses"><primary sortas="c-libcurses">libcurses</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="libncurses"> -<term><filename class="libraryfile">libncurses</filename></term> -<listitem> -<para>Contains functions to display text in many complex ways on a -terminal screen; a good example of the use of these functions is the -menu displayed during the kernel's <command>make menuconfig</command></para> -<indexterm zone="ch-system-ncurses libncurses"><primary sortas="c-libncurses">libncurses</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="libform"> -<term><filename class="libraryfile">libform</filename></term> -<listitem> -<para>Contains functions to implement forms</para> -<indexterm zone="ch-system-ncurses libform"><primary sortas="c-libform">libform</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="libmenu"> -<term><filename class="libraryfile">libmenu</filename></term> -<listitem> -<para>Contains functions to implement menus</para> -<indexterm zone="ch-system-ncurses libmenu"><primary sortas="c-libmenu">libmenu</primary></indexterm> -</listitem> -</varlistentry> - -<varlistentry id="libpanel"> -<term><filename class="libraryfile">libpanel</filename></term> -<listitem> -<para>Contains functions to implement panels</para> -<indexterm zone="ch-system-ncurses libpanel"><primary sortas="c-libpanel">libpanel</primary></indexterm> -</listitem> -</varlistentry> -</variablelist> - -</sect2> + </note> + + </sect2> + + <sect2 id="contents-ncurses" role="content"> + <title>Contents of Ncurses</title> + + <segmentedlist> + <segtitle>Installed programs</segtitle> + <segtitle>Installed libraries</segtitle> + + <seglistitem> + <seg>captoinfo (link to tic), clear, infocmp, infotocap (link to tic), + reset (link to tset), tack, tic, toe, tput, and tset</seg> + <seg>libcursesw.[a,so] (symlink and linker script to libncursesw.[a,so]), + libformw.[a,so], libmenuw.[a,so], libncurses++w.a, libncursesw.[a,so], + libpanelw.[a,so] and their non-wide-character counterparts without "w" + in the library names.</seg> + </seglistitem> + </segmentedlist> + + <variablelist> + <bridgehead renderas="sect3">Short Descriptions</bridgehead> + <?dbfo list-presentation="list"?> + <?dbhtml list-presentation="table"?> + + <varlistentry id="captoinfo"> + <term><command>captoinfo</command></term> + <listitem> + <para>Converts a termcap description into a terminfo description</para> + <indexterm zone="ch-system-ncurses captoinfo"> + <primary sortas="b-captoinfo">captoinfo</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="clear"> + <term><command>clear</command></term> + <listitem> + <para>Clears the screen, if possible</para> + <indexterm zone="ch-system-ncurses clear"> + <primary sortas="b-clear">clear</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="infocmp"> + <term><command>infocmp</command></term> + <listitem> + <para>Compares or prints out terminfo descriptions</para> + <indexterm zone="ch-system-ncurses infocmp"> + <primary sortas="b-infocmp">infocmp</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="infotocap"> + <term><command>infotocap</command></term> + <listitem> + <para>Converts a terminfo description into a termcap description</para> + <indexterm zone="ch-system-ncurses infotocap"> + <primary sortas="b-infotocap">infotocap</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="reset"> + <term><command>reset</command></term> + <listitem> + <para>Reinitializes a terminal to its default values</para> + <indexterm zone="ch-system-ncurses reset"> + <primary sortas="b-reset">reset</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="tack"> + <term><command>tack</command></term> + <listitem> + <para>The terminfo action checker; it is mainly used to test the + accuracy of an entry in the terminfo database</para> + <indexterm zone="ch-system-ncurses tack"> + <primary sortas="b-tack">tack</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="tic"> + <term><command>tic</command></term> + <listitem> + <para>The terminfo entry-description compiler that translates a + terminfo file from source format into the binary format needed for the + ncurses library routines. A terminfo file contains information on the + capabilities of a certain terminal</para> + <indexterm zone="ch-system-ncurses tic"> + <primary sortas="b-tic">tic</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="toe"> + <term><command>toe</command></term> + <listitem> + <para>Lists all available terminal types, giving the primary name and + description for each</para> + <indexterm zone="ch-system-ncurses toe"> + <primary sortas="b-toe">toe</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="tput"> + <term><command>tput</command></term> + <listitem> + <para>Makes the values of terminal-dependent capabilities available to + the shell; it can also be used to reset or initialize a terminal or + report its long name</para> + <indexterm zone="ch-system-ncurses tput"> + <primary sortas="b-tput">tput</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="tset"> + <term><command>tset</command></term> + <listitem> + <para>Can be used to initialize terminals</para> + <indexterm zone="ch-system-ncurses tset"> + <primary sortas="b-tset">tset</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="libcurses"> + <term><filename class="libraryfile">libcurses</filename></term> + <listitem> + <para>A link to <filename>libncurses</filename></para> + <indexterm zone="ch-system-ncurses libcurses"> + <primary sortas="c-libcurses">libcurses</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="libncurses"> + <term><filename class="libraryfile">libncurses</filename></term> + <listitem> + <para>Contains functions to display text in many complex ways on a + terminal screen; a good example of the use of these functions is the + menu displayed during the kernel's <command>make + menuconfig</command></para> + <indexterm zone="ch-system-ncurses libncurses"> + <primary sortas="c-libncurses">libncurses</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="libform"> + <term><filename class="libraryfile">libform</filename></term> + <listitem> + <para>Contains functions to implement forms</para> + <indexterm zone="ch-system-ncurses libform"> + <primary sortas="c-libform">libform</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="libmenu"> + <term><filename class="libraryfile">libmenu</filename></term> + <listitem> + <para>Contains functions to implement menus</para> + <indexterm zone="ch-system-ncurses libmenu"> + <primary sortas="c-libmenu">libmenu</primary> + </indexterm> + </listitem> + </varlistentry> + + <varlistentry id="libpanel"> + <term><filename class="libraryfile">libpanel</filename></term> + <listitem> + <para>Contains functions to implement panels</para> + <indexterm zone="ch-system-ncurses libpanel"> + <primary sortas="c-libpanel">libpanel</primary> + </indexterm> + </listitem> + </varlistentry> + + </variablelist> + + </sect2> </sect1> |