diff options
82 files changed, 46608 insertions, 0 deletions
@@ -0,0 +1,482 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307 USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,4 @@ +This tree will stay in disarray until I clean up some basic stuff. Please +contact me directly if you intend to hack on it. + +Nalin (nalin@redhat.com) diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..af437a6 --- /dev/null +++ b/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..2b73aa7 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,419 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PKG_CONFIG = @PKG_CONFIG@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +SUBDIRS = src +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \ + Makefile.am Makefile.in NEWS aclocal.m4 compile config.guess \ + config.h.in config.sub configure configure.ac depcomp \ + install-sh ltmain.sh missing mkinstalldirs +DIST_SUBDIRS = $(SUBDIRS) +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$@ $(SHELL) ./config.status + +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.ac + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +config.h: stamp-h + @if test ! -f $@; then \ + rm -f stamp-h; \ + $(MAKE) stamp-h; \ + else :; fi +stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h stamp-hT + @echo timestamp > stamp-hT 2> /dev/null + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=config.h \ + $(SHELL) ./config.status + @mv stamp-hT stamp-h +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/./stamp-h.in + @if test ! -f $@; then \ + rm -f $(srcdir)/./stamp-h.in; \ + $(MAKE) $(srcdir)/./stamp-h.in; \ + else :; fi +$(srcdir)/./stamp-h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4) + @rm -f $(srcdir)/./stamp-h.in $(srcdir)/./stamp-h.inT + @echo timestamp > $(srcdir)/./stamp-h.inT 2> /dev/null + cd $(top_srcdir) && $(AUTOHEADER) + @mv $(srcdir)/./stamp-h.inT $(srcdir)/./stamp-h.in + +distclean-hdr: + -rm -f config.h +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ + || etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) + +GTAGS: + here=`CDPATH=: && cd $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = . +# Avoid unsightly `./'. +distdir = $(PACKAGE)-$(VERSION) + +GZIP_ENV = --best + +distdir: $(DISTFILES) + -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) + mkdir $(distdir) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + chmod a-w $(distdir) + dc_install_base=`CDPATH=: && cd $(distdir)/=inst && pwd` \ + && cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ + || (echo "Error: files left after uninstall" 1>&2; \ + exit 1) ) \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && $(MAKE) $(AM_MAKEFLAGS) distclean \ + && rm -f $(distdir).tar.gz \ + && (test `find . -type f -print | wc -l` -eq 0 \ + || (echo "Error: files left after distclean" 1>&2; \ + exit 1) ) + -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;x' +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +dist-all: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) +distclean: distclean-recursive + -rm -f config.status config.cache config.log +distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive dist dist-all \ + distcheck distclean distclean-generic distclean-hdr \ + distclean-libtool distclean-recursive distclean-tags distdir \ + dvi dvi-am dvi-recursive info info-am info-recursive install \ + install-am install-data install-data-am install-data-recursive \ + install-exec install-exec-am install-exec-recursive \ + install-info install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: @@ -0,0 +1,40 @@ +* What is VTE? +- You could say that VTE is something of a research project of mine, based on + the simple question: "if programs can use a termcap file (through either + libtermcap or curses or ncurses) to determine how to drive a terminal, why + can't a terminal emulator use a termcap file to determine how to behave?" + +* What does VTE include? +- VTE includes a library (libvte) which implements such a terminal emulator + widget for GTK+ 2.0, and a sample application (vte) which wraps that widget + in a GTK window. + +* How does it work? +- The VTE library inserts terminal capability strings into a trie, and then + uses it to determine if data received from a pseudo-terminal is a control + sequence or just random data. The sample program "interpret" illustrates + what the widget actually sees after it filters incoming data. + +* What's missing? +- Entries in the termcap file also don't contain the sequences which a terminal + is supposed to send to the application when a specific sequence is received + (for example, the query-cursor-position control sequence). I haven't figured + out how to do those yet. +- Most commands specific to Xterm or dtterm are recognized, but very few of + their behaviors are implemented. +- Certain termcap-specific commands aren't implemented yet. There are enough + to run ls, vim, less, and probably emacs and mutt, but more need to be + implemented. +- I'm not sure the widget implementation itself is correct. There are many + changes in going from GTK+ 1.2 to 2.0, and examples of the proper way to do + things is currently scarce, so some of it's guesswork. +- An actual property interface needs to be retrofitted over the various options + which are currently hard-coded at startup-time. +- The widget uses wide characters internally, converting from the narrow streams + it interfaces with for internal storage using iconv, but it doesn't handle + changes to the terminal encoding in the middle of a block of characters until + after it's processed the entire block, meaning that sometimes encoding isn't + handled properly. +- Selection and copy/paste support isn't started yet. +- Input method support isn't started yet. +- Mouse tracking isn't started yet. diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..48bd9d5 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,4130 @@ +# aclocal.m4 generated automatically by aclocal 1.5 + +# Copyright 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# Do all the work for Automake. This macro actually does too much -- +# some checks are only needed if your package does certain things. +# But this isn't really a big deal. + +# serial 5 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# We require 2.13 because we rely on SHELL being computed by configure. +AC_PREREQ([2.13]) + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If MACRO-NAME is provided do IF-PROVIDED, else IF-NOT-PROVIDED. +# The purpose of this macro is to provide the user with a means to +# check macros which are provided without letting her know how the +# information is coded. +# If this macro is not defined by Autoconf, define it here. +ifdef([AC_PROVIDE_IFELSE], + [], + [define([AC_PROVIDE_IFELSE], + [ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AM_INIT_AUTOMAKE(PACKAGE,VERSION, [NO-DEFINE]) +# ---------------------------------------------- +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`CDPATH=:; cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run \"make distclean\" there first]) +fi + +# Define the identity of the package. +PACKAGE=$1 +AC_SUBST(PACKAGE)dnl +VERSION=$2 +AC_SUBST(VERSION)dnl +ifelse([$3],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) + +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. +ifdef([m4_pattern_allow], + [m4_pattern_allow([^AM_[A-Z]+FLAGS])])dnl + +# Autoconf 2.50 always computes EXEEXT. However we need to be +# compatible with 2.13, for now. So we always define EXEEXT, but we +# don't compute it. +AC_SUBST(EXEEXT) +# Similar for OBJEXT -- only we only use OBJEXT if the user actually +# requests that it be used. This is a bit dumb. +: ${OBJEXT=o} +AC_SUBST(OBJEXT) + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG(AMTAR, tar) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl +AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_PROVIDE_IFELSE([AC_PROG_][CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_][CC], + defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_][CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_][CXX], + defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) + +# +# Check to make sure that the build environment is sane. +# + +# serial 3 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + + +# serial 2 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + am_backtick='`' + AC_MSG_WARN([${am_backtick}missing' script is too old or missing]) +fi +]) + +# AM_AUX_DIR_EXPAND + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], [ +# expand $ac_aux_dir to an absolute path +am_aux_dir=`CDPATH=:; cd $ac_aux_dir && pwd` +]) + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# serial 4 -*- Autoconf -*- + + + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + + +# _AM_DEPENDENCIES(NAME) +# --------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX" or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'] + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +$1DEPMODE="depmode=$am_cv_$1_dependencies_compiler_type" +AC_SUBST([$1DEPMODE]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[rm -f .deps 2>/dev/null +mkdir .deps 2>/dev/null +if test -d .deps; then + DEPDIR=.deps +else + # MS-DOS does not allow filenames that begin with a dot. + DEPDIR=_deps +fi +rmdir .deps 2>/dev/null +AC_SUBST(DEPDIR) +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +pushdef([subst], defn([AC_SUBST])) +subst(AMDEPBACKSLASH) +popdef([subst]) +]) + +# Generate code to set up dependency tracking. +# This macro should only be invoked once -- use via AC_REQUIRE. +# Usage: +# AM_OUTPUT_DEPENDENCY_COMMANDS + +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],[ +AC_OUTPUT_COMMANDS([ +test x"$AMDEP_TRUE" != x"" || +for mf in $CONFIG_FILES; do + case "$mf" in + Makefile) dirpart=.;; + */Makefile) dirpart=`echo "$mf" | sed -e 's|/[^/]*$||'`;; + *) continue;; + esac + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`echo "$file" | sed -e 's|/[^/]*$||'` + $ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1 + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +], [AMDEP_TRUE="$AMDEP_TRUE" +ac_aux_dir="$ac_aux_dir"])]) + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include='#' +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote='"' + _am_result=BSD + fi +fi +AC_SUBST(am__include) +AC_SUBST(am__quote) +AC_MSG_RESULT($_am_result) +rm -f confinc confmf +]) + +# serial 3 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +# +# FIXME: Once using 2.50, use this: +# m4_match([$1], [^TRUE\|FALSE$], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_DEFUN([AM_CONDITIONAL], +[ifelse([$1], [TRUE], + [errprint(__file__:__line__: [$0: invalid condition: $1 +])dnl +m4exit(1)])dnl +ifelse([$1], [FALSE], + [errprint(__file__:__line__: [$0: invalid condition: $1 +])dnl +m4exit(1)])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi]) + +# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- + +# serial 46 AC_PROG_LIBTOOL + +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +]) + +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.13)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +_LT_AC_PROG_ECHO_BACKSLASH +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE(libtool-lock, + [ --disable-libtool-lock avoid locking (might break parallel builds)]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_SAVE + AC_LANG_C + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_RESTORE]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one + AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, + [AC_TRY_LINK([], + [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); + DllMain (0, 0, 0);], + [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) + + case $host/$CC in + *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) + # old mingw systems require "-dll" to link a DLL, while more recent ones + # require "-mdll" + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -mdll" + AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, + [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) + CFLAGS="$SAVE_CFLAGS" ;; + *-*-cygwin* | *-*-pw32*) + # cygwin systems need to pass --dll to the linker, and not link + # crt.o which will require a WinMain@16 definition. + lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; + esac + ;; + ]) +esac + +_LT_AC_LTCONFIG_HACK + +]) + +# AC_LIBTOOL_HEADER_ASSERT +# ------------------------ +AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], +[AC_CACHE_CHECK([whether $CC supports assert without backlinking], + [lt_cv_func_assert_works], + [case $host in + *-*-solaris*) + if test "$GCC" = yes && test "$with_gnu_ld" != yes; then + case `$CC --version 2>/dev/null` in + [[12]].*) lt_cv_func_assert_works=no ;; + *) lt_cv_func_assert_works=yes ;; + esac + fi + ;; + esac]) + +if test "x$lt_cv_func_assert_works" = xyes; then + AC_CHECK_HEADERS(assert.h) +fi +])# AC_LIBTOOL_HEADER_ASSERT + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h) +])# _LT_AC_CHECK_DLFCN + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +irix*) + symcode='[[BCDEGRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $host_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[[ABCDGISTW]]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + rm -f conftest* + cat > conftest.$ac_ext <<EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat <<EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' + + cat <<EOF >> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[[]] = +{ +EOF + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if AC_TRY_EVAL(ac_link) && test -s conftest; then + pipe_works=yes + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AC_FD_CC + fi + else + echo "cannot find nm_test_var in $nlist" >&AC_FD_CC + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC + fi + else + echo "$progname: failed program was:" >&AC_FD_CC + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +if test -z "$lt_cv_sys_global_symbol_pipe"; then + global_symbol_to_cdecl= + global_symbol_to_c_name_address= +else + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" + global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +fi +if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + +# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR +# --------------------------------- +AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], +[# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi +])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<EOF +$* +EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +AC_DIVERT_POP +])# _LT_AC_PROG_ECHO_BACKSLASH + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[if test "$cross_compiling" = yes; then : + [$4] +else + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +[#line __oline__ "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + cygwin* | mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + +AC_DEFUN([_LT_AC_LTCONFIG_HACK], +[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" +need_locks="$enable_libtool_lock" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +if test x"$host" != x"$build"; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case $host_os in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="[$]2" + +AC_MSG_CHECKING([for objdir]) +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +AC_MSG_RESULT($objdir) + + +AC_ARG_WITH(pic, +[ --with-pic try to use only PIC/non-PIC objects [default=use both]], +pic_mode="$withval", pic_mode=default) +test -z "$pic_mode" && pic_mode=default + +# We assume here that the value for lt_cv_prog_cc_pic will not be cached +# in isolation, and that seeing it set (from the cache) indicates that +# the associated values are set (in the cache) correctly too. +AC_MSG_CHECKING([for $compiler option to produce PIC]) +AC_CACHE_VAL(lt_cv_prog_cc_pic, +[ lt_cv_prog_cc_pic= + lt_cv_prog_cc_shlib= + lt_cv_prog_cc_wl= + lt_cv_prog_cc_static= + lt_cv_prog_cc_no_builtin= + lt_cv_prog_cc_can_build_shared=$can_build_shared + + if test "$GCC" = yes; then + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-static' + + case $host_os in + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # not sure about C++ programs. + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_cv_prog_cc_pic=-Kconform_pic + fi + ;; + *) + lt_cv_prog_cc_pic='-fPIC' + ;; + esac + else + # PORTME Check for PIC flags for the system compiler. + case $host_os in + aix3* | aix4* | aix5*) + lt_cv_prog_cc_wl='-Wl,' + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better lt_cv_prog_cc_static that works with the bundled CC? + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" + lt_cv_prog_cc_pic='+Z' + ;; + + irix5* | irix6*) + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + + newsos6) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + ;; + + sco3.2v5*) + lt_cv_prog_cc_pic='-Kpic' + lt_cv_prog_cc_static='-dn' + lt_cv_prog_cc_shlib='-belf' + ;; + + solaris*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + sunos4*) + lt_cv_prog_cc_pic='-PIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + if test "x$host_vendor" = xsni; then + lt_cv_prog_cc_wl='-LD' + else + lt_cv_prog_cc_wl='-Wl,' + fi + ;; + + uts4*) + lt_cv_prog_cc_pic='-pic' + lt_cv_prog_cc_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_cv_prog_cc_pic='-Kconform_pic' + lt_cv_prog_cc_static='-Bstatic' + fi + ;; + + *) + lt_cv_prog_cc_can_build_shared=no + ;; + esac + fi +]) +if test -z "$lt_cv_prog_cc_pic"; then + AC_MSG_RESULT([none]) +else + AC_MSG_RESULT([$lt_cv_prog_cc_pic]) + + # Check to make sure the pic_flag actually works. + AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) + AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + AC_TRY_COMPILE([], [], [dnl + case $host_os in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then + # they create non-PIC objects. So, if there were any warnings, we + # assume that PIC is not supported. + if test -s conftest.err; then + lt_cv_prog_cc_pic_works=no + else + lt_cv_prog_cc_pic_works=yes + fi + ;; + *) + lt_cv_prog_cc_pic_works=yes + ;; + esac + ], [dnl + lt_cv_prog_cc_pic_works=no + ]) + CFLAGS="$save_CFLAGS" + ]) + + if test "X$lt_cv_prog_cc_pic_works" = Xno; then + lt_cv_prog_cc_pic= + lt_cv_prog_cc_can_build_shared=no + else + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" + fi + + AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) +fi + +# Check for any special shared library compilation flags. +if test -n "$lt_cv_prog_cc_shlib"; then + AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) + lt_cv_prog_cc_can_build_shared=no + fi +fi + +AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) +AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl + lt_cv_prog_cc_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) + LDFLAGS="$save_LDFLAGS" +]) + +# Belt *and* braces to stop my trousers falling down: +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) + +pic_flag="$lt_cv_prog_cc_pic" +special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +wl="$lt_cv_prog_cc_wl" +link_static_flag="$lt_cv_prog_cc_static" +no_builtin_flag="$lt_cv_prog_cc_no_builtin" +can_build_shared="$lt_cv_prog_cc_can_build_shared" + + +# Check to see if options -o and -c are simultaneously supported by compiler +AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) +AC_CACHE_VAL([lt_cv_compiler_c_o], [ +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +echo "int some_variable = 0;" > conftest.$ac_ext +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +compiler_c_o=no +if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + lt_cv_compiler_c_o=no + else + lt_cv_compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&AC_FD_CC + lt_cv_compiler_c_o=no +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null +]) +compiler_c_o=$lt_cv_compiler_c_o +AC_MSG_RESULT([$compiler_c_o]) + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) + AC_CACHE_VAL([lt_cv_compiler_o_lo], [ + lt_cv_compiler_o_lo=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + save_objext="$ac_objext" + ac_objext=lo + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + lt_cv_compiler_o_lo=no + else + lt_cv_compiler_o_lo=yes + fi + ]) + ac_objext="$save_objext" + CFLAGS="$save_CFLAGS" + ]) + compiler_o_lo=$lt_cv_compiler_o_lo + AC_MSG_RESULT([$compiler_o_lo]) +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi + +if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + compiler_rtti_exceptions=no + else + compiler_rtti_exceptions=yes + fi + ]) + CFLAGS="$save_CFLAGS" + AC_MSG_RESULT([$compiler_rtti_exceptions]) + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi +fi + +# See if the linker supports building shared libraries. +AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +old_archive_from_expsyms_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_into_libs=no +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +link_all_deplibs=unknown +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. +extract_expsyms_cmds= + +case $host_os in +cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; +openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ + test -f $output_objdir/impgen.exe || (cd $output_objdir && \ + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ + else $CC -o impgen impgen.c ; fi)~ + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' + + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' + + # cygwin and mingw dlls have different entry points and sets of symbols + # to exclude. + # FIXME: what about values for MSVC? + dll_entry=__cygwin_dll_entry@12 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ + case $host_os in + mingw*) + # mingw values + dll_entry=_DllMainCRTStartup@12 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ + ;; + esac + + # mingw and cygwin differ, and it's simplest to just exclude the union + # of the two symbol sets. + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one (in ltdll.c) + if test "x$lt_cv_need_dllmain" = "xyes"; then + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " + ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' + else + ltdll_obj= + ltdll_cmds= + fi + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left be newer dlltools. + export_symbols_cmds="$ltdll_cmds"' + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' + + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \[$]# in + 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ + '"$ltdll_cmds"' + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw* | pw32*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + hardcode_direct=yes + archive_cmds='' + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + shared_flag='${wl}-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall can do strange things, so it is better to + # generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='${wl}-berok' + # This is a bit strange, but is similar to how AIX traditionally builds + # it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + allow_undefined_flag='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case $host_os in + hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case "$host_os" in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + #Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + export_dynamic_flag_spec='${wl}-Bexport' + ;; + + solaris*) + # gcc --version < 3.0 without binutils cannot create self contained + # shared libraries reliably, requiring libgcc.a to resolve some of + # the object symbols generated in some cases. Libraries that use + # assert need libgcc.a to resolve __eprintf, for example. Linking + # a copy of libgcc.a into every shared library to guarantee resolving + # such symbols causes other problems: According to Tim Van Holder + # <tim.van.holder@pandora.be>, C++ libraries end up with a separate + # (to the application) exception stack for one thing. + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + case `$CC --version 2>/dev/null` in + [[12]].*) + cat <<EOF 1>&2 + +*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +*** create self contained shared libraries on Solaris systems, without +*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +*** -no-undefined support, which will at least allow you to build shared +*** libraries. However, you may find that when you link such libraries +*** into an application without using GCC, you have to manually add +*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +*** upgrade to a newer version of GCC. Another option is to rebuild your +*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. + +EOF + no_undefined_flag= + ;; + esac + fi + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + if test "x$host_vendor" = xsno; then + archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + else + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5uw7* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +AC_MSG_RESULT([$ld_shlibs]) +test "$ld_shlibs" = no && can_build_shared=no + +# Check hardcoding attributes. +AC_MSG_CHECKING([how to hardcode library paths into programs]) +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +AC_MSG_RESULT([$hardcode_action]) + +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + +reload_cmds='$LD$reload_flag -o $output$reload_objs' +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +# PORTME Fill in your ld.so characteristics +AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4* | aix5*) + version_type=linux + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can + # not hardcode correct soname into executable. Probably we can + # add versioning support to collect2, so additional links can + # be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}.so$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + need_version=no + need_lib_prefix=no + case $GCC,$host_os in + yes,cygwin*) + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + ;; + yes,mingw*) + library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` + ;; + yes,pw32*) + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + ;; + *) + library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + *) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6*) + version_type=irix + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' + case $host_os in + irix5*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case "$host_os" in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +AC_LIBTOOL_DLOPEN_SELF + +if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], + [$rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile); then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_cv_prog_cc_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi]) + AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) + ;; + esac +fi +need_lc=${lt_cv_archive_cmds_need_lc-yes} + +# The second clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + : +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi + +if test -f "$ltmain"; then + trap "$rm \"${ofile}T\"; exit 1" 1 2 15 + $rm -f "${ofile}T" + + echo creating $ofile + + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS \ + AR AR_FLAGS CC LD LN_S NM SHELL \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ + old_striplib striplib file_magic_cmd export_symbols_cmds \ + deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + global_symbol_to_c_name_address \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case $var in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + cat <<__EOF__ > "${ofile}T" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996-2000 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# The default C compiler. +CC=$lt_CC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_pic_flag +pic_mode=$pic_mode + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$lt_compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + case $host_os in + aix3*) + cat <<\EOF >> "${ofile}T" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + case $host_os in + cygwin* | mingw* | pw32* | os2*) + cat <<'EOF' >> "${ofile}T" + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include <windows.h> +# #undef WIN32_LEAN_AND_MEAN +# #include <stdio.h> +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include <cygwin/cygwin_dll.h> +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# */ +# +# #include <stdio.h> /* for printf() */ +# #include <unistd.h> /* for open(), lseek(), read() */ +# #include <fcntl.h> /* for O_RDONLY, O_BINARY */ +# #include <string.h> /* for strdup() */ +# +# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +# #ifndef O_BINARY +# #define O_BINARY 0 +# #endif +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (dll < 1) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i<nexp; i++) +# { +# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4); +# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i); +# } +# +# return 0; +# } +# /* impgen.c ends here */ + +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + + mv -f "${ofile}T" "$ofile" || \ + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") + chmod +x "$ofile" +fi + +])# _LT_AC_LTCONFIG_HACK + +# AC_LIBTOOL_DLOPEN - enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) + +# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) + +# AC_ENABLE_SHARED - implement the --enable-shared flag +# Usage: AC_ENABLE_SHARED[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(shared, +changequote(<<, >>)dnl +<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +]) + +# AC_DISABLE_SHARED - set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no)]) + +# AC_ENABLE_STATIC - implement the --enable-static flag +# Usage: AC_ENABLE_STATIC[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(static, +changequote(<<, >>)dnl +<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_static=AC_ENABLE_STATIC_DEFAULT)dnl +]) + +# AC_DISABLE_STATIC - set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no)]) + + +# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(fast-install, +changequote(<<, >>)dnl +<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_fast_install=yes ;; +no) enable_fast_install=no ;; +*) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl +]) + +# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no)]) + +# AC_LIBTOOL_PICMODE - implement the --with-pic flag +# Usage: AC_LIBTOOL_PICMODE[(MODE)] +# Where MODE is either `yes' or `no'. If omitted, it defaults to +# `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default)]) + + +# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <<EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +]) + + +# AC_PATH_MAGIC - find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl +AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) + else + MAGIC_CMD=: + fi +fi +]) + + +# AC_PROG_LD - find the path to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | [[A-Za-z]]:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_PROG_LD_GNU +]) + +# AC_PROG_LD_GNU - +AC_DEFUN([AC_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then + lt_cv_prog_gnu_ld=yes +else + lt_cv_prog_gnu_ld=no +fi]) +with_gnu_ld=$lt_cv_prog_gnu_ld +]) + +# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], +[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, +[lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" +]) + +# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], +[AC_CACHE_CHECK([how to recognise dependant libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin* | mingw* | pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[[012]]) + lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + +freebsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + +irix5* | irix6*) + case $host_os in + irix5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + case $host_cpu in + alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +openbsd*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv5uw[[78]]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + esac + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +]) + + +# AC_PROG_NM - find the path to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +AC_MSG_CHECKING([for BSD-compatible nm]) +AC_CACHE_VAL(lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/${ac_tool_prefix}nm + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" + break + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" + break + else + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +AC_MSG_RESULT([$NM]) +]) + +# AC_CHECK_LIBM - check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32*) + # These system don't have libm + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, main, LIBM="-lm") + ;; +esac +]) + +# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl convenience library and INCLTDL to the include flags for +# the libltdl header and adds --enable-ltdl-convenience to the +# configure arguments. Note that LIBLTDL and INCLTDL are not +# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not +# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed +# with '${top_builddir}/' and INCLTDL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +]) + +# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl installable library and INCLTDL to the include flags for +# the libltdl header and adds --enable-ltdl-install to the configure +# arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is +# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed +# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and INCLTDL will be prefixed +# with '${top_srcdir}/' (note the single quotes!). If your package is +# not flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, main, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + INCLTDL= + fi +]) + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + + +dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not) +dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page +dnl also defines GSTUFF_PKG_ERRORS on error +AC_DEFUN(PKG_CHECK_MODULES, [ + succeeded=no + + if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + AC_MSG_CHECKING(for $2) + + if $PKG_CONFIG --exists "$2" ; then + AC_MSG_RESULT(yes) + succeeded=yes + + AC_MSG_CHECKING($1_CFLAGS) + $1_CFLAGS=`$PKG_CONFIG --cflags "$2"` + AC_MSG_RESULT($$1_CFLAGS) + + AC_MSG_CHECKING($1_LIBS) + $1_LIBS=`$PKG_CONFIG --libs "$2"` + AC_MSG_RESULT($$1_LIBS) + else + $1_CFLAGS="" + $1_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` + ifelse([$4], ,echo $$1_PKG_ERRORS,) + fi + + AC_SUBST($1_CFLAGS) + AC_SUBST($1_LIBS) + else + echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + fi + fi + + if test $succeeded = yes; then + ifelse([$3], , :, [$3]) + else + ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4]) + fi +]) + + + +# Add --enable-maintainer-mode option to configure. +# From Jim Meyering + +# serial 1 + +AC_DEFUN([AM_MAINTAINER_MODE], +[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode is disabled by default + AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + USE_MAINTAINER_MODE=$enableval, + USE_MAINTAINER_MODE=no) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST(MAINT)dnl +] +) + +# Like AC_CONFIG_HEADER, but automatically create stamp file. + +# serial 3 + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. We must strip everything past the first ":", +# and everything past the last "/". + +AC_PREREQ([2.12]) + +AC_DEFUN([AM_CONFIG_HEADER], +[ifdef([AC_FOREACH],dnl + [dnl init our file count if it isn't already + m4_ifndef([_AM_Config_Header_Index], m4_define([_AM_Config_Header_Index], [0])) + dnl prepare to store our destination file list for use in config.status + AC_FOREACH([_AM_File], [$1], + [m4_pushdef([_AM_Dest], m4_patsubst(_AM_File, [:.*])) + m4_define([_AM_Config_Header_Index], m4_incr(_AM_Config_Header_Index)) + dnl and add it to the list of files AC keeps track of, along + dnl with our hook + AC_CONFIG_HEADERS(_AM_File, +dnl COMMANDS, [, INIT-CMDS] +[# update the timestamp +echo timestamp >"AS_ESCAPE(_AM_DIRNAME(]_AM_Dest[))/stamp-h]_AM_Config_Header_Index[" +][$2]m4_ifval([$3], [, [$3]]))dnl AC_CONFIG_HEADERS + m4_popdef([_AM_Dest])])],dnl +[AC_CONFIG_HEADER([$1]) + AC_OUTPUT_COMMANDS( + ifelse(patsubst([$1], [[^ ]], []), + [], + [test -z "$CONFIG_HEADERS" || echo timestamp >dnl + patsubst([$1], [^\([^:]*/\)?.*], [\1])stamp-h]),dnl +[am_indx=1 +for am_file in $1; do + case " \$CONFIG_HEADERS " in + *" \$am_file "*) + am_dir=\`echo \$am_file |sed 's%:.*%%;s%[^/]*\$%%'\` + if test -n "\$am_dir"; then + am_tmpdir=\`echo \$am_dir |sed 's%^\(/*\).*\$%\1%'\` + for am_subdir in \`echo \$am_dir |sed 's%/% %'\`; do + am_tmpdir=\$am_tmpdir\$am_subdir/ + if test ! -d \$am_tmpdir; then + mkdir \$am_tmpdir + fi + done + fi + echo timestamp > "\$am_dir"stamp-h\$am_indx + ;; + esac + am_indx=\`expr \$am_indx + 1\` +done]) +])]) # AM_CONFIG_HEADER + +# _AM_DIRNAME(PATH) +# ----------------- +# Like AS_DIRNAME, only do it during macro expansion +AC_DEFUN([_AM_DIRNAME], + [m4_if(m4_regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, + m4_if(m4_regexp([$1], [^//\([^/]\|$\)]), -1, + m4_if(m4_regexp([$1], [^/.*]), -1, + [.], + m4_patsubst([$1], [^\(/\).*], [\1])), + m4_patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), + m4_patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl +]) # _AM_DIRNAME + diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..8f3ce9d --- /dev/null +++ b/autogen.sh @@ -0,0 +1,11 @@ +#!/bin/bash -e +#PROTOTYPES="-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations" +WARNINGS="-Wcast-align $PROTOTYPES" +CFLAGS="${CFLAGS:--g3 -Wall $WARNINGS}" ; export CFLAGS +set -x +libtoolize -f +autoheader +aclocal +automake -a +autoconf +./configure --disable-shared --enable-maintainer-mode $@ diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..fa9fe85 --- /dev/null +++ b/config.h.in @@ -0,0 +1,49 @@ +/* config.h.in. Generated automatically from configure.ac by autoheader. */ + +/* Disable deprecated gdk features. */ +#undef GDK_DISABLE_DEPRECATED + +/* Disable deprecated gtk features. */ +#undef GTK_DISABLE_DEPRECATED + +/* Disable deprecated glib features. */ +#undef G_DISABLE_DEPRECATED + +/* Define if you have the <dlfcn.h> header file. */ +#undef HAVE_DLFCN_H + +/* Define if you have the `getpt' function. */ +#undef HAVE_GETPT + +/* Define if you have the `grantpt' function. */ +#undef HAVE_GRANTPT + +/* Define if you have the `ptsname' function. */ +#undef HAVE_PTSNAME + +/* Define if you have the `ptsname_r' function. */ +#undef HAVE_PTSNAME_R + +/* Define if you have the `unlockpt' function. */ +#undef HAVE_UNLOCKPT + +/* Name of package */ +#undef PACKAGE + +/* Version number of package */ +#undef VERSION + +/* Enable debugging of unrecognized sequences. */ +#undef VTE_DEBUG + +/* Define if the X Window System is missing or not being used. */ +#undef X_DISPLAY_MISSING + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Use all features. */ +#undef _GNU_SOURCE + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES diff --git a/configure b/configure new file mode 100755 index 0000000..43ba940 --- /dev/null +++ b/configure @@ -0,0 +1,9124 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by Autoconf 2.52. +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<EOF + +EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +cross_compiling=no +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +ac_unique_file="configure.ac" + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: should be removed in autoconf 3.0. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<EOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +EOF + + cat <<EOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +EOF + + cat <<\EOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST build programs to run on HOST [BUILD] +EOF +fi + +if test -n "$ac_init_help"; then + + cat <<\EOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors + --enable-shared=PKGS build shared libraries default=yes + --enable-static=PKGS build static libraries default=yes + --enable-fast-install=PKGS optimize for fast installation default=yes + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-largefile omit support for large files + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-pic try to use only PIC/non-PIC objects default=use both + --with-x use the X Window System + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have + headers in a nonstandard directory <include dir> + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +EOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue + cd $ac_subdir + # A "../" for each directory in /$ac_subdir. + ac_dots=`echo $ac_subdir | + sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` + + case $srcdir in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir=$srcdir ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_sub_srcdir=$srcdir/$ac_subdir ;; + *) # Relative path. + ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_sub_srcdir/configure.gnu; then + echo + $SHELL $ac_sub_srcdir/configure.gnu --help=recursive + elif test -f $ac_sub_srcdir/configure; then + echo + $SHELL $ac_sub_srcdir/configure --help=recursive + elif test -f $ac_sub_srcdir/configure.ac || + test -f $ac_sub_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\EOF + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +EOF + exit 0 +fi +exec 5>config.log +cat >&5 <<EOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.52. Invocation command line was + + $ $0 $@ + +EOF +{ +cat <<_ASUNAME +## ---------- ## +## Platform. ## +## ---------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +PATH = $PATH + +_ASUNAME +} >&5 + +cat >&5 <<EOF +## ------------ ## +## Core tests. ## +## ------------ ## + +EOF + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell meta-characters. +ac_configure_args= +ac_sep= +for ac_arg +do + case $ac_arg in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + ac_sep=" " ;; + *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" + ac_sep=" " ;; + esac + # Get rid of the leading space. +done + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + echo >&5 + echo "## ----------------- ##" >&5 + echo "## Cache variables. ##" >&5 + echo "## ----------------- ##" >&5 + echo >&5 + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} >&5 + sed "/^$/d" confdefs.h >conftest.log + if test -s conftest.log; then + echo >&5 + echo "## ------------ ##" >&5 + echo "## confdefs.h. ##" >&5 + echo "## ------------ ##" >&5 + echo >&5 + cat conftest.log >&5 + fi + (echo; echo) >&5 + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" >&5 + echo "$as_me: exit $exit_status" >&5 + rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:1008: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + cat "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:1019: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:1027: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:1043: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:1047: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:1053: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:1055: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:1057: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. It doesn't matter if + # we pass some twice (in addition to the command line arguments). + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" + ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:1076: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:1078: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac +echo "#! $SHELL" >conftest.sh +echo "exit 0" >>conftest.sh +chmod +x conftest.sh +if { (echo "$as_me:1098: PATH=\".;.\"; conftest.sh") >&5 + (PATH=".;."; conftest.sh) 2>&5 + ac_status=$? + echo "$as_me:1101: \$? = $ac_status" >&5 + (exit $ac_status); }; then + ac_path_separator=';' +else + ac_path_separator=: +fi +PATH_SEPARATOR="$ac_path_separator" +rm -f conftest.sh + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:1127: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:1147: checking for a BSD compatible install" >&5 +echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_IFS=$IFS; IFS=$ac_path_separator + for ac_dir in $PATH; do + IFS=$ac_save_IFS + # Account for people who put trailing slashes in PATH elements. + case $ac_dir/ in + / | ./ | .// | /cC/* \ + | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ + | /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if $as_executable_p "$ac_dir/$ac_prog"; then + if test $ac_prog = install && + grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:1196: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:1207: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:1231: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:1244: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:1250: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`CDPATH=:; cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + am_backtick='`' + { echo "$as_me:1275: WARNING: ${am_backtick}missing' script is too old or missing" >&5 +echo "$as_me: WARNING: ${am_backtick}missing' script is too old or missing" >&2;} +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:1283: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_AWK="$ac_prog" +echo "$as_me:1298: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:1306: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:1309: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:1316: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:1336: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:1340: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + +rm -f .deps 2>/dev/null +mkdir .deps 2>/dev/null +if test -d .deps; then + DEPDIR=.deps +else + # MS-DOS does not allow filenames that begin with a dot. + DEPDIR=_deps +fi +rmdir .deps 2>/dev/null + +# test to see if srcdir already configured +if test "`CDPATH=:; cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:1376: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# Define the identity of the package. +PACKAGE=vte +VERSION=0.1 + +cat >>confdefs.h <<EOF +#define PACKAGE "$PACKAGE" +EOF + +cat >>confdefs.h <<EOF +#define VERSION "$VERSION" +EOF + +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. + +# Autoconf 2.50 always computes EXEEXT. However we need to be +# compatible with 2.13, for now. So we always define EXEEXT, but we +# don't compute it. + +# Similar for OBJEXT -- only we only use OBJEXT if the user actually +# requests that it be used. This is a bit dumb. +: ${OBJEXT=o} + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal"} + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake"} + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. + +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} +case $enableval in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_shared=yes +fi; +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} +case $enableval in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_static=yes +fi; +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} +case $enableval in +yes) enable_fast_install=yes ;; +no) enable_fast_install=no ;; +*) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_fast_install=yes +fi; +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:1493: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:1497: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:1506: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:1510: error: $ac_config_sub $ac_cv_build_alias failed." >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:1515: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +echo "$as_me:1522: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:1531: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:1536: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +ac_config_commands="$ac_config_commands default-1" + +am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:1551: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include='#' +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote='"' + _am_result=BSD + fi +fi + +echo "$as_me:1578: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:1590: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="${ac_tool_prefix}gcc" +echo "$as_me:1605: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1613: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1616: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:1625: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="gcc" +echo "$as_me:1640: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1648: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1651: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:1664: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="${ac_tool_prefix}cc" +echo "$as_me:1679: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1687: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1690: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:1699: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="cc" +echo "$as_me:1714: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1722: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1725: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:1738: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue +fi +ac_cv_prog_CC="cc" +echo "$as_me:1758: found $ac_dir/$ac_word" >&5 +break +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" ${1+"$@"} + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1780: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1783: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:1794: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +echo "$as_me:1809: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1817: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1820: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:1833: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CC="$ac_prog" +echo "$as_me:1848: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1856: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1859: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + +test -z "$CC" && { { echo "$as_me:1871: error: no acceptable cc found in \$PATH" >&5 +echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:1876:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:1879: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:1882: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:1884: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:1887: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:1889: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:1892: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line 1896 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:1912: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:1915: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:1918: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. +for ac_file in `ls a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:1941: error: C compiler cannot create executables" >&5 +echo "$as_me: error: C compiler cannot create executables" >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:1947: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:1952: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:1958: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1961: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:1968: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:1976: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:1983: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:1985: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:1988: checking for executable suffix" >&5 +echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 +if { (eval echo "$as_me:1990: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1993: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:2009: error: cannot compute EXEEXT: cannot compile and link" >&5 +echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:2015: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:2021: checking for object suffix" >&5 +echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 2027 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:2039: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2042: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:2054: error: cannot compute OBJEXT: cannot compile" >&5 +echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:2061: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:2065: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 2071 "configure" +#include "confdefs.h" + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2086: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2089: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2092: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2095: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:2107: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:2113: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 2119 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2131: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2134: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2137: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2140: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:2150: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2177: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2180: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2183: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2186: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include <stdlib.h>' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line 2198 "configure" +#include "confdefs.h" +#include <stdlib.h> +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2211: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2214: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2217: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2220: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line 2230 "configure" +#include "confdefs.h" +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:2242: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2245: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:2248: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2251: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:2280: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:2342: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE="depmode=$am_cv_CC_dependencies_compiler_type" + +# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:2367: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:2397: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:2400: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:2430: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:2433: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:2436: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:2439: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then + lt_cv_prog_gnu_ld=yes +else + lt_cv_prog_gnu_ld=no +fi +fi +echo "$as_me:2451: result: $lt_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + +echo "$as_me:2455: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:2462: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" + +echo "$as_me:2467: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/${ac_tool_prefix}nm + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" + break + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" + break + else + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi + +NM="$lt_cv_path_NM" +echo "$as_me:2503: result: $NM" >&5 +echo "${ECHO_T}$NM" >&6 + +echo "$as_me:2506: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:2510: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:2513: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:2517: checking how to recognise dependant libraries" >&5 +echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin* | mingw* | pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[012]) + lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + +freebsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + +irix5* | irix6*) + case $host_os in + irix5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + case $host_cpu in + alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +openbsd*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv5uw[78]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + esac + ;; +esac + +fi +echo "$as_me:2695: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:2701: checking command to parse $NM output" >&5 +echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +irix*) + symcode='[BCDEGRST]' + ;; +solaris* | sysv5*) + symcode='[BDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $host_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTW]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + rm -f conftest* + cat > conftest.$ac_ext <<EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +EOF + + if { (eval echo "$as_me:2782: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2785: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:2789: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:2792: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat <<EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' + + cat <<EOF >> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{ +EOF + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo "$as_me:2844: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:2847: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest; then + pipe_works=yes + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +if test -z "$lt_cv_sys_global_symbol_pipe"; then + global_symbol_to_cdecl= + global_symbol_to_c_name_address= +else + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" + global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +fi +if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +then + echo "$as_me:2888: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:2891: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:2900: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line 2921 "configure" +#include "confdefs.h" +#include <assert.h> + Syntax error +_ACEOF +if { (eval echo "$as_me:2926: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:2932: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line 2955 "configure" +#include "confdefs.h" +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:2959: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:2965: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:3002: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line 3012 "configure" +#include "confdefs.h" +#include <assert.h> + Syntax error +_ACEOF +if { (eval echo "$as_me:3017: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:3023: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line 3046 "configure" +#include "confdefs.h" +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:3050: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:3056: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:3084: error: C preprocessor \"$CPP\" fails sanity check" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:3098: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 3104 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:3108: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:3114: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_ext +fi +echo "$as_me:3133: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<EOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +EOF + +fi +done + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:3147: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <<EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:3202: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:3205: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:3211: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <<EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:3266: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:3269: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:3285: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +echo "$as_me:3300: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:3308: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:3311: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:3320: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_RANLIB="ranlib" +echo "$as_me:3335: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:3344: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:3347: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:3359: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_STRIP="${ac_tool_prefix}strip" +echo "$as_me:3374: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:3382: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:3385: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:3394: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_STRIP="strip" +echo "$as_me:3409: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:3418: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:3421: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 3445 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:3446: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3449: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:3470: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +#line 3483 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:3495: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:3498: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:3501: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3504: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +lt_cv_cc_needs_belf=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +echo "$as_me:3520: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" +need_locks="$enable_libtool_lock" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +if test x"$host" != x"$build"; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case $host_os in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +echo "$as_me:3620: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$as_me:3631: result: $objdir" >&5 +echo "${ECHO_T}$objdir" >&6 + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# We assume here that the value for lt_cv_prog_cc_pic will not be cached +# in isolation, and that seeing it set (from the cache) indicates that +# the associated values are set (in the cache) correctly too. +echo "$as_me:3646: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +if test "${lt_cv_prog_cc_pic+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_cc_pic= + lt_cv_prog_cc_shlib= + lt_cv_prog_cc_wl= + lt_cv_prog_cc_static= + lt_cv_prog_cc_no_builtin= + lt_cv_prog_cc_can_build_shared=$can_build_shared + + if test "$GCC" = yes; then + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-static' + + case $host_os in + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # not sure about C++ programs. + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_cv_prog_cc_pic=-Kconform_pic + fi + ;; + *) + lt_cv_prog_cc_pic='-fPIC' + ;; + esac + else + # PORTME Check for PIC flags for the system compiler. + case $host_os in + aix3* | aix4* | aix5*) + lt_cv_prog_cc_wl='-Wl,' + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better lt_cv_prog_cc_static that works with the bundled CC? + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" + lt_cv_prog_cc_pic='+Z' + ;; + + irix5* | irix6*) + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + + newsos6) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + ;; + + sco3.2v5*) + lt_cv_prog_cc_pic='-Kpic' + lt_cv_prog_cc_static='-dn' + lt_cv_prog_cc_shlib='-belf' + ;; + + solaris*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + sunos4*) + lt_cv_prog_cc_pic='-PIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + if test "x$host_vendor" = xsni; then + lt_cv_prog_cc_wl='-LD' + else + lt_cv_prog_cc_wl='-Wl,' + fi + ;; + + uts4*) + lt_cv_prog_cc_pic='-pic' + lt_cv_prog_cc_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_cv_prog_cc_pic='-Kconform_pic' + lt_cv_prog_cc_static='-Bstatic' + fi + ;; + + *) + lt_cv_prog_cc_can_build_shared=no + ;; + esac + fi + +fi + +if test -z "$lt_cv_prog_cc_pic"; then + echo "$as_me:3793: result: none" >&5 +echo "${ECHO_T}none" >&6 +else + echo "$as_me:3796: result: $lt_cv_prog_cc_pic" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 + + # Check to make sure the pic_flag actually works. + echo "$as_me:3800: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 + if test "${lt_cv_prog_cc_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + cat >conftest.$ac_ext <<_ACEOF +#line 3808 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:3820: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3823: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:3826: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3829: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + case $host_os in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then + # they create non-PIC objects. So, if there were any warnings, we + # assume that PIC is not supported. + if test -s conftest.err; then + lt_cv_prog_cc_pic_works=no + else + lt_cv_prog_cc_pic_works=yes + fi + ;; + *) + lt_cv_prog_cc_pic_works=yes + ;; + esac + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + lt_cv_prog_cc_pic_works=no + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + +fi + + if test "X$lt_cv_prog_cc_pic_works" = Xno; then + lt_cv_prog_cc_pic= + lt_cv_prog_cc_can_build_shared=no + else + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" + fi + + echo "$as_me:3865: result: $lt_cv_prog_cc_pic_works" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 +fi + +# Check for any special shared library compilation flags. +if test -n "$lt_cv_prog_cc_shlib"; then + { echo "$as_me:3871: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:3875: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + +echo "$as_me:3881: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 +if test "${lt_cv_prog_cc_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_cc_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + cat >conftest.$ac_ext <<_ACEOF +#line 3890 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:3902: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:3905: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:3908: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3911: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_prog_cc_static_works=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi + +# Belt *and* braces to stop my trousers falling down: +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +echo "$as_me:3925: result: $lt_cv_prog_cc_static_works" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 + +pic_flag="$lt_cv_prog_cc_pic" +special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +wl="$lt_cv_prog_cc_wl" +link_static_flag="$lt_cv_prog_cc_static" +no_builtin_flag="$lt_cv_prog_cc_no_builtin" +can_build_shared="$lt_cv_prog_cc_can_build_shared" + +# Check to see if options -o and -c are simultaneously supported by compiler +echo "$as_me:3936: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +echo "int some_variable = 0;" > conftest.$ac_ext +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +compiler_c_o=no +if { (eval echo configure:3956: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + lt_cv_compiler_c_o=no + else + lt_cv_compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&5 + lt_cv_compiler_c_o=no +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null + +fi + +compiler_c_o=$lt_cv_compiler_c_o +echo "$as_me:3980: result: $compiler_c_o" >&5 +echo "${ECHO_T}$compiler_c_o" >&6 + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo "$as_me:3985: checking if $compiler supports -c -o file.lo" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 + if test "${lt_cv_compiler_o_lo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + lt_cv_compiler_o_lo=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + save_objext="$ac_objext" + ac_objext=lo + cat >conftest.$ac_ext <<_ACEOF +#line 3997 "configure" +#include "confdefs.h" + +int +main () +{ +int some_variable = 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4009: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4012: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4015: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4018: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + lt_cv_compiler_o_lo=no + else + lt_cv_compiler_o_lo=yes + fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ac_objext="$save_objext" + CFLAGS="$save_CFLAGS" + +fi + + compiler_o_lo=$lt_cv_compiler_o_lo + echo "$as_me:4039: result: $compiler_o_lo" >&5 +echo "${ECHO_T}$compiler_o_lo" >&6 +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:4049: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:4057: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:4060: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo "$as_me:4070: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + cat >conftest.$ac_ext <<_ACEOF +#line 4077 "configure" +#include "confdefs.h" + +int +main () +{ +int some_variable = 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:4089: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4092: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:4095: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4098: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + compiler_rtti_exceptions=no + else + compiler_rtti_exceptions=yes + fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + echo "$as_me:4114: result: $compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$compiler_rtti_exceptions" >&6 + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi +fi + +# See if the linker supports building shared libraries. +echo "$as_me:4125: checking whether the linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +old_archive_from_expsyms_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_into_libs=no +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +link_all_deplibs=unknown +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. +extract_expsyms_cmds= + +case $host_os in +cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; +openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ + test -f $output_objdir/impgen.exe || (cd $output_objdir && \ + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ + else $CC -o impgen impgen.c ; fi)~ + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' + + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' + + # cygwin and mingw dlls have different entry points and sets of symbols + # to exclude. + # FIXME: what about values for MSVC? + dll_entry=__cygwin_dll_entry@12 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ + case $host_os in + mingw*) + # mingw values + dll_entry=_DllMainCRTStartup@12 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ + ;; + esac + + # mingw and cygwin differ, and it's simplest to just exclude the union + # of the two symbol sets. + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one (in ltdll.c) + if test "x$lt_cv_need_dllmain" = "xyes"; then + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " + ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' + else + ltdll_obj= + ltdll_cmds= + fi + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left be newer dlltools. + export_symbols_cmds="$ltdll_cmds"' + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' + + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \$# in + 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ + '"$ltdll_cmds"' + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw* | pw32*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + hardcode_direct=yes + archive_cmds='' + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + shared_flag='${wl}-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall can do strange things, so it is better to + # generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='${wl}-berok' + # This is a bit strange, but is similar to how AIX traditionally builds + # it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + allow_undefined_flag='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case $host_os in + hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + #Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + export_dynamic_flag_spec='${wl}-Bexport' + ;; + + solaris*) + # gcc --version < 3.0 without binutils cannot create self contained + # shared libraries reliably, requiring libgcc.a to resolve some of + # the object symbols generated in some cases. Libraries that use + # assert need libgcc.a to resolve __eprintf, for example. Linking + # a copy of libgcc.a into every shared library to guarantee resolving + # such symbols causes other problems: According to Tim Van Holder + # <tim.van.holder@pandora.be>, C++ libraries end up with a separate + # (to the application) exception stack for one thing. + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + case `$CC --version 2>/dev/null` in + [12].*) + cat <<EOF 1>&2 + +*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +*** create self contained shared libraries on Solaris systems, without +*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +*** -no-undefined support, which will at least allow you to build shared +*** libraries. However, you may find that when you link such libraries +*** into an application without using GCC, you have to manually add +*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +*** upgrade to a newer version of GCC. Another option is to rebuild your +*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. + +EOF + no_undefined_flag= + ;; + esac + fi + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + if test "x$host_vendor" = xsno; then + archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + else + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5uw7* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +echo "$as_me:4805: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +# Check hardcoding attributes. +echo "$as_me:4810: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:4834: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +striplib= +old_striplib= +echo "$as_me:4839: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:4844: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:4847: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +reload_cmds='$LD$reload_flag -o $output$reload_objs' +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +# PORTME Fill in your ld.so characteristics +echo "$as_me:4855: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4* | aix5*) + version_type=linux + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can + # not hardcode correct soname into executable. Probably we can + # add versioning support to collect2, so additional links can + # be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}.so$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + need_version=no + need_lib_prefix=no + case $GCC,$host_os in + yes,cygwin*) + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + ;; + yes,mingw*) + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` + ;; + yes,pw32*) + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' + ;; + *) + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + *) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6*) + version_type=irix + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' + case $host_os in + irix5*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case "$host_os" in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:5248: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +echo "$as_me:5253: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:5255: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:5258: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:5279: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:5282: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:5286: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + cygwin* | mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + *) + echo "$as_me:5324: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 5330 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +f = shl_load; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:5361: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:5364: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:5367: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5370: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:5380: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:5385: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 5393 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:5412: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:5415: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:5418: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5421: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:5432: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:5437: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 5443 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +f = dlopen; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:5474: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:5477: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:5480: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5483: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:5493: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:5498: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 5506 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:5525: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:5528: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:5531: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5534: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:5545: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:5550: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 5558 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:5577: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:5580: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:5583: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5586: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:5597: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:5602: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 5610 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:5629: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:5632: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:5635: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5638: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:5649: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + +fi + +fi + +fi + +fi + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:5685: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 5696 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:5757: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:5760: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + +fi +echo "$as_me:5777: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:5782: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 5793 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:5854: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:5857: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + +fi +echo "$as_me:5874: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + +if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:5904: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + if test "${lt_cv_archive_cmds_need_lc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + $rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + + if { (eval echo "$as_me:5912: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5915: \$? = $ac_status" >&5 + (exit $ac_status); }; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_cv_prog_cc_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:5929: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:5932: \$? = $ac_status" >&5 + (exit $ac_status); } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi +fi + + echo "$as_me:5945: result: $lt_cv_archive_cmds_need_lc" >&5 +echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 + ;; + esac +fi +need_lc=${lt_cv_archive_cmds_need_lc-yes} + +# The second clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + : +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi + +if test -f "$ltmain"; then + trap "$rm \"${ofile}T\"; exit 1" 1 2 15 + $rm -f "${ofile}T" + + echo creating $ofile + + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS \ + AR AR_FLAGS CC LD LN_S NM SHELL \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ + old_striplib striplib file_magic_cmd export_symbols_cmds \ + deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + global_symbol_to_c_name_address \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case $var in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + cat <<__EOF__ > "${ofile}T" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996-2000 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# The default C compiler. +CC=$lt_CC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_pic_flag +pic_mode=$pic_mode + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$lt_compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + case $host_os in + aix3*) + cat <<\EOF >> "${ofile}T" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + case $host_os in + cygwin* | mingw* | pw32* | os2*) + cat <<'EOF' >> "${ofile}T" + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include <windows.h> +# #undef WIN32_LEAN_AND_MEAN +# #include <stdio.h> +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include <cygwin/cygwin_dll.h> +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# */ +# +# #include <stdio.h> /* for printf() */ +# #include <unistd.h> /* for open(), lseek(), read() */ +# #include <fcntl.h> /* for O_RDONLY, O_BINARY */ +# #include <string.h> /* for strdup() */ +# +# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +# #ifndef O_BINARY +# #define O_BINARY 0 +# #endif +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (dll < 1) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i<nexp; i++) +# { +# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4); +# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i); +# } +# +# return 0; +# } +# /* impgen.c ends here */ + +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + + mv -f "${ofile}T" "$ofile" || \ + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") + chmod +x "$ofile" +fi + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + +cat >conftest.$ac_ext <<_ACEOF +#line 6511 "configure" +#include "confdefs.h" + + #include <stdio.h> + #ifdef __GLIBC__ + glibc + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "glibc" >/dev/null 2>&1; then + +cat >>confdefs.h <<\EOF +#define _GNU_SOURCE 1 +EOF + +fi +rm -f conftest* + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:6537: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +#line 6549 "configure" +#include "confdefs.h" +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:6569: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6572: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:6575: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6578: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:6588: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6591: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:6594: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6597: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +echo "$as_me:6611: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:6617: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +#line 6625 "configure" +#include "confdefs.h" +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:6645: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6648: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:6651: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6654: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line 6663 "configure" +#include "confdefs.h" +#define _FILE_OFFSET_BITS 64 +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:6684: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6687: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:6690: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6693: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:6704: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <<EOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +EOF + +fi +rm -f conftest* + echo "$as_me:6714: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +#line 6722 "configure" +#include "confdefs.h" +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:6742: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6745: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:6748: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6751: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line 6760 "configure" +#include "confdefs.h" +#define _LARGE_FILES 1 +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:6781: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6784: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:6787: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6790: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:6801: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <<EOF +#define _LARGE_FILES $ac_cv_sys_large_files +EOF + +fi +rm -f conftest* +fi + +echo "$as_me:6813: checking for X" >&5 +echo $ECHO_N "checking for X... $ECHO_C" >&6 + +# Check whether --with-x or --without-x was given. +if test "${with_x+set}" = set; then + withval="$with_x" + +fi; +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then + # Both variables are already set. + have_x=yes + else + if test "${ac_cv_have_x+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -fr conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + # Make sure to not put "make" in the Imakefile rules, since we grep it out. + cat >Imakefile <<'EOF' +acfindx: + @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' +EOF + if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl; do + if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && + test -f $ac_im_libdir/libX11.$ac_extension; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /lib) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -fr conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Intrinsic.h. + # First, try using that file with no special directory specified. + cat >conftest.$ac_ext <<_ACEOF +#line 6910 "configure" +#include "confdefs.h" +#include <X11/Intrinsic.h> +_ACEOF +if { (eval echo "$as_me:6914: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:6920: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # We can compile using X headers with no special include directory. +ac_x_includes= +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Intrinsic.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lXt $LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line 6953 "configure" +#include "confdefs.h" +#include <X11/Intrinsic.h> +int +main () +{ +XtMalloc (0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:6965: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6968: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:6971: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6974: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +LIBS=$ac_save_LIBS +for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do + if test -r $ac_dir/libXt.$ac_extension; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then + # Didn't find X anywhere. Cache the known absence of X. + ac_cv_have_x="have_x=no" +else + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" +fi +fi + + fi + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + echo "$as_me:7012: result: $have_x" >&5 +echo "${ECHO_T}$have_x" >&6 + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$x_includes ac_x_libraries=$x_libraries" + echo "$as_me:7022: result: libraries $x_libraries, headers $x_includes" >&5 +echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 +fi + +if test "$no_x" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + +cat >>confdefs.h <<\EOF +#define X_DISPLAY_MISSING 1 +EOF + + X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= +else + if test -n "$x_includes"; then + X_CFLAGS="$X_CFLAGS -I$x_includes" + fi + + # It would also be nice to do this for all -L options, not just this one. + if test -n "$x_libraries"; then + X_LIBS="$X_LIBS -L$x_libraries" + # For Solaris; some versions of Sun CC require a space after -R and + # others require no space. Words are not sufficient . . . . + case `(uname -sr) 2>/dev/null` in + "SunOS 5"*) + echo "$as_me:7046: checking whether -R must be followed by a space" >&5 +echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + cat >conftest.$ac_ext <<_ACEOF +#line 7050 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7062: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7065: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7068: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7071: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_nospace=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_R_nospace=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test $ac_R_nospace = yes; then + echo "$as_me:7081: result: no" >&5 +echo "${ECHO_T}no" >&6 + X_LIBS="$X_LIBS -R$x_libraries" + else + LIBS="$ac_xsave_LIBS -R $x_libraries" + cat >conftest.$ac_ext <<_ACEOF +#line 7087 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7099: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7102: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7105: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7108: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_space=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_R_space=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test $ac_R_space = yes; then + echo "$as_me:7118: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + X_LIBS="$X_LIBS -R $x_libraries" + else + echo "$as_me:7122: result: neither works" >&5 +echo "${ECHO_T}neither works" >&6 + fi + fi + LIBS=$ac_xsave_LIBS + esac + fi + + # Check for system-dependent libraries X programs must link with. + # Do this before checking for the system-independent R6 libraries + # (-lICE), since we may need -lsocket or whatever for X linking. + + if test "$ISC" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" + else + # Martyn Johnson says this is needed for Ultrix, if the X + # libraries were built with DECnet support. And Karl Berry says + # the Alpha needs dnet_stub (dnet does not exist). + ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" + cat >conftest.$ac_ext <<_ACEOF +#line 7142 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XOpenDisplay (); +int +main () +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7161: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7164: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7167: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7170: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:7176: checking for dnet_ntoa in -ldnet" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 7184 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa (); +int +main () +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7203: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7206: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7209: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7212: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dnet_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dnet_dnet_ntoa=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7223: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 +if test $ac_cv_lib_dnet_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" +fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + echo "$as_me:7230: checking for dnet_ntoa in -ldnet_stub" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet_stub $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 7238 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa (); +int +main () +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7257: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7260: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7263: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7266: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dnet_stub_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dnet_stub_dnet_ntoa=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7277: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 +if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" +fi + + fi +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$ac_xsave_LIBS" + + # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, + # to get the SysV transport functions. + # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) + # needs -lnsl. + # The nsl library prevents programs from opening the X display + # on Irix 5.2, according to T.E. Dickey. + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + echo "$as_me:7296: checking for gethostbyname" >&5 +echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 +if test "${ac_cv_func_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 7302 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gethostbyname (); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) +choke me +#else +f = gethostbyname; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7333: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7336: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7339: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7342: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:7352: result: $ac_cv_func_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 + + if test $ac_cv_func_gethostbyname = no; then + echo "$as_me:7356: checking for gethostbyname in -lnsl" >&5 +echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 7364 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main () +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7383: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7386: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7389: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7392: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_nsl_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7403: result: $ac_cv_lib_nsl_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 +if test $ac_cv_lib_nsl_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" +fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then + echo "$as_me:7410: checking for gethostbyname in -lbsd" >&5 +echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 +if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 7418 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main () +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7437: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7440: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7443: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7446: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_bsd_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_bsd_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7457: result: $ac_cv_lib_bsd_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 +if test $ac_cv_lib_bsd_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" +fi + + fi + fi + + # lieder@skyler.mavd.honeywell.com says without -lsocket, + # socket/setsockopt and other routines are undefined under SCO ODT + # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary + # on later versions), says Simon Leinen: it contains gethostby* + # variants that don't use the nameserver (or something). -lsocket + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + echo "$as_me:7473: checking for connect" >&5 +echo $ECHO_N "checking for connect... $ECHO_C" >&6 +if test "${ac_cv_func_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 7479 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char connect (); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_connect) || defined (__stub___connect) +choke me +#else +f = connect; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7510: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7513: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7516: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7519: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_connect=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_connect=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:7529: result: $ac_cv_func_connect" >&5 +echo "${ECHO_T}$ac_cv_func_connect" >&6 + + if test $ac_cv_func_connect = no; then + echo "$as_me:7533: checking for connect in -lsocket" >&5 +echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 7541 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect (); +int +main () +{ +connect (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7560: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7563: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7566: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7569: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_connect=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_socket_connect=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7580: result: $ac_cv_lib_socket_connect" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 +if test $ac_cv_lib_socket_connect = yes; then + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" +fi + + fi + + # Guillermo Gomez says -lposix is necessary on A/UX. + echo "$as_me:7589: checking for remove" >&5 +echo $ECHO_N "checking for remove... $ECHO_C" >&6 +if test "${ac_cv_func_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 7595 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char remove (); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char remove (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_remove) || defined (__stub___remove) +choke me +#else +f = remove; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7626: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7629: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7632: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7635: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_remove=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_remove=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:7645: result: $ac_cv_func_remove" >&5 +echo "${ECHO_T}$ac_cv_func_remove" >&6 + + if test $ac_cv_func_remove = no; then + echo "$as_me:7649: checking for remove in -lposix" >&5 +echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 +if test "${ac_cv_lib_posix_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 7657 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char remove (); +int +main () +{ +remove (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7676: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7679: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7682: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7685: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_posix_remove=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_posix_remove=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7696: result: $ac_cv_lib_posix_remove" >&5 +echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 +if test $ac_cv_lib_posix_remove = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" +fi + + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + echo "$as_me:7705: checking for shmat" >&5 +echo $ECHO_N "checking for shmat... $ECHO_C" >&6 +if test "${ac_cv_func_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 7711 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shmat (); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shmat (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shmat) || defined (__stub___shmat) +choke me +#else +f = shmat; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7742: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7745: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7748: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7751: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shmat=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_shmat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:7761: result: $ac_cv_func_shmat" >&5 +echo "${ECHO_T}$ac_cv_func_shmat" >&6 + + if test $ac_cv_func_shmat = no; then + echo "$as_me:7765: checking for shmat in -lipc" >&5 +echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 +if test "${ac_cv_lib_ipc_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lipc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 7773 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shmat (); +int +main () +{ +shmat (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7792: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7795: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7798: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7801: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ipc_shmat=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_ipc_shmat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7812: result: $ac_cv_lib_ipc_shmat" >&5 +echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 +if test $ac_cv_lib_ipc_shmat = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" +fi + + fi + fi + + # Check for libraries that X11R6 Xt/Xaw programs need. + ac_save_LDFLAGS=$LDFLAGS + test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" + # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to + # check for ICE first), but we must link in the order -lSM -lICE or + # we get undefined symbols. So assume we have SM if we have ICE. + # These have to be linked with before -lX11, unlike the other + # libraries we check for below, so use a different variable. + # John Interrante, Karl Berry + echo "$as_me:7830: checking for IceConnectionNumber in -lICE" >&5 +echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 +if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lICE $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line 7838 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char IceConnectionNumber (); +int +main () +{ +IceConnectionNumber (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:7857: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7860: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:7863: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7866: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ICE_IceConnectionNumber=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_ICE_IceConnectionNumber=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7877: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 +if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" +fi + + LDFLAGS=$ac_save_LDFLAGS + +fi + + succeeded=no + + if test -z "$PKG_CONFIG"; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +echo "$as_me:7892: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word" + echo "$as_me:7909: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG + +if test -n "$PKG_CONFIG"; then + echo "$as_me:7921: result: $PKG_CONFIG" >&5 +echo "${ECHO_T}$PKG_CONFIG" >&6 +else + echo "$as_me:7924: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + echo "$as_me:7938: checking for glib-2.0 gobject-2.0" >&5 +echo $ECHO_N "checking for glib-2.0 gobject-2.0... $ECHO_C" >&6 + + if $PKG_CONFIG --exists "glib-2.0 gobject-2.0" ; then + echo "$as_me:7942: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + succeeded=yes + + echo "$as_me:7946: checking GLIB_CFLAGS" >&5 +echo $ECHO_N "checking GLIB_CFLAGS... $ECHO_C" >&6 + GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 gobject-2.0"` + echo "$as_me:7949: result: $GLIB_CFLAGS" >&5 +echo "${ECHO_T}$GLIB_CFLAGS" >&6 + + echo "$as_me:7952: checking GLIB_LIBS" >&5 +echo $ECHO_N "checking GLIB_LIBS... $ECHO_C" >&6 + GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 gobject-2.0"` + echo "$as_me:7955: result: $GLIB_LIBS" >&5 +echo "${ECHO_T}$GLIB_LIBS" >&6 + else + GLIB_CFLAGS="" + GLIB_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 gobject-2.0"` + echo $GLIB_PKG_ERRORS + fi + + else + echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + fi + fi + + if test $succeeded = yes; then + : + else + { { echo "$as_me:7975: error: Library requirements (glib-2.0 gobject-2.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5 +echo "$as_me: error: Library requirements (glib-2.0 gobject-2.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;} + { (exit 1); exit 1; }; } + fi + + succeeded=no + + if test -z "$PKG_CONFIG"; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +echo "$as_me:7985: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + if $as_executable_p "$ac_dir/$ac_word"; then + ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word" + echo "$as_me:8002: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG + +if test -n "$PKG_CONFIG"; then + echo "$as_me:8014: result: $PKG_CONFIG" >&5 +echo "${ECHO_T}$PKG_CONFIG" >&6 +else + echo "$as_me:8017: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + fi + + if test "$PKG_CONFIG" = "no" ; then + echo "*** The pkg-config script could not be found. Make sure it is" + echo "*** in your path, or set the PKG_CONFIG environment variable" + echo "*** to the full path to pkg-config." + echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config." + else + PKG_CONFIG_MIN_VERSION=0.9.0 + if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then + echo "$as_me:8031: checking for glib-2.0 gobject-2.0 gtk+-2.0" >&5 +echo $ECHO_N "checking for glib-2.0 gobject-2.0 gtk+-2.0... $ECHO_C" >&6 + + if $PKG_CONFIG --exists "glib-2.0 gobject-2.0 gtk+-2.0" ; then + echo "$as_me:8035: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + succeeded=yes + + echo "$as_me:8039: checking GTK_CFLAGS" >&5 +echo $ECHO_N "checking GTK_CFLAGS... $ECHO_C" >&6 + GTK_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 gobject-2.0 gtk+-2.0"` + echo "$as_me:8042: result: $GTK_CFLAGS" >&5 +echo "${ECHO_T}$GTK_CFLAGS" >&6 + + echo "$as_me:8045: checking GTK_LIBS" >&5 +echo $ECHO_N "checking GTK_LIBS... $ECHO_C" >&6 + GTK_LIBS=`$PKG_CONFIG --libs "glib-2.0 gobject-2.0 gtk+-2.0"` + echo "$as_me:8048: result: $GTK_LIBS" >&5 +echo "${ECHO_T}$GTK_LIBS" >&6 + else + GTK_CFLAGS="" + GTK_LIBS="" + ## If we have a custom action on failure, don't print errors, but + ## do set a variable so people can do so. + GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 gobject-2.0 gtk+-2.0"` + echo $GTK_PKG_ERRORS + fi + + else + echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer." + echo "*** See http://www.freedesktop.org/software/pkgconfig" + fi + fi + + if test $succeeded = yes; then + : + else + { { echo "$as_me:8068: error: Library requirements (glib-2.0 gobject-2.0 gtk+-2.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5 +echo "$as_me: error: Library requirements (glib-2.0 gobject-2.0 gtk+-2.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;} + { (exit 1); exit 1; }; } + fi + +cat >>confdefs.h <<\EOF +#define G_DISABLE_DEPRECATED 1 +EOF + +cat >>confdefs.h <<\EOF +#define GDK_DISABLE_DEPRECATED 1 +EOF + +cat >>confdefs.h <<\EOF +#define GTK_DISABLE_DEPRECATED 1 +EOF + +for ac_func in getpt grantpt unlockpt ptsname ptsname_r +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:8088: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 8094 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:8125: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8128: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:8131: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8134: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:8144: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<EOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +EOF + +fi +done + +echo "$as_me:8154: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi; + echo "$as_me:8163: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + MAINT=$MAINTAINER_MODE_TRUE + +if test x$USE_MAINTAINER_MODE != x ; then + if test x$USE_MAINTAINER_MODE != xno ; then + VTE_DEBUG=1 + fi +fi +if test x$VTE_DEBUG = x1 ; then + +cat >>confdefs.h <<\EOF +#define VTE_DEBUG +EOF + +fi + + ac_config_headers="$ac_config_headers config.h" + +ac_config_files="$ac_config_files Makefile src/Makefile" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overriden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if cmp -s $cache_file confcache; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:8270: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +SHELL=\${CONFIG_SHELL-$SHELL} +ac_cs_invocation="\$0 \$@" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +exec 6>&1 + +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\EOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to <bug-autoconf@gnu.org>." +EOF + +cat >>$CONFIG_STATUS <<EOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.52, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +EOF + +cat >>$CONFIG_STATUS <<\EOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + shift + set dummy "$ac_option" "$ac_optarg" ${1+"$@"} + shift + ;; + -*);; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_need_defaults=false;; + esac + + case $1 in + # Handling of the options. +EOF +cat >>$CONFIG_STATUS <<EOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" + exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; +EOF +cat >>$CONFIG_STATUS <<\EOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:8446: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + shift + CONFIG_FILES="$CONFIG_FILES $1" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + shift + CONFIG_HEADERS="$CONFIG_HEADERS $1" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:8465: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +exec 5>>config.log +cat >&5 << _ACEOF + +## ----------------------- ## +## Running config.status. ## +## ----------------------- ## + +This file was extended by $as_me 2.52, executed with + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + > $ac_cs_invocation +on `(hostname || uname -n) 2>/dev/null | sed 1q` + +_ACEOF +EOF + +cat >>$CONFIG_STATUS <<EOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" +ac_aux_dir="$ac_aux_dir" + +EOF + +cat >>$CONFIG_STATUS <<\EOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:8514: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + +EOF + +cat >>$CONFIG_STATUS <<EOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@DEFS@,$DEFS,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@AMTAR@,$AMTAR,;t t +s,@install_sh@,$install_sh,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@CPP@,$CPP,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@X_CFLAGS@,$X_CFLAGS,;t t +s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t +s,@X_LIBS@,$X_LIBS,;t t +s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t +s,@PKG_CONFIG@,$PKG_CONFIG,;t t +s,@GLIB_CFLAGS@,$GLIB_CFLAGS,;t t +s,@GLIB_LIBS@,$GLIB_LIBS,;t t +s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t +s,@GTK_LIBS@,$GTK_LIBS,;t t +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +s,@MAINT@,$MAINT,;t t +CEOF + +EOF + + cat >>$CONFIG_STATUS <<\EOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +EOF +cat >>$CONFIG_STATUS <<\EOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` + else + ac_dir_suffix= ac_dots= + fi + + case $srcdir in + .) ac_srcdir=. + if test -z "$ac_dots"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_dots$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_dots$srcdir ;; + esac + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_dots$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:8767: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated automatically by config.status. */ + configure_input="Generated automatically from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:8785: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:8798: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +EOF +cat >>$CONFIG_STATUS <<EOF + sed "$ac_vpsub +$extrasub +EOF +cat >>$CONFIG_STATUS <<\EOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +EOF +cat >>$CONFIG_STATUS <<\EOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:8859: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:8870: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:8883: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +EOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\EOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +EOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\EOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +EOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # egrep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\EOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated automatically by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated automatically by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if cmp -s $ac_file $tmp/config.h 2>/dev/null; then + { echo "$as_me:9000: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + fi + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi + # Run the commands associated with the file. + case $ac_file in + config.h ) # update the timestamp +echo timestamp >"./stamp-h1" + ;; + esac +done +EOF +cat >>$CONFIG_STATUS <<\EOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + + case $ac_dest in + default-1 ) +test x"$AMDEP_TRUE" != x"" || +for mf in $CONFIG_FILES; do + case "$mf" in + Makefile) dirpart=.;; + */Makefile) dirpart=`echo "$mf" | sed -e 's|/[^/]*$||'`;; + *) continue;; + esac + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`echo "$file" | sed -e 's|/[^/]*$||'` + $ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1 + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +EOF + +cat >>$CONFIG_STATUS <<\EOF + +{ (exit 0); exit 0; } +EOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + exec 5>/dev/null + $SHELL $CONFIG_STATUS || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..a729b06 --- /dev/null +++ b/configure.ac @@ -0,0 +1,32 @@ +AC_INIT(configure.ac) +AM_INIT_AUTOMAKE(vte,0.1) +AM_PROG_LIBTOOL +AC_EGREP_CPP(glibc, + [ + #include <stdio.h> + #ifdef __GLIBC__ + glibc + #endif + ], + AC_DEFINE(_GNU_SOURCE,1,[Use all features.])) +AC_SYS_LARGEFILE +AC_PATH_XTRA +PKG_CHECK_MODULES(GLIB,[glib-2.0 gobject-2.0]) +PKG_CHECK_MODULES(GTK, [glib-2.0 gobject-2.0 gtk+-2.0]) +AC_DEFINE(G_DISABLE_DEPRECATED,1,[Disable deprecated glib features.]) +AC_DEFINE(GDK_DISABLE_DEPRECATED,1,[Disable deprecated gdk features.]) +AC_DEFINE(GTK_DISABLE_DEPRECATED,1,[Disable deprecated gtk features.]) +AC_CHECK_FUNCS(getpt grantpt unlockpt ptsname ptsname_r) +AM_MAINTAINER_MODE + +if test x$USE_MAINTAINER_MODE != x ; then + if test x$USE_MAINTAINER_MODE != xno ; then + VTE_DEBUG=1 + fi +fi +if test x$VTE_DEBUG = x1 ; then + AC_DEFINE(VTE_DEBUG,,[Enable debugging of unrecognized sequences.]) +fi + +AM_CONFIG_HEADER(config.h) +AC_OUTPUT([Makefile src/Makefile]) diff --git a/doc/ctlseqs.ms b/doc/ctlseqs.ms new file mode 100644 index 0000000..026d78f --- /dev/null +++ b/doc/ctlseqs.ms @@ -0,0 +1,1647 @@ +.\"#! troff -ms $1 -*- Nroff -*- +.\" "Xterm Control Sequences" document +.\" $Xorg: ctlseqs.ms,v 1.3 2000/08/17 19:42:51 cpqbld Exp $ +.\" +.\" +.\" +.\" +.\" $XFree86: xc/doc/specs/xterm/ctlseqs.ms,v 3.43 2001/03/29 22:48:02 dickey Exp $ +.\" +.\" +.\" Copyright 1996,1997,1998,1999,2000 by Thomas E. Dickey +.\" +.\" All Rights Reserved +.\" +.\" 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, 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 LISTED COPYRIGHT HOLDER(S) 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. +.\" +.\" +.\" Copyright 1991, 1994 X Consortium +.\" +.\" 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, 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 X CONSORTIUM 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 of the X Consortium shall +.\" not be used in advertising or otherwise to promote the sale, use or +.\" other dealings in this Software without prior written authorization +.\" from the X Consortium. +.\" +.\" X Window System is a trademark of X Consortium, Inc. +.\" +.\" Originally written by Edward Moy, University of California, +.\" Berkeley, edmoy@violet.berkeley.edu, for the X.V10R4 xterm. +.\" The X Consortium staff has since updated it for X11. +.\" Updated by Thomas E. Dickey for XFree86 3.2 - XFree86 4.0 +.\" +.\" Run this file through troff and use the -ms macro package. +.\" +.if n .pl 9999v \" no page breaks in nroff +.ND +.de St +.sp +.nr PD 0 +.nr PI 1.5i +.nr VS 16 +.. +.de Ed +.nr PD .3v +.nr VS 12 +.. +.ds CH \" as nothing +.ds LH Xterm Control Sequences +.nr s 6*\n(PS/10 +.ds L \s\nsBEL\s0 +.ds E \s\nsESC\s0 +.ds T \s\nsTAB\s0 +.ds X \s\nsETX\s0 +.ds N \s\nsENQ\s0 +.ds e \s\nsETB\s0 +.ds C \s\nsCAN\s0 +.ds S \s\nsSUB\s0 +.\" space between chars +.ie t .ds s \| +.el .ds s " \" +.nr [W \w'\*L'u +.nr w \w'\*E'u +.if \nw>\n([W .nr [W \nw +.nr w \w'\*T'u +.if \nw>\n([W .nr [W \nw +.nr w \w'\*X'u +.if \nw>\n([W .nr [W \nw +.nr w \w'\*N'u +.if \nw>\n([W .nr [W \nw +.nr w \w'\*e'u +.if \nw>\n([W .nr [W \nw +.nr w \w'\*C'u +.if \nw>\n([W .nr [W \nw +.nr w \w'\*S'u +.if \nw>\n([W .nr [W \nw +.nr [W +\w'\|\|'u +.de [] +.nr w \w'\\$2' +.nr H \\n([Wu-\\nwu +.nr h \\nHu/2u +.\" do fancy box in troff +.ie t .ds \\$1 \(br\v'-1p'\(br\v'1p'\h'\\nhu'\\$2\h'\\nHu-\\nhu'\(br\l'-\\n([Wu\(ul'\v'-1p'\(br\l'-\\n([Wu\(rn'\v'1p'\*s +.el .ds \\$1 \\$2\*s +.. +.[] Et \v'-1p'\*X\v'1p' +.[] En \v'-1p'\*N\v'1p' +.[] Be \v'-1p'\*L\v'1p' +.[] AP \v'-1p'\s\nsAPC\s0\v'1p' +.[] Bs \v'-1p'\s\nsBS\s0\v'1p' +.[] Cs \v'-1p'\s\nsCSI\s0\v'1p' +.[] S3 \v'-1p'\s\nsSS3\s0\v'1p' +.[] Dc \v'-1p'\s\nsDCS\s0\v'1p' +.[] Os \v'-1p'\s\nsOSC\s0\v'1p' +.[] PM \v'-1p'\s\nsPM\s0\v'1p' +.[] ST \v'-1p'\s\nsST\s0\v'1p' +.[] Ta \v'-1p'\*T\v'1p' +.[] Lf \v'-1p'\s\nsLF\s0\v'1p' +.[] Vt \v'-1p'\s\nsVT\s0\v'1p' +.[] Ff \v'-1p'\s\nsFF\s0\v'1p' +.[] Cr \v'-1p'\s\nsCR\s0\v'1p' +.[] So \v'-1p'\s\nsSO\s0\v'1p' +.[] Sp \v'-1p'\s\nsSP\s0\v'1p' +.[] Si \v'-1p'\s\nsSI\s0\v'1p' +.[] Eb \v'-1p'\*e\v'1p' +.[] Ca \v'-1p'\*C\v'1p' +.[] Su \v'-1p'\*S\v'1p' +.[] Es \v'-1p'\*E\v'1p' +.[] Fs \v'-1p'\s\nsFS\s0\v'1p' +.[] Gs \v'-1p'\s\nsGS\s0\v'1p' +.[] Rs \v'-1p'\s\nsRS\s0\v'1p' +.[] Us \v'-1p'\s\nsUS\s0\v'1p' +.[] XX \v'-1p'\s\nsXX\s0\v'1p' +.[] $ $ +.[] ! ! +.[] # # +.[] % % +.[] (( ( +.[] ) ) +.[] * * +.[] + + +.[] 0 0 +.[] 1 1 +.[] 2 2 +.[] 3 3 +.[] 4 4 +.[] 5 5 +.[] 6 6 +.[] 7 7 +.[] 8 8 +.[] 9 9 +.[] : : +.[] ; ; +.[] = = +.[] / / +.[] < < +.[] > > +.[] ? ? +.[] @ @ +.[] A A +.[] cB B +.[] C C +.[] D D +.[] E E +.[] F F +.[] G G +.[] H H +.[] I I +.[] J J +.[] K K +.[] L L +.[] M M +.[] N N +.[] O O +.[] P P +.[] Q Q +.[] R R +.[] S S +.[] T T +.[] V V +.[] W W +.[] XX X +.[] Y Y +.[] Z Z +.[] [[ [ +.[] ]] ] +.[] bS \\e +.[] { { +.[] ] ] +.[] & & +.[] ^ ^ +.[] _ _ +.[] qu \' +.[] ` \` +.[] a a +.[] b b +.[] c c +.[] d d +.[] f f +.[] g g +.[] h h +.[] i i +.[] j j +.[] k k +.[] l l +.[] m m +.[] n n +.[] o o +.[] p p +.[] q q +.[] r r +.[] cs s +.[] t t +.[] u u +.[] v v +.[] w w +.[] x x +.[] y y +.[] z z +.[] | | +.[] } } +.[] ! ! +.[] c" \(lq +.[] c~ ~ +.[] Sc \fIc\fP +.ds Cc \fIC\fP +.ds Cb \fIC\v'.3m'\h'-.2m'\s-2b\s0\v'-.3m'\fP +.ds Cx \fIC\v'.3m'\h'-.2m'\s-2x\s0\v'-.3m'\fP +.ds Cy \fIC\v'.3m'\h'-.2m'\s-2y\s0\v'-.3m'\fP +.ds Pb \fIP\v'.3m'\h'-.2m'\s-2b\s0\v'-.3m'\fP +.ds Pc \fIP\v'.3m'\h'-.2m'\s-2c\s0\v'-.3m'\fP +.ds Pe \fIP\v'.3m'\h'-.2m'\s-2e\s0\v'-.3m'\fP +.ds Pl \fIP\v'.3m'\h'-.2m'\s-2l\s0\v'-.3m'\fP +.ds Pm \fIP\v'.3m'\h'-.2m'\s-2m\s0\v'-.3m'\fP +.ds Pp \fIP\v'.3m'\h'-.2m'\s-2p\s0\v'-.3m'\fP +.ds Pr \fIP\v'.3m'\h'-.2m'\s-2r\s0\v'-.3m'\fP +.ds Ps \fIP\v'.3m'\h'-.2m'\s-2s\s0\v'-.3m'\fP +.ds Pt \fIP\v'.3m'\h'-.2m'\s-2t\s0\v'-.3m'\fP +.ds Pu \fIP\v'.3m'\h'-.2m'\s-2u\s0\v'-.3m'\fP +.ds Pv \fIP\v'.3m'\h'-.2m'\s-2v\s0\v'-.3m'\fP +.ds Ix \fIx\fP +.ds Iy \fIy\fP +.ds Iw \fIw\fP +.ds Ih \fIh\fP +.ds Ir \fIr\fP +.ds Ic \fIc\fP +.ie t .nr LL 6.5i +.el .nr LL 72m +.if n .na +.TL +Xterm Control Sequences +.AU +Edward Moy +.AI +University of California, Berkeley +.sp +Revised by +.AU +Stephen Gildea +.AI +X Consortium (1994) +.AU +Thomas Dickey +.AI +XFree86 Project (1996-1999) +.AU +. +.am BT \" add page numbers after first page +.ds CF % +.. +.SH +Definitions +.IP \*(Sc +The literal character \fIc\fP. +.IP \*(Cc +A single (required) character. +.IP \*(Ps +A single (usually optional) numeric parameter, composed of one of more digits. +.IP \*(Pm +A multiple numeric parameter composed of any number of single numeric +parameters, separated by \*; character(s). +Individual values for the parameters are listed with \*(Ps . +.IP \*(Pt +A text parameter composed of printable characters. +. +.SH +C1 (8-Bit) Control Characters +.ds RH C1 (8-Bit) Control Characters +.LP +The \fIxterm\fP program recognizes both 8-bit and 7-bit control characters. +It generates 7-bit controls (by default) or 8-bit if S8C1T is enabled. +The following pairs of 7-bit and 8-bit control characters are equivalent: +.St +.IP \\*(Es\\*D +Index (IND: 0x84) +.IP \\*(Es\\*E +Next Line (NEL: 0x85) +.IP \\*(Es\\*H +Tab Set (HTS: 0x88) +.IP \\*(Es\\*M +Reverse Index (RI: 0x8d) +.IP \\*(Es\\*N +Single Shift Select of G2 Character Set (SS2: 0x8e): affects next character only +.IP \\*(Es\\*O +Single Shift Select of G3 Character Set (SS3: 0x8f): affects next character only +.IP \\*(Es\\*P +Device Control String (DCS: 0x90) +.IP \\*(Es\\*V +Start of Guarded Area (SPA: 0x96) +.IP \\*(Es\\*W +End of Guarded Area (EPA: 0x97) +.IP \\*(Es\\(*X +Start of String (SOS: 0x98) +.IP \\*(Es\\*Z +Return Terminal ID (DECID: 0x9a). Obsolete form of \*(Cs\*c (DA). +.IP \\*(Es\\*([[ +Control Sequence Introducer (CSI: 0x9b) +.IP \\*(Es\\*(bS +String Terminator (ST: 0x9c) +.IP \\*(Es\\*(]] +Operating System Command (OSC: 0x9d) +.IP \\*(Es\\*^ +Privacy Message (PM: 0x9e) +.IP \\*(Es\\*_ +Application Program Command (APC: 0x9f) +.Ed +.sp +.LP +These control characters are used in the vtXXX emulation. +. +.SH +VT100 Mode +.ds RH VT100 Mode +.LP +Most of these control sequences are standard VT102 control sequences, +but there is support for later DEC VT terminals (i.e., VT220 and VT320), +as well as ISO 6429 and \fIaixterm\fP color controls. +VT102 features not supported are +auto-repeat and blinking characters. +There are additional control sequences to provide +\fIxterm-\fPdependent functions, such as the scrollbar or window size. +Where the function is specified by DEC or ISO 6429, the code assigned +to it is given in parentheses. The escape codes to designate and invoke +character sets are specified by ISO 2022; see that document for a +discussion of character sets. +. +.St +.\" +.LP +.B +Single-character functions +.\" +.IP \\*(Be +Bell (Ctrl-G) +. +.IP \\*(Bs +Backspace (Ctrl-H) +. +.IP \\*(Cr +Carriage Return (Ctrl-M) +. +.IP \\*(En +Return Terminal Status (Ctrl-E). +Default response is the terminal name, e.g., "xterm", but may be overridden +by a resource \fIanswerbackString\fP. +. +.IP \\*(Ff +Form Feed or New Page (NP) (Ctrl-L) same as LF +. +.IP \\*(Lf +Line Feed or New Line (NL) (Ctrl-J) +. +.IP \\*(So +Shift Out (Ctrl-N) \(-> Switch to Alternate Character Set: invokes the +G1 character set. +. +.IP \\*(Sp +Space. +. +.IP \\*(Ta +Horizontal Tab (HT) (Ctrl-I) +. +.IP \\*(Vt +Vertical Tab (Ctrl-K) same as LF +. +.IP \\*(Si +Shift In (Ctrl-O) \(-> Switch to Standard Character Set: invokes the +G0 character set (the default). +.Ed +.\" +.\" +.\" +.St +.LP +.B +Controls beginning with ESC (other than those where ESC is part of a 7-bit equivalent to 8-bit C1 controls), ordered by the final character(s). +.\" +.IP \\*(Es\\*(Sp\\*F +7-bit controls (S7C1T). +. +.IP \\*(Es\\*(Sp\\*G +8-bit controls (S8C1T). +. +.IP \\*(Es\\*(Sp\\*L +Set ANSI conformance level 1 (vt100, 7-bit controls). +. +.IP \\*(Es\\*(Sp\\*M +Set ANSI conformance level 2 (vt200). +. +.IP \\*(Es\\*(Sp\\*N +Set ANSI conformance level 3 (vt300). +. +.IP \\*(Es\\*#\\*3 +DEC double-height line, top half (DECDHL) +. +.IP \\*(Es\\*#\\*4 +DEC double-height line, bottom half (DECDHL) +. +.IP \\*(Es\\*#\\*5 +DEC single-width line (DECSWL) +. +.IP \\*(Es\\*#\\*6 +DEC double-width line (DECDWL) +. +.IP \\*(Es\\*#\\*8 +DEC Screen Alignment Test (DECALN) +. +.IP \\*(Es\\*%\\*@ +Select default character set, ISO 8859-1 (ISO 2022) +. +.IP \\*(Es\\*%\\*G +Select UTF-8 character set (ISO 2022) +. +.IP \\*(Es\\*(((\\*(Cc +Designate G0 Character Set (ISO 2022) +.IP \\*(Es\\*)\\*(Cc +Designate G1 Character Set (ISO 2022) +. +.IP \\*(Es\\**\\*(Cc +Designate G2 Character Set (ISO 2022) +. +.IP \\*(Es\\*+\\*(Cc +Designate G3 Character Set (ISO 2022) +.br +Final character \*(Cc for designating character sets +(\*0, \*A and \*(cB apply to VT100 and up, the remainder to VT220 and up): + \*(Cc = \*0 \(-> DEC Special Character and Line Drawing Set + \*(Cc = \*A \(-> United Kingdom (UK) + \*(Cc = \*(cB \(-> United States (USASCII) + \*(Cc = \*4 \(-> Dutch + \*(Cc = \*C or \*5 \(-> Finnish + \*(Cc = \*R \(-> French + \*(Cc = \*Q \(-> French Canadian + \*(Cc = \*K \(-> German + \*(Cc = \*Y \(-> Italian + \*(Cc = \*E or \*6 \(-> Norwegian/Danish + \*(Cc = \*Z \(-> Spanish + \*(Cc = \*H or \*7 \(-> Swedish + \*(Cc = \*= \(-> Swiss +. +.IP \\*(Es\\*7 +Save Cursor (DECSC) +. +.IP \\*(Es\\*8 +Restore Cursor (DECRC) +. +.IP \\*(Es\\*= +Application Keypad (DECPAM) +. +.IP \\*(Es\\*> +Normal Keypad (DECPNM) +. +.IP \\*(Es\\*F +Cursor to lower left corner of screen (if +enabled by the \fBhpLowerleftBugCompat\fP resource). +. +.IP \\*(Es\\*c +Full Reset (RIS) +. +.IP \\*(Es\\*l +Memory Lock (per HP terminals). Locks memory above the cursor. +. +.IP \\*(Es\\*m +Memory Unlock (per HP terminals) +. +.IP \\*(Es\\*n +Invoke the G2 Character Set (LS2) +. +.IP \\*(Es\\*o +Invoke the G3 Character Set (LS3) +. +.IP \\*(Es\\*| +Invoke the G3 Character Set as GR (LS3R). Has no visible effect in \fIxterm\fP. +. +.IP \\*(Es\\*} +Invoke the G2 Character Set as GR (LS2R). Has no visible effect in \fIxterm\fP. +. +.IP \\*(Es\\*(c~ +Invoke the G1 Character Set as GR (LS1R). Has no visible effect in \fIxterm\fP. +.Ed +. +.St +.LP +.B +Application Program-Control functions +.IP \\*(AP\\*(Pt\\*s\\*(ST +\fIxterm\fP implements no APC functions; \*(Pt is ignored. +\*(Pt need not be printable characters. +.Ed +. +.St +.LP +.B +Device-Control functions +.IP \\*(Dc\\*(Ps\\*;\\*(Ps\\*|\\*(Pt\\*s\\*(ST +User-Defined Keys (DECUDK). +The first parameter: + \*(Ps = \*0 \(-> Clear all UDK definitions before starting (default) + \*(Ps = \*1 \(-> Erase Below (default) +.br +The second parameter: + \*(Ps = \*0 \(-> Lock the keys (default) + \*(Ps = \*1 \(-> Do not lock. +.br +The third parameter is a ';'-separated list of strings denoting +the key-code separated by a '/' from the hex-encoded key value. +The key codes correspond to the DEC function-key codes (e.g., F6=17). +. +.IP \\*(Dc\\*$\\*q\\*(Pt\\*s\\*(ST +Request Status String (DECRQSS). +The string following the "q" is one of the following: + \*(c"\*q \(-> DECSCA + \*(c"\*p \(-> DECSCL + \*r \(-> DECSTBM + \*m \(-> SGR +.br +\fIxterm\fP responds with +\*(Dc\*1\*$\*r\*(Pt\*s\*(ST +for valid requests, replacing the \*(Pt with the corresponding \*(Cs +string, +or +\*(Dc\*0\*$\*r\*(Pt\*s\*(ST +for invalid requests. +. +.IP \\*(Dc\\*+\\*q\\*(Pt\\*s\\*(ST +Request Termcap/Terminfo String (xterm, experimental). +The string following the "q" is a list of names +encoded in hexadecimal (2 digits per character) +separated by \*; +which correspond to termcap or terminfo key names. +.br +\fIxterm\fP responds with +\*(Dc\*1\*+\*r\*(Pt\*s\*(ST +for valid requests, adding to \*(Pt an \*=, +and the value of the corresponding string that xterm would send, +or +\*(Dc\*0\*+\*r\*(Pt\*s\*(ST +for invalid requests. +The strings are encoded in hexadecimal (2 digits per character). +.Ed +.\" +.St +.LP +.B +Functions using CSI, ordered by the final character(s) +.IP \\*(Cs\\*(Ps\\*s\\*@ +Insert \*(Ps (Blank) Character(s) (default = 1) (ICH) +. +.IP \\*(Cs\\*(Ps\\*s\\*A +Cursor Up \*(Ps Times (default = 1) (CUU) +. +.IP \\*(Cs\\*(Ps\\*s\\*(cB +Cursor Down \*(Ps Times (default = 1) (CUD) +. +.IP \\*(Cs\\*(Ps\\*s\\*C +Cursor Forward \*(Ps Times (default = 1) (CUF) +. +.IP \\*(Cs\\*(Ps\\*s\\*D +Cursor Backward \*(Ps Times (default = 1) (CUB) +. +.IP \\*(Cs\\*(Ps\\*s\\*E +Cursor Next Line \*(Ps Times (default = 1) (CNL) +. +.IP \\*(Cs\\*(Ps\\*s\\*F +Cursor Preceding Line \*(Ps Times (default = 1) (CPL) +. +.IP \\*(Cs\\*(Ps\\*s\\*G +Cursor Character Absolute [column] (default = [row,1]) (CHA) +. +.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*H +Cursor Position [row;column] (default = [1,1]) (CUP) +. +.IP \\*(Cs\\*(Ps\\*s\\*I +Cursor Forward Tabulation \*(Ps tab stops (default = 1) (CHT) +. +.IP \\*(Cs\\*(Ps\\*s\\*J +Erase in Display (ED) + \*(Ps = \*0 \(-> Erase Below (default) + \*(Ps = \*1 \(-> Erase Above + \*(Ps = \*2 \(-> Erase All + \*(Ps = \*3 \(-> Erase Saved Lines (xterm) +. +.IP \\*(Cs\\*?\\*(Ps\\*s\\*J +Erase in Display (DECSED) + \*(Ps = \*0 \(-> Selective Erase Below (default) + \*(Ps = \*1 \(-> Selective Erase Above + \*(Ps = \*2 \(-> Selective Erase All +. +.IP \\*(Cs\\*(Ps\\*s\\*K +Erase in Line (EL) + \*(Ps = \*0 \(-> Erase to Right (default) + \*(Ps = \*1 \(-> Erase to Left + \*(Ps = \*2 \(-> Erase All +. +.IP \\*(Cs\\*?\\*(Ps\\*s\\*K +Erase in Line (DECSEL) + \*(Ps = \*0 \(-> Selective Erase to Right (default) + \*(Ps = \*1 \(-> Selective Erase to Left + \*(Ps = \*2 \(-> Selective Erase All +. +.IP \\*(Cs\\*(Ps\\*s\\*L +Insert \*(Ps Line(s) (default = 1) (IL) +. +.IP \\*(Cs\\*(Ps\\*s\\*M +Delete \*(Ps Line(s) (default = 1) (DL) +. +.IP \\*(Cs\\*(Ps\\*s\\*P +Delete \*(Ps Character(s) (default = 1) (DCH) +. +.IP \\*(Cs\\*(Ps\\*s\\*S +Scroll up \*(Ps lines (default = 1) (SU) +. +.IP \\*(Cs\\*(Ps\\*s\\*T +Scroll down \*(Ps lines (default = 1) (SD) +. +.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*;\\*(Ps\\*s\\*;\\*(Ps\\*s\\*;\\*(Ps\\*s\\*T +Initiate hilite mouse tracking. +Parameters are [func;startx;starty;firstrow;lastrow]. +See the section \fBMouse Tracking\fP. +. +.IP \\*(Cs\\*(Ps\\*s\\*(XX +Erase \*(Ps Character(s) (default = 1) (ECH) +. +.IP \\*(Cs\\*(Ps\\*s\\*Z +Cursor Backward Tabulation \*(Ps tab stops (default = 1) (CBT) +. +.IP \\*(Cs\\*(Pm\\*s\\*` +Character Position Absolute [column] (default = [row,1]) (HPA) +. +.IP \\*(Cs\\*(Ps\\*s\\*b +Repeat the preceding graphic character \*(Ps times (REP) +. +.IP \\*(Cs\\*(Ps\\*s\\*c +Send Device Attributes (Primary DA) + \*(Ps = \*0, 1 or omitted \(-> request attributes from terminal. +The response depends on the \fBdecTerminalId\fP resource setting. + \(-> \*(Cs\*?\*1\*;\*2\*c (``VT100 with Advanced Video Option'') + \(-> \*(Cs\*?\*1\*;\*0\*c (``VT101 with No Options'') + \(-> \*(Cs\*?\*6\*c (``VT102'') + \(-> \*(Cs\*?\*6\*0\*;\*1\*;\*2\*;\*6\*;\*8\*;\*9\*;\*1\*5\*;\*c (``VT220'') +.br +The VT100-style response parameters do not mean anything by themselves. +VT220 parameters do, telling the host what features the terminal supports: + \(-> \*1 132-columns + \(-> \*2 Printer + \(-> \*6 Selective erase + \(-> \*8 User-defined keys + \(-> \*9 National replacement character sets + \(-> \*1\*5 Technical characters +. +.IP \\*(Cs\\*>\\*(Ps\\*s\\*c +Send Device Attributes (Secondary DA) + \*(Ps = \*0, 1 or omitted \(-> request the terminal's identification code. +The response depends on the \fBdecTerminalId\fP resource setting. +It should apply only to VT220 and up, but \fIxterm\fP extends this to VT100. + \(-> \*(Cs\*(Pp\*s\*;\*(Pv\*s\*;\*(Pc\*s\*c +.br +where \*(Pp denotes the terminal type + \(-> \*0 (``VT100'') + \(-> \*1 (``VT220'') +.br +and \*(Pv is the firmware version (for \fIxterm\fP, this is the XFree86 +patch number, starting with 95). +In a DEC terminal, \*(Pc indicates the ROM cartridge +registration number and is always zero. +. +.IP \\*(Cs\\*(Pm\\*s\\*d +Line Position Absolute [row] (default = [1,column]) (VPA) +. +.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*f +Horizontal and Vertical Position [row;column] (default = [1,1]) (HVP) +. +.IP \\*(Cs\\*(Ps\\*s\\*g +Tab Clear (TBC) + \*(Ps = \*0 \(-> Clear Current Column (default) + \*(Ps = \*3 \(-> Clear All +. +.IP \\*(Cs\\*(Pm\\*s\\*h +Set Mode (SM) + \*(Ps = \*2 \(-> Keyboard Action Mode (AM) + \*(Ps = \*4 \(-> Insert Mode (IRM) + \*(Ps = \*1\*2 \(-> Send/receive (SRM) + \*(Ps = \*2\*0 \(-> Automatic Newline (LNM) +. +.IP \\*(Cs\\*?\\*(Pm\\*s\\*h +DEC Private Mode Set (DECSET) + \*(Ps = \*1 \(-> Application Cursor Keys (DECCKM) + \*(Ps = \*2 \(-> Designate USASCII for character sets G0-G3 (DECANM), +and set VT100 mode. + \*(Ps = \*3 \(-> 132 Column Mode (DECCOLM) + \*(Ps = \*4 \(-> Smooth (Slow) Scroll (DECSCLM) + \*(Ps = \*5 \(-> Reverse Video (DECSCNM) + \*(Ps = \*6 \(-> Origin Mode (DECOM) + \*(Ps = \*7 \(-> Wraparound Mode (DECAWM) + \*(Ps = \*8 \(-> Auto-repeat Keys (DECARM) + \*(Ps = \*9 \(-> Send Mouse X & Y on button press. +See the section \fBMouse Tracking\fP. + \*(Ps = \*1\*8 \(-> Print form feed (DECPFF) + \*(Ps = \*1\*9 \(-> Set print extent to full screen (DECPEX) + \*(Ps = \*2\*5 \(-> Show Cursor (DECTCEM) + \*(Ps = \*3\*0 \(-> Show scrollbar (rxvt). + \*(Ps = \*3\*5 \(-> Enable font-shifting functions (rxvt). + \*(Ps = \*3\*8 \(-> Enter Tektronix Mode (DECTEK) + \*(Ps = \*4\*0 \(-> Allow 80 \z\(<-\(-> 132 Mode + \*(Ps = \*4\*1 \(-> \fImore\fP(1) fix (see \fIcurses\fP resource) + \*(Ps = \*4\*2 \(-> Enable Nation Replacement Character sets (DECNRCM) + \*(Ps = \*4\*4 \(-> Turn On Margin Bell + \*(Ps = \*4\*5 \(-> Reverse-wraparound Mode + \*(Ps = \*4\*6 \(-> Start Logging +(normally disabled by a compile-time option) + \*(Ps = \*4\*7 \(-> Use Alternate Screen Buffer (unless +disabled by the \fBtiteInhibit\fP resource) + \*(Ps = \*6\*6 \(-> Application keypad (DECNKM) + \*(Ps = \*6\*7 \(-> Backarrow key sends delete (DECBKM) + \*(Ps = \*1\*0\*0\*0 \(-> Send Mouse X & Y on button press and release. +See the section \fBMouse Tracking\fP. + \*(Ps = \*1\*0\*0\*1 \(-> Use Hilite Mouse Tracking. + \*(Ps = \*1\*0\*0\*2 \(-> Use Cell Motion Mouse Tracking. + \*(Ps = \*1\*0\*0\*3 \(-> Use All Motion Mouse Tracking. + \*(Ps = \*1\*0\*1\*0 \(-> Scroll to bottom on tty output (rxvt). + \*(Ps = \*1\*0\*1\*1 \(-> Scroll to bottom on key press (rxvt). + \*(Ps = \*1\*0\*3\*5 \(-> Enable special modifiers for Alt and NumLock keys. + \*(Ps = \*1\*0\*3\*6 \(-> Send ESC when Meta modifies a key +(enables the \fBmetaSendsEscape\fP resource). + \*(Ps = \*1\*0\*3\*7 \(-> Send DEL from the editing-keypad Delete key + \*(Ps = \*1\*0\*4\*7 \(-> Use Alternate Screen Buffer (unless +disabled by the \fBtiteInhibit\fP resource) + \*(Ps = \*1\*0\*4\*8 \(-> Save cursor as in DECSC (unless +disabled by the \fBtiteInhibit\fP resource) + \*(Ps = \*1\*0\*4\*9 \(-> Save cursor as in DECSC +and use Alternate Screen Buffer, clearing it first (unless +disabled by the \fBtiteInhibit\fP resource) + \*(Ps = \*1\*0\*5\*1 \(-> Set Sun function-key mode. + \*(Ps = \*1\*0\*5\*2 \(-> Set HP function-key mode. + \*(Ps = \*1\*0\*6\*0 \(-> Set legacy keyboard emulation (X11R6). + \*(Ps = \*1\*0\*6\*1 \(-> Set Sun/PC keyboard emulation of VT220 keyboard. +. +.IP \\*(Cs\\*(Pm\\*s\\*i +Media Copy (MC) + \*(Ps = \*0 \(-> Print screen (default) + \*(Ps = \*4 \(-> Turn off printer controller mode + \*(Ps = \*5 \(-> Turn on printer controller mode +. +.IP \\*(Cs\\*?\\*(Pm\\*s\\*i +Media Copy (MC, DEC-specific) + \*(Ps = \*1 \(-> Print line containing cursor + \*(Ps = \*4 \(-> Turn off autoprint mode + \*(Ps = \*5 \(-> Turn on autoprint mode + \*(Ps = \*1 \*0 \(-> Print composed display, ignores DECPEX + \*(Ps = \*1 \*1 \(-> Print all pages +. +.IP \\*(Cs\\*(Pm\\*s\\*l +Reset Mode (RM) + \*(Ps = \*2 \(-> Keyboard Action Mode (AM) + \*(Ps = \*4 \(-> Replace Mode (IRM) + \*(Ps = \*1\*2 \(-> Send/receive (SRM) + \*(Ps = \*2\*0 \(-> Normal Linefeed (LNM) +. +.IP \\*(Cs\\*?\\*(Pm\\*s\\*l +DEC Private Mode Reset (DECRST) + \*(Ps = \*1 \(-> Normal Cursor Keys (DECCKM) + \*(Ps = \*2 \(-> Designate VT52 mode (DECANM). + \*(Ps = \*3 \(-> 80 Column Mode (DECCOLM) + \*(Ps = \*4 \(-> Jump (Fast) Scroll (DECSCLM) + \*(Ps = \*5 \(-> Normal Video (DECSCNM) + \*(Ps = \*6 \(-> Normal Cursor Mode (DECOM) + \*(Ps = \*7 \(-> No Wraparound Mode (DECAWM) + \*(Ps = \*8 \(-> No Auto-repeat Keys (DECARM) + \*(Ps = \*9 \(-> Don't Send Mouse X & Y on button press + \*(Ps = \*1\*8 \(-> Don't print form feed (DECPFF) + \*(Ps = \*1\*9 \(-> Limit print to scrolling region (DECPEX) + \*(Ps = \*2\*5 \(-> Hide Cursor (DECTCEM) + \*(Ps = \*3\*0 \(-> Don't show scrollbar (rxvt). + \*(Ps = \*3\*5 \(-> Disable font-shifting functions (rxvt). + \*(Ps = \*4\*0 \(-> Disallow 80 \z\(<-\(-> 132 Mode + \*(Ps = \*4\*1 \(-> No \fImore\fP(1) fix (see \fIcurses\fP resource) + \*(Ps = \*4\*2 \(-> Disable Nation Replacement Character sets (DECNRCM) + \*(Ps = \*4\*4 \(-> Turn Off Margin Bell + \*(Ps = \*4\*5 \(-> No Reverse-wraparound Mode + \*(Ps = \*4\*6 \(-> Stop Logging +(normally disabled by a compile-time option) + \*(Ps = \*4\*7 \(-> Use Normal Screen Buffer + \*(Ps = \*6\*6 \(-> Numeric keypad (DECNKM) + \*(Ps = \*6\*7 \(-> Backarrow key sends backspace (DECBKM) + \*(Ps = \*1\*0\*0\*0 \(-> Don't Send Mouse X & Y on button press and +release. +See the section \fBMouse Tracking\fP. + \*(Ps = \*1\*0\*0\*1 \(-> Don't Use Hilite Mouse Tracking + \*(Ps = \*1\*0\*0\*2 \(-> Don't Use Cell Motion Mouse Tracking + \*(Ps = \*1\*0\*0\*3 \(-> Don't Use All Motion Mouse Tracking + \*(Ps = \*1\*0\*1\*0 \(-> Don't scroll to bottom on tty output (rxvt). + \*(Ps = \*1\*0\*1\*1 \(-> Don't scroll to bottom on key press (rxvt). + \*(Ps = \*1\*0\*3\*5 \(-> Disable special modifiers for Alt and NumLock keys. + \*(Ps = \*1\*0\*3\*6 \(-> Don't send ESC when Meta modifies a key +(disables the \fBmetaSendsEscape\fP resource). + \*(Ps = \*1\*0\*3\*7 \(-> Send VT220 Remove from the editing-keypad Delete key + \*(Ps = \*1\*0\*4\*7 \(-> Use Normal Screen Buffer, clearing screen +first if in the Alternate Screen (unless +disabled by the \fBtiteInhibit\fP resource) + \*(Ps = \*1\*0\*4\*8 \(-> Restore cursor as in DECRC (unless +disabled by the \fBtiteInhibit\fP resource) + \*(Ps = \*1\*0\*4\*9 \(-> Use Normal Screen Buffer and restore cursor +as in DECRC (unless +disabled by the \fBtiteInhibit\fP resource) + \*(Ps = \*1\*0\*5\*1 \(-> Reset Sun function-key mode. + \*(Ps = \*1\*0\*5\*2 \(-> Reset HP function-key mode. + \*(Ps = \*1\*0\*6\*0 \(-> Reset legacy keyboard emulation (X11R6). + \*(Ps = \*1\*0\*6\*1 \(-> Reset Sun/PC keyboard emulation of VT220 keyboard. +. +.IP \\*(Cs\\*(Pm\\*s\\*m +Character Attributes (SGR) + \*(Ps = \*0 \(-> Normal (default) + \*(Ps = \*1 \(-> Bold + \*(Ps = \*4 \(-> Underlined + \*(Ps = \*5 \(-> Blink (appears as Bold) + \*(Ps = \*7 \(-> Inverse + \*(Ps = \*8 \(-> Invisible (hidden) + \*(Ps = \*2\*2 \(-> Normal (neither bold nor faint) + \*(Ps = \*2\*4 \(-> Not underlined + \*(Ps = \*2\*5 \(-> Steady (not blinking) + \*(Ps = \*2\*7 \(-> Positive (not inverse) + \*(Ps = \*2\*8 \(-> Visible (not hidden) + \*(Ps = \*3\*0 \(-> Set foreground color to Black + \*(Ps = \*3\*1 \(-> Set foreground color to Red + \*(Ps = \*3\*2 \(-> Set foreground color to Green + \*(Ps = \*3\*3 \(-> Set foreground color to Yellow + \*(Ps = \*3\*4 \(-> Set foreground color to Blue + \*(Ps = \*3\*5 \(-> Set foreground color to Magenta + \*(Ps = \*3\*6 \(-> Set foreground color to Cyan + \*(Ps = \*3\*7 \(-> Set foreground color to White + \*(Ps = \*3\*9 \(-> Set foreground color to default (original) + \*(Ps = \*4\*0 \(-> Set background color to Black + \*(Ps = \*4\*1 \(-> Set background color to Red + \*(Ps = \*4\*2 \(-> Set background color to Green + \*(Ps = \*4\*3 \(-> Set background color to Yellow + \*(Ps = \*4\*4 \(-> Set background color to Blue + \*(Ps = \*4\*5 \(-> Set background color to Magenta + \*(Ps = \*4\*6 \(-> Set background color to Cyan + \*(Ps = \*4\*7 \(-> Set background color to White + \*(Ps = \*4\*9 \(-> Set background color to default (original). +.sp +If 16-color support is compiled, the following apply. +Assume that \fIxterm\fP's resources +are set so that the ISO color codes are the first 8 of a set of 16. +Then the \fIaixterm\fP colors are the bright versions of the ISO colors: + \*(Ps = \*9\*0 \(-> Set foreground color to Black + \*(Ps = \*9\*1 \(-> Set foreground color to Red + \*(Ps = \*9\*2 \(-> Set foreground color to Green + \*(Ps = \*9\*3 \(-> Set foreground color to Yellow + \*(Ps = \*9\*4 \(-> Set foreground color to Blue + \*(Ps = \*9\*5 \(-> Set foreground color to Magenta + \*(Ps = \*9\*6 \(-> Set foreground color to Cyan + \*(Ps = \*9\*7 \(-> Set foreground color to White + \*(Ps = \*1\*0\*0 \(-> Set background color to Black + \*(Ps = \*1\*0\*1 \(-> Set background color to Red + \*(Ps = \*1\*0\*2 \(-> Set background color to Green + \*(Ps = \*1\*0\*3 \(-> Set background color to Yellow + \*(Ps = \*1\*0\*4 \(-> Set background color to Blue + \*(Ps = \*1\*0\*5 \(-> Set background color to Magenta + \*(Ps = \*1\*0\*6 \(-> Set background color to Cyan + \*(Ps = \*1\*0\*7 \(-> Set background color to White +.sp +If \fIxterm\fP is compiled with the 16-color support disabled, it supports +the following, from \fIrxvt\fP: + \*(Ps = \*1\*0\*0 \(-> Set foreground and background color to default +.sp +If 88- or 256-color support is compiled, the following apply. + \*(Ps = \*3\*8 ; \*5 ; \*(Ps \(-> Set foreground color to the second \*(Ps + \*(Ps = \*4\*8 ; \*5 ; \*(Ps \(-> Set background color to the second \*(Ps +.sp +. +.IP \\*(Cs\\*(Ps\\*s\\*n +Device Status Report (DSR) + \*(Ps = \*5 \(-> Status Report \*(Cs\*0\*n (``OK'') + \*(Ps = \*6 \(-> Report Cursor Position (CPR) [row;column] as +.br +\*(Cs\*(Ir\*s\*;\*(Ic\*s\*R +. +.IP \\*(Cs\\*?\\*(Ps\\*s\\*n +Device Status Report (DSR, DEC-specific) + \*(Ps = \*6 \(-> Report Cursor Position (CPR) [row;column] as +\*(Cs\*?\*(Ir\*s\*;\*(Ic\*s\*R +(assumes page is zero). + \*(Ps = \*1\*5 \(-> Report Printer status as +\*(Cs\*?\*1\*0\*s\*n (ready) +or +\*(Cs\*?\*1\*1\*s\*n (not ready) + \*(Ps = \*2\*5 \(-> Report UDK status as +\*(Cs\*?\*2\*0\*s\*n (unlocked) +or +\*(Cs\*?\*2\*1\*s\*n (locked) + \*(Ps = \*2\*6 \(-> Report Keyboard status as +.br +\*(Cs\*?\*2\*7\*s\*;\*s\*1\*s\*;\*s\*0\*s\*;\*s\*0\*s\*n (North American) +.br +\*(Cs\*?\*5\*3\*s\*n Locator available, if compiled-in, or +.br +\*(Cs\*?\*5\*0\*s\*n No Locator, if not. +. +.IP \\*(Cs\\*s\\*!\\*p +Soft terminal reset (DECSTR) +. +.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*(c"\\*p +Set conformance level (DECSCL) +Valid values for the first parameter: + \*(Ps = \*6\*1 \(-> VT100 + \*(Ps = \*6\*2 \(-> VT200 + \*(Ps = \*6\*3 \(-> VT300 +.br +Valid values for the second parameter: + \*(Ps = \*0 \(-> 8-bit controls + \*(Ps = \*1 \(-> 7-bit controls (always set for VT100) + \*(Ps = \*2 \(-> 8-bit controls +. +.IP \\*(Cs\\*(Ps\\*s\\*(c"\\*q +Select character protection attribute (DECSCA). +Valid values for the parameter: + \*(Ps = \*0 \(-> DECSED and DECSEL can erase (default) + \*(Ps = \*1 \(-> DECSED and DECSEL cannot erase + \*(Ps = \*2 \(-> DECSED and DECSEL can erase +. +.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*r +Set Scrolling Region [top;bottom] (default = full size of window) (DECSTBM) +. +.IP \\*(Cs\\*?\\*(Pm\\*s\\*r +Restore DEC Private Mode Values. The value of \*(Ps previously saved is +restored. \*(Ps values are the same as for DECSET. +. +.IP \\*(Cs\\*?\\*(Pm\\*s\\*(cs +Save DEC Private Mode Values. \*(Ps values are the same as for DECSET. +. +.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*;\\*(Ps\\*s\\*t +Window manipulation (from \fIdtterm\fP, as well as extensions). +Valid values for the first (and any additional parameters) are: + \*(Ps = \*1 \(-> De-iconify window. + \*(Ps = \*2 \(-> Iconify window. + \*(Ps = \*3 ; \fIx ; y\fP \(-> Move window to [x, y]. + \*(Ps = \*4 ; \fIheight ; width\fP \(-> Resize the \fIxterm\fP window to height and width in pixels. + \*(Ps = \*5 \(-> Raise the \fIxterm\fP window to the front of the stacking order. + \*(Ps = \*6 \(-> Lower the \fIxterm\fP window to the bottom of the stacking order. + \*(Ps = \*7 \(-> Refresh the \fIxterm\fP window. + \*(Ps = \*8 ; \fIheight ; width\fP \(-> Resize the text area to [height;width] in characters. + \*(Ps = \*9 ; \*0 \(-> Restore maximized window. + \*(Ps = \*9 ; \*1 \(-> Maximize window (i.e., resize to screen size). + \*(Ps = \*1\*1 \(-> Report \fIxterm\fP window state. +If the \fIxterm\fP window is open (non-iconified), it returns \*(Cs\*1\*t. +If the \fIxterm\fP window is iconified, it returns \*(Cs\*2\*t. + \*(Ps = \*1\*3 \(-> Report \fIxterm\fP window position as +\*(Cs\*3\*;\*(Ix\*;\*(Iy\*t + \*(Ps = \*1\*4 \(-> Report \fIxterm\fP window in pixels as +\*(Cs\*s\*4\*s\*;\*s\fIheight\fP\*s\*;\*s\fIwidth\fP\*s\*t + \*(Ps = \*1\*8 \(-> Report the size of the text area in characters as +\*(Cs\*s\*8\*s\*;\*s\fIheight\fP\*s\*;\*s\fIwidth\fP\*s\*t + \*(Ps = \*1\*9 \(-> Report the size of the screen in characters as +\*(Cs\*s\*9\*s\*;\*s\fIheight\fP\*s\*;\*s\fIwidth\fP\*s\*t + \*(Ps = \*2\*0 \(-> Report \fIxterm\fP window's icon label as +\*(Os\*s\*L\*s\fIlabel\fP\*s\*(ST + \*(Ps = \*2\*1 \(-> Report \fIxterm\fP window's title as +\*(Os\*s\*l\*s\fItitle\fP\*s\*(ST + \*(Ps >= \*2\*4 \(-> Resize to \*(Ps lines (DECSLPP) +. +.IP \\*(Cs\\*(Pt\\*s\\*;\\*(Pl\\*s\\*;\\*(Pb\\*s\\*;\\*(Pr\\*s\\*(qu\\*w +Enable Filter Rectangle (DECEFR) +.br +Parameters are [top;left;bottom;right]. +.br +Defines the coordinates of a filter rectangle and activates it. +Anytime the locator is detected outside of the filter rectangle, +an outside rectangle event is generated and the rectangle is disabled. +Filter rectangles are always treated as "one-shot" events. +Any parameters that are omitted default to the current locator position. +If all parameters are omitted, any locator motion will be reported. +DECELR always cancels any prevous rectangle definition. +. +.IP \\*(Cs\\*(Ps\\*s\\*x +Request Terminal Parameters (DECREQTPARM) +. +.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Pu\\*s\\*(qu\\*z +Enable Locator Reporting (DECELR) +.br +Valid values for the first parameter: + \*(Ps = \*0 \(-> Locator disabled (default) + \*(Ps = \*1 \(-> Locator enabled + \*(Ps = \*2 \(-> Locator enabled for one report, then disabled +.br +The second parameter specifies the coordinate unit for locator reports. +.br +Valid values for the second parameter: + \*(Pu = \*0 or omitted \(-> default to character cells + \*(Pu = \*1 \(-> device physical pixels + \*(Pu = \*2 \(-> character cells +. +.IP \\*(Cs\\*(Pm\\*s\\*(qu\\*{ +Select Locator Events (DECSLE) +.br +Valid values for the first (and any additional parameters) are: + \*(Ps = \*0 \(-> only respond to explicit host requests (DECRQLP) + (default) also cancels any filter rectangle + \*(Ps = \*1 \(-> report button down transitions + \*(Ps = \*2 \(-> do not report button down transitions + \*(Ps = \*3 \(-> report button up transitions + \*(Ps = \*4 \(-> do not report button up transitions +. +.IP \\*(Cs\\*(Ps\\*s\\*(qu\\*| +Request Locator Position (DECRQLP) +.br +Valid values for the parameter are: + \*(Ps = \*0, 1 or omitted \(-> transmit a single DECLRP locator report +.sp +If Locator Reporting has been enabled by a DECELR, xterm will respond +with a DECLRP Locator Report. This report is also generated on button +up and down events if they have been enabled with a DECSLE, or when +the locator is detected outside of a filter rectangle, if filter rectangles +have been enabled with a DECEFR. +.sp + \(-> \*(Cs\*(Pe\*s\*;\*(Pb\*s\*;\*(Pr\*s\*;\*(Pc\*s\*;\*(Pp\*s\*&\*s\*w +.sp +Parameters are [event;button;row;column;page]. +.br +Valid values for the event: + \*(Pe = \*0 \(-> locator unavailable - no other parameters sent + \*(Pe = \*1 \(-> request - xterm received a DECRQLP + \*(Pe = \*2 \(-> left button down + \*(Pe = \*3 \(-> left button up + \*(Pe = \*4 \(-> middle button down + \*(Pe = \*5 \(-> middle button up + \*(Pe = \*6 \(-> right button down + \*(Pe = \*7 \(-> right button up + \*(Pe = \*8 \(-> M4 button down + \*(Pe = \*9 \(-> M4 button up + \*(Pe = \*1\*0 \(-> locator outside filter rectangle +.br +``button'' parameter is a bitmask indicating which buttons are pressed: + \*(Pb = \*0 \(-> no buttons down + \*(Pb & \*1 \(-> right button down + \*(Pb & \*2 \(-> middle button down + \*(Pb & \*4 \(-> left button down + \*(Pb & \*8 \(-> M4 button down +.br +``row'' and ``column'' parameters are the coordinates of the locator +position in the xterm window, encoded as ASCII decimal. +.br +The ``page'' parameter is not used by xterm, and will be omitted. +. +.Ed +. +.St +.LP +.B +Operating System Controls +. +.IP \\*(Os\\*(Ps\\*s\\*;\\*(Pt\\*s\\*(ST +.IP \\*(Os\\*(Ps\\*s\\*;\\*(Pt\\*s\\*(Be +Set Text Parameters. +For colors and font, +if \*(Pt is a "?", the control sequence elicits a response which consists +of the control sequence which would set the corresponding value. +The \fIdtterm\fP control sequences allow you to determine the icon name +and window title. + \*(Ps = \*0 \(-> Change Icon Name and Window Title to \*(Pt + \*(Ps = \*1 \(-> Change Icon Name to \*(Pt + \*(Ps = \*2 \(-> Change Window Title to \*(Pt + \*(Ps = \*3 \(-> Set X property on top-level window. \*(Pt should be in the form +"\fIprop=value\fP", or just "\fIprop\fP" to delete the property + \*(Ps = \*4 ; \fIc ; name\fP \(-> Change Color #\fIc\fP to \fIcname\fP. Any +number of \fIc name\fP pairs may be given. + \*(Ps = \*1\*0 \(-> Change color names starting with text foreground to \*(Pt +(a list of one or more color names or RGB specifications, separated by +semicolon, up to eight, as per \fIXParseColor\fP). + \*(Ps = \*1\*1 \(-> Change colors starting with text background to \*(Pt + \*(Ps = \*1\*2 \(-> Change colors starting with text cursor to \*(Pt + \*(Ps = \*1\*3 \(-> Change colors starting with mouse foreground to \*(Pt + \*(Ps = \*1\*4 \(-> Change colors starting with mouse background to \*(Pt + \*(Ps = \*1\*5 \(-> Change colors starting with Tek foreground to \*(Pt + \*(Ps = \*1\*6 \(-> Change colors starting with Tek background to \*(Pt + \*(Ps = \*1\*7 \(-> Change colors starting with highlight to \*(Pt + \*(Ps = \*4\*6 \(-> Change Log File to \*(Pt (normally disabled by a +compile-time option) + \*(Ps = \*5\*0 \(-> Set Font to \*(Pt +If \*(Pt begins with a "#", index in the font menu, relative (if the +next character is a plus or minus sign) or absolute. A number is +expected but not required after the sign (the default is the current +entry for relative, zero for absolute indexing). +.Ed +. +.St +.LP +.B +Privacy Message +.IP \\*(PM\\*(Pt\\*s\\*(ST +\fIxterm\fP implements no PM functions; \*(Pt is ignored. +\*(Pt need not be printable characters. +.Ed +. +.SH +PC-Style Function Keys +.ds RH Function Keys +.LP +If \fIxterm\fP does minimal translation of the function keys, it usually does this +with a PC-style keyboard, so PC-style function keys result. +Sun keyboards are similar to PC keyboards. +Both have cursor and scrolling operations printed on the keypad, +which duplicate the smaller cursor and scrolling keypads. +.LP +X does not predefine NumLock (used for VT220 keyboards) or Alt (used as +an extension for the Sun/PC keyboards) as modifiers. +These keys are recognized as modifiers when enabled +by the \fBnumLock\fP resource, +or by the DECSET \*1\*0\*3\*5 control sequence. +.LP +The cursor keys transmit the following escape sequences depending on the +mode specified via the \fBDECCKM\fP escape sequence. +.TS +center; +cf3 cf3 cf3 +lf3w(2c) lf3w(2c) lf3w(2c) . +Key Normal Application +_ +Cursor Up \*(Cs\*A \*(S3\*A +Cursor Down \*(Cs\*(cB \*(S3\*(cB +Cursor Right \*(Cs\*C \*(S3\*C +Cursor Left \*(Cs\*D \*(S3\*D +.TE +.LP +The application keypad transmits the following escape sequences depending on the +mode specified via the \fBDECPNM\fP and \fBDECPAM\fP escape sequences. +Use the NumLock key to override the application mode. +.LP +Not all keys are present on the Sun/PC keypad (e.g., PF1, Tab), but are supported by +the program. +.TS +center; +cf3 cf3 cf3 cf3 cf3 +lf3w(2c) lf3w(2c) lf3w(2c) lf3w(2c) lf3w(2c) . +Key Numeric Application Terminfo Termcap +_ +Space \*(Sp \*(S3\*(Sp - - +Tab \*(Ta \*(S3\*I - - +Enter \*(Cr \*(S3\*M kent @8 +PF1 \*(S3\*P \*(S3\*P kf1 k1 +PF2 \*(S3\*Q \*(S3\*Q kf2 k2 +PF3 \*(S3\*R \*(S3\*R kf3 k3 +PF4 \*(S3\*S \*(S3\*S kf4 k4 +* \f1(multiply)\fP * \*(S3\*j - - ++ \f1(add)\fP + \*(S3\*k - - +, \f1(comma)\fP , \*(S3\*l - - +- \f1(minus)\fP - \*(S3\*m - - +\. \f1(Delete)\fP \. \*(S3\*3\*(c~ - - +/ \f1(divide)\fP / \*(S3\*o - - +0 \f1(Insert)\fP 0 \*(Cs\*2\*(c~ - - +1 \f1(End)\fP 1 \*(Cs\*4\*(c~ kc1 K4 +2 \f1(DownArrow)\fP 2 \*(Cs\*(cB - - +3 \f1(PageDown)\fP 3 \*(Cs\*5\*(c~ kc3 K5 +4 \f1(LeftArrow)\fP 4 \*(Cs\*D - - +5 \f1(Begin)\fP 5 \*(Cs\*E kb2 K2 +6 \f1(RightArrow)\fP 6 \*(Cs\*C - - +7 \f1(Home)\fP 7 \*(Cs\*1\*(c~ ka1 K1 +8 \f1(UpArrow)\fP 8 \*(Cs\*A - - +9 \f1(PageUp)\fP 9 \*(Cs\*5\*(c~ ka3 K3 += (equal) \&= \*(S3\*(XX - - +.TE +They also provide 12 function keys, as well as a few other special-purpose keys. +.TS +center; +cf3 cf3 +lf3w(2c) lf3w(2c) . +Key Escape Sequence +_ +F1 \*(S3\*P +F2 \*(S3\*Q +F3 \*(S3\*R +F4 \*(S3\*S +F5 \*(Cs\*1\*5\*(c~ +F6 \*(Cs\*1\*7\*(c~ +F7 \*(Cs\*1\*8\*(c~ +F8 \*(Cs\*1\*9\*(c~ +F9 \*(Cs\*2\*0\*(c~ +F10 \*(Cs\*2\*1\*(c~ +F11 \*(Cs\*2\*3\*(c~ +F12 \*(Cs\*2\*4\*(c~ +.TE +.LP +Older versions of \fIxterm\fP implement different escape sequences for F1 through F4. +These can be activated by setting the \fIoldXtermFKeys\fP resource. +However, since they do not correspond to any hardware terminal, they have been deprecated. +(The DEC VT220 reserves F1 through F5 for local functions such as \fBSetup\fP). +.TS +center; +cf3 cf3 +lf3w(2c) lf3w(2c) . +Key Escape Sequence +_ +F1 \*(Cs\*1\*1\*(c~ +F2 \*(Cs\*1\*2\*(c~ +F3 \*(Cs\*1\*3\*(c~ +F4 \*(Cs\*1\*4\*(c~ +.TE +In normal mode, i.e., a Sun/PC keyboard +when the \fBsunKeyboard\fP resource is false, +\fIxterm\fP recognizes function key modifiers +which are parameters appended before the final character +of the control sequence. +.TS +center; +cf3 lf3 +cf3w(2c) lf3w(2c) . +Code Modifiers +_ +2 Shift +3 Alt +4 Shift + Alt +5 Control +6 Shift + Control +7 Alt + Control +8 Shift + Alt + Control +.TE +For example, shift-F5 would be sent as +\*(Cs\*1\*5\*;\*2\*(c~ + +If the \fBalwaysUseMods\fP resource is set, the Meta modifier also is +recognized, making parameters 9 through 16. +.SH +VT220-Style Function Keys +.LP +However, \fIxterm\fP is most useful as a DEC VT102 or VT220 emulator. +Set the \fBsunKeyboard\fP resource to true to force a Sun/PC keyboard +to act like a VT220 keyboard. +.LP +The VT102/VT220 application keypad transmits unique escape sequences in +application mode, which are distinct from the cursor and scrolling keypad: +.TS +center; +cf3 cf3 cf3 +lf3w(2c) lf3w(2c) lf3w(2c) . +Key Numeric Application +_ +Space Space \*(S3\*(Sp +Tab Tab \*(S3\*I +Enter CR \*(S3\*M +PF1 \*(S3\*P \*(S3\*P +PF2 \*(S3\*Q \*(S3\*Q +PF3 \*(S3\*R \*(S3\*R +PF4 \*(S3\*S \*(S3\*S +* \f1(multiply)\fP * \*(S3\*j ++ \f1(add)\fP + \*(S3\*k +, \f1(comma)\fP , \*(S3\*l +- \f1(minus)\fP - \*(S3\*m +\. \f1(period)\fP \. \*(S3\*n +/ \f1(divide)\fP / \*(S3\*o +0 0 \*(S3\*p +1 1 \*(S3\*q +2 2 \*(S3\*r +3 3 \*(S3\*(cs +4 4 \*(S3\*t +5 5 \*(S3\*u +6 6 \*(S3\*v +7 7 \*(S3\*w +8 8 \*(S3\*x +9 9 \*(S3\*y += (equal) \&= \*(S3\*(XX +.TE +.LP +The VT220 provides 8 additional function keys. +With a Sun/PC keyboard, access these keys by Control/F1 for F13, etc. +.TS +center; +cf3 cf3 +lf3w(2c) lf3w(2c) . +Key Escape Sequence +_ +F13 \*(Cs\*2\*5\*(c~ +F14 \*(Cs\*2\*6\*(c~ +F15 \*(Cs\*2\*8\*(c~ +F16 \*(Cs\*2\*9\*(c~ +F17 \*(Cs\*3\*1\*(c~ +F18 \*(Cs\*3\*2\*(c~ +F19 \*(Cs\*3\*3\*(c~ +F20 \*(Cs\*3\*4\*(c~ +.TE +.SH +VT52-Style Function Keys +.LP +A VT52 does not have function keys, but it does have a numeric keypad and cursor keys. +They differ from the other emulations by the prefix. +Also, the cursor keys do not change: +.TS +center; +cf3 cf3 +lf3w(2c) lf3w(2c) . +Key Normal/Application +_ +Cursor Up \*(Es\*A +Cursor Down \*(Es\*(cB +Cursor Right \*(Es\*C +Cursor Left \*(Es\*D +.TE +The keypad is similar: +.TS +center; +cf3 cf3 cf3 +lf3w(2c) lf3w(2c) lf3w(2c) . +Key Numeric Application +_ +Space Space \*(Es\*?\*(Sp +Tab Tab \*(Es\*?\*I +Enter CR \*(Es\*?\*M +PF1 \*(Es\*P \*(Es\*P +PF2 \*(Es\*Q \*(Es\*Q +PF3 \*(Es\*R \*(Es\*R +PF4 \*(Es\*S \*(Es\*S +* \f1(multiply)\fP * \*(Es\*?\*j ++ \f1(add)\fP + \*(Es\*?\*k +, \f1(comma)\fP , \*(Es\*?\*l +- \f1(minus)\fP - \*(Es\*?\*m +\. \f1(period)\fP \. \*(Es\*?\*n +/ \f1(divide)\fP / \*(Es\*?\*o +0 0 \*(Es\*?\*p +1 1 \*(Es\*?\*q +2 2 \*(Es\*?\*r +3 3 \*(Es\*?\*(cs +4 4 \*(Es\*?\*t +5 5 \*(Es\*?\*u +6 6 \*(Es\*?\*v +7 7 \*(Es\*?\*w +8 8 \*(Es\*?\*x +9 9 \*(Es\*?\*y += (equal) \&= \*(Es\*?\*(XX +.TE +.SH +Sun-Style Function Keys +.LP +The \fIxterm\fP program provides support for Sun keyboards more directly, by +a menu toggle that causes it to send Sun-style function key codes rather than VT220. +Note, however, that the \fIsun\fP and \fIvt100\fP emulations are not really +compatible. For example, their wrap-margin behavior differs. +.LP +Only function keys are altered; keypad and cursor keys are the same. +The emulation responds identically. +See the xterm-sun terminfo entry for details. +.SH +HP-Style Function Keys +.LP +Similarly, \fIxterm\fP can be compiled to support HP keyboards. +See the xterm-hp terminfo entry for details. +.SH +Mouse Tracking +.ds RH Mouse Tracking +.LP +The VT widget can be set to send the mouse position and other +information on button presses. These modes are typically used by +editors and other full-screen applications that want to make use of +the mouse. + +There are six mutually exclusive modes. One is DEC Locator mode, enabled by the +DECELR \*(Cs\*(Ps\*s\*;\*(Ps\*s\*s\*'\*s\*z +control sequence, and is not described here. The remaining five +modes are each enabled (or disabled) by a different parameter in +DECSET \*(Cs\*?\*(Pm\*s\*h +or +DECRST \*(Cs\*?\*(Pm\*s\*l +control sequence. + +Manifest constants for the parameter values +are defined in \fBxcharmouse.h\fP as follows: +. +.DS B +#define SET_X10_MOUSE 9 +#define SET_VT200_MOUSE 1000 +#define SET_VT200_HIGHLIGHT_MOUSE 1001 +#define SET_BTN_EVENT_MOUSE 1002 +#define SET_ANY_EVENT_MOUSE 1003 +.DE +.LP +The motion reporting modes are strictly \fIxterm\fP extensions, and are not +part of any standard, though they are analogous to the DEC VT200 DECELR +locator reports. + +Parameters (such as pointer position and button number) for all mouse +tracking escape sequences generated by \fIxterm\fP +encode numeric parameters in a single character as +\fIvalue\fP+32. +For example, \*! specifies the value 1. +The upper left character position on the terminal is denoted as 1,1. + +X10 compatibility mode sends an escape sequence only on button press, +encoding the location and the mouse button pressed. +It is enabled by specifying parameter 9 to DECSET. +On button press, \fIxterm\fP sends +\*(Cs\*M\*(Cb\*(Cx\*(Cy (6 characters). +\*(Cb is button\-1. +\*(Cx and \*(Cy are the x and y coordinates of the mouse when the +button was pressed. + +Normal tracking mode sends an escape sequence on both button press and +release. Modifier key (shift, ctrl, meta) information is also sent. +It is enabled by specifying parameter 1000 to DECSET. +On button press or release, \fIxterm\fP sends +\*(Cs\*M\*(Cb\*(Cx\*(Cy. +The low two bits of \*(Cb encode button information: +0=MB1 pressed, 1=MB2 pressed, 2=MB3 pressed, 3=release. +The next three bits encode the modifiers which were down when the button was +pressed and are added together: 4=Shift, 8=Meta, 16=Control. +Note however that the shift and control bits are normally unavailable +because \fIxterm\fP uses the control modifier with mouse for popup menus, +and the shift modifier is used in the default translations for button events. +The \fIMeta\fP modifier recognized by \fIxterm\fP is the \fImod1\fP mask, +and is not necessarily the "Meta" key (see \fIxmodmap\fP). +\*(Cx and \*(Cy are the x and y coordinates of the mouse event, encoded as +in X10 mode. + +Wheel mice may return buttons 4 and 5. +Those buttons are represented by adding 64 to the event code. + +Mouse hilite tracking notifies a program of a button press, receives a +range of lines from the program, highlights the region covered by +the mouse within that range until button release, and then sends the +program the release coordinates. +It is enabled by specifying parameter 1001 to DECSET. +Highlighting is performed only for button 1, though other button events +can be received. +\fBWarning:\fP use of this mode requires a cooperating program or it will +hang \fIxterm.\fP +On button press, the same information as for normal tracking is +generated; \fIxterm\fP then waits for the program to send mouse +tracking information. +\fIAll X events are ignored until the proper escape sequence is +received from the pty:\fP +\*(Cs\*(Ps\*s\*;\*(Ps\*s\*;\*(Ps\*s\*;\*(Ps\*s\*;\*(Ps\*s\*T. +The parameters are \fIfunc, startx, starty, firstrow,\fP and \fIlastrow.\fP +\fIfunc\fP is non-zero to initiate hilite tracking and zero to abort. +\fIstartx\fP and \fIstarty\fP give the starting x and y location for +the highlighted region. The ending location tracks the mouse, but +will never be above row \fIfirstrow\fP and will always be above row +\fIlastrow.\fP (The top of the screen is row 1.) +When the button is released, \fIxterm\fP reports the ending position +one of two ways: if the start and end coordinates are valid text +locations: \*(Cs\*t\*(Cx\*(Cy. If either coordinate is past +the end of the line: +\*(Cs\*T\*(Cx\*(Cy\*(Cx\*(Cy\*(Cx\*(Cy. +The parameters are \fIstartx, starty, endx, endy, mousex,\fP and \fImousey.\fP +\fIstartx, starty, endx, \fPand\fI endy\fP give the starting and +ending character positions of the region. \fImousex\fP and \fImousey\fP +give the location of the mouse at button up, which may not be over a +character. + +Button-event tracking is essentially the same as normal tracking, but +\fIxterm\fP also reports button-motion events. Motion events +are reported only if the mouse pointer has moved to a different character +cell. It is enabled by specifying parameter 1002 to DECSET. +On button press or release, \fIxterm\fP sends the same codes used by normal +tracking mode. On button-motion events, \fIxterm\fP adds 32 to the event code +(the third character, \*(Cb). +The other bits of the event code specify button and modifier keys as in normal mode. +For example, motion into cell x,y with button 1 +down is reported as \*(Cs\*M\*@\*(Cx\*(Cy. +( \*@ = 32 + 0 (button 1) + 32 (motion indicator) ). +Similarly, motion with button 3 +down is reported as \*(Cs\*M\*(cB\*(Cx\*(Cy. +( \*(cB = 32 + 2 (button 3) + 32 (motion indicator) ). + +Any-event mode is the same as button-event mode, except that all motion +events are reported instead of just those that enter a new character cell. +It is enabled by specifying 1003 to DECSET. +. +.br +.ds RH Tektronix 4014 Mode +.SH +Tektronix 4014 Mode +.LP +Most of these sequences are standard Tektronix 4014 control sequences. +Graph mode supports the 12-bit addressing of the Tektronix 4014. +The major features missing are +the write-through and defocused modes. +This document does not describe the commands used in the various +Tektronix plotting modes but does describe the commands to switch modes. +.St +.IP \\*(Be +Bell (Ctrl-G) +.IP \\*(Bs +Backspace (Ctrl-H) +.IP \\*(Ta +Horizontal Tab (Ctrl-I) +.IP \\*(Lf +Line Feed or New Line (Ctrl-J) +.IP \\*(Vt +Cursor up (Ctrl-K) +.IP \\*(Ff +Form Feed or New Page (Ctrl-L) +.IP \\*(Cr +Carriage Return (Ctrl-M) +.IP \\*(Es\\*(Et +Switch to VT100 Mode (ESC Ctrl-C) +.IP \\*(Es\\*(En +Return Terminal Status (ESC Ctrl-E) +.IP \\*(Es\\*(Ff +PAGE (Clear Screen) (ESC Ctrl-L) +.IP \\*(Es\\*(So +Begin 4015 APL mode (ignored by \fIxterm\fP) (ESC Ctrl-N) +.IP \\*(Es\\*(Si +End 4015 APL mode (ignored by \fIxterm\fP) (ESC Ctrl-O) +.IP \\*(Es\\*(Eb +COPY (Save Tektronix Codes to file COPYyyyy-mm-dd.hh:mm:ss) (ESC Ctrl-W) +.IP \\*(Es\\*(Ca +Bypass Condition (ESC Ctrl-X) +.IP \\*(Es\\*(Su +GIN mode (ESC Ctrl-Z) +.IP \\*(Es\\*(Fs +Special Point Plot Mode (ESC Ctrl-\e) +.IP \\*(Es\\*8 +Select Large Character Set +.IP \\*(Es\\*9 +Select #2 Character Set +.IP \\*(Es\\*: +Select #3 Character Set +.IP \\*(Es\\*; +Select Small Character Set +.IP \\*(Os\\*(Ps\\*s\\*;\\*(Pt\\*s\\*(Be +Set Text Parameters of VT window + \*(Ps = \*0 \(-> Change Icon Name and Window Title to \*(Pt + \*(Ps = \*1 \(-> Change Icon Name to \*(Pt + \*(Ps = \*2 \(-> Change Window Title to \*(Pt + \*(Ps = \*4\*6 \(-> Change Log File to \*(Pt (normally disabled by a +compile-time option) +.IP \\*(Es\\*` +Normal Z Axis and Normal (solid) Vectors +.IP \\*(Es\\*a +Normal Z Axis and Dotted Line Vectors +.IP \\*(Es\\*b +Normal Z Axis and Dot-Dashed Vectors +.IP \\*(Es\\*c +Normal Z Axis and Short-Dashed Vectors +.IP \\*(Es\\*d +Normal Z Axis and Long-Dashed Vectors +.IP \\*(Es\\*h +Defocused Z Axis and Normal (solid) Vectors +.IP \\*(Es\\*i +Defocused Z Axis and Dotted Line Vectors +.IP \\*(Es\\*j +Defocused Z Axis and Dot-Dashed Vectors +.IP \\*(Es\\*k +Defocused Z Axis and Short-Dashed Vectors +.IP \\*(Es\\*l +Defocused Z Axis and Long-Dashed Vectors +.IP \\*(Es\\*p +Write-Thru Mode and Normal (solid) Vectors +.IP \\*(Es\\*q +Write-Thru Mode and Dotted Line Vectors +.IP \\*(Es\\*r +Write-Thru Mode and Dot-Dashed Vectors +.IP \\*(Es\\*(cs +Write-Thru Mode and Short-Dashed Vectors +.IP \\*(Es\\*t +Write-Thru Mode and Long-Dashed Vectors +.IP \\*(Fs +Point Plot Mode (Ctrl-\e) +.IP \\*(Gs +Graph Mode (Ctrl-]) +.IP \\*(Rs +Incremental Plot Mode (Ctrl-^) +.IP \\*(Us +Alpha Mode (Ctrl-_) +.Ed +. +. +.br +.ds RH VT52 Mode +.SH +VT52 Mode +.LP +Parameters for cursor movement are at the end of the \*(Es\*Y escape sequence. +Each ordinate is encoded in a single character as \fIvalue\fP+32. +For example, \*! is 1. +The screen coodinate system is 0-based. +.St +.IP \\*(Es\\*A +Cursor up. +.IP \\*(Es\\*(cB +Cursor down. +.IP \\*(Es\\*C +Cursor right. +.IP \\*(Es\\*D +Cursor left. +.IP \\*(Es\\*F +Enter graphics mode. +.IP \\*(Es\\*G +Exit graphics mode. +.IP \\*(Es\\*H +Move the cursor to the home position. +.IP \\*(Es\\*I +Reverse line feed. +.IP \\*(Es\\*J +Erase from the cursor to the end of the screen. +.IP \\*(Es\\*K +Erase from the cursor to the end of the line. +.IP \\*(Es\\*Y\\*(Ps\\*s\\*(Ps +Move the cursor to given row and column. +.IP \\*(Es\\*Z +Identify + \(-> \*(Es\*s\*/\*s\*Z (``I am a VT52.'') +.IP \\*(Es\\*= +Enter alternate keypad mode. +.IP \\*(Es\\*> +Exit alternate keypad mode. +.IP \\*(Es\\*< +Exit VT52 mode (Enter VT100 mode). +.Ed +. +.if n .pl \n(nlu+1v diff --git a/doc/ctlseqs.ps b/doc/ctlseqs.ps new file mode 100644 index 0000000..1452f1c --- /dev/null +++ b/doc/ctlseqs.ps @@ -0,0 +1,8729 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.17.2 +%%CreationDate: Tue Feb 12 17:25:13 2002 +%%DocumentNeededResources: font Times-Bold +%%+ font Times-Italic +%%+ font Times-Roman +%%+ font Symbol +%%DocumentSuppliedResources: procset grops 1.17 2 +%%Pages: 19 +%%PageOrder: Ascend +%%Orientation: Portrait +%%EndComments +%%BeginProlog +%%BeginResource: procset grops 1.17 2 +/setpacking where{ +pop +currentpacking +true setpacking +}if +/grops 120 dict dup begin +/SC 32 def +/A/show load def +/B{0 SC 3 -1 roll widthshow}bind def +/C{0 exch ashow}bind def +/D{0 exch 0 SC 5 2 roll awidthshow}bind def +/E{0 rmoveto show}bind def +/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def +/G{0 rmoveto 0 exch ashow}bind def +/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/I{0 exch rmoveto show}bind def +/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def +/K{0 exch rmoveto 0 exch ashow}bind def +/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/M{rmoveto show}bind def +/N{rmoveto 0 SC 3 -1 roll widthshow}bind def +/O{rmoveto 0 exch ashow}bind def +/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/Q{moveto show}bind def +/R{moveto 0 SC 3 -1 roll widthshow}bind def +/S{moveto 0 exch ashow}bind def +/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/SF{ +findfont exch +[exch dup 0 exch 0 exch neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/MF{ +findfont +[5 2 roll +0 3 1 roll +neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def +/MANUAL{ +statusdict begin/manualfeed true store end +}bind def +/PLG{ +gsave newpath clippath pathbbox grestore +exch pop add exch pop +}bind def +/BP{ +/level0 save def +1 setlinecap +1 setlinejoin +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}bind def +/DA{ +newpath arcn stroke +}bind def +/SN{ +transform +.25 sub exch .25 sub exch +round .25 add exch round .25 add exch +itransform +}bind def +/DL{ +SN +moveto +SN +lineto stroke +}bind def +/DC{ +newpath 0 360 arc closepath +}bind def +/TM matrix def +/DE{ +TM currentmatrix pop +translate scale newpath 0 0 .5 0 360 arc closepath +TM setmatrix +}bind def +/RC/rcurveto load def +/RL/rlineto load def +/ST/stroke load def +/MT/moveto load def +/CL/closepath load def +/FL{ +currentgray exch setgray fill setgray +}bind def +/BL/fill load def +/LW/setlinewidth load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne{def}{pop pop}ifelse +}forall +/Encoding exch def +dup/FontName exch def +currentdict end definefont pop +}bind def +/DEFS 0 def +/EBEGIN{ +moveto +DEFS begin +}bind def +/EEND/end load def +/CNT 0 def +/level1 0 def +/PBEGIN{ +/level1 save def +translate +div 3 1 roll div exch scale +neg exch neg exch translate +0 setgray +0 setlinecap +1 setlinewidth +0 setlinejoin +10 setmiterlimit +[]0 setdash +/setstrokeadjust where{ +pop +false setstrokeadjust +}if +/setoverprint where{ +pop +false setoverprint +}if +newpath +/CNT countdictstack def +userdict begin +/showpage{}def +}bind def +/PEND{ +clear +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%IncludeResource: font Times-Bold +%%IncludeResource: font Times-Italic +%%IncludeResource: font Times-Roman +%%IncludeResource: font Symbol +grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 +def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron +/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent +/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen +/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex +/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y +/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft +/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl +/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen +/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft +/logicalnot/minus/registered/macron/degree/plusminus/twosuperior +/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior +/ordmasculine/guilsinglright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE +/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn +/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash +/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/Times-Roman@0 ENC0/Times-Roman RE/Times-Italic@0 ENC0/Times-Italic RE +/Times-Bold@0 ENC0/Times-Bold RE +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 12/Times-Bold@0 SF(Xterm Contr)240.12 123 Q(ol Sequences)-.216 E/F1 +10/Times-Italic@0 SF(Edwar)280.215 147 Q 2.5(dM)-.37 G(oy)-2.5 E/F2 10 +/Times-Roman@0 SF(Uni)237.725 165 Q -.15(ve)-.25 G +(rsity of California, Berk).15 E(ele)-.1 E(y)-.15 E(Re)283.765 189 Q +(vised by)-.25 E F1(Stephen Gildea)275.31 213 Q F2 2.5(XC)262.945 231 S +(onsortium \(1994\))-2.5 E F1(Thomas Dic)275.335 255 Q -.1(ke)-.2 G(y) +-.2 E F2(XFree86 Project \(1996-1999\))246.845 273 Q/F3 10/Times-Bold@0 +SF(De\214nitions)72 321 Q .4 LW 72 329.1 72 339.1 DL 72 328.1 72 338.1 +DL 87.998 329.1 87.998 339.1 DL 77 339.1 72 339.1 DL 77.998 339.1 72.998 +339.1 DL 82.998 339.1 77.998 339.1 DL 87.998 339.1 82.998 339.1 DL +87.998 328.1 87.998 338.1 DL 77 328.1 72 328.1 DL 77.998 328.1 72.998 +328.1 DL 82.998 328.1 77.998 328.1 DL 87.998 328.1 82.998 328.1 DL F1(c) +77.779 336.6 Q F2(The literal character)14.781 E F1(c)2.5 E F2(.)A F1(C) +72 352.2 Q F2 2.5(As)18.33 G(ingle \(required\) character)-2.5 E(.)-.55 +E F1(P)72 367.8 Q/F4 8/Times-Italic@0 SF(s)-2 3 M F2 2.5(As)17.778 -3 O +(ingle \(usually optional\) numeric parameter)-2.5 E 2.5(,c)-.4 G +(omposed of one of more digits.)-2.5 E F1(P)72 383.4 Q F4(m)-2 3 M F2 +2.59(Am)15.114 -3 O .09(ultiple numeric parameter composed of an)-2.59 F +2.59(yn)-.15 G 499.407 375.9 499.407 385.9 DL 499.407 374.9 499.407 +384.9 DL .09(umber of single numeric parameters, separated by)296.61 +383.4 R 515.405 375.9 515.405 385.9 DL 504.407 385.9 499.407 385.9 DL +505.405 385.9 500.405 385.9 DL 510.405 385.9 505.405 385.9 DL 515.405 +385.9 510.405 385.9 DL 515.405 374.9 515.405 384.9 DL 504.407 374.9 +499.407 374.9 DL 505.405 374.9 500.405 374.9 DL 510.405 374.9 505.405 +374.9 DL 515.405 374.9 510.405 374.9 DL 10.864(;c)506.016 383.4 S(har) +-10.864 E(-)-.2 E 2.5(acter\(s\). Indi)97 395.4 R(vidual v)-.25 E +(alues for the parameters are listed with)-.25 E F1(P)2.5 E F4(s)-2 3 M +F2(.)2.5 -3 M F1(P)72 411 Q F4(t)-2 3 M F2 2.5(At)18.666 -3 O -.15(ex) +-2.5 G 2.5(tp).15 G(arameter composed of printable characters.)-2.5 E F3 +(C1 \(8-Bit\) Contr)72 435 Q(ol Characters)-.18 E F2(The)72 450.6 Q F1 +(xterm)2.508 E F2 .009 +(program recognizes both 8-bit and 7-bit control characters.)2.508 F +.009(It generates 7-bit controls \(by def)5.009 F .009(ault\) or 8-bit) +-.1 F(if S8C1T is enabled.)72 462.6 Q(The follo)5 E +(wing pairs of 7-bit and 8-bit control characters are equi)-.25 E -.25 +(va)-.25 G(lent:).25 E 72 483.1 72 493.1 DL 72 482.1 72 492.1 DL 87.998 +483.1 87.998 493.1 DL 77 493.1 72 493.1 DL 77.998 493.1 72.998 493.1 DL +82.998 493.1 77.998 493.1 DL 87.998 493.1 82.998 493.1 DL 87.998 482.1 +87.998 492.1 DL 77 482.1 72 482.1 DL 77.998 482.1 72.998 482.1 DL 82.998 +482.1 77.998 482.1 DL 87.998 482.1 82.998 482.1 DL 89.664 483.1 89.664 +493.1 DL 89.664 482.1 89.664 492.1 DL/F5 6/Times-Roman@0 SF(ESC)74.497 +489.6 Q 105.662 483.1 105.662 493.1 DL 94.664 493.1 89.664 493.1 DL +95.662 493.1 90.662 493.1 DL 100.662 493.1 95.662 493.1 DL 105.662 493.1 +100.662 493.1 DL 105.662 482.1 105.662 492.1 DL 94.664 482.1 89.664 +482.1 DL 95.662 482.1 90.662 482.1 DL 100.662 482.1 95.662 482.1 DL +105.662 482.1 100.662 482.1 DL F2(D)94.053 490.6 Q(Inde)97 506.6 Q 2.5 +(x\()-.15 G(IND: 0x84\))-2.5 E 72 515.1 72 525.1 DL 72 514.1 72 524.1 DL +87.998 515.1 87.998 525.1 DL 77 525.1 72 525.1 DL 77.998 525.1 72.998 +525.1 DL 82.998 525.1 77.998 525.1 DL 87.998 525.1 82.998 525.1 DL +87.998 514.1 87.998 524.1 DL 77 514.1 72 514.1 DL 77.998 514.1 72.998 +514.1 DL 82.998 514.1 77.998 514.1 DL 87.998 514.1 82.998 514.1 DL +89.664 515.1 89.664 525.1 DL 89.664 514.1 89.664 524.1 DL F5(ESC)74.497 +521.6 Q 105.662 515.1 105.662 525.1 DL 94.664 525.1 89.664 525.1 DL +95.662 525.1 90.662 525.1 DL 100.662 525.1 95.662 525.1 DL 105.662 525.1 +100.662 525.1 DL 105.662 514.1 105.662 524.1 DL 94.664 514.1 89.664 +514.1 DL 95.662 514.1 90.662 514.1 DL 100.662 514.1 95.662 514.1 DL +105.662 514.1 100.662 514.1 DL F2(E)94.608 522.6 Q(Ne)97 538.6 Q +(xt Line \(NEL: 0x85\))-.15 E 72 547.1 72 557.1 DL 72 546.1 72 556.1 DL +87.998 547.1 87.998 557.1 DL 77 557.1 72 557.1 DL 77.998 557.1 72.998 +557.1 DL 82.998 557.1 77.998 557.1 DL 87.998 557.1 82.998 557.1 DL +87.998 546.1 87.998 556.1 DL 77 546.1 72 546.1 DL 77.998 546.1 72.998 +546.1 DL 82.998 546.1 77.998 546.1 DL 87.998 546.1 82.998 546.1 DL +89.664 547.1 89.664 557.1 DL 89.664 546.1 89.664 556.1 DL F5(ESC)74.497 +553.6 Q 105.662 547.1 105.662 557.1 DL 94.664 557.1 89.664 557.1 DL +95.662 557.1 90.662 557.1 DL 100.662 557.1 95.662 557.1 DL 105.662 557.1 +100.662 557.1 DL 105.662 546.1 105.662 556.1 DL 94.664 546.1 89.664 +546.1 DL 95.662 546.1 90.662 546.1 DL 100.662 546.1 95.662 546.1 DL +105.662 546.1 100.662 546.1 DL F2(H)94.053 554.6 Q -.8(Ta)97 570.6 S 2.5 +(bS).8 G(et \(HTS: 0x88\))-2.5 E 72 579.1 72 589.1 DL 72 578.1 72 588.1 +DL 87.998 579.1 87.998 589.1 DL 77 589.1 72 589.1 DL 77.998 589.1 72.998 +589.1 DL 82.998 589.1 77.998 589.1 DL 87.998 589.1 82.998 589.1 DL +87.998 578.1 87.998 588.1 DL 77 578.1 72 578.1 DL 77.998 578.1 72.998 +578.1 DL 82.998 578.1 77.998 578.1 DL 87.998 578.1 82.998 578.1 DL +89.664 579.1 89.664 589.1 DL 89.664 578.1 89.664 588.1 DL F5(ESC)74.497 +585.6 Q 105.662 579.1 105.662 589.1 DL 94.664 589.1 89.664 589.1 DL +95.662 589.1 90.662 589.1 DL 100.662 589.1 95.662 589.1 DL 105.662 589.1 +100.662 589.1 DL 105.662 578.1 105.662 588.1 DL 94.664 578.1 89.664 +578.1 DL 95.662 578.1 90.662 578.1 DL 100.662 578.1 95.662 578.1 DL +105.662 578.1 100.662 578.1 DL F2(M)93.218 586.6 Q(Re)97 602.6 Q -.15 +(ve)-.25 G(rse Inde).15 E 2.5(x\()-.15 G(RI: 0x8d\))-2.5 E 72 611.1 72 +621.1 DL 72 610.1 72 620.1 DL 87.998 611.1 87.998 621.1 DL 77 621.1 72 +621.1 DL 77.998 621.1 72.998 621.1 DL 82.998 621.1 77.998 621.1 DL +87.998 621.1 82.998 621.1 DL 87.998 610.1 87.998 620.1 DL 77 610.1 72 +610.1 DL 77.998 610.1 72.998 610.1 DL 82.998 610.1 77.998 610.1 DL +87.998 610.1 82.998 610.1 DL 89.664 611.1 89.664 621.1 DL 89.664 610.1 +89.664 620.1 DL F5(ESC)74.497 617.6 Q 105.662 611.1 105.662 621.1 DL +94.664 621.1 89.664 621.1 DL 95.662 621.1 90.662 621.1 DL 100.662 621.1 +95.662 621.1 DL 105.662 621.1 100.662 621.1 DL 105.662 610.1 105.662 +620.1 DL 94.664 610.1 89.664 610.1 DL 95.662 610.1 90.662 610.1 DL +100.662 610.1 95.662 610.1 DL 105.662 610.1 100.662 610.1 DL F2(N)94.053 +618.6 Q(Single Shift Select of G2 Character Set \(SS2: 0x8e\): af)97 +634.6 Q(fects ne)-.25 E(xt character only)-.15 E 72 643.1 72 653.1 DL 72 +642.1 72 652.1 DL 87.998 643.1 87.998 653.1 DL 77 653.1 72 653.1 DL +77.998 653.1 72.998 653.1 DL 82.998 653.1 77.998 653.1 DL 87.998 653.1 +82.998 653.1 DL 87.998 642.1 87.998 652.1 DL 77 642.1 72 642.1 DL 77.998 +642.1 72.998 642.1 DL 82.998 642.1 77.998 642.1 DL 87.998 642.1 82.998 +642.1 DL 89.664 643.1 89.664 653.1 DL 89.664 642.1 89.664 652.1 DL F5 +(ESC)74.497 649.6 Q 105.662 643.1 105.662 653.1 DL 94.664 653.1 89.664 +653.1 DL 95.662 653.1 90.662 653.1 DL 100.662 653.1 95.662 653.1 DL +105.662 653.1 100.662 653.1 DL 105.662 642.1 105.662 652.1 DL 94.664 +642.1 89.664 642.1 DL 95.662 642.1 90.662 642.1 DL 100.662 642.1 95.662 +642.1 DL 105.662 642.1 100.662 642.1 DL F2(O)94.053 650.6 Q +(Single Shift Select of G3 Character Set \(SS3: 0x8f\): af)97 666.6 Q +(fects ne)-.25 E(xt character only)-.15 E 72 675.1 72 685.1 DL 72 674.1 +72 684.1 DL 87.998 675.1 87.998 685.1 DL 77 685.1 72 685.1 DL 77.998 +685.1 72.998 685.1 DL 82.998 685.1 77.998 685.1 DL 87.998 685.1 82.998 +685.1 DL 87.998 674.1 87.998 684.1 DL 77 674.1 72 674.1 DL 77.998 674.1 +72.998 674.1 DL 82.998 674.1 77.998 674.1 DL 87.998 674.1 82.998 674.1 +DL 89.664 675.1 89.664 685.1 DL 89.664 674.1 89.664 684.1 DL F5(ESC) +74.497 681.6 Q 105.662 675.1 105.662 685.1 DL 94.664 685.1 89.664 685.1 +DL 95.662 685.1 90.662 685.1 DL 100.662 685.1 95.662 685.1 DL 105.662 +685.1 100.662 685.1 DL 105.662 674.1 105.662 684.1 DL 94.664 674.1 +89.664 674.1 DL 95.662 674.1 90.662 674.1 DL 100.662 674.1 95.662 674.1 +DL 105.662 674.1 100.662 674.1 DL F2(P)94.883 682.6 Q(De)97 698.6 Q +(vice Control String \(DCS: 0x90\))-.25 E 72 707.1 72 717.1 DL 72 706.1 +72 716.1 DL 87.998 707.1 87.998 717.1 DL 77 717.1 72 717.1 DL 77.998 +717.1 72.998 717.1 DL 82.998 717.1 77.998 717.1 DL 87.998 717.1 82.998 +717.1 DL 87.998 706.1 87.998 716.1 DL 77 706.1 72 706.1 DL 77.998 706.1 +72.998 706.1 DL 82.998 706.1 77.998 706.1 DL 87.998 706.1 82.998 706.1 +DL 89.664 707.1 89.664 717.1 DL 89.664 706.1 89.664 716.1 DL F5(ESC) +74.497 713.6 Q 105.662 707.1 105.662 717.1 DL 94.664 717.1 89.664 717.1 +DL 95.662 717.1 90.662 717.1 DL 100.662 717.1 95.662 717.1 DL 105.662 +717.1 100.662 717.1 DL 105.662 706.1 105.662 716.1 DL 94.664 706.1 +89.664 706.1 DL 95.662 706.1 90.662 706.1 DL 100.662 706.1 95.662 706.1 +DL 105.662 706.1 100.662 706.1 DL F2(V)94.053 714.6 Q +(Start of Guarded Area \(SP)97 730.6 Q(A: 0x96\))-.92 E EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q +(C1 \(8-Bit\) Control Characters)244.97 E .4 LW 72 80.5 72 90.5 DL 72 +79.5 72 89.5 DL 87.998 80.5 87.998 90.5 DL 77 90.5 72 90.5 DL 77.998 +90.5 72.998 90.5 DL 82.998 90.5 77.998 90.5 DL 87.998 90.5 82.998 90.5 +DL 87.998 79.5 87.998 89.5 DL 77 79.5 72 79.5 DL 77.998 79.5 72.998 79.5 +DL 82.998 79.5 77.998 79.5 DL 87.998 79.5 82.998 79.5 DL 89.664 80.5 +89.664 90.5 DL 89.664 79.5 89.664 89.5 DL/F1 6/Times-Roman@0 SF(ESC) +74.497 87 Q 105.662 80.5 105.662 90.5 DL 94.664 90.5 89.664 90.5 DL +95.662 90.5 90.662 90.5 DL 100.662 90.5 95.662 90.5 DL 105.662 90.5 +100.662 90.5 DL 105.662 79.5 105.662 89.5 DL 94.664 79.5 89.664 79.5 DL +95.662 79.5 90.662 79.5 DL 100.662 79.5 95.662 79.5 DL 105.662 79.5 +100.662 79.5 DL F0(W)92.943 88 Q(End of Guarded Area \(EP)97 104 Q +(A: 0x97\))-.92 E 72 112.5 72 122.5 DL 72 111.5 72 121.5 DL 87.998 112.5 +87.998 122.5 DL 77 122.5 72 122.5 DL 77.998 122.5 72.998 122.5 DL 82.998 +122.5 77.998 122.5 DL 87.998 122.5 82.998 122.5 DL 87.998 111.5 87.998 +121.5 DL 77 111.5 72 111.5 DL 77.998 111.5 72.998 111.5 DL 82.998 111.5 +77.998 111.5 DL 87.998 111.5 82.998 111.5 DL F1(ESC)74.497 119 Q/F2 10 +/Symbol SF(C)4.163 1 M F0(Start of String \(SOS: 0x98\))97 136 Q 72 +144.5 72 154.5 DL 72 143.5 72 153.5 DL 87.998 144.5 87.998 154.5 DL 77 +154.5 72 154.5 DL 77.998 154.5 72.998 154.5 DL 82.998 154.5 77.998 154.5 +DL 87.998 154.5 82.998 154.5 DL 87.998 143.5 87.998 153.5 DL 77 143.5 72 +143.5 DL 77.998 143.5 72.998 143.5 DL 82.998 143.5 77.998 143.5 DL +87.998 143.5 82.998 143.5 DL 89.664 144.5 89.664 154.5 DL 89.664 143.5 +89.664 153.5 DL F1(ESC)74.497 151 Q 105.662 144.5 105.662 154.5 DL +94.664 154.5 89.664 154.5 DL 95.662 154.5 90.662 154.5 DL 100.662 154.5 +95.662 154.5 DL 105.662 154.5 100.662 154.5 DL 105.662 143.5 105.662 +153.5 DL 94.664 143.5 89.664 143.5 DL 95.662 143.5 90.662 143.5 DL +100.662 143.5 95.662 143.5 DL 105.662 143.5 100.662 143.5 DL F0(Z)94.608 +152 Q(Return T)97 168 Q(erminal ID \(DECID: 0x9a\).)-.7 E 318.48 160.5 +318.48 170.5 DL 318.48 159.5 318.48 169.5 DL(Obsolete form of)247.66 168 +Q 334.478 160.5 334.478 170.5 DL 323.48 170.5 318.48 170.5 DL 324.478 +170.5 319.478 170.5 DL 329.478 170.5 324.478 170.5 DL 334.478 170.5 +329.478 170.5 DL 334.478 159.5 334.478 169.5 DL 323.48 159.5 318.48 +159.5 DL 324.478 159.5 319.478 159.5 DL 329.478 159.5 324.478 159.5 DL +334.478 159.5 329.478 159.5 DL 336.144 160.5 336.144 170.5 DL 336.144 +159.5 336.144 169.5 DL F1(CSI)321.811 167 Q 352.142 160.5 352.142 170.5 +DL 341.144 170.5 336.144 170.5 DL 342.142 170.5 337.142 170.5 DL 347.142 +170.5 342.142 170.5 DL 352.142 170.5 347.142 170.5 DL 352.142 159.5 +352.142 169.5 DL 341.144 159.5 336.144 159.5 DL 342.142 159.5 337.142 +159.5 DL 347.142 159.5 342.142 159.5 DL 352.142 159.5 347.142 159.5 DL +F0 9.945(c\()341.923 168 S -.4(DA)-9.945 G(\).).4 E 72 176.5 72 186.5 DL +72 175.5 72 185.5 DL 87.998 176.5 87.998 186.5 DL 77 186.5 72 186.5 DL +77.998 186.5 72.998 186.5 DL 82.998 186.5 77.998 186.5 DL 87.998 186.5 +82.998 186.5 DL 87.998 175.5 87.998 185.5 DL 77 175.5 72 175.5 DL 77.998 +175.5 72.998 175.5 DL 82.998 175.5 77.998 175.5 DL 87.998 175.5 82.998 +175.5 DL 89.664 176.5 89.664 186.5 DL 89.664 175.5 89.664 185.5 DL F1 +(ESC)74.497 183 Q 105.662 176.5 105.662 186.5 DL 94.664 186.5 89.664 +186.5 DL 95.662 186.5 90.662 186.5 DL 100.662 186.5 95.662 186.5 DL +105.662 186.5 100.662 186.5 DL 105.662 175.5 105.662 185.5 DL 94.664 +175.5 89.664 175.5 DL 95.662 175.5 90.662 175.5 DL 100.662 175.5 95.662 +175.5 DL 105.662 175.5 100.662 175.5 DL F0([)95.998 184 Q +(Control Sequence Introducer \(CSI: 0x9b\))97 200 Q 72 208.5 72 218.5 DL +72 207.5 72 217.5 DL 87.998 208.5 87.998 218.5 DL 77 218.5 72 218.5 DL +77.998 218.5 72.998 218.5 DL 82.998 218.5 77.998 218.5 DL 87.998 218.5 +82.998 218.5 DL 87.998 207.5 87.998 217.5 DL 77 207.5 72 207.5 DL 77.998 +207.5 72.998 207.5 DL 82.998 207.5 77.998 207.5 DL 87.998 207.5 82.998 +207.5 DL 89.664 208.5 89.664 218.5 DL 89.664 207.5 89.664 217.5 DL F1 +(ESC)74.497 215 Q 105.662 208.5 105.662 218.5 DL 94.664 218.5 89.664 +218.5 DL 95.662 218.5 90.662 218.5 DL 100.662 218.5 95.662 218.5 DL +105.662 218.5 100.662 218.5 DL 105.662 207.5 105.662 217.5 DL 94.664 +207.5 89.664 207.5 DL 95.662 207.5 90.662 207.5 DL 100.662 207.5 95.662 +207.5 DL 105.662 207.5 100.662 207.5 DL F0(\\)96.273 216 Q(String T)97 +232 Q(erminator \(ST)-.7 E 2.5(:0)-.5 G(x9c\))-2.5 E 72 240.5 72 250.5 +DL 72 239.5 72 249.5 DL 87.998 240.5 87.998 250.5 DL 77 250.5 72 250.5 +DL 77.998 250.5 72.998 250.5 DL 82.998 250.5 77.998 250.5 DL 87.998 +250.5 82.998 250.5 DL 87.998 239.5 87.998 249.5 DL 77 239.5 72 239.5 DL +77.998 239.5 72.998 239.5 DL 82.998 239.5 77.998 239.5 DL 87.998 239.5 +82.998 239.5 DL 89.664 240.5 89.664 250.5 DL 89.664 239.5 89.664 249.5 +DL F1(ESC)74.497 247 Q 105.662 240.5 105.662 250.5 DL 94.664 250.5 +89.664 250.5 DL 95.662 250.5 90.662 250.5 DL 100.662 250.5 95.662 250.5 +DL 105.662 250.5 100.662 250.5 DL 105.662 239.5 105.662 249.5 DL 94.664 +239.5 89.664 239.5 DL 95.662 239.5 90.662 239.5 DL 100.662 239.5 95.662 +239.5 DL 105.662 239.5 100.662 239.5 DL F0(])95.998 248 Q +(Operating System Command \(OSC: 0x9d\))97 264 Q 72 272.5 72 282.5 DL 72 +271.5 72 281.5 DL 87.998 272.5 87.998 282.5 DL 77 282.5 72 282.5 DL +77.998 282.5 72.998 282.5 DL 82.998 282.5 77.998 282.5 DL 87.998 282.5 +82.998 282.5 DL 87.998 271.5 87.998 281.5 DL 77 271.5 72 271.5 DL 77.998 +271.5 72.998 271.5 DL 82.998 271.5 77.998 271.5 DL 87.998 271.5 82.998 +271.5 DL 89.664 272.5 89.664 282.5 DL 89.664 271.5 89.664 281.5 DL F1 +(ESC)74.497 279 Q 105.662 272.5 105.662 282.5 DL 94.664 282.5 89.664 +282.5 DL 95.662 282.5 90.662 282.5 DL 100.662 282.5 95.662 282.5 DL +105.662 282.5 100.662 282.5 DL 105.662 271.5 105.662 281.5 DL 94.664 +271.5 89.664 271.5 DL 95.662 271.5 90.662 271.5 DL 100.662 271.5 95.662 +271.5 DL 105.662 271.5 100.662 271.5 DL F0(^)95.998 280 Q(Pri)97 296 Q +-.25(va)-.25 G .3 -.15(cy M).25 H(essage \(PM: 0x9e\)).15 E 72 304.5 72 +314.5 DL 72 303.5 72 313.5 DL 87.998 304.5 87.998 314.5 DL 77 314.5 72 +314.5 DL 77.998 314.5 72.998 314.5 DL 82.998 314.5 77.998 314.5 DL +87.998 314.5 82.998 314.5 DL 87.998 303.5 87.998 313.5 DL 77 303.5 72 +303.5 DL 77.998 303.5 72.998 303.5 DL 82.998 303.5 77.998 303.5 DL +87.998 303.5 82.998 303.5 DL 89.664 304.5 89.664 314.5 DL 89.664 303.5 +89.664 313.5 DL F1(ESC)74.497 311 Q 105.662 304.5 105.662 314.5 DL +94.664 314.5 89.664 314.5 DL 95.662 314.5 90.662 314.5 DL 100.662 314.5 +95.662 314.5 DL 105.662 314.5 100.662 314.5 DL 105.662 303.5 105.662 +313.5 DL 94.664 303.5 89.664 303.5 DL 95.662 303.5 90.662 303.5 DL +100.662 303.5 95.662 303.5 DL 105.662 303.5 100.662 303.5 DL F0(_)95.163 +312 Q(Application Program Command \(APC: 0x9f\))97 328 Q +(These control characters are used in the vtXXX emulation.)72 360.8 Q/F3 +10/Times-Bold@0 SF(VT100 Mode)72 384.8 Q F0 .137(Most of these control \ +sequences are standard VT102 control sequences, b)72 401.6 R .136 +(ut there is support for later DEC VT termi-)-.2 F .819 +(nals \(i.e., VT220 and VT320\), as well as ISO 6429 and)72 413.6 R/F4 +10/Times-Italic@0 SF(aixterm)3.32 E F0 .82(color controls.)3.32 F .82 +(VT102 features not supported are)5.82 F .851 +(auto-repeat and blinking characters.)72 425.6 R .851 +(There are additional control sequences to pro)5.851 F(vide)-.15 E F4 +(xterm-)3.35 E F0 .85(dependent functions,)B .062 +(such as the scrollbar or windo)72 437.6 R 2.562(ws)-.25 G 2.562 +(ize. Where)-2.562 F .062(the function is speci\214ed by DEC or ISO 642\ +9, the code assigned to it is)2.562 F(gi)72 449.6 Q -.15(ve)-.25 G 3.29 +(ni).15 G 3.29(np)-3.29 G 3.29(arentheses. The)-3.29 F .79 +(escape codes to designate and in)3.29 F -.2(vo)-.4 G .989 -.1(ke c).2 H +.789(haracter sets are speci\214ed by ISO 2022; see that).1 F +(document for a discussion of character sets.)72 461.6 Q F3 +(Single-character functions)72 489.6 Q 72 498.1 72 508.1 DL 72 497.1 72 +507.1 DL 87.998 498.1 87.998 508.1 DL 77 508.1 72 508.1 DL 77.998 508.1 +72.998 508.1 DL 82.998 508.1 77.998 508.1 DL 87.998 508.1 82.998 508.1 +DL 87.998 497.1 87.998 507.1 DL 77 497.1 72 497.1 DL 77.998 497.1 72.998 +497.1 DL 82.998 497.1 77.998 497.1 DL 87.998 497.1 82.998 497.1 DL F1 +(BEL)74.332 504.6 Q F0(Bell \(Ctrl-G\))94.334 1 M 72 514.1 72 524.1 DL +72 513.1 72 523.1 DL 87.998 514.1 87.998 524.1 DL 77 524.1 72 524.1 DL +77.998 524.1 72.998 524.1 DL 82.998 524.1 77.998 524.1 DL 87.998 524.1 +82.998 524.1 DL 87.998 513.1 87.998 523.1 DL 77 513.1 72 513.1 DL 77.998 +513.1 72.998 513.1 DL 82.998 513.1 77.998 513.1 DL 87.998 513.1 82.998 +513.1 DL F1(BS)76.33 520.6 Q F0(Backspace \(Ctrl-H\))96.332 1 M 72 530.1 +72 540.1 DL 72 529.1 72 539.1 DL 87.998 530.1 87.998 540.1 DL 77 540.1 +72 540.1 DL 77.998 540.1 72.998 540.1 DL 82.998 540.1 77.998 540.1 DL +87.998 540.1 82.998 540.1 DL 87.998 529.1 87.998 539.1 DL 77 529.1 72 +529.1 DL 77.998 529.1 72.998 529.1 DL 82.998 529.1 77.998 529.1 DL +87.998 529.1 82.998 529.1 DL F1(CR)75.997 536.6 Q F0 +(Carriage Return \(Ctrl-M\))95.999 1 M 72 546.1 72 556.1 DL 72 545.1 72 +555.1 DL 87.998 546.1 87.998 556.1 DL 77 556.1 72 556.1 DL 77.998 556.1 +72.998 556.1 DL 82.998 556.1 77.998 556.1 DL 87.998 556.1 82.998 556.1 +DL 87.998 545.1 87.998 555.1 DL 77 545.1 72 545.1 DL 77.998 545.1 72.998 +545.1 DL 82.998 545.1 77.998 545.1 DL 87.998 545.1 82.998 545.1 DL F1 +(ENQ)73.834 552.6 Q F0 .078(Return T)93.836 1 N .078 +(erminal Status \(Ctrl-E\).)-.7 F(Def)5.078 E .078 +(ault response is the terminal name, e.g., "xterm", b)-.1 F(ut)-.2 E +(may be o)180 569.6 Q -.15(ve)-.15 G(rridden by a resource).15 E F4 +(answerbac)2.5 E(kString)-.2 E F0(.)A 72 578.1 72 588.1 DL 72 577.1 72 +587.1 DL 87.998 578.1 87.998 588.1 DL 77 588.1 72 588.1 DL 77.998 588.1 +72.998 588.1 DL 82.998 588.1 77.998 588.1 DL 87.998 588.1 82.998 588.1 +DL 87.998 577.1 87.998 587.1 DL 77 577.1 72 577.1 DL 77.998 577.1 72.998 +577.1 DL 82.998 577.1 77.998 577.1 DL 87.998 577.1 82.998 577.1 DL F1 +(FF)76.663 584.6 Q F0 -.15(Fo)96.665 1 O(rm Feed or Ne).15 E 2.5(wP)-.25 +G(age \(NP\) \(Ctrl-L\) same as LF)-2.65 E 72 594.1 72 604.1 DL 72 593.1 +72 603.1 DL 87.998 594.1 87.998 604.1 DL 77 604.1 72 604.1 DL 77.998 +604.1 72.998 604.1 DL 82.998 604.1 77.998 604.1 DL 87.998 604.1 82.998 +604.1 DL 87.998 593.1 87.998 603.1 DL 77 593.1 72 593.1 DL 77.998 593.1 +72.998 593.1 DL 82.998 593.1 77.998 593.1 DL 87.998 593.1 82.998 593.1 +DL F1(LF)76.498 600.6 Q F0(Line Feed or Ne)96.5 1 M 2.5(wL)-.25 G +(ine \(NL\) \(Ctrl-J\))-2.5 E 72 610.1 72 620.1 DL 72 609.1 72 619.1 DL +87.998 610.1 87.998 620.1 DL 77 620.1 72 620.1 DL 77.998 620.1 72.998 +620.1 DL 82.998 620.1 77.998 620.1 DL 87.998 620.1 82.998 620.1 DL +87.998 609.1 87.998 619.1 DL 77 609.1 72 609.1 DL 77.998 609.1 72.998 +609.1 DL 82.998 609.1 77.998 609.1 DL 87.998 609.1 82.998 609.1 DL F1 +(SO)76.165 616.6 Q F0(Shift Out \(Ctrl-N\))96.167 1 M F2<ae>2.5 E F0 +(Switch to Alternate Character Set: in)2.5 E -.2(vo)-.4 G -.1(ke).2 G +2.5(st).1 G(he G1 character set.)-2.5 E 72 626.1 72 636.1 DL 72 625.1 72 +635.1 DL 87.998 626.1 87.998 636.1 DL 77 636.1 72 636.1 DL 77.998 636.1 +72.998 636.1 DL 82.998 636.1 77.998 636.1 DL 87.998 636.1 82.998 636.1 +DL 87.998 625.1 87.998 635.1 DL 77 625.1 72 625.1 DL 77.998 625.1 72.998 +625.1 DL 82.998 625.1 77.998 625.1 DL 87.998 625.1 82.998 625.1 DL F1 +(SP)76.663 632.6 Q F0(Space.)96.665 1 M 72 642.1 72 652.1 DL 72 641.1 72 +651.1 DL F1 -.558(TA)74.278 648.6 S 87.998 642.1 87.998 652.1 DL 77 +652.1 72 652.1 DL 77.998 652.1 72.998 652.1 DL 82.998 652.1 77.998 652.1 +DL 87.998 652.1 82.998 652.1 DL 87.998 641.1 87.998 651.1 DL 77 641.1 72 +641.1 DL 77.998 641.1 72.998 641.1 DL 82.998 641.1 77.998 641.1 DL +87.998 641.1 82.998 641.1 DL(B)81.718 648.6 Q F0(Horizontal T)94.28 1 M +(ab \(HT\) \(Ctrl-I\))-.8 E 72 658.1 72 668.1 DL 72 657.1 72 667.1 DL +87.998 658.1 87.998 668.1 DL 77 668.1 72 668.1 DL 77.998 668.1 72.998 +668.1 DL 82.998 668.1 77.998 668.1 DL 87.998 668.1 82.998 668.1 DL +87.998 657.1 87.998 667.1 DL 77 657.1 72 657.1 DL 77.998 657.1 72.998 +657.1 DL 82.998 657.1 77.998 657.1 DL 87.998 657.1 82.998 657.1 DL F1 +(VT)76 664.6 Q F0 -1.11(Ve)96.002 1 O(rtical T)1.11 E +(ab \(Ctrl-K\) same as LF)-.8 E 72 674.1 72 684.1 DL 72 673.1 72 683.1 +DL 87.998 674.1 87.998 684.1 DL 77 684.1 72 684.1 DL 77.998 684.1 72.998 +684.1 DL 82.998 684.1 77.998 684.1 DL 87.998 684.1 82.998 684.1 DL +87.998 673.1 87.998 683.1 DL 77 673.1 72 673.1 DL 77.998 673.1 72.998 +673.1 DL 82.998 673.1 77.998 673.1 DL 87.998 673.1 82.998 673.1 DL F1 +(SI)77.332 680.6 Q F0 .778(Shift In \(Ctrl-O\))97.334 1 N F2<ae>3.278 E +F0 .778(Switch to Standard Character Set: in)3.278 F -.2(vo)-.4 G -.1 +(ke).2 G 3.278(st).1 G .778(he G0 character set \(the)-3.278 F(def)180 +697.6 Q(ault\).)-.1 E(2)303.5 772 Q EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E/F1 10/Times-Bold@0 SF(Contr)72 88 Q .501 +(ols beginning with ESC \(other than those wher)-.18 F 3.001(eE)-.18 G +.501(SC is part of a 7-bit equi)-3.001 F -.1(va)-.1 G .501 +(lent to 8-bit C1 contr).1 F(ols\),)-.18 E(order)72 104 Q +(ed by the \214nal character\(s\).)-.18 E .4 LW 72 112.5 72 122.5 DL 72 +111.5 72 121.5 DL 87.998 112.5 87.998 122.5 DL 77 122.5 72 122.5 DL +77.998 122.5 72.998 122.5 DL 82.998 122.5 77.998 122.5 DL 87.998 122.5 +82.998 122.5 DL 87.998 111.5 87.998 121.5 DL 77 111.5 72 111.5 DL 77.998 +111.5 72.998 111.5 DL 82.998 111.5 77.998 111.5 DL 87.998 111.5 82.998 +111.5 DL 89.664 112.5 89.664 122.5 DL 89.664 111.5 89.664 121.5 DL +105.662 112.5 105.662 122.5 DL 94.664 122.5 89.664 122.5 DL 95.662 122.5 +90.662 122.5 DL 100.662 122.5 95.662 122.5 DL 105.662 122.5 100.662 +122.5 DL 105.662 111.5 105.662 121.5 DL 94.664 111.5 89.664 111.5 DL +95.662 111.5 90.662 111.5 DL 100.662 111.5 95.662 111.5 DL 105.662 111.5 +100.662 111.5 DL 107.328 112.5 107.328 122.5 DL 107.328 111.5 107.328 +121.5 DL/F2 6/Times-Roman@0 SF 7.326(ESC SP)74.497 119 R 123.326 112.5 +123.326 122.5 DL 112.328 122.5 107.328 122.5 DL 113.326 122.5 108.326 +122.5 DL 118.326 122.5 113.326 122.5 DL 123.326 122.5 118.326 122.5 DL +123.326 111.5 123.326 121.5 DL 112.328 111.5 107.328 111.5 DL 113.326 +111.5 108.326 111.5 DL 118.326 111.5 113.326 111.5 DL 123.326 111.5 +118.326 111.5 DL F0 61.893(F7)112.547 120 S(-bit controls \(S7C1T\).) +-61.893 E 72 128.5 72 138.5 DL 72 127.5 72 137.5 DL 87.998 128.5 87.998 +138.5 DL 77 138.5 72 138.5 DL 77.998 138.5 72.998 138.5 DL 82.998 138.5 +77.998 138.5 DL 87.998 138.5 82.998 138.5 DL 87.998 127.5 87.998 137.5 +DL 77 127.5 72 127.5 DL 77.998 127.5 72.998 127.5 DL 82.998 127.5 77.998 +127.5 DL 87.998 127.5 82.998 127.5 DL 89.664 128.5 89.664 138.5 DL +89.664 127.5 89.664 137.5 DL 105.662 128.5 105.662 138.5 DL 94.664 138.5 +89.664 138.5 DL 95.662 138.5 90.662 138.5 DL 100.662 138.5 95.662 138.5 +DL 105.662 138.5 100.662 138.5 DL 105.662 127.5 105.662 137.5 DL 94.664 +127.5 89.664 127.5 DL 95.662 127.5 90.662 127.5 DL 100.662 127.5 95.662 +127.5 DL 105.662 127.5 100.662 127.5 DL 107.328 128.5 107.328 138.5 DL +107.328 127.5 107.328 137.5 DL F2 7.326(ESC SP)74.497 135 R 123.326 +128.5 123.326 138.5 DL 112.328 138.5 107.328 138.5 DL 113.326 138.5 +108.326 138.5 DL 118.326 138.5 113.326 138.5 DL 123.326 138.5 118.326 +138.5 DL 123.326 127.5 123.326 137.5 DL 112.328 127.5 107.328 127.5 DL +113.326 127.5 108.326 127.5 DL 118.326 127.5 113.326 127.5 DL 123.326 +127.5 118.326 127.5 DL F0 61.063(G8)111.717 136 S +(-bit controls \(S8C1T\).)-61.063 E 72 144.5 72 154.5 DL 72 143.5 72 +153.5 DL 87.998 144.5 87.998 154.5 DL 77 154.5 72 154.5 DL 77.998 154.5 +72.998 154.5 DL 82.998 154.5 77.998 154.5 DL 87.998 154.5 82.998 154.5 +DL 87.998 143.5 87.998 153.5 DL 77 143.5 72 143.5 DL 77.998 143.5 72.998 +143.5 DL 82.998 143.5 77.998 143.5 DL 87.998 143.5 82.998 143.5 DL +89.664 144.5 89.664 154.5 DL 89.664 143.5 89.664 153.5 DL 105.662 144.5 +105.662 154.5 DL 94.664 154.5 89.664 154.5 DL 95.662 154.5 90.662 154.5 +DL 100.662 154.5 95.662 154.5 DL 105.662 154.5 100.662 154.5 DL 105.662 +143.5 105.662 153.5 DL 94.664 143.5 89.664 143.5 DL 95.662 143.5 90.662 +143.5 DL 100.662 143.5 95.662 143.5 DL 105.662 143.5 100.662 143.5 DL +107.328 144.5 107.328 154.5 DL 107.328 143.5 107.328 153.5 DL F2 7.326 +(ESC SP)74.497 151 R 123.326 144.5 123.326 154.5 DL 112.328 154.5 +107.328 154.5 DL 113.326 154.5 108.326 154.5 DL 118.326 154.5 113.326 +154.5 DL 123.326 154.5 118.326 154.5 DL 123.326 143.5 123.326 153.5 DL +112.328 143.5 107.328 143.5 DL 113.326 143.5 108.326 143.5 DL 118.326 +143.5 113.326 143.5 DL 123.326 143.5 118.326 143.5 DL F0 61.618(LS) +112.272 152 S(et ANSI conformance le)-61.618 E -.15(ve)-.25 G 2.5(l1\() +.15 G(vt100, 7-bit controls\).)-2.5 E 72 160.5 72 170.5 DL 72 159.5 72 +169.5 DL 87.998 160.5 87.998 170.5 DL 77 170.5 72 170.5 DL 77.998 170.5 +72.998 170.5 DL 82.998 170.5 77.998 170.5 DL 87.998 170.5 82.998 170.5 +DL 87.998 159.5 87.998 169.5 DL 77 159.5 72 159.5 DL 77.998 159.5 72.998 +159.5 DL 82.998 159.5 77.998 159.5 DL 87.998 159.5 82.998 159.5 DL +89.664 160.5 89.664 170.5 DL 89.664 159.5 89.664 169.5 DL 105.662 160.5 +105.662 170.5 DL 94.664 170.5 89.664 170.5 DL 95.662 170.5 90.662 170.5 +DL 100.662 170.5 95.662 170.5 DL 105.662 170.5 100.662 170.5 DL 105.662 +159.5 105.662 169.5 DL 94.664 159.5 89.664 159.5 DL 95.662 159.5 90.662 +159.5 DL 100.662 159.5 95.662 159.5 DL 105.662 159.5 100.662 159.5 DL +107.328 160.5 107.328 170.5 DL 107.328 159.5 107.328 169.5 DL F2 7.326 +(ESC SP)74.497 167 R 123.326 160.5 123.326 170.5 DL 112.328 170.5 +107.328 170.5 DL 113.326 170.5 108.326 170.5 DL 118.326 170.5 113.326 +170.5 DL 123.326 170.5 118.326 170.5 DL 123.326 159.5 123.326 169.5 DL +112.328 159.5 107.328 159.5 DL 113.326 159.5 108.326 159.5 DL 118.326 +159.5 113.326 159.5 DL 123.326 159.5 118.326 159.5 DL F0 60.228(MS) +110.882 168 S(et ANSI conformance le)-60.228 E -.15(ve)-.25 G 2.5(l2\() +.15 G(vt200\).)-2.5 E 72 176.5 72 186.5 DL 72 175.5 72 185.5 DL 87.998 +176.5 87.998 186.5 DL 77 186.5 72 186.5 DL 77.998 186.5 72.998 186.5 DL +82.998 186.5 77.998 186.5 DL 87.998 186.5 82.998 186.5 DL 87.998 175.5 +87.998 185.5 DL 77 175.5 72 175.5 DL 77.998 175.5 72.998 175.5 DL 82.998 +175.5 77.998 175.5 DL 87.998 175.5 82.998 175.5 DL 89.664 176.5 89.664 +186.5 DL 89.664 175.5 89.664 185.5 DL 105.662 176.5 105.662 186.5 DL +94.664 186.5 89.664 186.5 DL 95.662 186.5 90.662 186.5 DL 100.662 186.5 +95.662 186.5 DL 105.662 186.5 100.662 186.5 DL 105.662 175.5 105.662 +185.5 DL 94.664 175.5 89.664 175.5 DL 95.662 175.5 90.662 175.5 DL +100.662 175.5 95.662 175.5 DL 105.662 175.5 100.662 175.5 DL 107.328 +176.5 107.328 186.5 DL 107.328 175.5 107.328 185.5 DL F2 7.326(ESC SP) +74.497 183 R 123.326 176.5 123.326 186.5 DL 112.328 186.5 107.328 186.5 +DL 113.326 186.5 108.326 186.5 DL 118.326 186.5 113.326 186.5 DL 123.326 +186.5 118.326 186.5 DL 123.326 175.5 123.326 185.5 DL 112.328 175.5 +107.328 175.5 DL 113.326 175.5 108.326 175.5 DL 118.326 175.5 113.326 +175.5 DL 123.326 175.5 118.326 175.5 DL F0 61.063(NS)111.717 184 S +(et ANSI conformance le)-61.063 E -.15(ve)-.25 G 2.5(l3\().15 G +(vt300\).)-2.5 E 72 192.5 72 202.5 DL 72 191.5 72 201.5 DL 87.998 192.5 +87.998 202.5 DL 77 202.5 72 202.5 DL 77.998 202.5 72.998 202.5 DL 82.998 +202.5 77.998 202.5 DL 87.998 202.5 82.998 202.5 DL 87.998 191.5 87.998 +201.5 DL 77 191.5 72 191.5 DL 77.998 191.5 72.998 191.5 DL 82.998 191.5 +77.998 191.5 DL 87.998 191.5 82.998 191.5 DL 89.664 192.5 89.664 202.5 +DL 89.664 191.5 89.664 201.5 DL F2(ESC)74.497 199 Q 105.662 192.5 +105.662 202.5 DL 94.664 202.5 89.664 202.5 DL 95.662 202.5 90.662 202.5 +DL 100.662 202.5 95.662 202.5 DL 105.662 202.5 100.662 202.5 DL 105.662 +191.5 105.662 201.5 DL 94.664 191.5 89.664 191.5 DL 95.662 191.5 90.662 +191.5 DL 100.662 191.5 95.662 191.5 DL 105.662 191.5 100.662 191.5 DL +107.328 192.5 107.328 202.5 DL 107.328 191.5 107.328 201.5 DL 123.326 +192.5 123.326 202.5 DL 112.328 202.5 107.328 202.5 DL 113.326 202.5 +108.326 202.5 DL 118.326 202.5 113.326 202.5 DL 123.326 202.5 118.326 +202.5 DL 123.326 191.5 123.326 201.5 DL 112.328 191.5 107.328 191.5 DL +113.326 191.5 108.326 191.5 DL 118.326 191.5 113.326 191.5 DL 123.326 +191.5 118.326 191.5 DL F0 34.345 12.664(#3 D)95.163 200 T +(EC double-height line, top half \(DECDHL\))-12.664 E 72 208.5 72 218.5 +DL 72 207.5 72 217.5 DL 87.998 208.5 87.998 218.5 DL 77 218.5 72 218.5 +DL 77.998 218.5 72.998 218.5 DL 82.998 218.5 77.998 218.5 DL 87.998 +218.5 82.998 218.5 DL 87.998 207.5 87.998 217.5 DL 77 207.5 72 207.5 DL +77.998 207.5 72.998 207.5 DL 82.998 207.5 77.998 207.5 DL 87.998 207.5 +82.998 207.5 DL 89.664 208.5 89.664 218.5 DL 89.664 207.5 89.664 217.5 +DL F2(ESC)74.497 215 Q 105.662 208.5 105.662 218.5 DL 94.664 218.5 +89.664 218.5 DL 95.662 218.5 90.662 218.5 DL 100.662 218.5 95.662 218.5 +DL 105.662 218.5 100.662 218.5 DL 105.662 207.5 105.662 217.5 DL 94.664 +207.5 89.664 207.5 DL 95.662 207.5 90.662 207.5 DL 100.662 207.5 95.662 +207.5 DL 105.662 207.5 100.662 207.5 DL 107.328 208.5 107.328 218.5 DL +107.328 207.5 107.328 217.5 DL 123.326 208.5 123.326 218.5 DL 112.328 +218.5 107.328 218.5 DL 113.326 218.5 108.326 218.5 DL 118.326 218.5 +113.326 218.5 DL 123.326 218.5 118.326 218.5 DL 123.326 207.5 123.326 +217.5 DL 112.328 207.5 107.328 207.5 DL 113.326 207.5 108.326 207.5 DL +118.326 207.5 113.326 207.5 DL 123.326 207.5 118.326 207.5 DL F0 34.345 +12.664(#4 D)95.163 216 T(EC double-height line, bottom half \(DECDHL\)) +-12.664 E 72 224.5 72 234.5 DL 72 223.5 72 233.5 DL 87.998 224.5 87.998 +234.5 DL 77 234.5 72 234.5 DL 77.998 234.5 72.998 234.5 DL 82.998 234.5 +77.998 234.5 DL 87.998 234.5 82.998 234.5 DL 87.998 223.5 87.998 233.5 +DL 77 223.5 72 223.5 DL 77.998 223.5 72.998 223.5 DL 82.998 223.5 77.998 +223.5 DL 87.998 223.5 82.998 223.5 DL 89.664 224.5 89.664 234.5 DL +89.664 223.5 89.664 233.5 DL F2(ESC)74.497 231 Q 105.662 224.5 105.662 +234.5 DL 94.664 234.5 89.664 234.5 DL 95.662 234.5 90.662 234.5 DL +100.662 234.5 95.662 234.5 DL 105.662 234.5 100.662 234.5 DL 105.662 +223.5 105.662 233.5 DL 94.664 223.5 89.664 223.5 DL 95.662 223.5 90.662 +223.5 DL 100.662 223.5 95.662 223.5 DL 105.662 223.5 100.662 223.5 DL +107.328 224.5 107.328 234.5 DL 107.328 223.5 107.328 233.5 DL 123.326 +224.5 123.326 234.5 DL 112.328 234.5 107.328 234.5 DL 113.326 234.5 +108.326 234.5 DL 118.326 234.5 113.326 234.5 DL 123.326 234.5 118.326 +234.5 DL 123.326 223.5 123.326 233.5 DL 112.328 223.5 107.328 223.5 DL +113.326 223.5 108.326 223.5 DL 118.326 223.5 113.326 223.5 DL 123.326 +223.5 118.326 223.5 DL F0 34.345 12.664(#5 D)95.163 232 T +(EC single-width line \(DECSWL\))-12.664 E 72 240.5 72 250.5 DL 72 239.5 +72 249.5 DL 87.998 240.5 87.998 250.5 DL 77 250.5 72 250.5 DL 77.998 +250.5 72.998 250.5 DL 82.998 250.5 77.998 250.5 DL 87.998 250.5 82.998 +250.5 DL 87.998 239.5 87.998 249.5 DL 77 239.5 72 239.5 DL 77.998 239.5 +72.998 239.5 DL 82.998 239.5 77.998 239.5 DL 87.998 239.5 82.998 239.5 +DL 89.664 240.5 89.664 250.5 DL 89.664 239.5 89.664 249.5 DL F2(ESC) +74.497 247 Q 105.662 240.5 105.662 250.5 DL 94.664 250.5 89.664 250.5 DL +95.662 250.5 90.662 250.5 DL 100.662 250.5 95.662 250.5 DL 105.662 250.5 +100.662 250.5 DL 105.662 239.5 105.662 249.5 DL 94.664 239.5 89.664 +239.5 DL 95.662 239.5 90.662 239.5 DL 100.662 239.5 95.662 239.5 DL +105.662 239.5 100.662 239.5 DL 107.328 240.5 107.328 250.5 DL 107.328 +239.5 107.328 249.5 DL 123.326 240.5 123.326 250.5 DL 112.328 250.5 +107.328 250.5 DL 113.326 250.5 108.326 250.5 DL 118.326 250.5 113.326 +250.5 DL 123.326 250.5 118.326 250.5 DL 123.326 239.5 123.326 249.5 DL +112.328 239.5 107.328 239.5 DL 113.326 239.5 108.326 239.5 DL 118.326 +239.5 113.326 239.5 DL 123.326 239.5 118.326 239.5 DL F0 34.345 12.664 +(#6 D)95.163 248 T(EC double-width line \(DECD)-12.664 E(WL\))-.3 E 72 +256.5 72 266.5 DL 72 255.5 72 265.5 DL 87.998 256.5 87.998 266.5 DL 77 +266.5 72 266.5 DL 77.998 266.5 72.998 266.5 DL 82.998 266.5 77.998 266.5 +DL 87.998 266.5 82.998 266.5 DL 87.998 255.5 87.998 265.5 DL 77 255.5 72 +255.5 DL 77.998 255.5 72.998 255.5 DL 82.998 255.5 77.998 255.5 DL +87.998 255.5 82.998 255.5 DL 89.664 256.5 89.664 266.5 DL 89.664 255.5 +89.664 265.5 DL F2(ESC)74.497 263 Q 105.662 256.5 105.662 266.5 DL +94.664 266.5 89.664 266.5 DL 95.662 266.5 90.662 266.5 DL 100.662 266.5 +95.662 266.5 DL 105.662 266.5 100.662 266.5 DL 105.662 255.5 105.662 +265.5 DL 94.664 255.5 89.664 255.5 DL 95.662 255.5 90.662 255.5 DL +100.662 255.5 95.662 255.5 DL 105.662 255.5 100.662 255.5 DL 107.328 +256.5 107.328 266.5 DL 107.328 255.5 107.328 265.5 DL 123.326 256.5 +123.326 266.5 DL 112.328 266.5 107.328 266.5 DL 113.326 266.5 108.326 +266.5 DL 118.326 266.5 113.326 266.5 DL 123.326 266.5 118.326 266.5 DL +123.326 255.5 123.326 265.5 DL 112.328 255.5 107.328 255.5 DL 113.326 +255.5 108.326 255.5 DL 118.326 255.5 113.326 255.5 DL 123.326 255.5 +118.326 255.5 DL F0 34.345 12.664(#8 D)95.163 264 T +(EC Screen Alignment T)-12.664 E(est \(DECALN\))-.7 E 72 272.5 72 282.5 +DL 72 271.5 72 281.5 DL 87.998 272.5 87.998 282.5 DL 77 282.5 72 282.5 +DL 77.998 282.5 72.998 282.5 DL 82.998 282.5 77.998 282.5 DL 87.998 +282.5 82.998 282.5 DL 87.998 271.5 87.998 281.5 DL 77 271.5 72 271.5 DL +77.998 271.5 72.998 271.5 DL 82.998 271.5 77.998 271.5 DL 87.998 271.5 +82.998 271.5 DL 89.664 272.5 89.664 282.5 DL 89.664 271.5 89.664 281.5 +DL F2(ESC)74.497 279 Q 105.662 272.5 105.662 282.5 DL 94.664 282.5 +89.664 282.5 DL 95.662 282.5 90.662 282.5 DL 100.662 282.5 95.662 282.5 +DL 105.662 282.5 100.662 282.5 DL 105.662 271.5 105.662 281.5 DL 94.664 +271.5 89.664 271.5 DL 95.662 271.5 90.662 271.5 DL 100.662 271.5 95.662 +271.5 DL 105.662 271.5 100.662 271.5 DL 107.328 272.5 107.328 282.5 DL +107.328 271.5 107.328 281.5 DL 123.326 272.5 123.326 282.5 DL 112.328 +282.5 107.328 282.5 DL 113.326 282.5 108.326 282.5 DL 118.326 282.5 +113.326 282.5 DL 123.326 282.5 118.326 282.5 DL 123.326 271.5 123.326 +281.5 DL 112.328 271.5 107.328 271.5 DL 113.326 271.5 108.326 271.5 DL +118.326 271.5 113.326 271.5 DL 123.326 271.5 118.326 271.5 DL F0 39.78 +8.894(%@ S)93.498 280 T(elect def)-8.894 E +(ault character set, ISO 8859-1 \(ISO 2022\))-.1 E 72 288.5 72 298.5 DL +72 287.5 72 297.5 DL 87.998 288.5 87.998 298.5 DL 77 298.5 72 298.5 DL +77.998 298.5 72.998 298.5 DL 82.998 298.5 77.998 298.5 DL 87.998 298.5 +82.998 298.5 DL 87.998 287.5 87.998 297.5 DL 77 287.5 72 287.5 DL 77.998 +287.5 72.998 287.5 DL 82.998 287.5 77.998 287.5 DL 87.998 287.5 82.998 +287.5 DL 89.664 288.5 89.664 298.5 DL 89.664 287.5 89.664 297.5 DL F2 +(ESC)74.497 295 Q 105.662 288.5 105.662 298.5 DL 94.664 298.5 89.664 +298.5 DL 95.662 298.5 90.662 298.5 DL 100.662 298.5 95.662 298.5 DL +105.662 298.5 100.662 298.5 DL 105.662 287.5 105.662 297.5 DL 94.664 +287.5 89.664 287.5 DL 95.662 287.5 90.662 287.5 DL 100.662 287.5 95.662 +287.5 DL 105.662 287.5 100.662 287.5 DL 107.328 288.5 107.328 298.5 DL +107.328 287.5 107.328 297.5 DL 123.326 288.5 123.326 298.5 DL 112.328 +298.5 107.328 298.5 DL 113.326 298.5 108.326 298.5 DL 118.326 298.5 +113.326 298.5 DL 123.326 298.5 118.326 298.5 DL 123.326 287.5 123.326 +297.5 DL 112.328 287.5 107.328 287.5 DL 113.326 287.5 108.326 287.5 DL +118.326 287.5 113.326 287.5 DL 123.326 287.5 118.326 287.5 DL F0 38.785 +9.889(%G S)93.498 296 T(elect UTF-8 character set \(ISO 2022\))-9.889 E +72 304.5 72 314.5 DL 72 303.5 72 313.5 DL 87.998 304.5 87.998 314.5 DL +77 314.5 72 314.5 DL 77.998 314.5 72.998 314.5 DL 82.998 314.5 77.998 +314.5 DL 87.998 314.5 82.998 314.5 DL 87.998 303.5 87.998 313.5 DL 77 +303.5 72 303.5 DL 77.998 303.5 72.998 303.5 DL 82.998 303.5 77.998 303.5 +DL 87.998 303.5 82.998 303.5 DL 89.664 304.5 89.664 314.5 DL 89.664 +303.5 89.664 313.5 DL F2(ESC)74.497 311 Q 105.662 304.5 105.662 314.5 DL +94.664 314.5 89.664 314.5 DL 95.662 314.5 90.662 314.5 DL 100.662 314.5 +95.662 314.5 DL 105.662 314.5 100.662 314.5 DL 105.662 303.5 105.662 +313.5 DL 94.664 303.5 89.664 303.5 DL 95.662 303.5 90.662 303.5 DL +100.662 303.5 95.662 303.5 DL 105.662 303.5 100.662 303.5 DL F0(\() +95.998 312 Q/F3 10/Times-Italic@0 SF(C)8 E F0 +(Designate G0 Character Set \(ISO 2022\))66.002 E 72 320.5 72 330.5 DL +72 319.5 72 329.5 DL 87.998 320.5 87.998 330.5 DL 77 330.5 72 330.5 DL +77.998 330.5 72.998 330.5 DL 82.998 330.5 77.998 330.5 DL 87.998 330.5 +82.998 330.5 DL 87.998 319.5 87.998 329.5 DL 77 319.5 72 319.5 DL 77.998 +319.5 72.998 319.5 DL 82.998 319.5 77.998 319.5 DL 87.998 319.5 82.998 +319.5 DL 89.664 320.5 89.664 330.5 DL 89.664 319.5 89.664 329.5 DL F2 +(ESC)74.497 327 Q 105.662 320.5 105.662 330.5 DL 94.664 330.5 89.664 +330.5 DL 95.662 330.5 90.662 330.5 DL 100.662 330.5 95.662 330.5 DL +105.662 330.5 100.662 330.5 DL 105.662 319.5 105.662 329.5 DL 94.664 +319.5 89.664 319.5 DL 95.662 319.5 90.662 319.5 DL 100.662 319.5 95.662 +319.5 DL 105.662 319.5 100.662 319.5 DL F0(\))95.998 328 Q F3(C)8 E F0 +(Designate G1 Character Set \(ISO 2022\))66.002 E 72 336.5 72 346.5 DL +72 335.5 72 345.5 DL 87.998 336.5 87.998 346.5 DL 77 346.5 72 346.5 DL +77.998 346.5 72.998 346.5 DL 82.998 346.5 77.998 346.5 DL 87.998 346.5 +82.998 346.5 DL 87.998 335.5 87.998 345.5 DL 77 335.5 72 335.5 DL 77.998 +335.5 72.998 335.5 DL 82.998 335.5 77.998 335.5 DL 87.998 335.5 82.998 +335.5 DL 89.664 336.5 89.664 346.5 DL 89.664 335.5 89.664 345.5 DL F2 +(ESC)74.497 343 Q 105.662 336.5 105.662 346.5 DL 94.664 346.5 89.664 +346.5 DL 95.662 346.5 90.662 346.5 DL 100.662 346.5 95.662 346.5 DL +105.662 346.5 100.662 346.5 DL 105.662 335.5 105.662 345.5 DL 94.664 +335.5 89.664 335.5 DL 95.662 335.5 90.662 335.5 DL 100.662 335.5 95.662 +335.5 DL 105.662 335.5 100.662 335.5 DL F0(*)95.163 344 Q F3(C)7.165 E +F0(Designate G2 Character Set \(ISO 2022\))66.002 E 72 352.5 72 362.5 DL +72 351.5 72 361.5 DL 87.998 352.5 87.998 362.5 DL 77 362.5 72 362.5 DL +77.998 362.5 72.998 362.5 DL 82.998 362.5 77.998 362.5 DL 87.998 362.5 +82.998 362.5 DL 87.998 351.5 87.998 361.5 DL 77 351.5 72 351.5 DL 77.998 +351.5 72.998 351.5 DL 82.998 351.5 77.998 351.5 DL 87.998 351.5 82.998 +351.5 DL 89.664 352.5 89.664 362.5 DL 89.664 351.5 89.664 361.5 DL F2 +(ESC)74.497 359 Q 105.662 352.5 105.662 362.5 DL 94.664 362.5 89.664 +362.5 DL 95.662 362.5 90.662 362.5 DL 100.662 362.5 95.662 362.5 DL +105.662 362.5 100.662 362.5 DL 105.662 351.5 105.662 361.5 DL 94.664 +351.5 89.664 351.5 DL 95.662 351.5 90.662 351.5 DL 100.662 351.5 95.662 +351.5 DL 105.662 351.5 100.662 351.5 DL F0(+)94.843 360 Q F3(C)6.845 E +F0(Designate G3 Character Set \(ISO 2022\))66.002 E .407 +(Final character)180 376 R F3(C)2.907 E 376.956 368.5 376.956 378.5 DL +376.956 367.5 376.956 377.5 DL F0 .406 +(for designating character sets \()252.591 376 R 392.954 368.5 392.954 +378.5 DL 381.956 378.5 376.956 378.5 DL 382.954 378.5 377.954 378.5 DL +387.954 378.5 382.954 378.5 DL 392.954 378.5 387.954 378.5 DL 392.954 +367.5 392.954 377.5 DL 381.956 367.5 376.956 367.5 DL 382.954 367.5 +377.954 367.5 DL 387.954 367.5 382.954 367.5 DL 392.954 367.5 387.954 +367.5 DL 400.026 368.5 400.026 378.5 DL 400.026 367.5 400.026 377.5 DL +416.024 368.5 416.024 378.5 DL 405.026 378.5 400.026 378.5 DL 406.024 +378.5 401.024 378.5 DL 411.024 378.5 406.024 378.5 DL 416.024 378.5 +411.024 378.5 DL 416.024 367.5 416.024 377.5 DL 405.026 367.5 400.026 +367.5 DL 406.024 367.5 401.024 367.5 DL 411.024 367.5 406.024 367.5 DL +416.024 367.5 411.024 367.5 DL -9.535 7.165(0, A)382.455 376 T 437.942 +368.5 437.942 378.5 DL 437.942 367.5 437.942 377.5 DL 453.94 368.5 +453.94 378.5 DL 442.942 378.5 437.942 378.5 DL 443.94 378.5 438.94 378.5 +DL 448.94 378.5 443.94 378.5 DL 453.94 378.5 448.94 378.5 DL 453.94 +367.5 453.94 377.5 DL 442.942 367.5 437.942 367.5 DL 443.94 367.5 438.94 +367.5 DL 448.94 367.5 443.94 367.5 DL 453.94 367.5 448.94 367.5 DL 5.07 +(and B)420.596 376 R .406(apply to VT100 and)9.236 F +(up, the remainder to VT220 and up\):)180 392 Q F3(C)185 408 Q 202.31 +400.5 202.31 410.5 DL 202.31 399.5 202.31 409.5 DL 218.308 400.5 218.308 +410.5 DL 207.31 410.5 202.31 410.5 DL 208.308 410.5 203.308 410.5 DL +213.308 410.5 208.308 410.5 DL 218.308 410.5 213.308 410.5 DL 218.308 +399.5 218.308 409.5 DL 207.31 399.5 202.31 399.5 DL 208.308 399.5 +203.308 399.5 DL 213.308 399.5 208.308 399.5 DL 218.308 399.5 213.308 +399.5 DL F0 7.999(=0)194.17 408 S/F4 10/Symbol SF<ae>1.666 E F0 +(DEC Special Character and Line Dra)2.5 E(wing Set)-.15 E F3(C)185 424 Q +202.31 416.5 202.31 426.5 DL 202.31 415.5 202.31 425.5 DL 218.308 416.5 +218.308 426.5 DL 207.31 426.5 202.31 426.5 DL 208.308 426.5 203.308 +426.5 DL 213.308 426.5 208.308 426.5 DL 218.308 426.5 213.308 426.5 DL +218.308 415.5 218.308 425.5 DL 207.31 415.5 202.31 415.5 DL 208.308 +415.5 203.308 415.5 DL 213.308 415.5 208.308 415.5 DL 218.308 415.5 +213.308 415.5 DL F0 6.889(=A)194.17 424 S F4<ae>1.666 E F0 +(United Kingdom \(UK\))2.5 E F3(C)185 440 Q 202.31 432.5 202.31 442.5 DL +202.31 431.5 202.31 441.5 DL 218.308 432.5 218.308 442.5 DL 207.31 442.5 +202.31 442.5 DL 208.308 442.5 203.308 442.5 DL 213.308 442.5 208.308 +442.5 DL 218.308 442.5 213.308 442.5 DL 218.308 431.5 218.308 441.5 DL +207.31 431.5 202.31 431.5 DL 208.308 431.5 203.308 431.5 DL 213.308 +431.5 208.308 431.5 DL 218.308 431.5 213.308 431.5 DL F0 7.164(=B)194.17 +440 S F4<ae>1.666 E F0(United States \(USASCII\))2.5 E F3(C)185 456 Q +202.31 448.5 202.31 458.5 DL 202.31 447.5 202.31 457.5 DL 218.308 448.5 +218.308 458.5 DL 207.31 458.5 202.31 458.5 DL 208.308 458.5 203.308 +458.5 DL 213.308 458.5 208.308 458.5 DL 218.308 458.5 213.308 458.5 DL +218.308 447.5 218.308 457.5 DL 207.31 447.5 202.31 447.5 DL 208.308 +447.5 203.308 447.5 DL 213.308 447.5 208.308 447.5 DL 218.308 447.5 +213.308 447.5 DL F0 7.999(=4)194.17 456 S F4<ae>1.666 E F0(Dutch)2.5 E +F3(C)185 472 Q 202.31 464.5 202.31 474.5 DL 202.31 463.5 202.31 473.5 DL +218.308 464.5 218.308 474.5 DL 207.31 474.5 202.31 474.5 DL 208.308 +474.5 203.308 474.5 DL 213.308 474.5 208.308 474.5 DL 218.308 474.5 +213.308 474.5 DL 218.308 463.5 218.308 473.5 DL 207.31 463.5 202.31 +463.5 DL 208.308 463.5 203.308 463.5 DL 213.308 463.5 208.308 463.5 DL +218.308 463.5 213.308 463.5 DL F0 -7.998 7.164(=C o)194.17 472 T 233.304 +464.5 233.304 474.5 DL 233.304 463.5 233.304 473.5 DL 249.302 464.5 +249.302 474.5 DL 238.304 474.5 233.304 474.5 DL 239.302 474.5 234.302 +474.5 DL 244.302 474.5 239.302 474.5 DL 249.302 474.5 244.302 474.5 DL +249.302 463.5 249.302 473.5 DL 238.304 463.5 233.304 463.5 DL 239.302 +463.5 234.302 463.5 DL 244.302 463.5 239.302 463.5 DL 249.302 463.5 +244.302 463.5 DL 7.999(r5)227.474 472 S F4<ae>1.666 E F0(Finnish)2.5 E +F3(C)185 488 Q 202.31 480.5 202.31 490.5 DL 202.31 479.5 202.31 489.5 DL +218.308 480.5 218.308 490.5 DL 207.31 490.5 202.31 490.5 DL 208.308 +490.5 203.308 490.5 DL 213.308 490.5 208.308 490.5 DL 218.308 490.5 +213.308 490.5 DL 218.308 479.5 218.308 489.5 DL 207.31 479.5 202.31 +479.5 DL 208.308 479.5 203.308 479.5 DL 213.308 479.5 208.308 479.5 DL +218.308 479.5 213.308 479.5 DL F0 7.164(=R)194.17 488 S F4<ae>1.666 E F0 +(French)2.5 E F3(C)185 504 Q 202.31 496.5 202.31 506.5 DL 202.31 495.5 +202.31 505.5 DL 218.308 496.5 218.308 506.5 DL 207.31 506.5 202.31 506.5 +DL 208.308 506.5 203.308 506.5 DL 213.308 506.5 208.308 506.5 DL 218.308 +506.5 213.308 506.5 DL 218.308 495.5 218.308 505.5 DL 207.31 495.5 +202.31 495.5 DL 208.308 495.5 203.308 495.5 DL 213.308 495.5 208.308 +495.5 DL 218.308 495.5 213.308 495.5 DL F0 6.889(=Q)194.17 504 S F4<ae> +1.666 E F0(French Canadian)2.5 E F3(C)185 520 Q 202.31 512.5 202.31 +522.5 DL 202.31 511.5 202.31 521.5 DL 218.308 512.5 218.308 522.5 DL +207.31 522.5 202.31 522.5 DL 208.308 522.5 203.308 522.5 DL 213.308 +522.5 208.308 522.5 DL 218.308 522.5 213.308 522.5 DL 218.308 511.5 +218.308 521.5 DL 207.31 511.5 202.31 511.5 DL 208.308 511.5 203.308 +511.5 DL 213.308 511.5 208.308 511.5 DL 218.308 511.5 213.308 511.5 DL +F0 6.889(=K)194.17 520 S F4<ae>1.666 E F0(German)2.5 E F3(C)185 536 Q +202.31 528.5 202.31 538.5 DL 202.31 527.5 202.31 537.5 DL 218.308 528.5 +218.308 538.5 DL 207.31 538.5 202.31 538.5 DL 208.308 538.5 203.308 +538.5 DL 213.308 538.5 208.308 538.5 DL 218.308 538.5 213.308 538.5 DL +218.308 527.5 218.308 537.5 DL 207.31 527.5 202.31 527.5 DL 208.308 +527.5 203.308 527.5 DL 213.308 527.5 208.308 527.5 DL 218.308 527.5 +213.308 527.5 DL F0 6.889(=Y)194.17 536 S F4<ae>1.666 E F0(Italian)2.5 E +F3(C)185 552 Q 202.31 544.5 202.31 554.5 DL 202.31 543.5 202.31 553.5 DL +218.308 544.5 218.308 554.5 DL 207.31 554.5 202.31 554.5 DL 208.308 +554.5 203.308 554.5 DL 213.308 554.5 208.308 554.5 DL 218.308 554.5 +213.308 554.5 DL 218.308 543.5 218.308 553.5 DL 207.31 543.5 202.31 +543.5 DL 208.308 543.5 203.308 543.5 DL 213.308 543.5 208.308 543.5 DL +218.308 543.5 213.308 543.5 DL F0 -8.278 7.444(=E o)194.17 552 T 233.304 +544.5 233.304 554.5 DL 233.304 543.5 233.304 553.5 DL 249.302 544.5 +249.302 554.5 DL 238.304 554.5 233.304 554.5 DL 239.302 554.5 234.302 +554.5 DL 244.302 554.5 239.302 554.5 DL 249.302 554.5 244.302 554.5 DL +249.302 543.5 249.302 553.5 DL 238.304 543.5 233.304 543.5 DL 239.302 +543.5 234.302 543.5 DL 244.302 543.5 239.302 543.5 DL 249.302 543.5 +244.302 543.5 DL 7.999(r6)227.474 552 S F4<ae>1.666 E F0(Norwe)2.5 E +(gian/Danish)-.15 E F3(C)185 568 Q 202.31 560.5 202.31 570.5 DL 202.31 +559.5 202.31 569.5 DL 218.308 560.5 218.308 570.5 DL 207.31 570.5 202.31 +570.5 DL 208.308 570.5 203.308 570.5 DL 213.308 570.5 208.308 570.5 DL +218.308 570.5 213.308 570.5 DL 218.308 559.5 218.308 569.5 DL 207.31 +559.5 202.31 559.5 DL 208.308 559.5 203.308 559.5 DL 213.308 559.5 +208.308 559.5 DL 218.308 559.5 213.308 559.5 DL F0 7.444(=Z)194.17 568 S +F4<ae>1.666 E F0(Spanish)2.5 E F3(C)185 584 Q 202.31 576.5 202.31 586.5 +DL 202.31 575.5 202.31 585.5 DL 218.308 576.5 218.308 586.5 DL 207.31 +586.5 202.31 586.5 DL 208.308 586.5 203.308 586.5 DL 213.308 586.5 +208.308 586.5 DL 218.308 586.5 213.308 586.5 DL 218.308 575.5 218.308 +585.5 DL 207.31 575.5 202.31 575.5 DL 208.308 575.5 203.308 575.5 DL +213.308 575.5 208.308 575.5 DL 218.308 575.5 213.308 575.5 DL F0 -7.723 +6.889(=H o)194.17 584 T 233.304 576.5 233.304 586.5 DL 233.304 575.5 +233.304 585.5 DL 249.302 576.5 249.302 586.5 DL 238.304 586.5 233.304 +586.5 DL 239.302 586.5 234.302 586.5 DL 244.302 586.5 239.302 586.5 DL +249.302 586.5 244.302 586.5 DL 249.302 575.5 249.302 585.5 DL 238.304 +575.5 233.304 575.5 DL 239.302 575.5 234.302 575.5 DL 244.302 575.5 +239.302 575.5 DL 249.302 575.5 244.302 575.5 DL 7.999(r7)227.474 584 S +F4<ae>1.666 E F0(Swedish)2.5 E F3(C)185 600 Q 202.31 592.5 202.31 602.5 +DL 202.31 591.5 202.31 601.5 DL 218.308 592.5 218.308 602.5 DL 207.31 +602.5 202.31 602.5 DL 208.308 602.5 203.308 602.5 DL 213.308 602.5 +208.308 602.5 DL 218.308 602.5 213.308 602.5 DL 218.308 591.5 218.308 +601.5 DL 207.31 591.5 202.31 591.5 DL 208.308 591.5 203.308 591.5 DL +213.308 591.5 208.308 591.5 DL 218.308 591.5 213.308 591.5 DL F0 7.679 +(==)194.17 600 S F4<ae>1.666 E F0(Swiss)2.5 E 72 608.5 72 618.5 DL 72 +607.5 72 617.5 DL 87.998 608.5 87.998 618.5 DL 77 618.5 72 618.5 DL +77.998 618.5 72.998 618.5 DL 82.998 618.5 77.998 618.5 DL 87.998 618.5 +82.998 618.5 DL 87.998 607.5 87.998 617.5 DL 77 607.5 72 607.5 DL 77.998 +607.5 72.998 607.5 DL 82.998 607.5 77.998 607.5 DL 87.998 607.5 82.998 +607.5 DL 89.664 608.5 89.664 618.5 DL 89.664 607.5 89.664 617.5 DL F2 +(ESC)74.497 615 Q 105.662 608.5 105.662 618.5 DL 94.664 618.5 89.664 +618.5 DL 95.662 618.5 90.662 618.5 DL 100.662 618.5 95.662 618.5 DL +105.662 618.5 100.662 618.5 DL 105.662 607.5 105.662 617.5 DL 94.664 +607.5 89.664 607.5 DL 95.662 607.5 90.662 607.5 DL 100.662 607.5 95.662 +607.5 DL 105.662 607.5 100.662 607.5 DL F0 79.837(7S)95.163 616 S -2.25 +-.2(av e)-79.837 H(Cursor \(DECSC\))2.7 E 72 624.5 72 634.5 DL 72 623.5 +72 633.5 DL 87.998 624.5 87.998 634.5 DL 77 634.5 72 634.5 DL 77.998 +634.5 72.998 634.5 DL 82.998 634.5 77.998 634.5 DL 87.998 634.5 82.998 +634.5 DL 87.998 623.5 87.998 633.5 DL 77 623.5 72 623.5 DL 77.998 623.5 +72.998 623.5 DL 82.998 623.5 77.998 623.5 DL 87.998 623.5 82.998 623.5 +DL 89.664 624.5 89.664 634.5 DL 89.664 623.5 89.664 633.5 DL F2(ESC) +74.497 631 Q 105.662 624.5 105.662 634.5 DL 94.664 634.5 89.664 634.5 DL +95.662 634.5 90.662 634.5 DL 100.662 634.5 95.662 634.5 DL 105.662 634.5 +100.662 634.5 DL 105.662 623.5 105.662 633.5 DL 94.664 623.5 89.664 +623.5 DL 95.662 623.5 90.662 623.5 DL 100.662 623.5 95.662 623.5 DL +105.662 623.5 100.662 623.5 DL F0 79.837(8R)95.163 632 S +(estore Cursor \(DECRC\))-79.837 E 72 640.5 72 650.5 DL 72 639.5 72 +649.5 DL 87.998 640.5 87.998 650.5 DL 77 650.5 72 650.5 DL 77.998 650.5 +72.998 650.5 DL 82.998 650.5 77.998 650.5 DL 87.998 650.5 82.998 650.5 +DL 87.998 639.5 87.998 649.5 DL 77 639.5 72 639.5 DL 77.998 639.5 72.998 +639.5 DL 82.998 639.5 77.998 639.5 DL 87.998 639.5 82.998 639.5 DL +89.664 640.5 89.664 650.5 DL 89.664 639.5 89.664 649.5 DL F2(ESC)74.497 +647 Q 105.662 640.5 105.662 650.5 DL 94.664 650.5 89.664 650.5 DL 95.662 +650.5 90.662 650.5 DL 100.662 650.5 95.662 650.5 DL 105.662 650.5 +100.662 650.5 DL 105.662 639.5 105.662 649.5 DL 94.664 639.5 89.664 +639.5 DL 95.662 639.5 90.662 639.5 DL 100.662 639.5 95.662 639.5 DL +105.662 639.5 100.662 639.5 DL F0 79.517(=A)94.843 648 S(pplication K) +-79.517 E -.15(ey)-.25 G(pad \(DECP).15 E(AM\))-.92 E 72 656.5 72 666.5 +DL 72 655.5 72 665.5 DL 87.998 656.5 87.998 666.5 DL 77 666.5 72 666.5 +DL 77.998 666.5 72.998 666.5 DL 82.998 666.5 77.998 666.5 DL 87.998 +666.5 82.998 666.5 DL 87.998 655.5 87.998 665.5 DL 77 655.5 72 655.5 DL +77.998 655.5 72.998 655.5 DL 82.998 655.5 77.998 655.5 DL 87.998 655.5 +82.998 655.5 DL 89.664 656.5 89.664 666.5 DL 89.664 655.5 89.664 665.5 +DL F2(ESC)74.497 663 Q 105.662 656.5 105.662 666.5 DL 94.664 666.5 +89.664 666.5 DL 95.662 666.5 90.662 666.5 DL 100.662 666.5 95.662 666.5 +DL 105.662 666.5 100.662 666.5 DL 105.662 655.5 105.662 665.5 DL 94.664 +655.5 89.664 655.5 DL 95.662 655.5 90.662 655.5 DL 100.662 655.5 95.662 +655.5 DL 105.662 655.5 100.662 655.5 DL F0 79.517(>N)94.843 664 S +(ormal K)-79.517 E -.15(ey)-.25 G(pad \(DECPNM\)).15 E 72 672.5 72 682.5 +DL 72 671.5 72 681.5 DL 87.998 672.5 87.998 682.5 DL 77 682.5 72 682.5 +DL 77.998 682.5 72.998 682.5 DL 82.998 682.5 77.998 682.5 DL 87.998 +682.5 82.998 682.5 DL 87.998 671.5 87.998 681.5 DL 77 671.5 72 671.5 DL +77.998 671.5 72.998 671.5 DL 82.998 671.5 77.998 671.5 DL 87.998 671.5 +82.998 671.5 DL 89.664 672.5 89.664 682.5 DL 89.664 671.5 89.664 681.5 +DL F2(ESC)74.497 679 Q 105.662 672.5 105.662 682.5 DL 94.664 682.5 +89.664 682.5 DL 95.662 682.5 90.662 682.5 DL 100.662 682.5 95.662 682.5 +DL 105.662 682.5 100.662 682.5 DL 105.662 671.5 105.662 681.5 DL 94.664 +671.5 89.664 671.5 DL 95.662 671.5 90.662 671.5 DL 100.662 671.5 95.662 +671.5 DL 105.662 671.5 100.662 671.5 DL F0 79.557(FC)94.883 680 S 3.194 +(ursor to lo)-79.557 F 3.195 +(wer left corner of screen \(if enabled by the)-.25 F F1(hpLo)5.695 E +(werleftBugCompat)-.1 E F0(resource\).)180 696 Q 72 704.5 72 714.5 DL 72 +703.5 72 713.5 DL 87.998 704.5 87.998 714.5 DL 77 714.5 72 714.5 DL +77.998 714.5 72.998 714.5 DL 82.998 714.5 77.998 714.5 DL 87.998 714.5 +82.998 714.5 DL 87.998 703.5 87.998 713.5 DL 77 703.5 72 703.5 DL 77.998 +703.5 72.998 703.5 DL 82.998 703.5 77.998 703.5 DL 87.998 703.5 82.998 +703.5 DL 89.664 704.5 89.664 714.5 DL 89.664 703.5 89.664 713.5 DL F2 +(ESC)74.497 711 Q 105.662 704.5 105.662 714.5 DL 94.664 714.5 89.664 +714.5 DL 95.662 714.5 90.662 714.5 DL 100.662 714.5 95.662 714.5 DL +105.662 714.5 100.662 714.5 DL 105.662 703.5 105.662 713.5 DL 94.664 +703.5 89.664 703.5 DL 95.662 703.5 90.662 703.5 DL 100.662 703.5 95.662 +703.5 DL 105.662 703.5 100.662 703.5 DL F0 80.117(cF)95.443 712 S +(ull Reset \(RIS\))-80.117 E(3)303.5 772 Q EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E .4 LW 72 80.5 72 90.5 DL 72 79.5 72 89.5 DL 87.998 80.5 87.998 +90.5 DL 77 90.5 72 90.5 DL 77.998 90.5 72.998 90.5 DL 82.998 90.5 77.998 +90.5 DL 87.998 90.5 82.998 90.5 DL 87.998 79.5 87.998 89.5 DL 77 79.5 72 +79.5 DL 77.998 79.5 72.998 79.5 DL 82.998 79.5 77.998 79.5 DL 87.998 +79.5 82.998 79.5 DL 89.664 80.5 89.664 90.5 DL 89.664 79.5 89.664 89.5 +DL/F1 6/Times-Roman@0 SF(ESC)74.497 87 Q 105.662 80.5 105.662 90.5 DL +94.664 90.5 89.664 90.5 DL 95.662 90.5 90.662 90.5 DL 100.662 90.5 +95.662 90.5 DL 105.662 90.5 100.662 90.5 DL 105.662 79.5 105.662 89.5 DL +94.664 79.5 89.664 79.5 DL 95.662 79.5 90.662 79.5 DL 100.662 79.5 +95.662 79.5 DL 105.662 79.5 100.662 79.5 DL F0 80.947(lM)96.273 88 S +(emory Lock \(per HP terminals\).)-80.947 E(Locks memory abo)5 E .3 -.15 +(ve t)-.15 H(he cursor).15 E(.)-.55 E 72 96.5 72 106.5 DL 72 95.5 72 +105.5 DL 87.998 96.5 87.998 106.5 DL 77 106.5 72 106.5 DL 77.998 106.5 +72.998 106.5 DL 82.998 106.5 77.998 106.5 DL 87.998 106.5 82.998 106.5 +DL 87.998 95.5 87.998 105.5 DL 77 95.5 72 95.5 DL 77.998 95.5 72.998 +95.5 DL 82.998 95.5 77.998 95.5 DL 87.998 95.5 82.998 95.5 DL 89.664 +96.5 89.664 106.5 DL 89.664 95.5 89.664 105.5 DL F1(ESC)74.497 103 Q +105.662 96.5 105.662 106.5 DL 94.664 106.5 89.664 106.5 DL 95.662 106.5 +90.662 106.5 DL 100.662 106.5 95.662 106.5 DL 105.662 106.5 100.662 +106.5 DL 105.662 95.5 105.662 105.5 DL 94.664 95.5 89.664 95.5 DL 95.662 +95.5 90.662 95.5 DL 100.662 95.5 95.662 95.5 DL 105.662 95.5 100.662 +95.5 DL F0 78.447(mM)93.773 104 S(emory Unlock \(per HP terminals\)) +-78.447 E 72 112.5 72 122.5 DL 72 111.5 72 121.5 DL 87.998 112.5 87.998 +122.5 DL 77 122.5 72 122.5 DL 77.998 122.5 72.998 122.5 DL 82.998 122.5 +77.998 122.5 DL 87.998 122.5 82.998 122.5 DL 87.998 111.5 87.998 121.5 +DL 77 111.5 72 111.5 DL 77.998 111.5 72.998 111.5 DL 82.998 111.5 77.998 +111.5 DL 87.998 111.5 82.998 111.5 DL 89.664 112.5 89.664 122.5 DL +89.664 111.5 89.664 121.5 DL F1(ESC)74.497 119 Q 105.662 112.5 105.662 +122.5 DL 94.664 122.5 89.664 122.5 DL 95.662 122.5 90.662 122.5 DL +100.662 122.5 95.662 122.5 DL 105.662 122.5 100.662 122.5 DL 105.662 +111.5 105.662 121.5 DL 94.664 111.5 89.664 111.5 DL 95.662 111.5 90.662 +111.5 DL 100.662 111.5 95.662 111.5 DL 105.662 111.5 100.662 111.5 DL F0 +79.837(nI)95.163 120 S -1.9 -.4(nv o)-79.837 H .2 -.1(ke t).4 H +(he G2 Character Set \(LS2\)).1 E 72 128.5 72 138.5 DL 72 127.5 72 137.5 +DL 87.998 128.5 87.998 138.5 DL 77 138.5 72 138.5 DL 77.998 138.5 72.998 +138.5 DL 82.998 138.5 77.998 138.5 DL 87.998 138.5 82.998 138.5 DL +87.998 127.5 87.998 137.5 DL 77 127.5 72 127.5 DL 77.998 127.5 72.998 +127.5 DL 82.998 127.5 77.998 127.5 DL 87.998 127.5 82.998 127.5 DL +89.664 128.5 89.664 138.5 DL 89.664 127.5 89.664 137.5 DL F1(ESC)74.497 +135 Q 105.662 128.5 105.662 138.5 DL 94.664 138.5 89.664 138.5 DL 95.662 +138.5 90.662 138.5 DL 100.662 138.5 95.662 138.5 DL 105.662 138.5 +100.662 138.5 DL 105.662 127.5 105.662 137.5 DL 94.664 127.5 89.664 +127.5 DL 95.662 127.5 90.662 127.5 DL 100.662 127.5 95.662 127.5 DL +105.662 127.5 100.662 127.5 DL F0 79.837(oI)95.163 136 S -1.9 -.4(nv o) +-79.837 H .2 -.1(ke t).4 H(he G3 Character Set \(LS3\)).1 E 72 144.5 72 +154.5 DL 72 143.5 72 153.5 DL 87.998 144.5 87.998 154.5 DL 77 154.5 72 +154.5 DL 77.998 154.5 72.998 154.5 DL 82.998 154.5 77.998 154.5 DL +87.998 154.5 82.998 154.5 DL 87.998 143.5 87.998 153.5 DL 77 143.5 72 +143.5 DL 77.998 143.5 72.998 143.5 DL 82.998 143.5 77.998 143.5 DL +87.998 143.5 82.998 143.5 DL 89.664 144.5 89.664 154.5 DL 89.664 143.5 +89.664 153.5 DL F1(ESC)74.497 151 Q 105.662 144.5 105.662 154.5 DL +94.664 154.5 89.664 154.5 DL 95.662 154.5 90.662 154.5 DL 100.662 154.5 +95.662 154.5 DL 105.662 154.5 100.662 154.5 DL 105.662 143.5 105.662 +153.5 DL 94.664 143.5 89.664 143.5 DL 95.662 143.5 90.662 143.5 DL +100.662 143.5 95.662 143.5 DL 105.662 143.5 100.662 143.5 DL F0 81.337 +(|I)96.663 152 S -1.9 -.4(nv o)-81.337 H .2 -.1(ke t).4 H +(he G3 Character Set as GR \(LS3R\).).1 E(Has no visible ef)5 E(fect in) +-.25 E/F2 10/Times-Italic@0 SF(xterm)2.5 E F0(.)A 72 160.5 72 170.5 DL +72 159.5 72 169.5 DL 87.998 160.5 87.998 170.5 DL 77 170.5 72 170.5 DL +77.998 170.5 72.998 170.5 DL 82.998 170.5 77.998 170.5 DL 87.998 170.5 +82.998 170.5 DL 87.998 159.5 87.998 169.5 DL 77 159.5 72 159.5 DL 77.998 +159.5 72.998 159.5 DL 82.998 159.5 77.998 159.5 DL 87.998 159.5 82.998 +159.5 DL 89.664 160.5 89.664 170.5 DL 89.664 159.5 89.664 169.5 DL F1 +(ESC)74.497 167 Q 105.662 160.5 105.662 170.5 DL 94.664 170.5 89.664 +170.5 DL 95.662 170.5 90.662 170.5 DL 100.662 170.5 95.662 170.5 DL +105.662 170.5 100.662 170.5 DL 105.662 159.5 105.662 169.5 DL 94.664 +159.5 89.664 159.5 DL 95.662 159.5 90.662 159.5 DL 100.662 159.5 95.662 +159.5 DL 105.662 159.5 100.662 159.5 DL F0 79.937(}I)95.263 168 S -1.9 +-.4(nv o)-79.937 H .2 -.1(ke t).4 H(he G2 Character Set as GR \(LS2R\).) +.1 E(Has no visible ef)5 E(fect in)-.25 E F2(xterm)2.5 E F0(.)A 72 176.5 +72 186.5 DL 72 175.5 72 185.5 DL 87.998 176.5 87.998 186.5 DL 77 186.5 +72 186.5 DL 77.998 186.5 72.998 186.5 DL 82.998 186.5 77.998 186.5 DL +87.998 186.5 82.998 186.5 DL 87.998 175.5 87.998 185.5 DL 77 175.5 72 +175.5 DL 77.998 175.5 72.998 175.5 DL 82.998 175.5 77.998 175.5 DL +87.998 175.5 82.998 175.5 DL 89.664 176.5 89.664 186.5 DL 89.664 175.5 +89.664 185.5 DL F1(ESC)74.497 183 Q 105.662 176.5 105.662 186.5 DL +94.664 186.5 89.664 186.5 DL 95.662 186.5 90.662 186.5 DL 100.662 186.5 +95.662 186.5 DL 105.662 186.5 100.662 186.5 DL 105.662 175.5 105.662 +185.5 DL 94.664 175.5 89.664 175.5 DL 95.662 175.5 90.662 175.5 DL +100.662 175.5 95.662 175.5 DL 105.662 175.5 100.662 175.5 DL F0 80.672 +(~I)95.998 184 S -1.9 -.4(nv o)-80.672 H .2 -.1(ke t).4 H +(he G1 Character Set as GR \(LS1R\).).1 E(Has no visible ef)5 E(fect in) +-.25 E F2(xterm)2.5 E F0(.)A/F3 10/Times-Bold@0 SF -.25(Ap)72 216 S +(plication Pr).25 E(ogram-Contr)-.18 E(ol functions)-.18 E 72 224.5 72 +234.5 DL 72 223.5 72 233.5 DL 87.998 224.5 87.998 234.5 DL 77 234.5 72 +234.5 DL 77.998 234.5 72.998 234.5 DL 82.998 234.5 77.998 234.5 DL +87.998 234.5 82.998 234.5 DL 87.998 223.5 87.998 233.5 DL 77 223.5 72 +223.5 DL 77.998 223.5 72.998 223.5 DL 82.998 223.5 77.998 223.5 DL +87.998 223.5 82.998 223.5 DL F1(APC)74.164 231 Q F2(P)3.83 1 M 97.664 +224.5 97.664 234.5 DL 97.664 223.5 97.664 233.5 DL/F4 8/Times-Italic@0 +SF(t)93.774 235 Q 113.662 224.5 113.662 234.5 DL 102.664 234.5 97.664 +234.5 DL 103.662 234.5 98.662 234.5 DL 108.662 234.5 103.662 234.5 DL +113.662 234.5 108.662 234.5 DL 113.662 223.5 113.662 233.5 DL 102.664 +223.5 97.664 223.5 DL 103.662 223.5 98.662 223.5 DL 108.662 223.5 +103.662 223.5 DL 113.662 223.5 108.662 223.5 DL F1(ST)102.162 231 Q F2 +(xterm)70.836 1 M F0(implements no APC functions;)2.5 E F2(P)2.5 E F4(t) +-2 3 M F0(is ignored.)2.5 -3 M F2(P)5 E F4(t)-2 3 M F0 +(need not be printable characters.)2.5 -3 M F3(De)72 264 Q(vice-Contr) +-.15 E(ol functions)-.18 E 72 272.5 72 282.5 DL 72 271.5 72 281.5 DL +87.998 272.5 87.998 282.5 DL 77 282.5 72 282.5 DL 77.998 282.5 72.998 +282.5 DL 82.998 282.5 77.998 282.5 DL 87.998 282.5 82.998 282.5 DL +87.998 271.5 87.998 281.5 DL 77 271.5 72 271.5 DL 77.998 271.5 72.998 +271.5 DL 82.998 271.5 77.998 271.5 DL 87.998 271.5 82.998 271.5 DL F1 +(DCS)74.164 279 Q F2(P)3.83 1 M 96.886 272.5 96.886 282.5 DL 96.886 +271.5 96.886 281.5 DL F4(s)93.774 283 Q 112.884 272.5 112.884 282.5 DL +101.886 282.5 96.886 282.5 DL 102.884 282.5 97.884 282.5 DL 107.884 +282.5 102.884 282.5 DL 112.884 282.5 107.884 282.5 DL 112.884 271.5 +112.884 281.5 DL 101.886 271.5 96.886 271.5 DL 102.884 271.5 97.884 +271.5 DL 107.884 271.5 102.884 271.5 DL 112.884 271.5 107.884 271.5 DL +F0(;)103.495 280 Q F2(P)8.275 E 121.772 272.5 121.772 282.5 DL 121.772 +271.5 121.772 281.5 DL F4(s)118.66 283 Q 137.77 272.5 137.77 282.5 DL +126.772 282.5 121.772 282.5 DL 127.77 282.5 122.77 282.5 DL 132.77 282.5 +127.77 282.5 DL 137.77 282.5 132.77 282.5 DL 137.77 271.5 137.77 281.5 +DL 126.772 271.5 121.772 271.5 DL 127.77 271.5 122.77 271.5 DL 132.77 +271.5 127.77 271.5 DL 137.77 271.5 132.77 271.5 DL F0(|)128.771 280 Q F2 +(P)8.665 E 147.436 272.5 147.436 282.5 DL 147.436 271.5 147.436 281.5 DL +F4(t)143.546 283 Q 163.434 272.5 163.434 282.5 DL 152.436 282.5 147.436 +282.5 DL 153.434 282.5 148.434 282.5 DL 158.434 282.5 153.434 282.5 DL +163.434 282.5 158.434 282.5 DL 163.434 271.5 163.434 281.5 DL 152.436 +271.5 147.436 271.5 DL 153.434 271.5 148.434 271.5 DL 158.434 271.5 +153.434 271.5 DL 163.434 271.5 158.434 271.5 DL F1(ST)151.934 279 Q F0 +(User)21.064 1 M(-De\214ned K)-.2 E -.15(ey)-.25 G 2.5(s\().15 G 2.5 +(DECUDK\). The)-2.5 F(\214rst parameter:)2.5 E F2(P)185 296 Q F4(s)-2 3 +M 202.862 288.5 202.862 298.5 DL 202.862 287.5 202.862 297.5 DL 218.86 +288.5 218.86 298.5 DL 207.862 298.5 202.862 298.5 DL 208.86 298.5 203.86 +298.5 DL 213.86 298.5 208.86 298.5 DL 218.86 298.5 213.86 298.5 DL +218.86 287.5 218.86 297.5 DL 207.862 287.5 202.862 287.5 DL 208.86 287.5 +203.86 287.5 DL 213.86 287.5 208.86 287.5 DL 218.86 287.5 213.86 287.5 +DL F0 7.999(=0)194.722 296 S/F5 10/Symbol SF<ae>1.666 E F0 +(Clear all UDK de\214nitions before starting \(def)2.5 E(ault\))-.1 E F2 +(P)185 312 Q F4(s)-2 3 M 202.862 304.5 202.862 314.5 DL 202.862 303.5 +202.862 313.5 DL 218.86 304.5 218.86 314.5 DL 207.862 314.5 202.862 +314.5 DL 208.86 314.5 203.86 314.5 DL 213.86 314.5 208.86 314.5 DL +218.86 314.5 213.86 314.5 DL 218.86 303.5 218.86 313.5 DL 207.862 303.5 +202.862 303.5 DL 208.86 303.5 203.86 303.5 DL 213.86 303.5 208.86 303.5 +DL 218.86 303.5 213.86 303.5 DL F0 7.999(=1)194.722 312 S F5<ae>1.666 E +F0(Erase Belo)2.5 E 2.5(w\()-.25 G(def)-2.5 E(ault\))-.1 E +(The second parameter:)180 328 Q F2(P)185 344 Q F4(s)-2 3 M 202.862 +336.5 202.862 346.5 DL 202.862 335.5 202.862 345.5 DL 218.86 336.5 +218.86 346.5 DL 207.862 346.5 202.862 346.5 DL 208.86 346.5 203.86 346.5 +DL 213.86 346.5 208.86 346.5 DL 218.86 346.5 213.86 346.5 DL 218.86 +335.5 218.86 345.5 DL 207.862 335.5 202.862 335.5 DL 208.86 335.5 203.86 +335.5 DL 213.86 335.5 208.86 335.5 DL 218.86 335.5 213.86 335.5 DL F0 +7.999(=0)194.722 344 S F5<ae>1.666 E F0(Lock the k)2.5 E -.15(ey)-.1 G +2.5(s\().15 G(def)-2.5 E(ault\))-.1 E F2(P)185 360 Q F4(s)-2 3 M 202.862 +352.5 202.862 362.5 DL 202.862 351.5 202.862 361.5 DL 218.86 352.5 +218.86 362.5 DL 207.862 362.5 202.862 362.5 DL 208.86 362.5 203.86 362.5 +DL 213.86 362.5 208.86 362.5 DL 218.86 362.5 213.86 362.5 DL 218.86 +351.5 218.86 361.5 DL 207.862 351.5 202.862 351.5 DL 208.86 351.5 203.86 +351.5 DL 213.86 351.5 208.86 351.5 DL 218.86 351.5 213.86 351.5 DL F0 +7.999(=1)194.722 360 S F5<ae>1.666 E F0(Do not lock.)2.5 E .421 +(The third parameter is a ';'-separated list of strings denoting the k) +180 376 R -.15(ey)-.1 G .42(-code separated by a).15 F .543 +('/' from the he)180 392 R .544(x-encoded k)-.15 F .844 -.15(ey v)-.1 H +3.044(alue. The)-.1 F -.1(ke)3.044 G 3.044(yc)-.05 G .544 +(odes correspond to the DEC function-k)-3.044 F -.15(ey)-.1 G +(codes \(e.g., F6=17\).)180 408 Q 72 416.5 72 426.5 DL 72 415.5 72 425.5 +DL 87.998 416.5 87.998 426.5 DL 77 426.5 72 426.5 DL 77.998 426.5 72.998 +426.5 DL 82.998 426.5 77.998 426.5 DL 87.998 426.5 82.998 426.5 DL +87.998 415.5 87.998 425.5 DL 77 415.5 72 415.5 DL 77.998 415.5 72.998 +415.5 DL 82.998 415.5 77.998 415.5 DL 87.998 415.5 82.998 415.5 DL +89.664 416.5 89.664 426.5 DL 89.664 415.5 89.664 425.5 DL F1(DCS)74.164 +423 Q 105.662 416.5 105.662 426.5 DL 94.664 426.5 89.664 426.5 DL 95.662 +426.5 90.662 426.5 DL 100.662 426.5 95.662 426.5 DL 105.662 426.5 +100.662 426.5 DL 105.662 415.5 105.662 425.5 DL 94.664 415.5 89.664 +415.5 DL 95.662 415.5 90.662 415.5 DL 100.662 415.5 95.662 415.5 DL +105.662 415.5 100.662 415.5 DL 107.328 416.5 107.328 426.5 DL 107.328 +415.5 107.328 425.5 DL 123.326 416.5 123.326 426.5 DL 112.328 426.5 +107.328 426.5 DL 113.326 426.5 108.326 426.5 DL 118.326 426.5 113.326 +426.5 DL 123.326 426.5 118.326 426.5 DL 123.326 415.5 123.326 425.5 DL +112.328 415.5 107.328 415.5 DL 113.326 415.5 108.326 415.5 DL 118.326 +415.5 113.326 415.5 DL 123.326 415.5 118.326 415.5 DL F0 12.664($q) +95.163 424 S F2(P)-5.499 E 132.992 416.5 132.992 426.5 DL 132.992 415.5 +132.992 425.5 DL F4(t)129.102 427 Q 148.99 416.5 148.99 426.5 DL 137.992 +426.5 132.992 426.5 DL 138.99 426.5 133.99 426.5 DL 143.99 426.5 138.99 +426.5 DL 148.99 426.5 143.99 426.5 DL 148.99 415.5 148.99 425.5 DL +137.992 415.5 132.992 415.5 DL 138.99 415.5 133.99 415.5 DL 143.99 415.5 +138.99 415.5 DL 148.99 415.5 143.99 415.5 DL F1(ST)137.49 423 Q F0 +(Request Status String \(DECRQSS\).)35.508 1 M(The string follo)5 E +(wing the "q" is one of the follo)-.25 E(wing:)-.25 E 185 432.5 185 +442.5 DL 185 431.5 185 441.5 DL 200.998 432.5 200.998 442.5 DL 190 442.5 +185 442.5 DL 190.998 442.5 185.998 442.5 DL 195.998 442.5 190.998 442.5 +DL 200.998 442.5 195.998 442.5 DL 200.998 431.5 200.998 441.5 DL 190 +431.5 185 431.5 DL 190.998 431.5 185.998 431.5 DL 195.998 431.5 190.998 +431.5 DL 200.998 431.5 195.998 431.5 DL 202.664 432.5 202.664 442.5 DL +202.664 431.5 202.664 441.5 DL 218.662 432.5 218.662 442.5 DL 207.664 +442.5 202.664 442.5 DL 208.662 442.5 203.662 442.5 DL 213.662 442.5 +208.662 442.5 DL 218.662 442.5 213.662 442.5 DL 218.662 431.5 218.662 +441.5 DL 207.664 431.5 202.664 431.5 DL 208.662 431.5 203.662 431.5 DL +213.662 431.5 208.662 431.5 DL 218.662 431.5 213.662 431.5 DL 12.944 +<9971>190.779 440 S F5<ae>3.893 E F0(DECSCA)2.5 E 185 448.5 185 458.5 DL +185 447.5 185 457.5 DL 200.998 448.5 200.998 458.5 DL 190 458.5 185 +458.5 DL 190.998 458.5 185.998 458.5 DL 195.998 458.5 190.998 458.5 DL +200.998 458.5 195.998 458.5 DL 200.998 447.5 200.998 457.5 DL 190 447.5 +185 447.5 DL 190.998 447.5 185.998 447.5 DL 195.998 447.5 190.998 447.5 +DL 200.998 447.5 195.998 447.5 DL 202.664 448.5 202.664 458.5 DL 202.664 +447.5 202.664 457.5 DL 218.662 448.5 218.662 458.5 DL 207.664 458.5 +202.664 458.5 DL 208.662 458.5 203.662 458.5 DL 213.662 458.5 208.662 +458.5 DL 218.662 458.5 213.662 458.5 DL 218.662 447.5 218.662 457.5 DL +207.664 447.5 202.664 447.5 DL 208.662 447.5 203.662 447.5 DL 213.662 +447.5 208.662 447.5 DL 218.662 447.5 213.662 447.5 DL 12.944<9970> +190.779 456 S F5<ae>3.893 E F0(DECSCL)2.5 E 185 464.5 185 474.5 DL 185 +463.5 185 473.5 DL 200.998 464.5 200.998 474.5 DL 190 474.5 185 474.5 DL +190.998 474.5 185.998 474.5 DL 195.998 474.5 190.998 474.5 DL 200.998 +474.5 195.998 474.5 DL 200.998 463.5 200.998 473.5 DL 190 463.5 185 +463.5 DL 190.998 463.5 185.998 463.5 DL 195.998 463.5 190.998 463.5 DL +200.998 463.5 195.998 463.5 DL(r)191.334 472 Q F5<ae>35.336 E F0 +(DECSTBM)2.5 E 185 480.5 185 490.5 DL 185 479.5 185 489.5 DL 200.998 +480.5 200.998 490.5 DL 190 490.5 185 490.5 DL 190.998 490.5 185.998 +490.5 DL 195.998 490.5 190.998 490.5 DL 200.998 490.5 195.998 490.5 DL +200.998 479.5 200.998 489.5 DL 190 479.5 185 479.5 DL 190.998 479.5 +185.998 479.5 DL 195.998 479.5 190.998 479.5 DL 200.998 479.5 195.998 +479.5 DL(m)189.109 488 Q F5<ae>33.111 E F0(SGR)2.5 E F2(xterm)180 504 Q +265.684 496.5 265.684 506.5 DL 265.684 495.5 265.684 505.5 DL F0 .695 +(responds with)205.965 504 R 281.682 496.5 281.682 506.5 DL 270.684 +506.5 265.684 506.5 DL 271.682 506.5 266.682 506.5 DL 276.682 506.5 +271.682 506.5 DL 281.682 506.5 276.682 506.5 DL 281.682 495.5 281.682 +505.5 DL 270.684 495.5 265.684 495.5 DL 271.682 495.5 266.682 495.5 DL +276.682 495.5 271.682 495.5 DL 281.682 495.5 276.682 495.5 DL 283.348 +496.5 283.348 506.5 DL 283.348 495.5 283.348 505.5 DL F1(DCS)267.848 503 +Q 299.346 496.5 299.346 506.5 DL 288.348 506.5 283.348 506.5 DL 289.346 +506.5 284.346 506.5 DL 294.346 506.5 289.346 506.5 DL 299.346 506.5 +294.346 506.5 DL 299.346 495.5 299.346 505.5 DL 288.348 495.5 283.348 +495.5 DL 289.346 495.5 284.346 495.5 DL 294.346 495.5 289.346 495.5 DL +299.346 495.5 294.346 495.5 DL 301.012 496.5 301.012 506.5 DL 301.012 +495.5 301.012 505.5 DL 317.01 496.5 317.01 506.5 DL 306.012 506.5 +301.012 506.5 DL 307.01 506.5 302.01 506.5 DL 312.01 506.5 307.01 506.5 +DL 317.01 506.5 312.01 506.5 DL 317.01 495.5 317.01 505.5 DL 306.012 +495.5 301.012 495.5 DL 307.01 495.5 302.01 495.5 DL 312.01 495.5 307.01 +495.5 DL 317.01 495.5 312.01 495.5 DL 318.676 496.5 318.676 506.5 DL +318.676 495.5 318.676 505.5 DL 334.674 496.5 334.674 506.5 DL 323.676 +506.5 318.676 506.5 DL 324.674 506.5 319.674 506.5 DL 329.674 506.5 +324.674 506.5 DL 334.674 506.5 329.674 506.5 DL 334.674 495.5 334.674 +505.5 DL 323.676 495.5 318.676 495.5 DL 324.674 495.5 319.674 495.5 DL +329.674 495.5 324.674 495.5 DL 334.674 495.5 329.674 495.5 DL F0 -14.329 +12.664(1$ r)288.847 504 T F2(P)-4.664 E 344.34 496.5 344.34 506.5 DL +344.34 495.5 344.34 505.5 DL F4(t)340.45 507 Q 360.338 496.5 360.338 +506.5 DL 349.34 506.5 344.34 506.5 DL 350.338 506.5 345.338 506.5 DL +355.338 506.5 350.338 506.5 DL 360.338 506.5 355.338 506.5 DL 360.338 +495.5 360.338 505.5 DL 349.34 495.5 344.34 495.5 DL 350.338 495.5 +345.338 495.5 DL 355.338 495.5 350.338 495.5 DL 360.338 495.5 355.338 +495.5 DL F1(ST)348.838 503 Q F0 .694(for v)9.358 1 N .694 +(alid requests, replacing the)-.25 F F2(P)3.194 E F4(t)-2 3 M F0 .694 +(with the)3.194 -3 N 239.71 512.5 239.71 522.5 DL 239.71 511.5 239.71 +521.5 DL(corresponding)180 520 Q 255.708 512.5 255.708 522.5 DL 244.71 +522.5 239.71 522.5 DL 245.708 522.5 240.708 522.5 DL 250.708 522.5 +245.708 522.5 DL 255.708 522.5 250.708 522.5 DL 255.708 511.5 255.708 +521.5 DL 244.71 511.5 239.71 511.5 DL 245.708 511.5 240.708 511.5 DL +250.708 511.5 245.708 511.5 DL 255.708 511.5 250.708 511.5 DL F1(CSI) +243.041 519 Q 298.484 512.5 298.484 522.5 DL 298.484 511.5 298.484 521.5 +DL F0(string, or)259.874 520 Q 314.482 512.5 314.482 522.5 DL 303.484 +522.5 298.484 522.5 DL 304.482 522.5 299.482 522.5 DL 309.482 522.5 +304.482 522.5 DL 314.482 522.5 309.482 522.5 DL 314.482 511.5 314.482 +521.5 DL 303.484 511.5 298.484 511.5 DL 304.482 511.5 299.482 511.5 DL +309.482 511.5 304.482 511.5 DL 314.482 511.5 309.482 511.5 DL 316.148 +512.5 316.148 522.5 DL 316.148 511.5 316.148 521.5 DL F1(DCS)300.648 519 +Q 332.146 512.5 332.146 522.5 DL 321.148 522.5 316.148 522.5 DL 322.146 +522.5 317.146 522.5 DL 327.146 522.5 322.146 522.5 DL 332.146 522.5 +327.146 522.5 DL 332.146 511.5 332.146 521.5 DL 321.148 511.5 316.148 +511.5 DL 322.146 511.5 317.146 511.5 DL 327.146 511.5 322.146 511.5 DL +332.146 511.5 327.146 511.5 DL 333.812 512.5 333.812 522.5 DL 333.812 +511.5 333.812 521.5 DL 349.81 512.5 349.81 522.5 DL 338.812 522.5 +333.812 522.5 DL 339.81 522.5 334.81 522.5 DL 344.81 522.5 339.81 522.5 +DL 349.81 522.5 344.81 522.5 DL 349.81 511.5 349.81 521.5 DL 338.812 +511.5 333.812 511.5 DL 339.81 511.5 334.81 511.5 DL 344.81 511.5 339.81 +511.5 DL 349.81 511.5 344.81 511.5 DL 351.476 512.5 351.476 522.5 DL +351.476 511.5 351.476 521.5 DL 367.474 512.5 367.474 522.5 DL 356.476 +522.5 351.476 522.5 DL 357.474 522.5 352.474 522.5 DL 362.474 522.5 +357.474 522.5 DL 367.474 522.5 362.474 522.5 DL 367.474 511.5 367.474 +521.5 DL 356.476 511.5 351.476 511.5 DL 357.474 511.5 352.474 511.5 DL +362.474 511.5 357.474 511.5 DL 367.474 511.5 362.474 511.5 DL F0 -14.329 +12.664(0$ r)321.647 520 T F2(P)-4.664 E 377.14 512.5 377.14 522.5 DL +377.14 511.5 377.14 521.5 DL F4(t)373.25 523 Q 393.138 512.5 393.138 +522.5 DL 382.14 522.5 377.14 522.5 DL 383.138 522.5 378.138 522.5 DL +388.138 522.5 383.138 522.5 DL 393.138 522.5 388.138 522.5 DL 393.138 +511.5 393.138 521.5 DL 382.14 511.5 377.14 511.5 DL 383.138 511.5 +378.138 511.5 DL 388.138 511.5 383.138 511.5 DL 393.138 511.5 388.138 +511.5 DL F1(ST)381.638 519 Q F0(for in)8.664 1 M -.25(va)-.4 G +(lid requests.).25 E 72 528.5 72 538.5 DL 72 527.5 72 537.5 DL 87.998 +528.5 87.998 538.5 DL 77 538.5 72 538.5 DL 77.998 538.5 72.998 538.5 DL +82.998 538.5 77.998 538.5 DL 87.998 538.5 82.998 538.5 DL 87.998 527.5 +87.998 537.5 DL 77 527.5 72 527.5 DL 77.998 527.5 72.998 527.5 DL 82.998 +527.5 77.998 527.5 DL 87.998 527.5 82.998 527.5 DL 89.664 528.5 89.664 +538.5 DL 89.664 527.5 89.664 537.5 DL F1(DCS)74.164 535 Q 105.662 528.5 +105.662 538.5 DL 94.664 538.5 89.664 538.5 DL 95.662 538.5 90.662 538.5 +DL 100.662 538.5 95.662 538.5 DL 105.662 538.5 100.662 538.5 DL 105.662 +527.5 105.662 537.5 DL 94.664 527.5 89.664 527.5 DL 95.662 527.5 90.662 +527.5 DL 100.662 527.5 95.662 527.5 DL 105.662 527.5 100.662 527.5 DL +107.328 528.5 107.328 538.5 DL 107.328 527.5 107.328 537.5 DL 123.326 +528.5 123.326 538.5 DL 112.328 538.5 107.328 538.5 DL 113.326 538.5 +108.326 538.5 DL 118.326 538.5 113.326 538.5 DL 123.326 538.5 118.326 +538.5 DL 123.326 527.5 123.326 537.5 DL 112.328 527.5 107.328 527.5 DL +113.326 527.5 108.326 527.5 DL 118.326 527.5 113.326 527.5 DL 123.326 +527.5 118.326 527.5 DL F0 12.344(+q)94.843 536 S F2(P)-5.179 E 132.992 +528.5 132.992 538.5 DL 132.992 527.5 132.992 537.5 DL F4(t)129.102 539 Q +148.99 528.5 148.99 538.5 DL 137.992 538.5 132.992 538.5 DL 138.99 538.5 +133.99 538.5 DL 143.99 538.5 138.99 538.5 DL 148.99 538.5 143.99 538.5 +DL 148.99 527.5 148.99 537.5 DL 137.992 527.5 132.992 527.5 DL 138.99 +527.5 133.99 527.5 DL 143.99 527.5 138.99 527.5 DL 148.99 527.5 143.99 +527.5 DL F1(ST)137.49 535 Q F0 .507(Request T)35.508 1 N(ermcap/T)-.7 E +.507(erminfo String \(xterm, e)-.7 F 3.007(xperimental\). The)-.15 F +.507(string follo)3.007 F .507(wing the "q" is)-.25 F 3.2(al)180 552 S +.7(ist of names encoded in he)-3.2 F 494.697 544.5 494.697 554.5 DL +494.697 543.5 494.697 553.5 DL .7 +(xadecimal \(2 digits per character\) separated by)300.14 552 R 510.695 +544.5 510.695 554.5 DL 499.697 554.5 494.697 554.5 DL 500.695 554.5 +495.695 554.5 DL 505.695 554.5 500.695 554.5 DL 510.695 554.5 505.695 +554.5 DL 510.695 543.5 510.695 553.5 DL 499.697 543.5 494.697 543.5 DL +500.695 543.5 495.695 543.5 DL 505.695 543.5 500.695 543.5 DL 510.695 +543.5 505.695 543.5 DL 11.474(;w)501.306 552 S(hich)-11.474 E +(correspond to termcap or terminfo k)180 568 Q .3 -.15(ey n)-.1 H(ames.) +.15 E F2(xterm)180 584 Q 264.98 576.5 264.98 586.5 DL 264.98 575.5 +264.98 585.5 DL F0 .46(responds with)205.73 584 R 280.978 576.5 280.978 +586.5 DL 269.98 586.5 264.98 586.5 DL 270.978 586.5 265.978 586.5 DL +275.978 586.5 270.978 586.5 DL 280.978 586.5 275.978 586.5 DL 280.978 +575.5 280.978 585.5 DL 269.98 575.5 264.98 575.5 DL 270.978 575.5 +265.978 575.5 DL 275.978 575.5 270.978 575.5 DL 280.978 575.5 275.978 +575.5 DL 282.644 576.5 282.644 586.5 DL 282.644 575.5 282.644 585.5 DL +F1(DCS)267.144 583 Q 298.642 576.5 298.642 586.5 DL 287.644 586.5 +282.644 586.5 DL 288.642 586.5 283.642 586.5 DL 293.642 586.5 288.642 +586.5 DL 298.642 586.5 293.642 586.5 DL 298.642 575.5 298.642 585.5 DL +287.644 575.5 282.644 575.5 DL 288.642 575.5 283.642 575.5 DL 293.642 +575.5 288.642 575.5 DL 298.642 575.5 293.642 575.5 DL 300.308 576.5 +300.308 586.5 DL 300.308 575.5 300.308 585.5 DL 316.306 576.5 316.306 +586.5 DL 305.308 586.5 300.308 586.5 DL 306.306 586.5 301.306 586.5 DL +311.306 586.5 306.306 586.5 DL 316.306 586.5 311.306 586.5 DL 316.306 +575.5 316.306 585.5 DL 305.308 575.5 300.308 575.5 DL 306.306 575.5 +301.306 575.5 DL 311.306 575.5 306.306 575.5 DL 316.306 575.5 311.306 +575.5 DL 317.972 576.5 317.972 586.5 DL 317.972 575.5 317.972 585.5 DL +333.97 576.5 333.97 586.5 DL 322.972 586.5 317.972 586.5 DL 323.97 586.5 +318.97 586.5 DL 328.97 586.5 323.97 586.5 DL 333.97 586.5 328.97 586.5 +DL 333.97 575.5 333.97 585.5 DL 322.972 575.5 317.972 575.5 DL 323.97 +575.5 318.97 575.5 DL 328.97 575.5 323.97 575.5 DL 333.97 575.5 328.97 +575.5 DL F0 -14.009 12.344(1+ r)288.143 584 T F2(P)-4.344 E 343.636 +576.5 343.636 586.5 DL 343.636 575.5 343.636 585.5 DL F4(t)339.746 587 Q +359.634 576.5 359.634 586.5 DL 348.636 586.5 343.636 586.5 DL 349.634 +586.5 344.634 586.5 DL 354.634 586.5 349.634 586.5 DL 359.634 586.5 +354.634 586.5 DL 359.634 575.5 359.634 585.5 DL 348.636 575.5 343.636 +575.5 DL 349.634 575.5 344.634 575.5 DL 354.634 575.5 349.634 575.5 DL +359.634 575.5 354.634 575.5 DL F1(ST)348.134 583 Q F0 .46(for v)9.124 1 +N .46(alid requests, adding to)-.25 F F2(P)2.96 E F4(t)-2 3 M 502.435 +576.5 502.435 586.5 DL 502.435 575.5 502.435 585.5 DL 518.433 576.5 +518.433 586.5 DL 507.435 586.5 502.435 586.5 DL 508.433 586.5 503.433 +586.5 DL 513.433 586.5 508.433 586.5 DL 518.433 586.5 513.433 586.5 DL +518.433 575.5 518.433 585.5 DL 507.435 575.5 502.435 575.5 DL 508.433 +575.5 503.433 575.5 DL 513.433 575.5 508.433 575.5 DL 518.433 575.5 +513.433 575.5 DL F0 5.64(an =)490.034 584 R 2.961(,a)6.845 G(nd)-2.961 E +.875(the v)180 600 R .875(alue of the corresponding string that xterm w) +-.25 F 443.68 592.5 443.68 602.5 DL 443.68 591.5 443.68 601.5 DL .874 +(ould send, or)386.618 600 R 459.678 592.5 459.678 602.5 DL 448.68 602.5 +443.68 602.5 DL 449.678 602.5 444.678 602.5 DL 454.678 602.5 449.678 +602.5 DL 459.678 602.5 454.678 602.5 DL 459.678 591.5 459.678 601.5 DL +448.68 591.5 443.68 591.5 DL 449.678 591.5 444.678 591.5 DL 454.678 +591.5 449.678 591.5 DL 459.678 591.5 454.678 591.5 DL 461.344 592.5 +461.344 602.5 DL 461.344 591.5 461.344 601.5 DL F1(DCS)445.844 599 Q +477.342 592.5 477.342 602.5 DL 466.344 602.5 461.344 602.5 DL 467.342 +602.5 462.342 602.5 DL 472.342 602.5 467.342 602.5 DL 477.342 602.5 +472.342 602.5 DL 477.342 591.5 477.342 601.5 DL 466.344 591.5 461.344 +591.5 DL 467.342 591.5 462.342 591.5 DL 472.342 591.5 467.342 591.5 DL +477.342 591.5 472.342 591.5 DL 479.008 592.5 479.008 602.5 DL 479.008 +591.5 479.008 601.5 DL 495.006 592.5 495.006 602.5 DL 484.008 602.5 +479.008 602.5 DL 485.006 602.5 480.006 602.5 DL 490.006 602.5 485.006 +602.5 DL 495.006 602.5 490.006 602.5 DL 495.006 591.5 495.006 601.5 DL +484.008 591.5 479.008 591.5 DL 485.006 591.5 480.006 591.5 DL 490.006 +591.5 485.006 591.5 DL 495.006 591.5 490.006 591.5 DL 496.672 592.5 +496.672 602.5 DL 496.672 591.5 496.672 601.5 DL 512.67 592.5 512.67 +602.5 DL 501.672 602.5 496.672 602.5 DL 502.67 602.5 497.67 602.5 DL +507.67 602.5 502.67 602.5 DL 512.67 602.5 507.67 602.5 DL 512.67 591.5 +512.67 601.5 DL 501.672 591.5 496.672 591.5 DL 502.67 591.5 497.67 591.5 +DL 507.67 591.5 502.67 591.5 DL 512.67 591.5 507.67 591.5 DL F0 -14.009 +12.344(0+ r)466.843 600 T F2(P)-4.344 E 522.336 592.5 522.336 602.5 DL +522.336 591.5 522.336 601.5 DL F4(t)518.446 603 Q 538.334 592.5 538.334 +602.5 DL 527.336 602.5 522.336 602.5 DL 528.334 602.5 523.334 602.5 DL +533.334 602.5 528.334 602.5 DL 538.334 602.5 533.334 602.5 DL 538.334 +591.5 538.334 601.5 DL 527.336 591.5 522.336 591.5 DL 528.334 591.5 +523.334 591.5 DL 533.334 591.5 528.334 591.5 DL 538.334 591.5 533.334 +591.5 DL F1(ST)526.834 599 Q F0(for in)180 616 Q -.25(va)-.4 G +(lid requests.).25 E(The strings are encoded in he)5 E +(xadecimal \(2 digits per character\).)-.15 E F3 +(Functions using CSI, order)72 648 Q(ed by the \214nal character\(s\)) +-.18 E 72 656.5 72 666.5 DL 72 655.5 72 665.5 DL 87.998 656.5 87.998 +666.5 DL 77 666.5 72 666.5 DL 77.998 666.5 72.998 666.5 DL 82.998 666.5 +77.998 666.5 DL 87.998 666.5 82.998 666.5 DL 87.998 655.5 87.998 665.5 +DL 77 655.5 72 655.5 DL 77.998 655.5 72.998 655.5 DL 82.998 655.5 77.998 +655.5 DL 87.998 655.5 82.998 655.5 DL F1(CSI)75.331 663 Q F2(P)4.997 1 M +98.552 656.5 98.552 666.5 DL 98.552 655.5 98.552 665.5 DL F4(s)93.774 +667 Q 114.55 656.5 114.55 666.5 DL 103.552 666.5 98.552 666.5 DL 104.55 +666.5 99.55 666.5 DL 109.55 666.5 104.55 666.5 DL 114.55 666.5 109.55 +666.5 DL 114.55 655.5 114.55 665.5 DL 103.552 655.5 98.552 655.5 DL +104.55 655.5 99.55 655.5 DL 109.55 655.5 104.55 655.5 DL 114.55 655.5 +109.55 655.5 DL F0 68.844(@I)101.946 664 S(nsert)-68.844 E F2(P)2.5 E F4 +(s)-2 3 M F0(\(Blank\) Character\(s\) \(def)2.5 -3 M(ault = 1\) \(ICH\)) +-.1 E 72 672.5 72 682.5 DL 72 671.5 72 681.5 DL 87.998 672.5 87.998 +682.5 DL 77 682.5 72 682.5 DL 77.998 682.5 72.998 682.5 DL 82.998 682.5 +77.998 682.5 DL 87.998 682.5 82.998 682.5 DL 87.998 671.5 87.998 681.5 +DL 77 671.5 72 671.5 DL 77.998 671.5 72.998 671.5 DL 82.998 671.5 77.998 +671.5 DL 87.998 671.5 82.998 671.5 DL F1(CSI)75.331 679 Q F2(P)4.997 1 M +98.552 672.5 98.552 682.5 DL 98.552 671.5 98.552 681.5 DL F4(s)93.774 +683 Q 114.55 672.5 114.55 682.5 DL 103.552 682.5 98.552 682.5 DL 104.55 +682.5 99.55 682.5 DL 109.55 682.5 104.55 682.5 DL 114.55 682.5 109.55 +682.5 DL 114.55 671.5 114.55 681.5 DL 103.552 671.5 98.552 671.5 DL +104.55 671.5 99.55 671.5 DL 109.55 671.5 104.55 671.5 DL 114.55 671.5 +109.55 671.5 DL F0 69.839(AC)102.941 680 S(ursor Up)-69.839 E F2(P)2.5 E +F4(s)-2 3 M F0 -.35(Ti)2.5 -3 O(mes \(def).35 E(ault = 1\) \(CUU\))-.1 E +72 688.5 72 698.5 DL 72 687.5 72 697.5 DL 87.998 688.5 87.998 698.5 DL +77 698.5 72 698.5 DL 77.998 698.5 72.998 698.5 DL 82.998 698.5 77.998 +698.5 DL 87.998 698.5 82.998 698.5 DL 87.998 687.5 87.998 697.5 DL 77 +687.5 72 687.5 DL 77.998 687.5 72.998 687.5 DL 82.998 687.5 77.998 687.5 +DL 87.998 687.5 82.998 687.5 DL F1(CSI)75.331 695 Q F2(P)4.997 1 M +98.552 688.5 98.552 698.5 DL 98.552 687.5 98.552 697.5 DL F4(s)93.774 +699 Q 114.55 688.5 114.55 698.5 DL 103.552 698.5 98.552 698.5 DL 104.55 +698.5 99.55 698.5 DL 109.55 698.5 104.55 698.5 DL 114.55 698.5 109.55 +698.5 DL 114.55 687.5 114.55 697.5 DL 103.552 687.5 98.552 687.5 DL +104.55 687.5 99.55 687.5 DL 109.55 687.5 104.55 687.5 DL 114.55 687.5 +109.55 687.5 DL F0 70.114(BC)103.216 696 S(ursor Do)-70.114 E(wn)-.25 E +F2(P)2.5 E F4(s)-2 3 M F0 -.35(Ti)2.5 -3 O(mes \(def).35 E +(ault = 1\) \(CUD\))-.1 E 72 704.5 72 714.5 DL 72 703.5 72 713.5 DL +87.998 704.5 87.998 714.5 DL 77 714.5 72 714.5 DL 77.998 714.5 72.998 +714.5 DL 82.998 714.5 77.998 714.5 DL 87.998 714.5 82.998 714.5 DL +87.998 703.5 87.998 713.5 DL 77 703.5 72 703.5 DL 77.998 703.5 72.998 +703.5 DL 82.998 703.5 77.998 703.5 DL 87.998 703.5 82.998 703.5 DL F1 +(CSI)75.331 711 Q F2(P)4.997 1 M 98.552 704.5 98.552 714.5 DL 98.552 +703.5 98.552 713.5 DL F4(s)93.774 715 Q 114.55 704.5 114.55 714.5 DL +103.552 714.5 98.552 714.5 DL 104.55 714.5 99.55 714.5 DL 109.55 714.5 +104.55 714.5 DL 114.55 714.5 109.55 714.5 DL 114.55 703.5 114.55 713.5 +DL 103.552 703.5 98.552 703.5 DL 104.55 703.5 99.55 703.5 DL 109.55 +703.5 104.55 703.5 DL 114.55 703.5 109.55 703.5 DL F0 70.114(CC)103.216 +712 S(ursor F)-70.114 E(orw)-.15 E(ard)-.1 E F2(P)2.5 E F4(s)-2 3 M F0 +-.35(Ti)2.5 -3 O(mes \(def).35 E(ault = 1\) \(CUF\))-.1 E(4)303.5 772 Q +EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E .4 LW 72 80.5 72 90.5 DL 72 79.5 72 89.5 DL 87.998 80.5 87.998 +90.5 DL 77 90.5 72 90.5 DL 77.998 90.5 72.998 90.5 DL 82.998 90.5 77.998 +90.5 DL 87.998 90.5 82.998 90.5 DL 87.998 79.5 87.998 89.5 DL 77 79.5 72 +79.5 DL 77.998 79.5 72.998 79.5 DL 82.998 79.5 77.998 79.5 DL 87.998 +79.5 82.998 79.5 DL/F1 6/Times-Roman@0 SF(CSI)75.331 87 Q/F2 10 +/Times-Italic@0 SF(P)4.997 1 M 98.552 80.5 98.552 90.5 DL 98.552 79.5 +98.552 89.5 DL/F3 8/Times-Italic@0 SF(s)93.774 91 Q 114.55 80.5 114.55 +90.5 DL 103.552 90.5 98.552 90.5 DL 104.55 90.5 99.55 90.5 DL 109.55 +90.5 104.55 90.5 DL 114.55 90.5 109.55 90.5 DL 114.55 79.5 114.55 89.5 +DL 103.552 79.5 98.552 79.5 DL 104.55 79.5 99.55 79.5 DL 109.55 79.5 +104.55 79.5 DL 114.55 79.5 109.55 79.5 DL F0 69.839(DC)102.941 88 S +(ursor Backw)-69.839 E(ard)-.1 E F2(P)2.5 E F3(s)-2 3 M F0 -.35(Ti)2.5 +-3 O(mes \(def).35 E(ault = 1\) \(CUB\))-.1 E 72 96.5 72 106.5 DL 72 +95.5 72 105.5 DL 87.998 96.5 87.998 106.5 DL 77 106.5 72 106.5 DL 77.998 +106.5 72.998 106.5 DL 82.998 106.5 77.998 106.5 DL 87.998 106.5 82.998 +106.5 DL 87.998 95.5 87.998 105.5 DL 77 95.5 72 95.5 DL 77.998 95.5 +72.998 95.5 DL 82.998 95.5 77.998 95.5 DL 87.998 95.5 82.998 95.5 DL F1 +(CSI)75.331 103 Q F2(P)4.997 1 M 98.552 96.5 98.552 106.5 DL 98.552 95.5 +98.552 105.5 DL F3(s)93.774 107 Q 114.55 96.5 114.55 106.5 DL 103.552 +106.5 98.552 106.5 DL 104.55 106.5 99.55 106.5 DL 109.55 106.5 104.55 +106.5 DL 114.55 106.5 109.55 106.5 DL 114.55 95.5 114.55 105.5 DL +103.552 95.5 98.552 95.5 DL 104.55 95.5 99.55 95.5 DL 109.55 95.5 104.55 +95.5 DL 114.55 95.5 109.55 95.5 DL F0 70.394(EC)103.496 104 S(ursor Ne) +-70.394 E(xt Line)-.15 E F2(P)2.5 E F3(s)-2 3 M F0 -.35(Ti)2.5 -3 O +(mes \(def).35 E(ault = 1\) \(CNL\))-.1 E 72 112.5 72 122.5 DL 72 111.5 +72 121.5 DL 87.998 112.5 87.998 122.5 DL 77 122.5 72 122.5 DL 77.998 +122.5 72.998 122.5 DL 82.998 122.5 77.998 122.5 DL 87.998 122.5 82.998 +122.5 DL 87.998 111.5 87.998 121.5 DL 77 111.5 72 111.5 DL 77.998 111.5 +72.998 111.5 DL 82.998 111.5 77.998 111.5 DL 87.998 111.5 82.998 111.5 +DL F1(CSI)75.331 119 Q F2(P)4.997 1 M 98.552 112.5 98.552 122.5 DL +98.552 111.5 98.552 121.5 DL F3(s)93.774 123 Q 114.55 112.5 114.55 122.5 +DL 103.552 122.5 98.552 122.5 DL 104.55 122.5 99.55 122.5 DL 109.55 +122.5 104.55 122.5 DL 114.55 122.5 109.55 122.5 DL 114.55 111.5 114.55 +121.5 DL 103.552 111.5 98.552 111.5 DL 104.55 111.5 99.55 111.5 DL +109.55 111.5 104.55 111.5 DL 114.55 111.5 109.55 111.5 DL F0 70.669(FC) +103.771 120 S(ursor Preceding Line)-70.669 E F2(P)2.5 E F3(s)-2 3 M F0 +-.35(Ti)2.5 -3 O(mes \(def).35 E(ault = 1\) \(CPL\))-.1 E 72 128.5 72 +138.5 DL 72 127.5 72 137.5 DL 87.998 128.5 87.998 138.5 DL 77 138.5 72 +138.5 DL 77.998 138.5 72.998 138.5 DL 82.998 138.5 77.998 138.5 DL +87.998 138.5 82.998 138.5 DL 87.998 127.5 87.998 137.5 DL 77 127.5 72 +127.5 DL 77.998 127.5 72.998 127.5 DL 82.998 127.5 77.998 127.5 DL +87.998 127.5 82.998 127.5 DL F1(CSI)75.331 135 Q F2(P)4.997 1 M 98.552 +128.5 98.552 138.5 DL 98.552 127.5 98.552 137.5 DL F3(s)93.774 139 Q +114.55 128.5 114.55 138.5 DL 103.552 138.5 98.552 138.5 DL 104.55 138.5 +99.55 138.5 DL 109.55 138.5 104.55 138.5 DL 114.55 138.5 109.55 138.5 DL +114.55 127.5 114.55 137.5 DL 103.552 127.5 98.552 127.5 DL 104.55 127.5 +99.55 127.5 DL 109.55 127.5 104.55 127.5 DL 114.55 127.5 109.55 127.5 DL +F0 69.839(GC)102.941 136 S(ursor Character Absolute)-69.839 E +([column] \(def)5 E(ault = [ro)-.1 E -.65(w,)-.25 G(1]\) \(CHA\)).65 E +72 144.5 72 154.5 DL 72 143.5 72 153.5 DL 87.998 144.5 87.998 154.5 DL +77 154.5 72 154.5 DL 77.998 154.5 72.998 154.5 DL 82.998 154.5 77.998 +154.5 DL 87.998 154.5 82.998 154.5 DL 87.998 143.5 87.998 153.5 DL 77 +143.5 72 143.5 DL 77.998 143.5 72.998 143.5 DL 82.998 143.5 77.998 143.5 +DL 87.998 143.5 82.998 143.5 DL F1(CSI)75.331 151 Q F2(P)4.997 1 M +98.552 144.5 98.552 154.5 DL 98.552 143.5 98.552 153.5 DL F3(s)93.774 +155 Q 114.55 144.5 114.55 154.5 DL 103.552 154.5 98.552 154.5 DL 104.55 +154.5 99.55 154.5 DL 109.55 154.5 104.55 154.5 DL 114.55 154.5 109.55 +154.5 DL 114.55 143.5 114.55 153.5 DL 103.552 143.5 98.552 143.5 DL +104.55 143.5 99.55 143.5 DL 109.55 143.5 104.55 143.5 DL 114.55 143.5 +109.55 143.5 DL F0(;)105.161 152 Q F2(P)8.275 E 125.104 144.5 125.104 +154.5 DL 125.104 143.5 125.104 153.5 DL F3(s)120.326 155 Q 141.102 144.5 +141.102 154.5 DL 130.104 154.5 125.104 154.5 DL 131.102 154.5 126.102 +154.5 DL 136.102 154.5 131.102 154.5 DL 141.102 154.5 136.102 154.5 DL +141.102 143.5 141.102 153.5 DL 130.104 143.5 125.104 143.5 DL 131.102 +143.5 126.102 143.5 DL 136.102 143.5 131.102 143.5 DL 141.102 143.5 +136.102 143.5 DL F0 43.287(HC)129.493 152 S(ursor Position [ro)-43.287 E +(w;column] \(def)-.25 E(ault = [1,1]\) \(CUP\))-.1 E 72 160.5 72 170.5 +DL 72 159.5 72 169.5 DL 87.998 160.5 87.998 170.5 DL 77 170.5 72 170.5 +DL 77.998 170.5 72.998 170.5 DL 82.998 170.5 77.998 170.5 DL 87.998 +170.5 82.998 170.5 DL 87.998 159.5 87.998 169.5 DL 77 159.5 72 159.5 DL +77.998 159.5 72.998 159.5 DL 82.998 159.5 77.998 159.5 DL 87.998 159.5 +82.998 159.5 DL F1(CSI)75.331 167 Q F2(P)4.997 1 M 98.552 160.5 98.552 +170.5 DL 98.552 159.5 98.552 169.5 DL F3(s)93.774 171 Q 114.55 160.5 +114.55 170.5 DL 103.552 170.5 98.552 170.5 DL 104.55 170.5 99.55 170.5 +DL 109.55 170.5 104.55 170.5 DL 114.55 170.5 109.55 170.5 DL 114.55 +159.5 114.55 169.5 DL 103.552 159.5 98.552 159.5 DL 104.55 159.5 99.55 +159.5 DL 109.55 159.5 104.55 159.5 DL 114.55 159.5 109.55 159.5 DL F0 +71.784(IC)104.886 168 S(ursor F)-71.784 E(orw)-.15 E(ard T)-.1 E(ab)-.8 +E(ulation)-.2 E F2(P)2.5 E F3(s)-2 3 M F0(tab stops \(def)2.5 -3 M +(ault = 1\) \(CHT\))-.1 E 72 176.5 72 186.5 DL 72 175.5 72 185.5 DL +87.998 176.5 87.998 186.5 DL 77 186.5 72 186.5 DL 77.998 186.5 72.998 +186.5 DL 82.998 186.5 77.998 186.5 DL 87.998 186.5 82.998 186.5 DL +87.998 175.5 87.998 185.5 DL 77 175.5 72 175.5 DL 77.998 175.5 72.998 +175.5 DL 82.998 175.5 77.998 175.5 DL 87.998 175.5 82.998 175.5 DL F1 +(CSI)75.331 183 Q F2(P)4.997 1 M 98.552 176.5 98.552 186.5 DL 98.552 +175.5 98.552 185.5 DL F3(s)93.774 187 Q 114.55 176.5 114.55 186.5 DL +103.552 186.5 98.552 186.5 DL 104.55 186.5 99.55 186.5 DL 109.55 186.5 +104.55 186.5 DL 114.55 186.5 109.55 186.5 DL 114.55 175.5 114.55 185.5 +DL 103.552 175.5 98.552 175.5 DL 104.55 175.5 99.55 175.5 DL 109.55 +175.5 104.55 175.5 DL 114.55 175.5 109.55 175.5 DL F0 71.504(JE)104.606 +184 S(rase in Display \(ED\))-71.504 E F2(P)185 200 Q F3(s)-2 3 M +202.862 192.5 202.862 202.5 DL 202.862 191.5 202.862 201.5 DL 218.86 +192.5 218.86 202.5 DL 207.862 202.5 202.862 202.5 DL 208.86 202.5 203.86 +202.5 DL 213.86 202.5 208.86 202.5 DL 218.86 202.5 213.86 202.5 DL +218.86 191.5 218.86 201.5 DL 207.862 191.5 202.862 191.5 DL 208.86 191.5 +203.86 191.5 DL 213.86 191.5 208.86 191.5 DL 218.86 191.5 213.86 191.5 +DL F0 7.999(=0)194.722 200 S/F4 10/Symbol SF<ae>1.666 E F0(Erase Belo) +2.5 E 2.5(w\()-.25 G(def)-2.5 E(ault\))-.1 E F2(P)185 216 Q F3(s)-2 3 M +202.862 208.5 202.862 218.5 DL 202.862 207.5 202.862 217.5 DL 218.86 +208.5 218.86 218.5 DL 207.862 218.5 202.862 218.5 DL 208.86 218.5 203.86 +218.5 DL 213.86 218.5 208.86 218.5 DL 218.86 218.5 213.86 218.5 DL +218.86 207.5 218.86 217.5 DL 207.862 207.5 202.862 207.5 DL 208.86 207.5 +203.86 207.5 DL 213.86 207.5 208.86 207.5 DL 218.86 207.5 213.86 207.5 +DL F0 7.999(=1)194.722 216 S F4<ae>1.666 E F0(Erase Abo)2.5 E -.15(ve) +-.15 G F2(P)185 232 Q F3(s)-2 3 M 202.862 224.5 202.862 234.5 DL 202.862 +223.5 202.862 233.5 DL 218.86 224.5 218.86 234.5 DL 207.862 234.5 +202.862 234.5 DL 208.86 234.5 203.86 234.5 DL 213.86 234.5 208.86 234.5 +DL 218.86 234.5 213.86 234.5 DL 218.86 223.5 218.86 233.5 DL 207.862 +223.5 202.862 223.5 DL 208.86 223.5 203.86 223.5 DL 213.86 223.5 208.86 +223.5 DL 218.86 223.5 213.86 223.5 DL F0 7.999(=2)194.722 232 S F4<ae> +1.666 E F0(Erase All)2.5 E F2(P)185 248 Q F3(s)-2 3 M 202.862 240.5 +202.862 250.5 DL 202.862 239.5 202.862 249.5 DL 218.86 240.5 218.86 +250.5 DL 207.862 250.5 202.862 250.5 DL 208.86 250.5 203.86 250.5 DL +213.86 250.5 208.86 250.5 DL 218.86 250.5 213.86 250.5 DL 218.86 239.5 +218.86 249.5 DL 207.862 239.5 202.862 239.5 DL 208.86 239.5 203.86 239.5 +DL 213.86 239.5 208.86 239.5 DL 218.86 239.5 213.86 239.5 DL F0 7.999 +(=3)194.722 248 S F4<ae>1.666 E F0(Erase Sa)2.5 E -.15(ve)-.2 G 2.5(dL) +.15 G(ines \(xterm\))-2.5 E 72 256.5 72 266.5 DL 72 255.5 72 265.5 DL +87.998 256.5 87.998 266.5 DL 77 266.5 72 266.5 DL 77.998 266.5 72.998 +266.5 DL 82.998 266.5 77.998 266.5 DL 87.998 266.5 82.998 266.5 DL +87.998 255.5 87.998 265.5 DL 77 255.5 72 255.5 DL 77.998 255.5 72.998 +255.5 DL 82.998 255.5 77.998 255.5 DL 87.998 255.5 82.998 255.5 DL +89.664 256.5 89.664 266.5 DL 89.664 255.5 89.664 265.5 DL F1(CSI)75.331 +263 Q 105.662 256.5 105.662 266.5 DL 94.664 266.5 89.664 266.5 DL 95.662 +266.5 90.662 266.5 DL 100.662 266.5 95.662 266.5 DL 105.662 266.5 +100.662 266.5 DL 105.662 255.5 105.662 265.5 DL 94.664 255.5 89.664 +255.5 DL 95.662 255.5 90.662 255.5 DL 100.662 255.5 95.662 255.5 DL +105.662 255.5 100.662 255.5 DL F0(?)95.443 264 Q F2(P)7.445 E 116.216 +256.5 116.216 266.5 DL 116.216 255.5 116.216 265.5 DL F3(s)111.438 267 Q +132.214 256.5 132.214 266.5 DL 121.216 266.5 116.216 266.5 DL 122.214 +266.5 117.214 266.5 DL 127.214 266.5 122.214 266.5 DL 132.214 266.5 +127.214 266.5 DL 132.214 255.5 132.214 265.5 DL 121.216 255.5 116.216 +255.5 DL 122.214 255.5 117.214 255.5 DL 127.214 255.5 122.214 255.5 DL +132.214 255.5 127.214 255.5 DL F0 53.84(JE)122.27 264 S +(rase in Display \(DECSED\))-53.84 E F2(P)185 280 Q F3(s)-2 3 M 202.862 +272.5 202.862 282.5 DL 202.862 271.5 202.862 281.5 DL 218.86 272.5 +218.86 282.5 DL 207.862 282.5 202.862 282.5 DL 208.86 282.5 203.86 282.5 +DL 213.86 282.5 208.86 282.5 DL 218.86 282.5 213.86 282.5 DL 218.86 +271.5 218.86 281.5 DL 207.862 271.5 202.862 271.5 DL 208.86 271.5 203.86 +271.5 DL 213.86 271.5 208.86 271.5 DL 218.86 271.5 213.86 271.5 DL F0 +7.999(=0)194.722 280 S F4<ae>1.666 E F0(Selecti)2.5 E .3 -.15(ve E)-.25 +H(rase Belo).15 E 2.5(w\()-.25 G(def)-2.5 E(ault\))-.1 E F2(P)185 296 Q +F3(s)-2 3 M 202.862 288.5 202.862 298.5 DL 202.862 287.5 202.862 297.5 +DL 218.86 288.5 218.86 298.5 DL 207.862 298.5 202.862 298.5 DL 208.86 +298.5 203.86 298.5 DL 213.86 298.5 208.86 298.5 DL 218.86 298.5 213.86 +298.5 DL 218.86 287.5 218.86 297.5 DL 207.862 287.5 202.862 287.5 DL +208.86 287.5 203.86 287.5 DL 213.86 287.5 208.86 287.5 DL 218.86 287.5 +213.86 287.5 DL F0 7.999(=1)194.722 296 S F4<ae>1.666 E F0(Selecti)2.5 E +.3 -.15(ve E)-.25 H(rase Abo).15 E -.15(ve)-.15 G F2(P)185 312 Q F3(s)-2 +3 M 202.862 304.5 202.862 314.5 DL 202.862 303.5 202.862 313.5 DL 218.86 +304.5 218.86 314.5 DL 207.862 314.5 202.862 314.5 DL 208.86 314.5 203.86 +314.5 DL 213.86 314.5 208.86 314.5 DL 218.86 314.5 213.86 314.5 DL +218.86 303.5 218.86 313.5 DL 207.862 303.5 202.862 303.5 DL 208.86 303.5 +203.86 303.5 DL 213.86 303.5 208.86 303.5 DL 218.86 303.5 213.86 303.5 +DL F0 7.999(=2)194.722 312 S F4<ae>1.666 E F0(Selecti)2.5 E .3 -.15 +(ve E)-.25 H(rase All).15 E 72 320.5 72 330.5 DL 72 319.5 72 329.5 DL +87.998 320.5 87.998 330.5 DL 77 330.5 72 330.5 DL 77.998 330.5 72.998 +330.5 DL 82.998 330.5 77.998 330.5 DL 87.998 330.5 82.998 330.5 DL +87.998 319.5 87.998 329.5 DL 77 319.5 72 319.5 DL 77.998 319.5 72.998 +319.5 DL 82.998 319.5 77.998 319.5 DL 87.998 319.5 82.998 319.5 DL F1 +(CSI)75.331 327 Q F2(P)4.997 1 M 98.552 320.5 98.552 330.5 DL 98.552 +319.5 98.552 329.5 DL F3(s)93.774 331 Q 114.55 320.5 114.55 330.5 DL +103.552 330.5 98.552 330.5 DL 104.55 330.5 99.55 330.5 DL 109.55 330.5 +104.55 330.5 DL 114.55 330.5 109.55 330.5 DL 114.55 319.5 114.55 329.5 +DL 103.552 319.5 98.552 319.5 DL 104.55 319.5 99.55 319.5 DL 109.55 +319.5 104.55 319.5 DL 114.55 319.5 109.55 319.5 DL F0 69.839(KE)102.941 +328 S(rase in Line \(EL\))-69.839 E F2(P)185 344 Q F3(s)-2 3 M 202.862 +336.5 202.862 346.5 DL 202.862 335.5 202.862 345.5 DL 218.86 336.5 +218.86 346.5 DL 207.862 346.5 202.862 346.5 DL 208.86 346.5 203.86 346.5 +DL 213.86 346.5 208.86 346.5 DL 218.86 346.5 213.86 346.5 DL 218.86 +335.5 218.86 345.5 DL 207.862 335.5 202.862 335.5 DL 208.86 335.5 203.86 +335.5 DL 213.86 335.5 208.86 335.5 DL 218.86 335.5 213.86 335.5 DL F0 +7.999(=0)194.722 344 S F4<ae>1.666 E F0(Erase to Right \(def)2.5 E +(ault\))-.1 E F2(P)185 360 Q F3(s)-2 3 M 202.862 352.5 202.862 362.5 DL +202.862 351.5 202.862 361.5 DL 218.86 352.5 218.86 362.5 DL 207.862 +362.5 202.862 362.5 DL 208.86 362.5 203.86 362.5 DL 213.86 362.5 208.86 +362.5 DL 218.86 362.5 213.86 362.5 DL 218.86 351.5 218.86 361.5 DL +207.862 351.5 202.862 351.5 DL 208.86 351.5 203.86 351.5 DL 213.86 351.5 +208.86 351.5 DL 218.86 351.5 213.86 351.5 DL F0 7.999(=1)194.722 360 S +F4<ae>1.666 E F0(Erase to Left)2.5 E F2(P)185 376 Q F3(s)-2 3 M 202.862 +368.5 202.862 378.5 DL 202.862 367.5 202.862 377.5 DL 218.86 368.5 +218.86 378.5 DL 207.862 378.5 202.862 378.5 DL 208.86 378.5 203.86 378.5 +DL 213.86 378.5 208.86 378.5 DL 218.86 378.5 213.86 378.5 DL 218.86 +367.5 218.86 377.5 DL 207.862 367.5 202.862 367.5 DL 208.86 367.5 203.86 +367.5 DL 213.86 367.5 208.86 367.5 DL 218.86 367.5 213.86 367.5 DL F0 +7.999(=2)194.722 376 S F4<ae>1.666 E F0(Erase All)2.5 E 72 384.5 72 +394.5 DL 72 383.5 72 393.5 DL 87.998 384.5 87.998 394.5 DL 77 394.5 72 +394.5 DL 77.998 394.5 72.998 394.5 DL 82.998 394.5 77.998 394.5 DL +87.998 394.5 82.998 394.5 DL 87.998 383.5 87.998 393.5 DL 77 383.5 72 +383.5 DL 77.998 383.5 72.998 383.5 DL 82.998 383.5 77.998 383.5 DL +87.998 383.5 82.998 383.5 DL 89.664 384.5 89.664 394.5 DL 89.664 383.5 +89.664 393.5 DL F1(CSI)75.331 391 Q 105.662 384.5 105.662 394.5 DL +94.664 394.5 89.664 394.5 DL 95.662 394.5 90.662 394.5 DL 100.662 394.5 +95.662 394.5 DL 105.662 394.5 100.662 394.5 DL 105.662 383.5 105.662 +393.5 DL 94.664 383.5 89.664 383.5 DL 95.662 383.5 90.662 383.5 DL +100.662 383.5 95.662 383.5 DL 105.662 383.5 100.662 383.5 DL F0(?)95.443 +392 Q F2(P)7.445 E 116.216 384.5 116.216 394.5 DL 116.216 383.5 116.216 +393.5 DL F3(s)111.438 395 Q 132.214 384.5 132.214 394.5 DL 121.216 394.5 +116.216 394.5 DL 122.214 394.5 117.214 394.5 DL 127.214 394.5 122.214 +394.5 DL 132.214 394.5 127.214 394.5 DL 132.214 383.5 132.214 393.5 DL +121.216 383.5 116.216 383.5 DL 122.214 383.5 117.214 383.5 DL 127.214 +383.5 122.214 383.5 DL 132.214 383.5 127.214 383.5 DL F0 52.175(KE) +120.605 392 S(rase in Line \(DECSEL\))-52.175 E F2(P)185 408 Q F3(s)-2 3 +M 202.862 400.5 202.862 410.5 DL 202.862 399.5 202.862 409.5 DL 218.86 +400.5 218.86 410.5 DL 207.862 410.5 202.862 410.5 DL 208.86 410.5 203.86 +410.5 DL 213.86 410.5 208.86 410.5 DL 218.86 410.5 213.86 410.5 DL +218.86 399.5 218.86 409.5 DL 207.862 399.5 202.862 399.5 DL 208.86 399.5 +203.86 399.5 DL 213.86 399.5 208.86 399.5 DL 218.86 399.5 213.86 399.5 +DL F0 7.999(=0)194.722 408 S F4<ae>1.666 E F0(Selecti)2.5 E .3 -.15 +(ve E)-.25 H(rase to Right \(def).15 E(ault\))-.1 E F2(P)185 424 Q F3(s) +-2 3 M 202.862 416.5 202.862 426.5 DL 202.862 415.5 202.862 425.5 DL +218.86 416.5 218.86 426.5 DL 207.862 426.5 202.862 426.5 DL 208.86 426.5 +203.86 426.5 DL 213.86 426.5 208.86 426.5 DL 218.86 426.5 213.86 426.5 +DL 218.86 415.5 218.86 425.5 DL 207.862 415.5 202.862 415.5 DL 208.86 +415.5 203.86 415.5 DL 213.86 415.5 208.86 415.5 DL 218.86 415.5 213.86 +415.5 DL F0 7.999(=1)194.722 424 S F4<ae>1.666 E F0(Selecti)2.5 E .3 +-.15(ve E)-.25 H(rase to Left).15 E F2(P)185 440 Q F3(s)-2 3 M 202.862 +432.5 202.862 442.5 DL 202.862 431.5 202.862 441.5 DL 218.86 432.5 +218.86 442.5 DL 207.862 442.5 202.862 442.5 DL 208.86 442.5 203.86 442.5 +DL 213.86 442.5 208.86 442.5 DL 218.86 442.5 213.86 442.5 DL 218.86 +431.5 218.86 441.5 DL 207.862 431.5 202.862 431.5 DL 208.86 431.5 203.86 +431.5 DL 213.86 431.5 208.86 431.5 DL 218.86 431.5 213.86 431.5 DL F0 +7.999(=2)194.722 440 S F4<ae>1.666 E F0(Selecti)2.5 E .3 -.15(ve E)-.25 +H(rase All).15 E 72 448.5 72 458.5 DL 72 447.5 72 457.5 DL 87.998 448.5 +87.998 458.5 DL 77 458.5 72 458.5 DL 77.998 458.5 72.998 458.5 DL 82.998 +458.5 77.998 458.5 DL 87.998 458.5 82.998 458.5 DL 87.998 447.5 87.998 +457.5 DL 77 447.5 72 447.5 DL 77.998 447.5 72.998 447.5 DL 82.998 447.5 +77.998 447.5 DL 87.998 447.5 82.998 447.5 DL F1(CSI)75.331 455 Q F2(P) +4.997 1 M 98.552 448.5 98.552 458.5 DL 98.552 447.5 98.552 457.5 DL F3 +(s)93.774 459 Q 114.55 448.5 114.55 458.5 DL 103.552 458.5 98.552 458.5 +DL 104.55 458.5 99.55 458.5 DL 109.55 458.5 104.55 458.5 DL 114.55 458.5 +109.55 458.5 DL 114.55 447.5 114.55 457.5 DL 103.552 447.5 98.552 447.5 +DL 104.55 447.5 99.55 447.5 DL 109.55 447.5 104.55 447.5 DL 114.55 447.5 +109.55 447.5 DL F0 70.394(LI)103.496 456 S(nsert)-70.394 E F2(P)2.5 E F3 +(s)-2 3 M F0(Line\(s\) \(def)2.5 -3 M(ault = 1\) \(IL\))-.1 E 72 464.5 +72 474.5 DL 72 463.5 72 473.5 DL 87.998 464.5 87.998 474.5 DL 77 474.5 +72 474.5 DL 77.998 474.5 72.998 474.5 DL 82.998 474.5 77.998 474.5 DL +87.998 474.5 82.998 474.5 DL 87.998 463.5 87.998 473.5 DL 77 463.5 72 +463.5 DL 77.998 463.5 72.998 463.5 DL 82.998 463.5 77.998 463.5 DL +87.998 463.5 82.998 463.5 DL F1(CSI)75.331 471 Q F2(P)4.997 1 M 98.552 +464.5 98.552 474.5 DL 98.552 463.5 98.552 473.5 DL F3(s)93.774 475 Q +114.55 464.5 114.55 474.5 DL 103.552 474.5 98.552 474.5 DL 104.55 474.5 +99.55 474.5 DL 109.55 474.5 104.55 474.5 DL 114.55 474.5 109.55 474.5 DL +114.55 463.5 114.55 473.5 DL 103.552 463.5 98.552 463.5 DL 104.55 463.5 +99.55 463.5 DL 109.55 463.5 104.55 463.5 DL 114.55 463.5 109.55 463.5 DL +F0 69.004(MD)102.106 472 S(elete)-69.004 E F2(P)2.5 E F3(s)-2 3 M F0 +(Line\(s\) \(def)2.5 -3 M(ault = 1\) \(DL\))-.1 E 72 480.5 72 490.5 DL +72 479.5 72 489.5 DL 87.998 480.5 87.998 490.5 DL 77 490.5 72 490.5 DL +77.998 490.5 72.998 490.5 DL 82.998 490.5 77.998 490.5 DL 87.998 490.5 +82.998 490.5 DL 87.998 479.5 87.998 489.5 DL 77 479.5 72 479.5 DL 77.998 +479.5 72.998 479.5 DL 82.998 479.5 77.998 479.5 DL 87.998 479.5 82.998 +479.5 DL F1(CSI)75.331 487 Q F2(P)4.997 1 M 98.552 480.5 98.552 490.5 DL +98.552 479.5 98.552 489.5 DL F3(s)93.774 491 Q 114.55 480.5 114.55 490.5 +DL 103.552 490.5 98.552 490.5 DL 104.55 490.5 99.55 490.5 DL 109.55 +490.5 104.55 490.5 DL 114.55 490.5 109.55 490.5 DL 114.55 479.5 114.55 +489.5 DL 103.552 479.5 98.552 479.5 DL 104.55 479.5 99.55 479.5 DL +109.55 479.5 104.55 479.5 DL 114.55 479.5 109.55 479.5 DL F0 70.669(PD) +103.771 488 S(elete)-70.669 E F2(P)2.5 E F3(s)-2 3 M F0 +(Character\(s\) \(def)2.5 -3 M(ault = 1\) \(DCH\))-.1 E 72 496.5 72 +506.5 DL 72 495.5 72 505.5 DL 87.998 496.5 87.998 506.5 DL 77 506.5 72 +506.5 DL 77.998 506.5 72.998 506.5 DL 82.998 506.5 77.998 506.5 DL +87.998 506.5 82.998 506.5 DL 87.998 495.5 87.998 505.5 DL 77 495.5 72 +495.5 DL 77.998 495.5 72.998 495.5 DL 82.998 495.5 77.998 495.5 DL +87.998 495.5 82.998 495.5 DL F1(CSI)75.331 503 Q F2(P)4.997 1 M 98.552 +496.5 98.552 506.5 DL 98.552 495.5 98.552 505.5 DL F3(s)93.774 507 Q +114.55 496.5 114.55 506.5 DL 103.552 506.5 98.552 506.5 DL 104.55 506.5 +99.55 506.5 DL 109.55 506.5 104.55 506.5 DL 114.55 506.5 109.55 506.5 DL +114.55 495.5 114.55 505.5 DL 103.552 495.5 98.552 495.5 DL 104.55 495.5 +99.55 495.5 DL 109.55 495.5 104.55 495.5 DL 114.55 495.5 109.55 495.5 DL +F0 70.669(SS)103.771 504 S(croll up)-70.669 E F2(P)2.5 E F3(s)-2 3 M F0 +(lines \(def)2.5 -3 M(ault = 1\) \(SU\))-.1 E 72 512.5 72 522.5 DL 72 +511.5 72 521.5 DL 87.998 512.5 87.998 522.5 DL 77 522.5 72 522.5 DL +77.998 522.5 72.998 522.5 DL 82.998 522.5 77.998 522.5 DL 87.998 522.5 +82.998 522.5 DL 87.998 511.5 87.998 521.5 DL 77 511.5 72 511.5 DL 77.998 +511.5 72.998 511.5 DL 82.998 511.5 77.998 511.5 DL 87.998 511.5 82.998 +511.5 DL F1(CSI)75.331 519 Q F2(P)4.997 1 M 98.552 512.5 98.552 522.5 DL +98.552 511.5 98.552 521.5 DL F3(s)93.774 523 Q 114.55 512.5 114.55 522.5 +DL 103.552 522.5 98.552 522.5 DL 104.55 522.5 99.55 522.5 DL 109.55 +522.5 104.55 522.5 DL 114.55 522.5 109.55 522.5 DL 114.55 511.5 114.55 +521.5 DL 103.552 511.5 98.552 511.5 DL 104.55 511.5 99.55 511.5 DL +109.55 511.5 104.55 511.5 DL 114.55 511.5 109.55 511.5 DL F0 70.394(TS) +103.496 520 S(croll do)-70.394 E(wn)-.25 E F2(P)2.5 E F3(s)-2 3 M F0 +(lines \(def)2.5 -3 M(ault = 1\) \(SD\))-.1 E 72 528.5 72 538.5 DL 72 +527.5 72 537.5 DL 87.998 528.5 87.998 538.5 DL 77 538.5 72 538.5 DL +77.998 538.5 72.998 538.5 DL 82.998 538.5 77.998 538.5 DL 87.998 538.5 +82.998 538.5 DL 87.998 527.5 87.998 537.5 DL 77 527.5 72 527.5 DL 77.998 +527.5 72.998 527.5 DL 82.998 527.5 77.998 527.5 DL 87.998 527.5 82.998 +527.5 DL F1(CSI)75.331 535 Q F2(P)4.997 1 M 98.552 528.5 98.552 538.5 DL +98.552 527.5 98.552 537.5 DL F3(s)93.774 539 Q 114.55 528.5 114.55 538.5 +DL 103.552 538.5 98.552 538.5 DL 104.55 538.5 99.55 538.5 DL 109.55 +538.5 104.55 538.5 DL 114.55 538.5 109.55 538.5 DL 114.55 527.5 114.55 +537.5 DL 103.552 527.5 98.552 527.5 DL 104.55 527.5 99.55 527.5 DL +109.55 527.5 104.55 527.5 DL 114.55 527.5 109.55 527.5 DL F0(;)105.161 +536 Q F2(P)8.275 E 125.104 528.5 125.104 538.5 DL 125.104 527.5 125.104 +537.5 DL F3(s)120.326 539 Q 141.102 528.5 141.102 538.5 DL 130.104 538.5 +125.104 538.5 DL 131.102 538.5 126.102 538.5 DL 136.102 538.5 131.102 +538.5 DL 141.102 538.5 136.102 538.5 DL 141.102 527.5 141.102 537.5 DL +130.104 527.5 125.104 527.5 DL 131.102 527.5 126.102 527.5 DL 136.102 +527.5 131.102 527.5 DL 141.102 527.5 136.102 527.5 DL F0(;)131.713 536 Q +F2(P)8.275 E 151.656 528.5 151.656 538.5 DL 151.656 527.5 151.656 537.5 +DL F3(s)146.878 539 Q 167.654 528.5 167.654 538.5 DL 156.656 538.5 +151.656 538.5 DL 157.654 538.5 152.654 538.5 DL 162.654 538.5 157.654 +538.5 DL 167.654 538.5 162.654 538.5 DL 167.654 527.5 167.654 537.5 DL +156.656 527.5 151.656 527.5 DL 157.654 527.5 152.654 527.5 DL 162.654 +527.5 157.654 527.5 DL 167.654 527.5 162.654 527.5 DL F0(;)158.265 536 Q +F2(P)8.275 E 178.208 528.5 178.208 538.5 DL 178.208 527.5 178.208 537.5 +DL F3(s)173.43 539 Q 194.206 528.5 194.206 538.5 DL 183.208 538.5 +178.208 538.5 DL 184.206 538.5 179.206 538.5 DL 189.206 538.5 184.206 +538.5 DL 194.206 538.5 189.206 538.5 DL 194.206 527.5 194.206 537.5 DL +183.208 527.5 178.208 527.5 DL 184.206 527.5 179.206 527.5 DL 189.206 +527.5 184.206 527.5 DL 194.206 527.5 189.206 527.5 DL F0(;)184.817 536 Q +F2(P)8.275 E 204.76 528.5 204.76 538.5 DL 204.76 527.5 204.76 537.5 DL +F3(s)199.982 539 Q 220.758 528.5 220.758 538.5 DL 209.76 538.5 204.76 +538.5 DL 210.758 538.5 205.758 538.5 DL 215.758 538.5 210.758 538.5 DL +220.758 538.5 215.758 538.5 DL 220.758 527.5 220.758 537.5 DL 209.76 +527.5 204.76 527.5 DL 210.758 527.5 205.758 527.5 DL 215.758 527.5 +210.758 527.5 DL 220.758 527.5 215.758 527.5 DL F0(T)209.704 536 Q 1.965 +(Initiate hilite mouse tracking.)180 552 R -.15(Pa)6.966 G 1.966 +(rameters are [func;startx;starty;\214rstro).15 F(w;lastro)-.25 E 4.466 +(w]. See)-.25 F(the section)180 568 Q/F5 10/Times-Bold@0 SF(Mouse T)2.5 +E(racking)-.74 E F0(.)A 72 576.5 72 586.5 DL 72 575.5 72 585.5 DL 87.998 +576.5 87.998 586.5 DL 77 586.5 72 586.5 DL 77.998 586.5 72.998 586.5 DL +82.998 586.5 77.998 586.5 DL 87.998 586.5 82.998 586.5 DL 87.998 575.5 +87.998 585.5 DL 77 575.5 72 575.5 DL 77.998 575.5 72.998 575.5 DL 82.998 +575.5 77.998 575.5 DL 87.998 575.5 82.998 575.5 DL F1(CSI)75.331 583 Q +F2(P)4.997 1 M 98.552 576.5 98.552 586.5 DL 98.552 575.5 98.552 585.5 DL +F3(s)93.774 587 Q 114.55 576.5 114.55 586.5 DL 103.552 586.5 98.552 +586.5 DL 104.55 586.5 99.55 586.5 DL 109.55 586.5 104.55 586.5 DL 114.55 +586.5 109.55 586.5 DL 114.55 575.5 114.55 585.5 DL 103.552 575.5 98.552 +575.5 DL 104.55 575.5 99.55 575.5 DL 109.55 575.5 104.55 575.5 DL 114.55 +575.5 109.55 575.5 DL F0 69.839(XE)102.941 584 S(rase)-69.839 E F2(P)2.5 +E F3(s)-2 3 M F0(Character\(s\) \(def)2.5 -3 M(ault = 1\) \(ECH\))-.1 E +72 592.5 72 602.5 DL 72 591.5 72 601.5 DL 87.998 592.5 87.998 602.5 DL +77 602.5 72 602.5 DL 77.998 602.5 72.998 602.5 DL 82.998 602.5 77.998 +602.5 DL 87.998 602.5 82.998 602.5 DL 87.998 591.5 87.998 601.5 DL 77 +591.5 72 591.5 DL 77.998 591.5 72.998 591.5 DL 82.998 591.5 77.998 591.5 +DL 87.998 591.5 82.998 591.5 DL F1(CSI)75.331 599 Q F2(P)4.997 1 M +98.552 592.5 98.552 602.5 DL 98.552 591.5 98.552 601.5 DL F3(s)93.774 +603 Q 114.55 592.5 114.55 602.5 DL 103.552 602.5 98.552 602.5 DL 104.55 +602.5 99.55 602.5 DL 109.55 602.5 104.55 602.5 DL 114.55 602.5 109.55 +602.5 DL 114.55 591.5 114.55 601.5 DL 103.552 591.5 98.552 591.5 DL +104.55 591.5 99.55 591.5 DL 109.55 591.5 104.55 591.5 DL 114.55 591.5 +109.55 591.5 DL F0 70.394(ZC)103.496 600 S(ursor Backw)-70.394 E(ard T) +-.1 E(ab)-.8 E(ulation)-.2 E F2(P)2.5 E F3(s)-2 3 M F0(tab stops \(def) +2.5 -3 M(ault = 1\) \(CBT\))-.1 E 72 608.5 72 618.5 DL 72 607.5 72 617.5 +DL 87.998 608.5 87.998 618.5 DL 77 618.5 72 618.5 DL 77.998 618.5 72.998 +618.5 DL 82.998 618.5 77.998 618.5 DL 87.998 618.5 82.998 618.5 DL +87.998 607.5 87.998 617.5 DL 77 607.5 72 607.5 DL 77.998 607.5 72.998 +607.5 DL 82.998 607.5 77.998 607.5 DL 87.998 607.5 82.998 607.5 DL F1 +(CSI)75.331 615 Q F2(P)4.997 1 M 101.216 608.5 101.216 618.5 DL 101.216 +607.5 101.216 617.5 DL F3(m)93.774 619 Q 117.214 608.5 117.214 618.5 DL +106.216 618.5 101.216 618.5 DL 107.214 618.5 102.214 618.5 DL 112.214 +618.5 107.214 618.5 DL 117.214 618.5 112.214 618.5 DL 117.214 607.5 +117.214 617.5 DL 106.216 607.5 101.216 607.5 DL 107.214 607.5 102.214 +607.5 DL 112.214 607.5 107.214 607.5 DL 117.214 607.5 112.214 607.5 DL +F0 69.12<9243>107.55 616 S(haracter Position Absolute)-69.12 E +([column] \(def)5 E(ault = [ro)-.1 E -.65(w,)-.25 G(1]\) \(HP).65 E(A\)) +-.92 E 72 624.5 72 634.5 DL 72 623.5 72 633.5 DL 87.998 624.5 87.998 +634.5 DL 77 634.5 72 634.5 DL 77.998 634.5 72.998 634.5 DL 82.998 634.5 +77.998 634.5 DL 87.998 634.5 82.998 634.5 DL 87.998 623.5 87.998 633.5 +DL 77 623.5 72 623.5 DL 77.998 623.5 72.998 623.5 DL 82.998 623.5 77.998 +623.5 DL 87.998 623.5 82.998 623.5 DL F1(CSI)75.331 631 Q F2(P)4.997 1 M +98.552 624.5 98.552 634.5 DL 98.552 623.5 98.552 633.5 DL F3(s)93.774 +635 Q 114.55 624.5 114.55 634.5 DL 103.552 634.5 98.552 634.5 DL 104.55 +634.5 99.55 634.5 DL 109.55 634.5 104.55 634.5 DL 114.55 634.5 109.55 +634.5 DL 114.55 623.5 114.55 633.5 DL 103.552 623.5 98.552 623.5 DL +104.55 623.5 99.55 623.5 DL 109.55 623.5 104.55 623.5 DL 114.55 623.5 +109.55 623.5 DL F0 70.949(bR)104.051 632 S +(epeat the preceding graphic character)-70.949 E F2(P)2.5 E F3(s)-2 3 M +F0(times \(REP\))2.5 -3 M 72 640.5 72 650.5 DL 72 639.5 72 649.5 DL +87.998 640.5 87.998 650.5 DL 77 650.5 72 650.5 DL 77.998 650.5 72.998 +650.5 DL 82.998 650.5 77.998 650.5 DL 87.998 650.5 82.998 650.5 DL +87.998 639.5 87.998 649.5 DL 77 639.5 72 639.5 DL 77.998 639.5 72.998 +639.5 DL 82.998 639.5 77.998 639.5 DL 87.998 639.5 82.998 639.5 DL F1 +(CSI)75.331 647 Q F2(P)4.997 1 M 98.552 640.5 98.552 650.5 DL 98.552 +639.5 98.552 649.5 DL F3(s)93.774 651 Q 114.55 640.5 114.55 650.5 DL +103.552 650.5 98.552 650.5 DL 104.55 650.5 99.55 650.5 DL 109.55 650.5 +104.55 650.5 DL 114.55 650.5 109.55 650.5 DL 114.55 639.5 114.55 649.5 +DL 103.552 639.5 98.552 639.5 DL 104.55 639.5 99.55 639.5 DL 109.55 +639.5 104.55 639.5 DL 114.55 639.5 109.55 639.5 DL F0 71.229(cS)104.331 +648 S(end De)-71.229 E(vice Attrib)-.25 E(utes \(Primary D)-.2 E(A\))-.4 +E F2(P)185 664 Q F3(s)-2 3 M 203.064 656.5 203.064 666.5 DL 203.064 +655.5 203.064 665.5 DL 219.062 656.5 219.062 666.5 DL 208.064 666.5 +203.064 666.5 DL 209.062 666.5 204.062 666.5 DL 214.062 666.5 209.062 +666.5 DL 219.062 666.5 214.062 666.5 DL 219.062 655.5 219.062 665.5 DL +208.064 655.5 203.064 655.5 DL 209.062 655.5 204.062 655.5 DL 214.062 +655.5 209.062 655.5 DL 219.062 655.5 214.062 655.5 DL F0 8.1(=0)194.823 +664 S 2.601(,1o)-.935 G 2.601(ro)-2.601 G(mitted)-2.601 E F4<ae>2.601 E +F0 .101(request attrib)2.601 F .101(utes from terminal.)-.2 F .101 +(The response depends on the)5.101 F F5(decT)180 680 Q(erminalId)-.92 E +F0(resource setting.)2.5 E 197.37 688.5 197.37 698.5 DL 197.37 687.5 +197.37 697.5 DL F4<ae>185 696 Q 213.368 688.5 213.368 698.5 DL 202.37 +698.5 197.37 698.5 DL 203.368 698.5 198.368 698.5 DL 208.368 698.5 +203.368 698.5 DL 213.368 698.5 208.368 698.5 DL 213.368 687.5 213.368 +697.5 DL 202.37 687.5 197.37 687.5 DL 203.368 687.5 198.368 687.5 DL +208.368 687.5 203.368 687.5 DL 213.368 687.5 208.368 687.5 DL 215.034 +688.5 215.034 698.5 DL 215.034 687.5 215.034 697.5 DL F1(CSI)200.701 695 +Q 231.032 688.5 231.032 698.5 DL 220.034 698.5 215.034 698.5 DL 221.032 +698.5 216.032 698.5 DL 226.032 698.5 221.032 698.5 DL 231.032 698.5 +226.032 698.5 DL 231.032 687.5 231.032 697.5 DL 220.034 687.5 215.034 +687.5 DL 221.032 687.5 216.032 687.5 DL 226.032 687.5 221.032 687.5 DL +231.032 687.5 226.032 687.5 DL 232.698 688.5 232.698 698.5 DL 232.698 +687.5 232.698 697.5 DL 248.696 688.5 248.696 698.5 DL 237.698 698.5 +232.698 698.5 DL 238.696 698.5 233.696 698.5 DL 243.696 698.5 238.696 +698.5 DL 248.696 698.5 243.696 698.5 DL 248.696 687.5 248.696 697.5 DL +237.698 687.5 232.698 687.5 DL 238.696 687.5 233.696 687.5 DL 243.696 +687.5 238.696 687.5 DL 248.696 687.5 243.696 687.5 DL 250.362 688.5 +250.362 698.5 DL 250.362 687.5 250.362 697.5 DL 266.36 688.5 266.36 +698.5 DL 255.362 698.5 250.362 698.5 DL 256.36 698.5 251.36 698.5 DL +261.36 698.5 256.36 698.5 DL 266.36 698.5 261.36 698.5 DL 266.36 687.5 +266.36 697.5 DL 255.362 687.5 250.362 687.5 DL 256.36 687.5 251.36 687.5 +DL 261.36 687.5 256.36 687.5 DL 266.36 687.5 261.36 687.5 DL 268.026 +688.5 268.026 698.5 DL 268.026 687.5 268.026 697.5 DL 284.024 688.5 +284.024 698.5 DL 273.026 698.5 268.026 698.5 DL 274.024 698.5 269.024 +698.5 DL 279.024 698.5 274.024 698.5 DL 284.024 698.5 279.024 698.5 DL +284.024 687.5 284.024 697.5 DL 273.026 687.5 268.026 687.5 DL 274.024 +687.5 269.024 687.5 DL 279.024 687.5 274.024 687.5 DL 284.024 687.5 +279.024 687.5 DL 285.69 688.5 285.69 698.5 DL 285.69 687.5 285.69 697.5 +DL 301.688 688.5 301.688 698.5 DL 290.69 698.5 285.69 698.5 DL 291.688 +698.5 286.688 698.5 DL 296.688 698.5 291.688 698.5 DL 301.688 698.5 +296.688 698.5 DL 301.688 687.5 301.688 697.5 DL 290.69 687.5 285.69 +687.5 DL 291.688 687.5 286.688 687.5 DL 296.688 687.5 291.688 687.5 DL +301.688 687.5 296.688 687.5 DL F0 -14.614 12.944(?1 ; 2c)220.813 696 T +(\(`)-2.999 E(`VT100 with Adv)-.74 E(anced V)-.25 E(ideo Option')-.6 E +('\))-.74 E 197.37 704.5 197.37 714.5 DL 197.37 703.5 197.37 713.5 DL F4 +<ae>185 712 Q 213.368 704.5 213.368 714.5 DL 202.37 714.5 197.37 714.5 +DL 203.368 714.5 198.368 714.5 DL 208.368 714.5 203.368 714.5 DL 213.368 +714.5 208.368 714.5 DL 213.368 703.5 213.368 713.5 DL 202.37 703.5 +197.37 703.5 DL 203.368 703.5 198.368 703.5 DL 208.368 703.5 203.368 +703.5 DL 213.368 703.5 208.368 703.5 DL 215.034 704.5 215.034 714.5 DL +215.034 703.5 215.034 713.5 DL F1(CSI)200.701 711 Q 231.032 704.5 +231.032 714.5 DL 220.034 714.5 215.034 714.5 DL 221.032 714.5 216.032 +714.5 DL 226.032 714.5 221.032 714.5 DL 231.032 714.5 226.032 714.5 DL +231.032 703.5 231.032 713.5 DL 220.034 703.5 215.034 703.5 DL 221.032 +703.5 216.032 703.5 DL 226.032 703.5 221.032 703.5 DL 231.032 703.5 +226.032 703.5 DL 232.698 704.5 232.698 714.5 DL 232.698 703.5 232.698 +713.5 DL 248.696 704.5 248.696 714.5 DL 237.698 714.5 232.698 714.5 DL +238.696 714.5 233.696 714.5 DL 243.696 714.5 238.696 714.5 DL 248.696 +714.5 243.696 714.5 DL 248.696 703.5 248.696 713.5 DL 237.698 703.5 +232.698 703.5 DL 238.696 703.5 233.696 703.5 DL 243.696 703.5 238.696 +703.5 DL 248.696 703.5 243.696 703.5 DL 250.362 704.5 250.362 714.5 DL +250.362 703.5 250.362 713.5 DL 266.36 704.5 266.36 714.5 DL 255.362 +714.5 250.362 714.5 DL 256.36 714.5 251.36 714.5 DL 261.36 714.5 256.36 +714.5 DL 266.36 714.5 261.36 714.5 DL 266.36 703.5 266.36 713.5 DL +255.362 703.5 250.362 703.5 DL 256.36 703.5 251.36 703.5 DL 261.36 703.5 +256.36 703.5 DL 266.36 703.5 261.36 703.5 DL 268.026 704.5 268.026 714.5 +DL 268.026 703.5 268.026 713.5 DL 284.024 704.5 284.024 714.5 DL 273.026 +714.5 268.026 714.5 DL 274.024 714.5 269.024 714.5 DL 279.024 714.5 +274.024 714.5 DL 284.024 714.5 279.024 714.5 DL 284.024 703.5 284.024 +713.5 DL 273.026 703.5 268.026 703.5 DL 274.024 703.5 269.024 703.5 DL +279.024 703.5 274.024 703.5 DL 284.024 703.5 279.024 703.5 DL 285.69 +704.5 285.69 714.5 DL 285.69 703.5 285.69 713.5 DL 301.688 704.5 301.688 +714.5 DL 290.69 714.5 285.69 714.5 DL 291.688 714.5 286.688 714.5 DL +296.688 714.5 291.688 714.5 DL 301.688 714.5 296.688 714.5 DL 301.688 +703.5 301.688 713.5 DL 290.69 703.5 285.69 703.5 DL 291.688 703.5 +286.688 703.5 DL 296.688 703.5 291.688 703.5 DL 301.688 703.5 296.688 +703.5 DL F0 -14.614 12.944(?1 ; 0c)220.813 712 T(\(`)-2.999 E +(`VT101 with No Options')-.74 E('\))-.74 E 197.37 720.5 197.37 730.5 DL +197.37 719.5 197.37 729.5 DL F4<ae>185 728 Q 213.368 720.5 213.368 730.5 +DL 202.37 730.5 197.37 730.5 DL 203.368 730.5 198.368 730.5 DL 208.368 +730.5 203.368 730.5 DL 213.368 730.5 208.368 730.5 DL 213.368 719.5 +213.368 729.5 DL 202.37 719.5 197.37 719.5 DL 203.368 719.5 198.368 +719.5 DL 208.368 719.5 203.368 719.5 DL 213.368 719.5 208.368 719.5 DL +215.034 720.5 215.034 730.5 DL 215.034 719.5 215.034 729.5 DL F1(CSI) +200.701 727 Q 231.032 720.5 231.032 730.5 DL 220.034 730.5 215.034 730.5 +DL 221.032 730.5 216.032 730.5 DL 226.032 730.5 221.032 730.5 DL 231.032 +730.5 226.032 730.5 DL 231.032 719.5 231.032 729.5 DL 220.034 719.5 +215.034 719.5 DL 221.032 719.5 216.032 719.5 DL 226.032 719.5 221.032 +719.5 DL 231.032 719.5 226.032 719.5 DL 232.698 720.5 232.698 730.5 DL +232.698 719.5 232.698 729.5 DL 248.696 720.5 248.696 730.5 DL 237.698 +730.5 232.698 730.5 DL 238.696 730.5 233.696 730.5 DL 243.696 730.5 +238.696 730.5 DL 248.696 730.5 243.696 730.5 DL 248.696 719.5 248.696 +729.5 DL 237.698 719.5 232.698 719.5 DL 238.696 719.5 233.696 719.5 DL +243.696 719.5 238.696 719.5 DL 248.696 719.5 243.696 719.5 DL 250.362 +720.5 250.362 730.5 DL 250.362 719.5 250.362 729.5 DL 266.36 720.5 +266.36 730.5 DL 255.362 730.5 250.362 730.5 DL 256.36 730.5 251.36 730.5 +DL 261.36 730.5 256.36 730.5 DL 266.36 730.5 261.36 730.5 DL 266.36 +719.5 266.36 729.5 DL 255.362 719.5 250.362 719.5 DL 256.36 719.5 251.36 +719.5 DL 261.36 719.5 256.36 719.5 DL 266.36 719.5 261.36 719.5 DL F0 +12.944(?6c)220.813 728 S(\(`)-2.999 E(`VT102')-.74 E('\))-.74 E(5)303.5 +772 Q EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E .4 LW 204.384 80.5 204.384 90.5 DL 204.384 79.5 204.384 89.5 DL +/F1 10/Symbol SF<ae>185 88 Q 220.382 80.5 220.382 90.5 DL 209.384 90.5 +204.384 90.5 DL 210.382 90.5 205.382 90.5 DL 215.382 90.5 210.382 90.5 +DL 220.382 90.5 215.382 90.5 DL 220.382 79.5 220.382 89.5 DL 209.384 +79.5 204.384 79.5 DL 210.382 79.5 205.382 79.5 DL 215.382 79.5 210.382 +79.5 DL 220.382 79.5 215.382 79.5 DL 222.048 80.5 222.048 90.5 DL +222.048 79.5 222.048 89.5 DL/F2 6/Times-Roman@0 SF(CSI)207.715 87 Q +238.046 80.5 238.046 90.5 DL 227.048 90.5 222.048 90.5 DL 228.046 90.5 +223.046 90.5 DL 233.046 90.5 228.046 90.5 DL 238.046 90.5 233.046 90.5 +DL 238.046 79.5 238.046 89.5 DL 227.048 79.5 222.048 79.5 DL 228.046 +79.5 223.046 79.5 DL 233.046 79.5 228.046 79.5 DL 238.046 79.5 233.046 +79.5 DL 239.712 80.5 239.712 90.5 DL 239.712 79.5 239.712 89.5 DL 255.71 +80.5 255.71 90.5 DL 244.712 90.5 239.712 90.5 DL 245.71 90.5 240.71 90.5 +DL 250.71 90.5 245.71 90.5 DL 255.71 90.5 250.71 90.5 DL 255.71 79.5 +255.71 89.5 DL 244.712 79.5 239.712 79.5 DL 245.71 79.5 240.71 79.5 DL +250.71 79.5 245.71 79.5 DL 255.71 79.5 250.71 79.5 DL 257.376 80.5 +257.376 90.5 DL 257.376 79.5 257.376 89.5 DL F0 12.944(?6)227.827 88 S +273.374 80.5 273.374 90.5 DL 262.376 90.5 257.376 90.5 DL 263.374 90.5 +258.374 90.5 DL 268.374 90.5 263.374 90.5 DL 273.374 90.5 268.374 90.5 +DL 273.374 79.5 273.374 89.5 DL 262.376 79.5 257.376 79.5 DL 263.374 +79.5 258.374 79.5 DL 268.374 79.5 263.374 79.5 DL 273.374 79.5 268.374 +79.5 DL 275.04 80.5 275.04 90.5 DL 275.04 79.5 275.04 89.5 DL 291.038 +80.5 291.038 90.5 DL 280.04 90.5 275.04 90.5 DL 281.038 90.5 276.038 +90.5 DL 286.038 90.5 281.038 90.5 DL 291.038 90.5 286.038 90.5 DL +291.038 79.5 291.038 89.5 DL 280.04 79.5 275.04 79.5 DL 281.038 79.5 +276.038 79.5 DL 286.038 79.5 281.038 79.5 DL 291.038 79.5 286.038 79.5 +DL 292.704 80.5 292.704 90.5 DL 292.704 79.5 292.704 89.5 DL 308.702 +80.5 308.702 90.5 DL 297.704 90.5 292.704 90.5 DL 298.702 90.5 293.702 +90.5 DL 303.702 90.5 298.702 90.5 DL 308.702 90.5 303.702 90.5 DL +308.702 79.5 308.702 89.5 DL 297.704 79.5 292.704 79.5 DL 298.702 79.5 +293.702 79.5 DL 303.702 79.5 298.702 79.5 DL 308.702 79.5 303.702 79.5 +DL 310.368 80.5 310.368 90.5 DL 310.368 79.5 310.368 89.5 DL 326.366 +80.5 326.366 90.5 DL 315.368 90.5 310.368 90.5 DL 316.366 90.5 311.366 +90.5 DL 321.366 90.5 316.366 90.5 DL 326.366 90.5 321.366 90.5 DL +326.366 79.5 326.366 89.5 DL 315.368 79.5 310.368 79.5 DL 316.366 79.5 +311.366 79.5 DL 321.366 79.5 316.366 79.5 DL 326.366 79.5 321.366 79.5 +DL 328.032 80.5 328.032 90.5 DL 328.032 79.5 328.032 89.5 DL 344.03 80.5 +344.03 90.5 DL 333.032 90.5 328.032 90.5 DL 334.03 90.5 329.03 90.5 DL +339.03 90.5 334.03 90.5 DL 344.03 90.5 339.03 90.5 DL 344.03 79.5 344.03 +89.5 DL 333.032 79.5 328.032 79.5 DL 334.03 79.5 329.03 79.5 DL 339.03 +79.5 334.03 79.5 DL 344.03 79.5 339.03 79.5 DL 345.696 80.5 345.696 90.5 +DL 345.696 79.5 345.696 89.5 DL 361.694 80.5 361.694 90.5 DL 350.696 +90.5 345.696 90.5 DL 351.694 90.5 346.694 90.5 DL 356.694 90.5 351.694 +90.5 DL 361.694 90.5 356.694 90.5 DL 361.694 79.5 361.694 89.5 DL +350.696 79.5 345.696 79.5 DL 351.694 79.5 346.694 79.5 DL 356.694 79.5 +351.694 79.5 DL 361.694 79.5 356.694 79.5 DL 363.36 80.5 363.36 90.5 DL +363.36 79.5 363.36 89.5 DL 379.358 80.5 379.358 90.5 DL 368.36 90.5 +363.36 90.5 DL 369.358 90.5 364.358 90.5 DL 374.358 90.5 369.358 90.5 DL +379.358 90.5 374.358 90.5 DL 379.358 79.5 379.358 89.5 DL 368.36 79.5 +363.36 79.5 DL 369.358 79.5 364.358 79.5 DL 374.358 79.5 369.358 79.5 DL +379.358 79.5 374.358 79.5 DL 381.024 80.5 381.024 90.5 DL 381.024 79.5 +381.024 89.5 DL 397.022 80.5 397.022 90.5 DL 386.024 90.5 381.024 90.5 +DL 387.022 90.5 382.022 90.5 DL 392.022 90.5 387.022 90.5 DL 397.022 +90.5 392.022 90.5 DL 397.022 79.5 397.022 89.5 DL 386.024 79.5 381.024 +79.5 DL 387.022 79.5 382.022 79.5 DL 392.022 79.5 387.022 79.5 DL +397.022 79.5 392.022 79.5 DL 398.688 80.5 398.688 90.5 DL 398.688 79.5 +398.688 89.5 DL 414.686 80.5 414.686 90.5 DL 403.688 90.5 398.688 90.5 +DL 404.686 90.5 399.686 90.5 DL 409.686 90.5 404.686 90.5 DL 414.686 +90.5 409.686 90.5 DL 414.686 79.5 414.686 89.5 DL 403.688 79.5 398.688 +79.5 DL 404.686 79.5 399.686 79.5 DL 409.686 79.5 404.686 79.5 DL +414.686 79.5 409.686 79.5 DL 416.352 80.5 416.352 90.5 DL 416.352 79.5 +416.352 89.5 DL 432.35 80.5 432.35 90.5 DL 421.352 90.5 416.352 90.5 DL +422.35 90.5 417.35 90.5 DL 427.35 90.5 422.35 90.5 DL 432.35 90.5 427.35 +90.5 DL 432.35 79.5 432.35 89.5 DL 421.352 79.5 416.352 79.5 DL 422.35 +79.5 417.35 79.5 DL 427.35 79.5 422.35 79.5 DL 432.35 79.5 427.35 79.5 +DL 434.016 80.5 434.016 90.5 DL 434.016 79.5 434.016 89.5 DL 450.014 +80.5 450.014 90.5 DL 439.016 90.5 434.016 90.5 DL 440.014 90.5 435.014 +90.5 DL 445.014 90.5 440.014 90.5 DL 450.014 90.5 445.014 90.5 DL +450.014 79.5 450.014 89.5 DL 439.016 79.5 434.016 79.5 DL 440.014 79.5 +435.014 79.5 DL 445.014 79.5 440.014 79.5 DL 450.014 79.5 445.014 79.5 +DL 451.68 80.5 451.68 90.5 DL 451.68 79.5 451.68 89.5 DL 467.678 80.5 +467.678 90.5 DL 456.68 90.5 451.68 90.5 DL 457.678 90.5 452.678 90.5 DL +462.678 90.5 457.678 90.5 DL 467.678 90.5 462.678 90.5 DL 467.678 79.5 +467.678 89.5 DL 456.68 79.5 451.68 79.5 DL 457.678 79.5 452.678 79.5 DL +462.678 79.5 457.678 79.5 DL 467.678 79.5 462.678 79.5 DL 469.344 80.5 +469.344 90.5 DL 469.344 79.5 469.344 89.5 DL 485.342 80.5 485.342 90.5 +DL 474.344 90.5 469.344 90.5 DL 475.342 90.5 470.342 90.5 DL 480.342 +90.5 475.342 90.5 DL 485.342 90.5 480.342 90.5 DL 485.342 79.5 485.342 +89.5 DL 474.344 79.5 469.344 79.5 DL 475.342 79.5 470.342 79.5 DL +480.342 79.5 475.342 79.5 DL 485.342 79.5 480.342 79.5 DL 487.008 80.5 +487.008 90.5 DL 487.008 79.5 487.008 89.5 DL 13.774(0;1;2;6;8;9;1) +262.875 88 S 503.006 80.5 503.006 90.5 DL 492.008 90.5 487.008 90.5 DL +493.006 90.5 488.006 90.5 DL 498.006 90.5 493.006 90.5 DL 503.006 90.5 +498.006 90.5 DL 503.006 79.5 503.006 89.5 DL 492.008 79.5 487.008 79.5 +DL 493.006 79.5 488.006 79.5 DL 498.006 79.5 493.006 79.5 DL 503.006 +79.5 498.006 79.5 DL 504.672 80.5 504.672 90.5 DL 504.672 79.5 504.672 +89.5 DL 520.67 80.5 520.67 90.5 DL 509.672 90.5 504.672 90.5 DL 510.67 +90.5 505.67 90.5 DL 515.67 90.5 510.67 90.5 DL 520.67 90.5 515.67 90.5 +DL 520.67 79.5 520.67 89.5 DL 509.672 79.5 504.672 79.5 DL 510.67 79.5 +505.67 79.5 DL 515.67 79.5 510.67 79.5 DL 520.67 79.5 515.67 79.5 DL +522.336 80.5 522.336 90.5 DL 522.336 79.5 522.336 89.5 DL 538.334 80.5 +538.334 90.5 DL 527.336 90.5 522.336 90.5 DL 528.334 90.5 523.334 90.5 +DL 533.334 90.5 528.334 90.5 DL 538.334 90.5 533.334 90.5 DL 538.334 +79.5 538.334 89.5 DL 527.336 79.5 522.336 79.5 DL 528.334 79.5 523.334 +79.5 DL 533.334 79.5 528.334 79.5 DL 538.334 79.5 533.334 79.5 DL +-15.994 13.774(5; c)492.507 88 T(\(`)180 104 Q(`VT220')-.74 E('\))-.74 E +2.313(The VT100-style response parameters do not mean an)180 120 R 2.313 +(ything by themselv)-.15 F 4.813(es. VT220)-.15 F +(parameters do, telling the host what features the terminal supports:) +180 136 Q 197.37 144.5 197.37 154.5 DL 197.37 143.5 197.37 153.5 DL F1 +<ae>185 152 Q 213.368 144.5 213.368 154.5 DL 202.37 154.5 197.37 154.5 +DL 203.368 154.5 198.368 154.5 DL 208.368 154.5 203.368 154.5 DL 213.368 +154.5 208.368 154.5 DL 213.368 143.5 213.368 153.5 DL 202.37 143.5 +197.37 143.5 DL 203.368 143.5 198.368 143.5 DL 208.368 143.5 203.368 +143.5 DL 213.368 143.5 208.368 143.5 DL F0 9.665(11)202.869 152 S +(32-columns)-9.665 E 197.37 160.5 197.37 170.5 DL 197.37 159.5 197.37 +169.5 DL F1<ae>185 168 Q 213.368 160.5 213.368 170.5 DL 202.37 170.5 +197.37 170.5 DL 203.368 170.5 198.368 170.5 DL 208.368 170.5 203.368 +170.5 DL 213.368 170.5 208.368 170.5 DL 213.368 159.5 213.368 169.5 DL +202.37 159.5 197.37 159.5 DL 203.368 159.5 198.368 159.5 DL 208.368 +159.5 203.368 159.5 DL 213.368 159.5 208.368 159.5 DL F0 9.665(2P) +202.869 168 S(rinter)-9.665 E 197.37 176.5 197.37 186.5 DL 197.37 175.5 +197.37 185.5 DL F1<ae>185 184 Q 213.368 176.5 213.368 186.5 DL 202.37 +186.5 197.37 186.5 DL 203.368 186.5 198.368 186.5 DL 208.368 186.5 +203.368 186.5 DL 213.368 186.5 208.368 186.5 DL 213.368 175.5 213.368 +185.5 DL 202.37 175.5 197.37 175.5 DL 203.368 175.5 198.368 175.5 DL +208.368 175.5 203.368 175.5 DL 213.368 175.5 208.368 175.5 DL F0 9.665 +(6S)202.869 184 S(electi)-9.665 E .3 -.15(ve e)-.25 H(rase).15 E 197.37 +192.5 197.37 202.5 DL 197.37 191.5 197.37 201.5 DL F1<ae>185 200 Q +213.368 192.5 213.368 202.5 DL 202.37 202.5 197.37 202.5 DL 203.368 +202.5 198.368 202.5 DL 208.368 202.5 203.368 202.5 DL 213.368 202.5 +208.368 202.5 DL 213.368 191.5 213.368 201.5 DL 202.37 191.5 197.37 +191.5 DL 203.368 191.5 198.368 191.5 DL 208.368 191.5 203.368 191.5 DL +213.368 191.5 208.368 191.5 DL F0 9.665(8U)202.869 200 S(ser)-9.665 E +(-de\214ned k)-.2 E -.15(ey)-.1 G(s).15 E 197.37 208.5 197.37 218.5 DL +197.37 207.5 197.37 217.5 DL F1<ae>185 216 Q 213.368 208.5 213.368 218.5 +DL 202.37 218.5 197.37 218.5 DL 203.368 218.5 198.368 218.5 DL 208.368 +218.5 203.368 218.5 DL 213.368 218.5 208.368 218.5 DL 213.368 207.5 +213.368 217.5 DL 202.37 207.5 197.37 207.5 DL 203.368 207.5 198.368 +207.5 DL 208.368 207.5 203.368 207.5 DL 213.368 207.5 208.368 207.5 DL +F0 9.665(9N)202.869 216 S(ational replacement character sets)-9.665 E +197.37 224.5 197.37 234.5 DL 197.37 223.5 197.37 233.5 DL F1<ae>185 232 +Q 213.368 224.5 213.368 234.5 DL 202.37 234.5 197.37 234.5 DL 203.368 +234.5 198.368 234.5 DL 208.368 234.5 203.368 234.5 DL 213.368 234.5 +208.368 234.5 DL 213.368 223.5 213.368 233.5 DL 202.37 223.5 197.37 +223.5 DL 203.368 223.5 198.368 223.5 DL 208.368 223.5 203.368 223.5 DL +213.368 223.5 208.368 223.5 DL 215.034 224.5 215.034 234.5 DL 215.034 +223.5 215.034 233.5 DL 231.032 224.5 231.032 234.5 DL 220.034 234.5 +215.034 234.5 DL 221.032 234.5 216.032 234.5 DL 226.032 234.5 221.032 +234.5 DL 231.032 234.5 226.032 234.5 DL 231.032 223.5 231.032 233.5 DL +220.034 223.5 215.034 223.5 DL 221.032 223.5 216.032 223.5 DL 226.032 +223.5 221.032 223.5 DL 231.032 223.5 226.032 223.5 DL F0 12.664(15) +202.869 232 S -.7(Te)-2.999 G(chnical characters).7 E 72 240.5 72 250.5 +DL 72 239.5 72 249.5 DL 87.998 240.5 87.998 250.5 DL 77 250.5 72 250.5 +DL 77.998 250.5 72.998 250.5 DL 82.998 250.5 77.998 250.5 DL 87.998 +250.5 82.998 250.5 DL 87.998 239.5 87.998 249.5 DL 77 239.5 72 239.5 DL +77.998 239.5 72.998 239.5 DL 82.998 239.5 77.998 239.5 DL 87.998 239.5 +82.998 239.5 DL 89.664 240.5 89.664 250.5 DL 89.664 239.5 89.664 249.5 +DL F2(CSI)75.331 247 Q 105.662 240.5 105.662 250.5 DL 94.664 250.5 +89.664 250.5 DL 95.662 250.5 90.662 250.5 DL 100.662 250.5 95.662 250.5 +DL 105.662 250.5 100.662 250.5 DL 105.662 239.5 105.662 249.5 DL 94.664 +239.5 89.664 239.5 DL 95.662 239.5 90.662 239.5 DL 100.662 239.5 95.662 +239.5 DL 105.662 239.5 100.662 239.5 DL F0(>)94.843 248 Q/F3 10 +/Times-Italic@0 SF(P)6.845 E 116.216 240.5 116.216 250.5 DL 116.216 +239.5 116.216 249.5 DL/F4 8/Times-Italic@0 SF(s)111.438 251 Q 132.214 +240.5 132.214 250.5 DL 121.216 250.5 116.216 250.5 DL 122.214 250.5 +117.214 250.5 DL 127.214 250.5 122.214 250.5 DL 132.214 250.5 127.214 +250.5 DL 132.214 239.5 132.214 249.5 DL 121.216 239.5 116.216 239.5 DL +122.214 239.5 117.214 239.5 DL 127.214 239.5 122.214 239.5 DL 132.214 +239.5 127.214 239.5 DL F0 53.565(cS)121.995 248 S(end De)-53.565 E +(vice Attrib)-.25 E(utes \(Secondary D)-.2 E(A\))-.4 E F3(P)185 264 Q F4 +(s)-2 3 M 207.078 256.5 207.078 266.5 DL 207.078 255.5 207.078 265.5 DL +223.076 256.5 223.076 266.5 DL 212.078 266.5 207.078 266.5 DL 213.076 +266.5 208.076 266.5 DL 218.076 266.5 213.076 266.5 DL 223.076 266.5 +218.076 266.5 DL 223.076 255.5 223.076 265.5 DL 212.078 255.5 207.078 +255.5 DL 213.076 255.5 208.076 255.5 DL 218.076 255.5 213.076 255.5 DL +223.076 255.5 218.076 255.5 DL F0 10.107(=0)196.83 264 S -7.107 4.608 +(,1 o)-2.942 H 4.609(ro)-4.608 G(mitted)-4.609 E F1<ae>4.609 E F0 2.109 +(request the terminal')4.609 F 4.609(si)-.55 G 2.109 +(denti\214cation code.)-4.609 F 2.109(The response)7.109 F .629 +(depends on the)180 280 R/F5 10/Times-Bold@0 SF(decT)3.129 E(erminalId) +-.92 E F0 .629(resource setting.)3.129 F .628 +(It should apply only to VT220 and up,)5.629 F -.2(bu)180 296 S(t).2 E +F3(xterm)2.5 E F0 -.15(ex)2.5 G(tends this to VT100.).15 E 197.37 304.5 +197.37 314.5 DL 197.37 303.5 197.37 313.5 DL F1<ae>185 312 Q 213.368 +304.5 213.368 314.5 DL 202.37 314.5 197.37 314.5 DL 203.368 314.5 +198.368 314.5 DL 208.368 314.5 203.368 314.5 DL 213.368 314.5 208.368 +314.5 DL 213.368 303.5 213.368 313.5 DL 202.37 303.5 197.37 303.5 DL +203.368 303.5 198.368 303.5 DL 208.368 303.5 203.368 303.5 DL 213.368 +303.5 208.368 303.5 DL F2(CSI)200.701 311 Q F3(P)4.997 1 M 224.81 304.5 +224.81 314.5 DL 224.81 303.5 224.81 313.5 DL F4(p)219.144 315 Q 240.808 +304.5 240.808 314.5 DL 229.81 314.5 224.81 314.5 DL 230.808 314.5 +225.808 314.5 DL 235.808 314.5 230.808 314.5 DL 240.808 314.5 235.808 +314.5 DL 240.808 303.5 240.808 313.5 DL 229.81 303.5 224.81 303.5 DL +230.808 303.5 225.808 303.5 DL 235.808 303.5 230.808 303.5 DL 240.808 +303.5 235.808 303.5 DL F0(;)231.419 312 Q F3(P)8.275 E 251.802 304.5 +251.802 314.5 DL 251.802 303.5 251.802 313.5 DL F4(v)246.584 315 Q 267.8 +304.5 267.8 314.5 DL 256.802 314.5 251.802 314.5 DL 257.8 314.5 252.8 +314.5 DL 262.8 314.5 257.8 314.5 DL 267.8 314.5 262.8 314.5 DL 267.8 +303.5 267.8 313.5 DL 256.802 303.5 251.802 303.5 DL 257.8 303.5 252.8 +303.5 DL 262.8 303.5 257.8 303.5 DL 267.8 303.5 262.8 303.5 DL F0(;) +258.411 312 Q F3(P)8.275 E 278.794 304.5 278.794 314.5 DL 278.794 303.5 +278.794 313.5 DL F4(c)273.576 315 Q 294.792 304.5 294.792 314.5 DL +283.794 314.5 278.794 314.5 DL 284.792 314.5 279.792 314.5 DL 289.792 +314.5 284.792 314.5 DL 294.792 314.5 289.792 314.5 DL 294.792 303.5 +294.792 313.5 DL 283.794 303.5 278.794 303.5 DL 284.792 303.5 279.792 +303.5 DL 289.792 303.5 284.792 303.5 DL 294.792 303.5 289.792 303.5 DL +F0(c)284.573 312 Q(where)180 328 Q F3(P)2.5 E F4(p)-2 3 M F0 +(denotes the terminal type)2.5 -3 M 197.37 336.5 197.37 346.5 DL 197.37 +335.5 197.37 345.5 DL F1<ae>185 344 Q 213.368 336.5 213.368 346.5 DL +202.37 346.5 197.37 346.5 DL 203.368 346.5 198.368 346.5 DL 208.368 +346.5 203.368 346.5 DL 213.368 346.5 208.368 346.5 DL 213.368 335.5 +213.368 345.5 DL 202.37 335.5 197.37 335.5 DL 203.368 335.5 198.368 +335.5 DL 208.368 335.5 203.368 335.5 DL 213.368 335.5 208.368 335.5 DL +F0 9.665(0\()202.869 344 S -.74(``)-9.665 G(VT100').74 E('\))-.74 E +197.37 352.5 197.37 362.5 DL 197.37 351.5 197.37 361.5 DL F1<ae>185 360 +Q 213.368 352.5 213.368 362.5 DL 202.37 362.5 197.37 362.5 DL 203.368 +362.5 198.368 362.5 DL 208.368 362.5 203.368 362.5 DL 213.368 362.5 +208.368 362.5 DL 213.368 351.5 213.368 361.5 DL 202.37 351.5 197.37 +351.5 DL 203.368 351.5 198.368 351.5 DL 208.368 351.5 203.368 351.5 DL +213.368 351.5 208.368 351.5 DL F0 9.665(1\()202.869 360 S -.74(``)-9.665 +G(VT220').74 E('\))-.74 E(and)180 376 Q F3(P)2.869 E F4(v)-2 3 M F0 .369 +(is the \214rmw)2.869 -3 N .369(are v)-.1 F .369(ersion \(for)-.15 F F3 +(xterm)2.869 E F0 2.869(,t)C .369(his is the XFree86 patch number)-2.869 +F 2.87(,s)-.4 G .37(tarting with)-2.87 F 2.507(95\). In)180 392 R 2.507 +(aD)2.507 G .007(EC terminal,)-2.507 F F3(P)2.506 E F4(c)-2 3 M F0 .006 +(indicates the R)2.506 -3 N .006(OM cartridge re)-.4 F .006 +(gistration number and is al)-.15 F -.1(wa)-.1 G(ys).1 E(zero.)180 408 Q +72 416.5 72 426.5 DL 72 415.5 72 425.5 DL 87.998 416.5 87.998 426.5 DL +77 426.5 72 426.5 DL 77.998 426.5 72.998 426.5 DL 82.998 426.5 77.998 +426.5 DL 87.998 426.5 82.998 426.5 DL 87.998 415.5 87.998 425.5 DL 77 +415.5 72 415.5 DL 77.998 415.5 72.998 415.5 DL 82.998 415.5 77.998 415.5 +DL 87.998 415.5 82.998 415.5 DL F2(CSI)75.331 423 Q F3(P)4.997 1 M +101.216 416.5 101.216 426.5 DL 101.216 415.5 101.216 425.5 DL F4(m) +93.774 427 Q 117.214 416.5 117.214 426.5 DL 106.216 426.5 101.216 426.5 +DL 107.214 426.5 102.214 426.5 DL 112.214 426.5 107.214 426.5 DL 117.214 +426.5 112.214 426.5 DL 117.214 415.5 117.214 425.5 DL 106.216 415.5 +101.216 415.5 DL 107.214 415.5 102.214 415.5 DL 112.214 415.5 107.214 +415.5 DL 117.214 415.5 112.214 415.5 DL F0 68.285(dL)106.715 424 S +(ine Position Absolute)-68.285 E([ro)5 E(w] \(def)-.25 E +(ault = [1,column]\) \(VP)-.1 E(A\))-.92 E 72 432.5 72 442.5 DL 72 431.5 +72 441.5 DL 87.998 432.5 87.998 442.5 DL 77 442.5 72 442.5 DL 77.998 +442.5 72.998 442.5 DL 82.998 442.5 77.998 442.5 DL 87.998 442.5 82.998 +442.5 DL 87.998 431.5 87.998 441.5 DL 77 431.5 72 431.5 DL 77.998 431.5 +72.998 431.5 DL 82.998 431.5 77.998 431.5 DL 87.998 431.5 82.998 431.5 +DL F2(CSI)75.331 439 Q F3(P)4.997 1 M 98.552 432.5 98.552 442.5 DL +98.552 431.5 98.552 441.5 DL F4(s)93.774 443 Q 114.55 432.5 114.55 442.5 +DL 103.552 442.5 98.552 442.5 DL 104.55 442.5 99.55 442.5 DL 109.55 +442.5 104.55 442.5 DL 114.55 442.5 109.55 442.5 DL 114.55 431.5 114.55 +441.5 DL 103.552 431.5 98.552 431.5 DL 104.55 431.5 99.55 431.5 DL +109.55 431.5 104.55 431.5 DL 114.55 431.5 109.55 431.5 DL F0(;)105.161 +440 Q F3(P)8.275 E 125.104 432.5 125.104 442.5 DL 125.104 431.5 125.104 +441.5 DL F4(s)120.326 443 Q 141.102 432.5 141.102 442.5 DL 130.104 442.5 +125.104 442.5 DL 131.102 442.5 126.102 442.5 DL 136.102 442.5 131.102 +442.5 DL 141.102 442.5 136.102 442.5 DL 141.102 431.5 141.102 441.5 DL +130.104 431.5 125.104 431.5 DL 131.102 431.5 126.102 431.5 DL 136.102 +431.5 131.102 431.5 DL 141.102 431.5 136.102 431.5 DL F0 45.232(fH) +131.438 440 S(orizontal and V)-45.232 E(ertical Position [ro)-1.11 E +(w;column] \(def)-.25 E(ault = [1,1]\) \(HVP\))-.1 E 72 448.5 72 458.5 +DL 72 447.5 72 457.5 DL 87.998 448.5 87.998 458.5 DL 77 458.5 72 458.5 +DL 77.998 458.5 72.998 458.5 DL 82.998 458.5 77.998 458.5 DL 87.998 +458.5 82.998 458.5 DL 87.998 447.5 87.998 457.5 DL 77 447.5 72 447.5 DL +77.998 447.5 72.998 447.5 DL 82.998 447.5 77.998 447.5 DL 87.998 447.5 +82.998 447.5 DL F2(CSI)75.331 455 Q F3(P)4.997 1 M 98.552 448.5 98.552 +458.5 DL 98.552 447.5 98.552 457.5 DL F4(s)93.774 459 Q 114.55 448.5 +114.55 458.5 DL 103.552 458.5 98.552 458.5 DL 104.55 458.5 99.55 458.5 +DL 109.55 458.5 104.55 458.5 DL 114.55 458.5 109.55 458.5 DL 114.55 +447.5 114.55 457.5 DL 103.552 447.5 98.552 447.5 DL 104.55 447.5 99.55 +447.5 DL 109.55 447.5 104.55 447.5 DL 114.55 447.5 109.55 447.5 DL F0 +70.949(gT)104.051 456 S(ab Clear \(TBC\))-71.749 E F3(P)185 472 Q F4(s) +-2 3 M 202.862 464.5 202.862 474.5 DL 202.862 463.5 202.862 473.5 DL +218.86 464.5 218.86 474.5 DL 207.862 474.5 202.862 474.5 DL 208.86 474.5 +203.86 474.5 DL 213.86 474.5 208.86 474.5 DL 218.86 474.5 213.86 474.5 +DL 218.86 463.5 218.86 473.5 DL 207.862 463.5 202.862 463.5 DL 208.86 +463.5 203.86 463.5 DL 213.86 463.5 208.86 463.5 DL 218.86 463.5 213.86 +463.5 DL F0 7.999(=0)194.722 472 S F1<ae>1.666 E F0 +(Clear Current Column \(def)2.5 E(ault\))-.1 E F3(P)185 488 Q F4(s)-2 3 +M 202.862 480.5 202.862 490.5 DL 202.862 479.5 202.862 489.5 DL 218.86 +480.5 218.86 490.5 DL 207.862 490.5 202.862 490.5 DL 208.86 490.5 203.86 +490.5 DL 213.86 490.5 208.86 490.5 DL 218.86 490.5 213.86 490.5 DL +218.86 479.5 218.86 489.5 DL 207.862 479.5 202.862 479.5 DL 208.86 479.5 +203.86 479.5 DL 213.86 479.5 208.86 479.5 DL 218.86 479.5 213.86 479.5 +DL F0 7.999(=3)194.722 488 S F1<ae>1.666 E F0(Clear All)2.5 E 72 496.5 +72 506.5 DL 72 495.5 72 505.5 DL 87.998 496.5 87.998 506.5 DL 77 506.5 +72 506.5 DL 77.998 506.5 72.998 506.5 DL 82.998 506.5 77.998 506.5 DL +87.998 506.5 82.998 506.5 DL 87.998 495.5 87.998 505.5 DL 77 495.5 72 +495.5 DL 77.998 495.5 72.998 495.5 DL 82.998 495.5 77.998 495.5 DL +87.998 495.5 82.998 495.5 DL F2(CSI)75.331 503 Q F3(P)4.997 1 M 101.216 +496.5 101.216 506.5 DL 101.216 495.5 101.216 505.5 DL F4(m)93.774 507 Q +117.214 496.5 117.214 506.5 DL 106.216 506.5 101.216 506.5 DL 107.214 +506.5 102.214 506.5 DL 112.214 506.5 107.214 506.5 DL 117.214 506.5 +112.214 506.5 DL 117.214 495.5 117.214 505.5 DL 106.216 495.5 101.216 +495.5 DL 107.214 495.5 102.214 495.5 DL 112.214 495.5 107.214 495.5 DL +117.214 495.5 112.214 495.5 DL F0 68.285(hS)106.715 504 S +(et Mode \(SM\))-68.285 E F3(P)185 520 Q F4(s)-2 3 M 202.862 512.5 +202.862 522.5 DL 202.862 511.5 202.862 521.5 DL 218.86 512.5 218.86 +522.5 DL 207.862 522.5 202.862 522.5 DL 208.86 522.5 203.86 522.5 DL +213.86 522.5 208.86 522.5 DL 218.86 522.5 213.86 522.5 DL 218.86 511.5 +218.86 521.5 DL 207.862 511.5 202.862 511.5 DL 208.86 511.5 203.86 511.5 +DL 213.86 511.5 208.86 511.5 DL 218.86 511.5 213.86 511.5 DL F0 7.999 +(=2)194.722 520 S F1<ae>1.666 E F0 -2.15 -.25(Ke y)2.5 H +(board Action Mode \(AM\)).25 E F3(P)185 536 Q F4(s)-2 3 M 202.862 528.5 +202.862 538.5 DL 202.862 527.5 202.862 537.5 DL 218.86 528.5 218.86 +538.5 DL 207.862 538.5 202.862 538.5 DL 208.86 538.5 203.86 538.5 DL +213.86 538.5 208.86 538.5 DL 218.86 538.5 213.86 538.5 DL 218.86 527.5 +218.86 537.5 DL 207.862 527.5 202.862 527.5 DL 208.86 527.5 203.86 527.5 +DL 213.86 527.5 208.86 527.5 DL 218.86 527.5 213.86 527.5 DL F0 7.999 +(=4)194.722 536 S F1<ae>1.666 E F0(Insert Mode \(IRM\))2.5 E F3(P)185 +552 Q F4(s)-2 3 M 202.862 544.5 202.862 554.5 DL 202.862 543.5 202.862 +553.5 DL 218.86 544.5 218.86 554.5 DL 207.862 554.5 202.862 554.5 DL +208.86 554.5 203.86 554.5 DL 213.86 554.5 208.86 554.5 DL 218.86 554.5 +213.86 554.5 DL 218.86 543.5 218.86 553.5 DL 207.862 543.5 202.862 543.5 +DL 208.86 543.5 203.86 543.5 DL 213.86 543.5 208.86 543.5 DL 218.86 +543.5 213.86 543.5 DL 220.526 544.5 220.526 554.5 DL 220.526 543.5 +220.526 553.5 DL 236.524 544.5 236.524 554.5 DL 225.526 554.5 220.526 +554.5 DL 226.524 554.5 221.524 554.5 DL 231.524 554.5 226.524 554.5 DL +236.524 554.5 231.524 554.5 DL 236.524 543.5 236.524 553.5 DL 225.526 +543.5 220.526 543.5 DL 226.524 543.5 221.524 543.5 DL 231.524 543.5 +226.524 543.5 DL 236.524 543.5 231.524 543.5 DL F0 -5.834 7.999(=1 2) +194.722 552 T F1<ae>1.666 E F0(Send/recei)2.5 E .3 -.15(ve \()-.25 H +(SRM\)).15 E F3(P)185 568 Q F4(s)-2 3 M 202.862 560.5 202.862 570.5 DL +202.862 559.5 202.862 569.5 DL 218.86 560.5 218.86 570.5 DL 207.862 +570.5 202.862 570.5 DL 208.86 570.5 203.86 570.5 DL 213.86 570.5 208.86 +570.5 DL 218.86 570.5 213.86 570.5 DL 218.86 559.5 218.86 569.5 DL +207.862 559.5 202.862 559.5 DL 208.86 559.5 203.86 559.5 DL 213.86 559.5 +208.86 559.5 DL 218.86 559.5 213.86 559.5 DL 220.526 560.5 220.526 570.5 +DL 220.526 559.5 220.526 569.5 DL 236.524 560.5 236.524 570.5 DL 225.526 +570.5 220.526 570.5 DL 226.524 570.5 221.524 570.5 DL 231.524 570.5 +226.524 570.5 DL 236.524 570.5 231.524 570.5 DL 236.524 559.5 236.524 +569.5 DL 225.526 559.5 220.526 559.5 DL 226.524 559.5 221.524 559.5 DL +231.524 559.5 226.524 559.5 DL 236.524 559.5 231.524 559.5 DL F0 -5.834 +7.999(=2 0)194.722 568 T F1<ae>1.666 E F0(Automatic Ne)2.5 E +(wline \(LNM\))-.25 E 72 576.5 72 586.5 DL 72 575.5 72 585.5 DL 87.998 +576.5 87.998 586.5 DL 77 586.5 72 586.5 DL 77.998 586.5 72.998 586.5 DL +82.998 586.5 77.998 586.5 DL 87.998 586.5 82.998 586.5 DL 87.998 575.5 +87.998 585.5 DL 77 575.5 72 575.5 DL 77.998 575.5 72.998 575.5 DL 82.998 +575.5 77.998 575.5 DL 87.998 575.5 82.998 575.5 DL 89.664 576.5 89.664 +586.5 DL 89.664 575.5 89.664 585.5 DL F2(CSI)75.331 583 Q 105.662 576.5 +105.662 586.5 DL 94.664 586.5 89.664 586.5 DL 95.662 586.5 90.662 586.5 +DL 100.662 586.5 95.662 586.5 DL 105.662 586.5 100.662 586.5 DL 105.662 +575.5 105.662 585.5 DL 94.664 575.5 89.664 575.5 DL 95.662 575.5 90.662 +575.5 DL 100.662 575.5 95.662 575.5 DL 105.662 575.5 100.662 575.5 DL F0 +(?)95.443 584 Q F3(P)7.445 E 118.88 576.5 118.88 586.5 DL 118.88 575.5 +118.88 585.5 DL F4(m)111.438 587 Q 134.878 576.5 134.878 586.5 DL 123.88 +586.5 118.88 586.5 DL 124.878 586.5 119.878 586.5 DL 129.878 586.5 +124.878 586.5 DL 134.878 586.5 129.878 586.5 DL 134.878 575.5 134.878 +585.5 DL 123.88 575.5 118.88 575.5 DL 124.878 575.5 119.878 575.5 DL +129.878 575.5 124.878 575.5 DL 134.878 575.5 129.878 575.5 DL F0 50.621 +(hD)124.379 584 S(EC Pri)-50.621 E -.25(va)-.25 G +(te Mode Set \(DECSET\)).25 E F3(P)185 600 Q F4(s)-2 3 M 202.862 592.5 +202.862 602.5 DL 202.862 591.5 202.862 601.5 DL 218.86 592.5 218.86 +602.5 DL 207.862 602.5 202.862 602.5 DL 208.86 602.5 203.86 602.5 DL +213.86 602.5 208.86 602.5 DL 218.86 602.5 213.86 602.5 DL 218.86 591.5 +218.86 601.5 DL 207.862 591.5 202.862 591.5 DL 208.86 591.5 203.86 591.5 +DL 213.86 591.5 208.86 591.5 DL 218.86 591.5 213.86 591.5 DL F0 7.999 +(=1)194.722 600 S F1<ae>1.666 E F0(Application Cursor K)2.5 E -.15(ey) +-.25 G 2.5(s\().15 G(DECCKM\))-2.5 E F3(P)185 616 Q F4(s)-2 3 M 203.751 +608.5 203.751 618.5 DL 203.751 607.5 203.751 617.5 DL 219.749 608.5 +219.749 618.5 DL 208.751 618.5 203.751 618.5 DL 209.749 618.5 204.749 +618.5 DL 214.749 618.5 209.749 618.5 DL 219.749 618.5 214.749 618.5 DL +219.749 607.5 219.749 617.5 DL 208.751 607.5 203.751 607.5 DL 209.749 +607.5 204.749 607.5 DL 214.749 607.5 209.749 607.5 DL 219.749 607.5 +214.749 607.5 DL F0 8.444(=2)195.166 616 S F1<ae>1.666 E F0 .445 +(Designate USASCII for character sets G0-G3 \(DECANM\), and set VT100) +2.945 F(mode.)180 632 Q F3(P)185 648 Q F4(s)-2 3 M 202.862 640.5 202.862 +650.5 DL 202.862 639.5 202.862 649.5 DL 218.86 640.5 218.86 650.5 DL +207.862 650.5 202.862 650.5 DL 208.86 650.5 203.86 650.5 DL 213.86 650.5 +208.86 650.5 DL 218.86 650.5 213.86 650.5 DL 218.86 639.5 218.86 649.5 +DL 207.862 639.5 202.862 639.5 DL 208.86 639.5 203.86 639.5 DL 213.86 +639.5 208.86 639.5 DL 218.86 639.5 213.86 639.5 DL F0 7.999(=3)194.722 +648 S F1<ae>1.666 E F0(132 Column Mode \(DECCOLM\))2.5 E F3(P)185 664 Q +F4(s)-2 3 M 202.862 656.5 202.862 666.5 DL 202.862 655.5 202.862 665.5 +DL 218.86 656.5 218.86 666.5 DL 207.862 666.5 202.862 666.5 DL 208.86 +666.5 203.86 666.5 DL 213.86 666.5 208.86 666.5 DL 218.86 666.5 213.86 +666.5 DL 218.86 655.5 218.86 665.5 DL 207.862 655.5 202.862 655.5 DL +208.86 655.5 203.86 655.5 DL 213.86 655.5 208.86 655.5 DL 218.86 655.5 +213.86 655.5 DL F0 7.999(=4)194.722 664 S F1<ae>1.666 E F0(Smooth \(Slo) +2.5 E(w\) Scroll \(DECSCLM\))-.25 E F3(P)185 680 Q F4(s)-2 3 M 202.862 +672.5 202.862 682.5 DL 202.862 671.5 202.862 681.5 DL 218.86 672.5 +218.86 682.5 DL 207.862 682.5 202.862 682.5 DL 208.86 682.5 203.86 682.5 +DL 213.86 682.5 208.86 682.5 DL 218.86 682.5 213.86 682.5 DL 218.86 +671.5 218.86 681.5 DL 207.862 671.5 202.862 671.5 DL 208.86 671.5 203.86 +671.5 DL 213.86 671.5 208.86 671.5 DL 218.86 671.5 213.86 671.5 DL F0 +7.999(=5)194.722 680 S F1<ae>1.666 E F0(Re)2.5 E -.15(ve)-.25 G(rse V) +.15 E(ideo \(DECSCNM\))-.6 E F3(P)185 696 Q F4(s)-2 3 M 202.862 688.5 +202.862 698.5 DL 202.862 687.5 202.862 697.5 DL 218.86 688.5 218.86 +698.5 DL 207.862 698.5 202.862 698.5 DL 208.86 698.5 203.86 698.5 DL +213.86 698.5 208.86 698.5 DL 218.86 698.5 213.86 698.5 DL 218.86 687.5 +218.86 697.5 DL 207.862 687.5 202.862 687.5 DL 208.86 687.5 203.86 687.5 +DL 213.86 687.5 208.86 687.5 DL 218.86 687.5 213.86 687.5 DL F0 7.999 +(=6)194.722 696 S F1<ae>1.666 E F0(Origin Mode \(DECOM\))2.5 E F3(P)185 +712 Q F4(s)-2 3 M 202.862 704.5 202.862 714.5 DL 202.862 703.5 202.862 +713.5 DL 218.86 704.5 218.86 714.5 DL 207.862 714.5 202.862 714.5 DL +208.86 714.5 203.86 714.5 DL 213.86 714.5 208.86 714.5 DL 218.86 714.5 +213.86 714.5 DL 218.86 703.5 218.86 713.5 DL 207.862 703.5 202.862 703.5 +DL 208.86 703.5 203.86 703.5 DL 213.86 703.5 208.86 703.5 DL 218.86 +703.5 213.86 703.5 DL F0 7.999(=7)194.722 712 S F1<ae>1.666 E F0 +(Wraparound Mode \(DECA)2.5 E(WM\))-.9 E F3(P)185 728 Q F4(s)-2 3 M +202.862 720.5 202.862 730.5 DL 202.862 719.5 202.862 729.5 DL 218.86 +720.5 218.86 730.5 DL 207.862 730.5 202.862 730.5 DL 208.86 730.5 203.86 +730.5 DL 213.86 730.5 208.86 730.5 DL 218.86 730.5 213.86 730.5 DL +218.86 719.5 218.86 729.5 DL 207.862 719.5 202.862 719.5 DL 208.86 719.5 +203.86 719.5 DL 213.86 719.5 208.86 719.5 DL 218.86 719.5 213.86 719.5 +DL F0 7.999(=8)194.722 728 S F1<ae>1.666 E F0(Auto-repeat K)2.5 E -.15 +(ey)-.25 G 2.5(s\().15 G(DECARM\))-2.5 E(6)303.5 772 Q EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E/F1 10/Times-Italic@0 SF(P)185 88 Q/F2 8/Times-Italic@0 SF(s)-2 +3 M .4 LW 202.862 80.5 202.862 90.5 DL 202.862 79.5 202.862 89.5 DL +218.86 80.5 218.86 90.5 DL 207.862 90.5 202.862 90.5 DL 208.86 90.5 +203.86 90.5 DL 213.86 90.5 208.86 90.5 DL 218.86 90.5 213.86 90.5 DL +218.86 79.5 218.86 89.5 DL 207.862 79.5 202.862 79.5 DL 208.86 79.5 +203.86 79.5 DL 213.86 79.5 208.86 79.5 DL 218.86 79.5 213.86 79.5 DL F0 +7.999(=9)194.722 88 S/F3 10/Symbol SF<ae>1.666 E F0 +(Send Mouse X & Y on b)2.5 E(utton press.)-.2 E(See the section)5 E/F4 +10/Times-Bold@0 SF(Mouse T)2.5 E(racking)-.74 E F0(.)A F1(P)185 104 Q F2 +(s)-2 3 M 202.862 96.5 202.862 106.5 DL 202.862 95.5 202.862 105.5 DL +218.86 96.5 218.86 106.5 DL 207.862 106.5 202.862 106.5 DL 208.86 106.5 +203.86 106.5 DL 213.86 106.5 208.86 106.5 DL 218.86 106.5 213.86 106.5 +DL 218.86 95.5 218.86 105.5 DL 207.862 95.5 202.862 95.5 DL 208.86 95.5 +203.86 95.5 DL 213.86 95.5 208.86 95.5 DL 218.86 95.5 213.86 95.5 DL +220.526 96.5 220.526 106.5 DL 220.526 95.5 220.526 105.5 DL 236.524 96.5 +236.524 106.5 DL 225.526 106.5 220.526 106.5 DL 226.524 106.5 221.524 +106.5 DL 231.524 106.5 226.524 106.5 DL 236.524 106.5 231.524 106.5 DL +236.524 95.5 236.524 105.5 DL 225.526 95.5 220.526 95.5 DL 226.524 95.5 +221.524 95.5 DL 231.524 95.5 226.524 95.5 DL 236.524 95.5 231.524 95.5 +DL F0 -5.834 7.999(=1 8)194.722 104 T F3<ae>1.666 E F0 +(Print form feed \(DECPFF\))2.5 E F1(P)185 120 Q F2(s)-2 3 M 202.862 +112.5 202.862 122.5 DL 202.862 111.5 202.862 121.5 DL 218.86 112.5 +218.86 122.5 DL 207.862 122.5 202.862 122.5 DL 208.86 122.5 203.86 122.5 +DL 213.86 122.5 208.86 122.5 DL 218.86 122.5 213.86 122.5 DL 218.86 +111.5 218.86 121.5 DL 207.862 111.5 202.862 111.5 DL 208.86 111.5 203.86 +111.5 DL 213.86 111.5 208.86 111.5 DL 218.86 111.5 213.86 111.5 DL +220.526 112.5 220.526 122.5 DL 220.526 111.5 220.526 121.5 DL 236.524 +112.5 236.524 122.5 DL 225.526 122.5 220.526 122.5 DL 226.524 122.5 +221.524 122.5 DL 231.524 122.5 226.524 122.5 DL 236.524 122.5 231.524 +122.5 DL 236.524 111.5 236.524 121.5 DL 225.526 111.5 220.526 111.5 DL +226.524 111.5 221.524 111.5 DL 231.524 111.5 226.524 111.5 DL 236.524 +111.5 231.524 111.5 DL F0 -5.834 7.999(=1 9)194.722 120 T F3<ae>1.666 E +F0(Set print e)2.5 E(xtent to full screen \(DECPEX\))-.15 E F1(P)185 136 +Q F2(s)-2 3 M 202.862 128.5 202.862 138.5 DL 202.862 127.5 202.862 137.5 +DL 218.86 128.5 218.86 138.5 DL 207.862 138.5 202.862 138.5 DL 208.86 +138.5 203.86 138.5 DL 213.86 138.5 208.86 138.5 DL 218.86 138.5 213.86 +138.5 DL 218.86 127.5 218.86 137.5 DL 207.862 127.5 202.862 127.5 DL +208.86 127.5 203.86 127.5 DL 213.86 127.5 208.86 127.5 DL 218.86 127.5 +213.86 127.5 DL 220.526 128.5 220.526 138.5 DL 220.526 127.5 220.526 +137.5 DL 236.524 128.5 236.524 138.5 DL 225.526 138.5 220.526 138.5 DL +226.524 138.5 221.524 138.5 DL 231.524 138.5 226.524 138.5 DL 236.524 +138.5 231.524 138.5 DL 236.524 127.5 236.524 137.5 DL 225.526 127.5 +220.526 127.5 DL 226.524 127.5 221.524 127.5 DL 231.524 127.5 226.524 +127.5 DL 236.524 127.5 231.524 127.5 DL F0 -5.834 7.999(=2 5)194.722 136 +T F3<ae>1.666 E F0(Sho)2.5 E 2.5(wC)-.25 G(ursor \(DECTCEM\))-2.5 E F1 +(P)185 152 Q F2(s)-2 3 M 202.862 144.5 202.862 154.5 DL 202.862 143.5 +202.862 153.5 DL 218.86 144.5 218.86 154.5 DL 207.862 154.5 202.862 +154.5 DL 208.86 154.5 203.86 154.5 DL 213.86 154.5 208.86 154.5 DL +218.86 154.5 213.86 154.5 DL 218.86 143.5 218.86 153.5 DL 207.862 143.5 +202.862 143.5 DL 208.86 143.5 203.86 143.5 DL 213.86 143.5 208.86 143.5 +DL 218.86 143.5 213.86 143.5 DL 220.526 144.5 220.526 154.5 DL 220.526 +143.5 220.526 153.5 DL 236.524 144.5 236.524 154.5 DL 225.526 154.5 +220.526 154.5 DL 226.524 154.5 221.524 154.5 DL 231.524 154.5 226.524 +154.5 DL 236.524 154.5 231.524 154.5 DL 236.524 143.5 236.524 153.5 DL +225.526 143.5 220.526 143.5 DL 226.524 143.5 221.524 143.5 DL 231.524 +143.5 226.524 143.5 DL 236.524 143.5 231.524 143.5 DL F0 -5.834 7.999 +(=3 0)194.722 152 T F3<ae>1.666 E F0(Sho)2.5 E 2.5(ws)-.25 G +(crollbar \(rxvt\).)-2.5 E F1(P)185 168 Q F2(s)-2 3 M 202.862 160.5 +202.862 170.5 DL 202.862 159.5 202.862 169.5 DL 218.86 160.5 218.86 +170.5 DL 207.862 170.5 202.862 170.5 DL 208.86 170.5 203.86 170.5 DL +213.86 170.5 208.86 170.5 DL 218.86 170.5 213.86 170.5 DL 218.86 159.5 +218.86 169.5 DL 207.862 159.5 202.862 159.5 DL 208.86 159.5 203.86 159.5 +DL 213.86 159.5 208.86 159.5 DL 218.86 159.5 213.86 159.5 DL 220.526 +160.5 220.526 170.5 DL 220.526 159.5 220.526 169.5 DL 236.524 160.5 +236.524 170.5 DL 225.526 170.5 220.526 170.5 DL 226.524 170.5 221.524 +170.5 DL 231.524 170.5 226.524 170.5 DL 236.524 170.5 231.524 170.5 DL +236.524 159.5 236.524 169.5 DL 225.526 159.5 220.526 159.5 DL 226.524 +159.5 221.524 159.5 DL 231.524 159.5 226.524 159.5 DL 236.524 159.5 +231.524 159.5 DL F0 -5.834 7.999(=3 5)194.722 168 T F3<ae>1.666 E F0 +(Enable font-shifting functions \(rxvt\).)2.5 E F1(P)185 184 Q F2(s)-2 3 +M 202.862 176.5 202.862 186.5 DL 202.862 175.5 202.862 185.5 DL 218.86 +176.5 218.86 186.5 DL 207.862 186.5 202.862 186.5 DL 208.86 186.5 203.86 +186.5 DL 213.86 186.5 208.86 186.5 DL 218.86 186.5 213.86 186.5 DL +218.86 175.5 218.86 185.5 DL 207.862 175.5 202.862 175.5 DL 208.86 175.5 +203.86 175.5 DL 213.86 175.5 208.86 175.5 DL 218.86 175.5 213.86 175.5 +DL 220.526 176.5 220.526 186.5 DL 220.526 175.5 220.526 185.5 DL 236.524 +176.5 236.524 186.5 DL 225.526 186.5 220.526 186.5 DL 226.524 186.5 +221.524 186.5 DL 231.524 186.5 226.524 186.5 DL 236.524 186.5 231.524 +186.5 DL 236.524 175.5 236.524 185.5 DL 225.526 175.5 220.526 175.5 DL +226.524 175.5 221.524 175.5 DL 231.524 175.5 226.524 175.5 DL 236.524 +175.5 231.524 175.5 DL F0 -5.834 7.999(=3 8)194.722 184 T F3<ae>1.666 E +F0(Enter T)2.5 E(ektronix Mode \(DECTEK\))-.7 E F1(P)185 200 Q F2(s)-2 3 +M 202.862 192.5 202.862 202.5 DL 202.862 191.5 202.862 201.5 DL 218.86 +192.5 218.86 202.5 DL 207.862 202.5 202.862 202.5 DL 208.86 202.5 203.86 +202.5 DL 213.86 202.5 208.86 202.5 DL 218.86 202.5 213.86 202.5 DL +218.86 191.5 218.86 201.5 DL 207.862 191.5 202.862 191.5 DL 208.86 191.5 +203.86 191.5 DL 213.86 191.5 208.86 191.5 DL 218.86 191.5 213.86 191.5 +DL 220.526 192.5 220.526 202.5 DL 220.526 191.5 220.526 201.5 DL 236.524 +192.5 236.524 202.5 DL 225.526 202.5 220.526 202.5 DL 226.524 202.5 +221.524 202.5 DL 231.524 202.5 226.524 202.5 DL 236.524 202.5 231.524 +202.5 DL 236.524 191.5 236.524 201.5 DL 225.526 191.5 220.526 191.5 DL +226.524 191.5 221.524 191.5 DL 231.524 191.5 226.524 191.5 DL 236.524 +191.5 231.524 191.5 DL F0 -5.834 7.999(=4 0)194.722 200 T F3<ae>1.666 E +F0(Allo)2.5 E 2.5(w8)-.25 G(0)-2.5 E F3 -9.87<acae>2.5 G F0(132 Mode) +12.37 E F1(P)185 216 Q F2(s)-2 3 M 202.862 208.5 202.862 218.5 DL +202.862 207.5 202.862 217.5 DL 218.86 208.5 218.86 218.5 DL 207.862 +218.5 202.862 218.5 DL 208.86 218.5 203.86 218.5 DL 213.86 218.5 208.86 +218.5 DL 218.86 218.5 213.86 218.5 DL 218.86 207.5 218.86 217.5 DL +207.862 207.5 202.862 207.5 DL 208.86 207.5 203.86 207.5 DL 213.86 207.5 +208.86 207.5 DL 218.86 207.5 213.86 207.5 DL 220.526 208.5 220.526 218.5 +DL 220.526 207.5 220.526 217.5 DL 236.524 208.5 236.524 218.5 DL 225.526 +218.5 220.526 218.5 DL 226.524 218.5 221.524 218.5 DL 231.524 218.5 +226.524 218.5 DL 236.524 218.5 231.524 218.5 DL 236.524 207.5 236.524 +217.5 DL 225.526 207.5 220.526 207.5 DL 226.524 207.5 221.524 207.5 DL +231.524 207.5 226.524 207.5 DL 236.524 207.5 231.524 207.5 DL F0 -5.834 +7.999(=4 1)194.722 216 T F3<ae>1.666 E F1(mor)2.5 E(e)-.37 E F0 +(\(1\) \214x \(see)A F1(cur)2.5 E(ses)-.1 E F0(resource\))2.5 E F1(P)185 +232 Q F2(s)-2 3 M 202.862 224.5 202.862 234.5 DL 202.862 223.5 202.862 +233.5 DL 218.86 224.5 218.86 234.5 DL 207.862 234.5 202.862 234.5 DL +208.86 234.5 203.86 234.5 DL 213.86 234.5 208.86 234.5 DL 218.86 234.5 +213.86 234.5 DL 218.86 223.5 218.86 233.5 DL 207.862 223.5 202.862 223.5 +DL 208.86 223.5 203.86 223.5 DL 213.86 223.5 208.86 223.5 DL 218.86 +223.5 213.86 223.5 DL 220.526 224.5 220.526 234.5 DL 220.526 223.5 +220.526 233.5 DL 236.524 224.5 236.524 234.5 DL 225.526 234.5 220.526 +234.5 DL 226.524 234.5 221.524 234.5 DL 231.524 234.5 226.524 234.5 DL +236.524 234.5 231.524 234.5 DL 236.524 223.5 236.524 233.5 DL 225.526 +223.5 220.526 223.5 DL 226.524 223.5 221.524 223.5 DL 231.524 223.5 +226.524 223.5 DL 236.524 223.5 231.524 223.5 DL F0 -5.834 7.999(=4 2) +194.722 232 T F3<ae>1.666 E F0 +(Enable Nation Replacement Character sets \(DECNRCM\))2.5 E F1(P)185 248 +Q F2(s)-2 3 M 202.862 240.5 202.862 250.5 DL 202.862 239.5 202.862 249.5 +DL 218.86 240.5 218.86 250.5 DL 207.862 250.5 202.862 250.5 DL 208.86 +250.5 203.86 250.5 DL 213.86 250.5 208.86 250.5 DL 218.86 250.5 213.86 +250.5 DL 218.86 239.5 218.86 249.5 DL 207.862 239.5 202.862 239.5 DL +208.86 239.5 203.86 239.5 DL 213.86 239.5 208.86 239.5 DL 218.86 239.5 +213.86 239.5 DL 220.526 240.5 220.526 250.5 DL 220.526 239.5 220.526 +249.5 DL 236.524 240.5 236.524 250.5 DL 225.526 250.5 220.526 250.5 DL +226.524 250.5 221.524 250.5 DL 231.524 250.5 226.524 250.5 DL 236.524 +250.5 231.524 250.5 DL 236.524 239.5 236.524 249.5 DL 225.526 239.5 +220.526 239.5 DL 226.524 239.5 221.524 239.5 DL 231.524 239.5 226.524 +239.5 DL 236.524 239.5 231.524 239.5 DL F0 -5.834 7.999(=4 4)194.722 248 +T F3<ae>1.666 E F0 -.45(Tu)2.5 G(rn On Mar).45 E(gin Bell)-.18 E F1(P) +185 264 Q F2(s)-2 3 M 202.862 256.5 202.862 266.5 DL 202.862 255.5 +202.862 265.5 DL 218.86 256.5 218.86 266.5 DL 207.862 266.5 202.862 +266.5 DL 208.86 266.5 203.86 266.5 DL 213.86 266.5 208.86 266.5 DL +218.86 266.5 213.86 266.5 DL 218.86 255.5 218.86 265.5 DL 207.862 255.5 +202.862 255.5 DL 208.86 255.5 203.86 255.5 DL 213.86 255.5 208.86 255.5 +DL 218.86 255.5 213.86 255.5 DL 220.526 256.5 220.526 266.5 DL 220.526 +255.5 220.526 265.5 DL 236.524 256.5 236.524 266.5 DL 225.526 266.5 +220.526 266.5 DL 226.524 266.5 221.524 266.5 DL 231.524 266.5 226.524 +266.5 DL 236.524 266.5 231.524 266.5 DL 236.524 255.5 236.524 265.5 DL +225.526 255.5 220.526 255.5 DL 226.524 255.5 221.524 255.5 DL 231.524 +255.5 226.524 255.5 DL 236.524 255.5 231.524 255.5 DL F0 -5.834 7.999 +(=4 5)194.722 264 T F3<ae>1.666 E F0(Re)2.5 E -.15(ve)-.25 G +(rse-wraparound Mode).15 E F1(P)185 280 Q F2(s)-2 3 M 202.862 272.5 +202.862 282.5 DL 202.862 271.5 202.862 281.5 DL 218.86 272.5 218.86 +282.5 DL 207.862 282.5 202.862 282.5 DL 208.86 282.5 203.86 282.5 DL +213.86 282.5 208.86 282.5 DL 218.86 282.5 213.86 282.5 DL 218.86 271.5 +218.86 281.5 DL 207.862 271.5 202.862 271.5 DL 208.86 271.5 203.86 271.5 +DL 213.86 271.5 208.86 271.5 DL 218.86 271.5 213.86 271.5 DL 220.526 +272.5 220.526 282.5 DL 220.526 271.5 220.526 281.5 DL 236.524 272.5 +236.524 282.5 DL 225.526 282.5 220.526 282.5 DL 226.524 282.5 221.524 +282.5 DL 231.524 282.5 226.524 282.5 DL 236.524 282.5 231.524 282.5 DL +236.524 271.5 236.524 281.5 DL 225.526 271.5 220.526 271.5 DL 226.524 +271.5 221.524 271.5 DL 231.524 271.5 226.524 271.5 DL 236.524 271.5 +231.524 271.5 DL F0 -5.834 7.999(=4 6)194.722 280 T F3<ae>1.666 E F0 +(Start Logging \(normally disabled by a compile-time option\))2.5 E F1 +(P)185 296 Q F2(s)-2 3 M 208.512 288.5 208.512 298.5 DL 208.512 287.5 +208.512 297.5 DL 224.51 288.5 224.51 298.5 DL 213.512 298.5 208.512 +298.5 DL 214.51 298.5 209.51 298.5 DL 219.51 298.5 214.51 298.5 DL +224.51 298.5 219.51 298.5 DL 224.51 287.5 224.51 297.5 DL 213.512 287.5 +208.512 287.5 DL 214.51 287.5 209.51 287.5 DL 219.51 287.5 214.51 287.5 +DL 224.51 287.5 219.51 287.5 DL 226.176 288.5 226.176 298.5 DL 226.176 +287.5 226.176 297.5 DL 242.174 288.5 242.174 298.5 DL 231.176 298.5 +226.176 298.5 DL 232.174 298.5 227.174 298.5 DL 237.174 298.5 232.174 +298.5 DL 242.174 298.5 237.174 298.5 DL 242.174 287.5 242.174 297.5 DL +231.176 287.5 226.176 287.5 DL 232.174 287.5 227.174 287.5 DL 237.174 +287.5 232.174 287.5 DL 242.174 287.5 237.174 287.5 DL F0 -11.484 10.824 +(=4 7)197.547 296 T F3<ae>1.666 E F0 2.825(Use Alternate Screen Buf) +5.325 F 2.825(fer \(unless disabled by the)-.25 F F4(titeInhibit)5.325 E +F0(resource\))180 312 Q F1(P)185 328 Q F2(s)-2 3 M 202.862 320.5 202.862 +330.5 DL 202.862 319.5 202.862 329.5 DL 218.86 320.5 218.86 330.5 DL +207.862 330.5 202.862 330.5 DL 208.86 330.5 203.86 330.5 DL 213.86 330.5 +208.86 330.5 DL 218.86 330.5 213.86 330.5 DL 218.86 319.5 218.86 329.5 +DL 207.862 319.5 202.862 319.5 DL 208.86 319.5 203.86 319.5 DL 213.86 +319.5 208.86 319.5 DL 218.86 319.5 213.86 319.5 DL 220.526 320.5 220.526 +330.5 DL 220.526 319.5 220.526 329.5 DL 236.524 320.5 236.524 330.5 DL +225.526 330.5 220.526 330.5 DL 226.524 330.5 221.524 330.5 DL 231.524 +330.5 226.524 330.5 DL 236.524 330.5 231.524 330.5 DL 236.524 319.5 +236.524 329.5 DL 225.526 319.5 220.526 319.5 DL 226.524 319.5 221.524 +319.5 DL 231.524 319.5 226.524 319.5 DL 236.524 319.5 231.524 319.5 DL +F0 -5.834 7.999(=6 6)194.722 328 T F3<ae>1.666 E F0(Application k)2.5 E +-.15(ey)-.1 G(pad \(DECNKM\)).15 E F1(P)185 344 Q F2(s)-2 3 M 202.862 +336.5 202.862 346.5 DL 202.862 335.5 202.862 345.5 DL 218.86 336.5 +218.86 346.5 DL 207.862 346.5 202.862 346.5 DL 208.86 346.5 203.86 346.5 +DL 213.86 346.5 208.86 346.5 DL 218.86 346.5 213.86 346.5 DL 218.86 +335.5 218.86 345.5 DL 207.862 335.5 202.862 335.5 DL 208.86 335.5 203.86 +335.5 DL 213.86 335.5 208.86 335.5 DL 218.86 335.5 213.86 335.5 DL +220.526 336.5 220.526 346.5 DL 220.526 335.5 220.526 345.5 DL 236.524 +336.5 236.524 346.5 DL 225.526 346.5 220.526 346.5 DL 226.524 346.5 +221.524 346.5 DL 231.524 346.5 226.524 346.5 DL 236.524 346.5 231.524 +346.5 DL 236.524 335.5 236.524 345.5 DL 225.526 335.5 220.526 335.5 DL +226.524 335.5 221.524 335.5 DL 231.524 335.5 226.524 335.5 DL 236.524 +335.5 231.524 335.5 DL F0 -5.834 7.999(=6 7)194.722 344 T F3<ae>1.666 E +F0(Backarro)2.5 E 2.5(wk)-.25 G .3 -.15(ey s)-2.6 H +(ends delete \(DECBKM\)).15 E F1(P)185 360 Q F2(s)-2 3 M 203.648 352.5 +203.648 362.5 DL 203.648 351.5 203.648 361.5 DL 219.646 352.5 219.646 +362.5 DL 208.648 362.5 203.648 362.5 DL 209.646 362.5 204.646 362.5 DL +214.646 362.5 209.646 362.5 DL 219.646 362.5 214.646 362.5 DL 219.646 +351.5 219.646 361.5 DL 208.648 351.5 203.648 351.5 DL 209.646 351.5 +204.646 351.5 DL 214.646 351.5 209.646 351.5 DL 219.646 351.5 214.646 +351.5 DL 221.312 352.5 221.312 362.5 DL 221.312 351.5 221.312 361.5 DL +237.31 352.5 237.31 362.5 DL 226.312 362.5 221.312 362.5 DL 227.31 362.5 +222.31 362.5 DL 232.31 362.5 227.31 362.5 DL 237.31 362.5 232.31 362.5 +DL 237.31 351.5 237.31 361.5 DL 226.312 351.5 221.312 351.5 DL 227.31 +351.5 222.31 351.5 DL 232.31 351.5 227.31 351.5 DL 237.31 351.5 232.31 +351.5 DL 238.976 352.5 238.976 362.5 DL 238.976 351.5 238.976 361.5 DL +254.974 352.5 254.974 362.5 DL 243.976 362.5 238.976 362.5 DL 244.974 +362.5 239.974 362.5 DL 249.974 362.5 244.974 362.5 DL 254.974 362.5 +249.974 362.5 DL 254.974 351.5 254.974 361.5 DL 243.976 351.5 238.976 +351.5 DL 244.974 351.5 239.974 351.5 DL 249.974 351.5 244.974 351.5 DL +254.974 351.5 249.974 351.5 DL 256.64 352.5 256.64 362.5 DL 256.64 351.5 +256.64 361.5 DL 272.638 352.5 272.638 362.5 DL 261.64 362.5 256.64 362.5 +DL 262.638 362.5 257.638 362.5 DL 267.638 362.5 262.638 362.5 DL 272.638 +362.5 267.638 362.5 DL 272.638 351.5 272.638 361.5 DL 261.64 351.5 +256.64 351.5 DL 262.638 351.5 257.638 351.5 DL 267.638 351.5 262.638 +351.5 DL 272.638 351.5 267.638 351.5 DL F0 -6.62 8.392(=1 0 0 0)195.115 +360 T F3<ae>1.667 E F0 .394(Send Mouse X & Y on b)2.894 F .394 +(utton press and release.)-.2 F .394(See the sec-)5.394 F(tion)180 376 Q +F4(Mouse T)2.5 E(racking)-.74 E F0(.)A F1(P)185 392 Q F2(s)-2 3 M +202.862 384.5 202.862 394.5 DL 202.862 383.5 202.862 393.5 DL 218.86 +384.5 218.86 394.5 DL 207.862 394.5 202.862 394.5 DL 208.86 394.5 203.86 +394.5 DL 213.86 394.5 208.86 394.5 DL 218.86 394.5 213.86 394.5 DL +218.86 383.5 218.86 393.5 DL 207.862 383.5 202.862 383.5 DL 208.86 383.5 +203.86 383.5 DL 213.86 383.5 208.86 383.5 DL 218.86 383.5 213.86 383.5 +DL 220.526 384.5 220.526 394.5 DL 220.526 383.5 220.526 393.5 DL 236.524 +384.5 236.524 394.5 DL 225.526 394.5 220.526 394.5 DL 226.524 394.5 +221.524 394.5 DL 231.524 394.5 226.524 394.5 DL 236.524 394.5 231.524 +394.5 DL 236.524 383.5 236.524 393.5 DL 225.526 383.5 220.526 383.5 DL +226.524 383.5 221.524 383.5 DL 231.524 383.5 226.524 383.5 DL 236.524 +383.5 231.524 383.5 DL 238.19 384.5 238.19 394.5 DL 238.19 383.5 238.19 +393.5 DL 254.188 384.5 254.188 394.5 DL 243.19 394.5 238.19 394.5 DL +244.188 394.5 239.188 394.5 DL 249.188 394.5 244.188 394.5 DL 254.188 +394.5 249.188 394.5 DL 254.188 383.5 254.188 393.5 DL 243.19 383.5 +238.19 383.5 DL 244.188 383.5 239.188 383.5 DL 249.188 383.5 244.188 +383.5 DL 254.188 383.5 249.188 383.5 DL 255.854 384.5 255.854 394.5 DL +255.854 383.5 255.854 393.5 DL 271.852 384.5 271.852 394.5 DL 260.854 +394.5 255.854 394.5 DL 261.852 394.5 256.852 394.5 DL 266.852 394.5 +261.852 394.5 DL 271.852 394.5 266.852 394.5 DL 271.852 383.5 271.852 +393.5 DL 260.854 383.5 255.854 383.5 DL 261.852 383.5 256.852 383.5 DL +266.852 383.5 261.852 383.5 DL 271.852 383.5 266.852 383.5 DL F0 -5.834 +7.999(=1 0 0 1)194.722 392 T F3<ae>1.666 E F0(Use Hilite Mouse T)2.5 E +(racking.)-.35 E F1(P)185 408 Q F2(s)-2 3 M 202.862 400.5 202.862 410.5 +DL 202.862 399.5 202.862 409.5 DL 218.86 400.5 218.86 410.5 DL 207.862 +410.5 202.862 410.5 DL 208.86 410.5 203.86 410.5 DL 213.86 410.5 208.86 +410.5 DL 218.86 410.5 213.86 410.5 DL 218.86 399.5 218.86 409.5 DL +207.862 399.5 202.862 399.5 DL 208.86 399.5 203.86 399.5 DL 213.86 399.5 +208.86 399.5 DL 218.86 399.5 213.86 399.5 DL 220.526 400.5 220.526 410.5 +DL 220.526 399.5 220.526 409.5 DL 236.524 400.5 236.524 410.5 DL 225.526 +410.5 220.526 410.5 DL 226.524 410.5 221.524 410.5 DL 231.524 410.5 +226.524 410.5 DL 236.524 410.5 231.524 410.5 DL 236.524 399.5 236.524 +409.5 DL 225.526 399.5 220.526 399.5 DL 226.524 399.5 221.524 399.5 DL +231.524 399.5 226.524 399.5 DL 236.524 399.5 231.524 399.5 DL 238.19 +400.5 238.19 410.5 DL 238.19 399.5 238.19 409.5 DL 254.188 400.5 254.188 +410.5 DL 243.19 410.5 238.19 410.5 DL 244.188 410.5 239.188 410.5 DL +249.188 410.5 244.188 410.5 DL 254.188 410.5 249.188 410.5 DL 254.188 +399.5 254.188 409.5 DL 243.19 399.5 238.19 399.5 DL 244.188 399.5 +239.188 399.5 DL 249.188 399.5 244.188 399.5 DL 254.188 399.5 249.188 +399.5 DL 255.854 400.5 255.854 410.5 DL 255.854 399.5 255.854 409.5 DL +271.852 400.5 271.852 410.5 DL 260.854 410.5 255.854 410.5 DL 261.852 +410.5 256.852 410.5 DL 266.852 410.5 261.852 410.5 DL 271.852 410.5 +266.852 410.5 DL 271.852 399.5 271.852 409.5 DL 260.854 399.5 255.854 +399.5 DL 261.852 399.5 256.852 399.5 DL 266.852 399.5 261.852 399.5 DL +271.852 399.5 266.852 399.5 DL F0 -5.834 7.999(=1 0 0 2)194.722 408 T F3 +<ae>1.666 E F0(Use Cell Motion Mouse T)2.5 E(racking.)-.35 E F1(P)185 +424 Q F2(s)-2 3 M 202.862 416.5 202.862 426.5 DL 202.862 415.5 202.862 +425.5 DL 218.86 416.5 218.86 426.5 DL 207.862 426.5 202.862 426.5 DL +208.86 426.5 203.86 426.5 DL 213.86 426.5 208.86 426.5 DL 218.86 426.5 +213.86 426.5 DL 218.86 415.5 218.86 425.5 DL 207.862 415.5 202.862 415.5 +DL 208.86 415.5 203.86 415.5 DL 213.86 415.5 208.86 415.5 DL 218.86 +415.5 213.86 415.5 DL 220.526 416.5 220.526 426.5 DL 220.526 415.5 +220.526 425.5 DL 236.524 416.5 236.524 426.5 DL 225.526 426.5 220.526 +426.5 DL 226.524 426.5 221.524 426.5 DL 231.524 426.5 226.524 426.5 DL +236.524 426.5 231.524 426.5 DL 236.524 415.5 236.524 425.5 DL 225.526 +415.5 220.526 415.5 DL 226.524 415.5 221.524 415.5 DL 231.524 415.5 +226.524 415.5 DL 236.524 415.5 231.524 415.5 DL 238.19 416.5 238.19 +426.5 DL 238.19 415.5 238.19 425.5 DL 254.188 416.5 254.188 426.5 DL +243.19 426.5 238.19 426.5 DL 244.188 426.5 239.188 426.5 DL 249.188 +426.5 244.188 426.5 DL 254.188 426.5 249.188 426.5 DL 254.188 415.5 +254.188 425.5 DL 243.19 415.5 238.19 415.5 DL 244.188 415.5 239.188 +415.5 DL 249.188 415.5 244.188 415.5 DL 254.188 415.5 249.188 415.5 DL +255.854 416.5 255.854 426.5 DL 255.854 415.5 255.854 425.5 DL 271.852 +416.5 271.852 426.5 DL 260.854 426.5 255.854 426.5 DL 261.852 426.5 +256.852 426.5 DL 266.852 426.5 261.852 426.5 DL 271.852 426.5 266.852 +426.5 DL 271.852 415.5 271.852 425.5 DL 260.854 415.5 255.854 415.5 DL +261.852 415.5 256.852 415.5 DL 266.852 415.5 261.852 415.5 DL 271.852 +415.5 266.852 415.5 DL F0 -5.834 7.999(=1 0 0 3)194.722 424 T F3<ae> +1.666 E F0(Use All Motion Mouse T)2.5 E(racking.)-.35 E F1(P)185 440 Q +F2(s)-2 3 M 202.862 432.5 202.862 442.5 DL 202.862 431.5 202.862 441.5 +DL 218.86 432.5 218.86 442.5 DL 207.862 442.5 202.862 442.5 DL 208.86 +442.5 203.86 442.5 DL 213.86 442.5 208.86 442.5 DL 218.86 442.5 213.86 +442.5 DL 218.86 431.5 218.86 441.5 DL 207.862 431.5 202.862 431.5 DL +208.86 431.5 203.86 431.5 DL 213.86 431.5 208.86 431.5 DL 218.86 431.5 +213.86 431.5 DL 220.526 432.5 220.526 442.5 DL 220.526 431.5 220.526 +441.5 DL 236.524 432.5 236.524 442.5 DL 225.526 442.5 220.526 442.5 DL +226.524 442.5 221.524 442.5 DL 231.524 442.5 226.524 442.5 DL 236.524 +442.5 231.524 442.5 DL 236.524 431.5 236.524 441.5 DL 225.526 431.5 +220.526 431.5 DL 226.524 431.5 221.524 431.5 DL 231.524 431.5 226.524 +431.5 DL 236.524 431.5 231.524 431.5 DL 238.19 432.5 238.19 442.5 DL +238.19 431.5 238.19 441.5 DL 254.188 432.5 254.188 442.5 DL 243.19 442.5 +238.19 442.5 DL 244.188 442.5 239.188 442.5 DL 249.188 442.5 244.188 +442.5 DL 254.188 442.5 249.188 442.5 DL 254.188 431.5 254.188 441.5 DL +243.19 431.5 238.19 431.5 DL 244.188 431.5 239.188 431.5 DL 249.188 +431.5 244.188 431.5 DL 254.188 431.5 249.188 431.5 DL 255.854 432.5 +255.854 442.5 DL 255.854 431.5 255.854 441.5 DL 271.852 432.5 271.852 +442.5 DL 260.854 442.5 255.854 442.5 DL 261.852 442.5 256.852 442.5 DL +266.852 442.5 261.852 442.5 DL 271.852 442.5 266.852 442.5 DL 271.852 +431.5 271.852 441.5 DL 260.854 431.5 255.854 431.5 DL 261.852 431.5 +256.852 431.5 DL 266.852 431.5 261.852 431.5 DL 271.852 431.5 266.852 +431.5 DL F0 -5.834 7.999(=1 0 1 0)194.722 440 T F3<ae>1.666 E F0 +(Scroll to bottom on tty output \(rxvt\).)2.5 E F1(P)185 456 Q F2(s)-2 3 +M 202.862 448.5 202.862 458.5 DL 202.862 447.5 202.862 457.5 DL 218.86 +448.5 218.86 458.5 DL 207.862 458.5 202.862 458.5 DL 208.86 458.5 203.86 +458.5 DL 213.86 458.5 208.86 458.5 DL 218.86 458.5 213.86 458.5 DL +218.86 447.5 218.86 457.5 DL 207.862 447.5 202.862 447.5 DL 208.86 447.5 +203.86 447.5 DL 213.86 447.5 208.86 447.5 DL 218.86 447.5 213.86 447.5 +DL 220.526 448.5 220.526 458.5 DL 220.526 447.5 220.526 457.5 DL 236.524 +448.5 236.524 458.5 DL 225.526 458.5 220.526 458.5 DL 226.524 458.5 +221.524 458.5 DL 231.524 458.5 226.524 458.5 DL 236.524 458.5 231.524 +458.5 DL 236.524 447.5 236.524 457.5 DL 225.526 447.5 220.526 447.5 DL +226.524 447.5 221.524 447.5 DL 231.524 447.5 226.524 447.5 DL 236.524 +447.5 231.524 447.5 DL 238.19 448.5 238.19 458.5 DL 238.19 447.5 238.19 +457.5 DL 254.188 448.5 254.188 458.5 DL 243.19 458.5 238.19 458.5 DL +244.188 458.5 239.188 458.5 DL 249.188 458.5 244.188 458.5 DL 254.188 +458.5 249.188 458.5 DL 254.188 447.5 254.188 457.5 DL 243.19 447.5 +238.19 447.5 DL 244.188 447.5 239.188 447.5 DL 249.188 447.5 244.188 +447.5 DL 254.188 447.5 249.188 447.5 DL 255.854 448.5 255.854 458.5 DL +255.854 447.5 255.854 457.5 DL 271.852 448.5 271.852 458.5 DL 260.854 +458.5 255.854 458.5 DL 261.852 458.5 256.852 458.5 DL 266.852 458.5 +261.852 458.5 DL 271.852 458.5 266.852 458.5 DL 271.852 447.5 271.852 +457.5 DL 260.854 447.5 255.854 447.5 DL 261.852 447.5 256.852 447.5 DL +266.852 447.5 261.852 447.5 DL 271.852 447.5 266.852 447.5 DL F0 -5.834 +7.999(=1 0 1 1)194.722 456 T F3<ae>1.666 E F0(Scroll to bottom on k)2.5 +E .3 -.15(ey p)-.1 H(ress \(rxvt\).).15 E F1(P)185 472 Q F2(s)-2 3 M +202.862 464.5 202.862 474.5 DL 202.862 463.5 202.862 473.5 DL 218.86 +464.5 218.86 474.5 DL 207.862 474.5 202.862 474.5 DL 208.86 474.5 203.86 +474.5 DL 213.86 474.5 208.86 474.5 DL 218.86 474.5 213.86 474.5 DL +218.86 463.5 218.86 473.5 DL 207.862 463.5 202.862 463.5 DL 208.86 463.5 +203.86 463.5 DL 213.86 463.5 208.86 463.5 DL 218.86 463.5 213.86 463.5 +DL 220.526 464.5 220.526 474.5 DL 220.526 463.5 220.526 473.5 DL 236.524 +464.5 236.524 474.5 DL 225.526 474.5 220.526 474.5 DL 226.524 474.5 +221.524 474.5 DL 231.524 474.5 226.524 474.5 DL 236.524 474.5 231.524 +474.5 DL 236.524 463.5 236.524 473.5 DL 225.526 463.5 220.526 463.5 DL +226.524 463.5 221.524 463.5 DL 231.524 463.5 226.524 463.5 DL 236.524 +463.5 231.524 463.5 DL 238.19 464.5 238.19 474.5 DL 238.19 463.5 238.19 +473.5 DL 254.188 464.5 254.188 474.5 DL 243.19 474.5 238.19 474.5 DL +244.188 474.5 239.188 474.5 DL 249.188 474.5 244.188 474.5 DL 254.188 +474.5 249.188 474.5 DL 254.188 463.5 254.188 473.5 DL 243.19 463.5 +238.19 463.5 DL 244.188 463.5 239.188 463.5 DL 249.188 463.5 244.188 +463.5 DL 254.188 463.5 249.188 463.5 DL 255.854 464.5 255.854 474.5 DL +255.854 463.5 255.854 473.5 DL 271.852 464.5 271.852 474.5 DL 260.854 +474.5 255.854 474.5 DL 261.852 474.5 256.852 474.5 DL 266.852 474.5 +261.852 474.5 DL 271.852 474.5 266.852 474.5 DL 271.852 463.5 271.852 +473.5 DL 260.854 463.5 255.854 463.5 DL 261.852 463.5 256.852 463.5 DL +266.852 463.5 261.852 463.5 DL 271.852 463.5 266.852 463.5 DL F0 -5.834 +7.999(=1 0 3 5)194.722 472 T F3<ae>1.666 E F0 +(Enable special modi\214ers for Alt and NumLock k)2.5 E -.15(ey)-.1 G +(s.).15 E F1(P)185 488 Q F2(s)-2 3 M 203.538 480.5 203.538 490.5 DL +203.538 479.5 203.538 489.5 DL 219.536 480.5 219.536 490.5 DL 208.538 +490.5 203.538 490.5 DL 209.536 490.5 204.536 490.5 DL 214.536 490.5 +209.536 490.5 DL 219.536 490.5 214.536 490.5 DL 219.536 479.5 219.536 +489.5 DL 208.538 479.5 203.538 479.5 DL 209.536 479.5 204.536 479.5 DL +214.536 479.5 209.536 479.5 DL 219.536 479.5 214.536 479.5 DL 221.202 +480.5 221.202 490.5 DL 221.202 479.5 221.202 489.5 DL 237.2 480.5 237.2 +490.5 DL 226.202 490.5 221.202 490.5 DL 227.2 490.5 222.2 490.5 DL 232.2 +490.5 227.2 490.5 DL 237.2 490.5 232.2 490.5 DL 237.2 479.5 237.2 489.5 +DL 226.202 479.5 221.202 479.5 DL 227.2 479.5 222.2 479.5 DL 232.2 479.5 +227.2 479.5 DL 237.2 479.5 232.2 479.5 DL 238.866 480.5 238.866 490.5 DL +238.866 479.5 238.866 489.5 DL 254.864 480.5 254.864 490.5 DL 243.866 +490.5 238.866 490.5 DL 244.864 490.5 239.864 490.5 DL 249.864 490.5 +244.864 490.5 DL 254.864 490.5 249.864 490.5 DL 254.864 479.5 254.864 +489.5 DL 243.866 479.5 238.866 479.5 DL 244.864 479.5 239.864 479.5 DL +249.864 479.5 244.864 479.5 DL 254.864 479.5 249.864 479.5 DL 256.53 +480.5 256.53 490.5 DL 256.53 479.5 256.53 489.5 DL 272.528 480.5 272.528 +490.5 DL 261.53 490.5 256.53 490.5 DL 262.528 490.5 257.528 490.5 DL +267.528 490.5 262.528 490.5 DL 272.528 490.5 267.528 490.5 DL 272.528 +479.5 272.528 489.5 DL 261.53 479.5 256.53 479.5 DL 262.528 479.5 +257.528 479.5 DL 267.528 479.5 262.528 479.5 DL 272.528 479.5 267.528 +479.5 DL F0 -6.51 8.337(=1 0 3 6)195.06 488 T F3<ae>1.666 E F0 .338 +(Send ESC when Meta modi\214es a k)2.838 F .638 -.15(ey \()-.1 H .337 +(enables the).15 F F4(metaSend-)2.837 E(sEscape)180 504 Q F0 +(resource\).)2.5 E F1(P)185 520 Q F2(s)-2 3 M 202.862 512.5 202.862 +522.5 DL 202.862 511.5 202.862 521.5 DL 218.86 512.5 218.86 522.5 DL +207.862 522.5 202.862 522.5 DL 208.86 522.5 203.86 522.5 DL 213.86 522.5 +208.86 522.5 DL 218.86 522.5 213.86 522.5 DL 218.86 511.5 218.86 521.5 +DL 207.862 511.5 202.862 511.5 DL 208.86 511.5 203.86 511.5 DL 213.86 +511.5 208.86 511.5 DL 218.86 511.5 213.86 511.5 DL 220.526 512.5 220.526 +522.5 DL 220.526 511.5 220.526 521.5 DL 236.524 512.5 236.524 522.5 DL +225.526 522.5 220.526 522.5 DL 226.524 522.5 221.524 522.5 DL 231.524 +522.5 226.524 522.5 DL 236.524 522.5 231.524 522.5 DL 236.524 511.5 +236.524 521.5 DL 225.526 511.5 220.526 511.5 DL 226.524 511.5 221.524 +511.5 DL 231.524 511.5 226.524 511.5 DL 236.524 511.5 231.524 511.5 DL +238.19 512.5 238.19 522.5 DL 238.19 511.5 238.19 521.5 DL 254.188 512.5 +254.188 522.5 DL 243.19 522.5 238.19 522.5 DL 244.188 522.5 239.188 +522.5 DL 249.188 522.5 244.188 522.5 DL 254.188 522.5 249.188 522.5 DL +254.188 511.5 254.188 521.5 DL 243.19 511.5 238.19 511.5 DL 244.188 +511.5 239.188 511.5 DL 249.188 511.5 244.188 511.5 DL 254.188 511.5 +249.188 511.5 DL 255.854 512.5 255.854 522.5 DL 255.854 511.5 255.854 +521.5 DL 271.852 512.5 271.852 522.5 DL 260.854 522.5 255.854 522.5 DL +261.852 522.5 256.852 522.5 DL 266.852 522.5 261.852 522.5 DL 271.852 +522.5 266.852 522.5 DL 271.852 511.5 271.852 521.5 DL 260.854 511.5 +255.854 511.5 DL 261.852 511.5 256.852 511.5 DL 266.852 511.5 261.852 +511.5 DL 271.852 511.5 266.852 511.5 DL F0 -5.834 7.999(=1 0 3 7)194.722 +520 T F3<ae>1.666 E F0(Send DEL from the editing-k)2.5 E -.15(ey)-.1 G +(pad Delete k).15 E -.15(ey)-.1 G F1(P)185 536 Q F2(s)-2 3 M 205.404 +528.5 205.404 538.5 DL 205.404 527.5 205.404 537.5 DL 221.402 528.5 +221.402 538.5 DL 210.404 538.5 205.404 538.5 DL 211.402 538.5 206.402 +538.5 DL 216.402 538.5 211.402 538.5 DL 221.402 538.5 216.402 538.5 DL +221.402 527.5 221.402 537.5 DL 210.404 527.5 205.404 527.5 DL 211.402 +527.5 206.402 527.5 DL 216.402 527.5 211.402 527.5 DL 221.402 527.5 +216.402 527.5 DL 223.068 528.5 223.068 538.5 DL 223.068 527.5 223.068 +537.5 DL 239.066 528.5 239.066 538.5 DL 228.068 538.5 223.068 538.5 DL +229.066 538.5 224.066 538.5 DL 234.066 538.5 229.066 538.5 DL 239.066 +538.5 234.066 538.5 DL 239.066 527.5 239.066 537.5 DL 228.068 527.5 +223.068 527.5 DL 229.066 527.5 224.066 527.5 DL 234.066 527.5 229.066 +527.5 DL 239.066 527.5 234.066 527.5 DL 240.732 528.5 240.732 538.5 DL +240.732 527.5 240.732 537.5 DL 256.73 528.5 256.73 538.5 DL 245.732 +538.5 240.732 538.5 DL 246.73 538.5 241.73 538.5 DL 251.73 538.5 246.73 +538.5 DL 256.73 538.5 251.73 538.5 DL 256.73 527.5 256.73 537.5 DL +245.732 527.5 240.732 527.5 DL 246.73 527.5 241.73 527.5 DL 251.73 527.5 +246.73 527.5 DL 256.73 527.5 251.73 527.5 DL 258.396 528.5 258.396 538.5 +DL 258.396 527.5 258.396 537.5 DL 274.394 528.5 274.394 538.5 DL 263.396 +538.5 258.396 538.5 DL 264.394 538.5 259.394 538.5 DL 269.394 538.5 +264.394 538.5 DL 274.394 538.5 269.394 538.5 DL 274.394 527.5 274.394 +537.5 DL 263.396 527.5 258.396 527.5 DL 264.394 527.5 259.394 527.5 DL +269.394 527.5 264.394 527.5 DL 274.394 527.5 269.394 527.5 DL F0 -8.376 +9.27(=1 0 4 7)195.993 536 T F3<ae>1.666 E F0 1.271 +(Use Alternate Screen Buf)3.771 F 1.271(fer \(unless disabled by the) +-.25 F F4(titeIn-)3.771 E(hibit)180 552 Q F0(resource\))2.5 E F1(P)185 +568 Q F2(s)-2 3 M 204.32 560.5 204.32 570.5 DL 204.32 559.5 204.32 569.5 +DL 220.318 560.5 220.318 570.5 DL 209.32 570.5 204.32 570.5 DL 210.318 +570.5 205.318 570.5 DL 215.318 570.5 210.318 570.5 DL 220.318 570.5 +215.318 570.5 DL 220.318 559.5 220.318 569.5 DL 209.32 559.5 204.32 +559.5 DL 210.318 559.5 205.318 559.5 DL 215.318 559.5 210.318 559.5 DL +220.318 559.5 215.318 559.5 DL 221.984 560.5 221.984 570.5 DL 221.984 +559.5 221.984 569.5 DL 237.982 560.5 237.982 570.5 DL 226.984 570.5 +221.984 570.5 DL 227.982 570.5 222.982 570.5 DL 232.982 570.5 227.982 +570.5 DL 237.982 570.5 232.982 570.5 DL 237.982 559.5 237.982 569.5 DL +226.984 559.5 221.984 559.5 DL 227.982 559.5 222.982 559.5 DL 232.982 +559.5 227.982 559.5 DL 237.982 559.5 232.982 559.5 DL 239.648 560.5 +239.648 570.5 DL 239.648 559.5 239.648 569.5 DL 255.646 560.5 255.646 +570.5 DL 244.648 570.5 239.648 570.5 DL 245.646 570.5 240.646 570.5 DL +250.646 570.5 245.646 570.5 DL 255.646 570.5 250.646 570.5 DL 255.646 +559.5 255.646 569.5 DL 244.648 559.5 239.648 559.5 DL 245.646 559.5 +240.646 559.5 DL 250.646 559.5 245.646 559.5 DL 255.646 559.5 250.646 +559.5 DL 257.312 560.5 257.312 570.5 DL 257.312 559.5 257.312 569.5 DL +273.31 560.5 273.31 570.5 DL 262.312 570.5 257.312 570.5 DL 263.31 570.5 +258.31 570.5 DL 268.31 570.5 263.31 570.5 DL 273.31 570.5 268.31 570.5 +DL 273.31 559.5 273.31 569.5 DL 262.312 559.5 257.312 559.5 DL 263.31 +559.5 258.31 559.5 DL 268.31 559.5 263.31 559.5 DL 273.31 559.5 268.31 +559.5 DL F0 -7.292 8.728(=1 0 4 8)195.451 568 T F3<ae>1.666 E F0(Sa) +3.229 E 1.029 -.15(ve c)-.2 H .728 +(ursor as in DECSC \(unless disabled by the).15 F F4(titeInhibit)3.228 E +F0(resource\))180 584 Q F1(P)185 600 Q F2(s)-2 3 M 205.408 592.5 205.408 +602.5 DL 205.408 591.5 205.408 601.5 DL 221.406 592.5 221.406 602.5 DL +210.408 602.5 205.408 602.5 DL 211.406 602.5 206.406 602.5 DL 216.406 +602.5 211.406 602.5 DL 221.406 602.5 216.406 602.5 DL 221.406 591.5 +221.406 601.5 DL 210.408 591.5 205.408 591.5 DL 211.406 591.5 206.406 +591.5 DL 216.406 591.5 211.406 591.5 DL 221.406 591.5 216.406 591.5 DL +223.072 592.5 223.072 602.5 DL 223.072 591.5 223.072 601.5 DL 239.07 +592.5 239.07 602.5 DL 228.072 602.5 223.072 602.5 DL 229.07 602.5 224.07 +602.5 DL 234.07 602.5 229.07 602.5 DL 239.07 602.5 234.07 602.5 DL +239.07 591.5 239.07 601.5 DL 228.072 591.5 223.072 591.5 DL 229.07 591.5 +224.07 591.5 DL 234.07 591.5 229.07 591.5 DL 239.07 591.5 234.07 591.5 +DL 240.736 592.5 240.736 602.5 DL 240.736 591.5 240.736 601.5 DL 256.734 +592.5 256.734 602.5 DL 245.736 602.5 240.736 602.5 DL 246.734 602.5 +241.734 602.5 DL 251.734 602.5 246.734 602.5 DL 256.734 602.5 251.734 +602.5 DL 256.734 591.5 256.734 601.5 DL 245.736 591.5 240.736 591.5 DL +246.734 591.5 241.734 591.5 DL 251.734 591.5 246.734 591.5 DL 256.734 +591.5 251.734 591.5 DL 258.4 592.5 258.4 602.5 DL 258.4 591.5 258.4 +601.5 DL 274.398 592.5 274.398 602.5 DL 263.4 602.5 258.4 602.5 DL +264.398 602.5 259.398 602.5 DL 269.398 602.5 264.398 602.5 DL 274.398 +602.5 269.398 602.5 DL 274.398 591.5 274.398 601.5 DL 263.4 591.5 258.4 +591.5 DL 264.398 591.5 259.398 591.5 DL 269.398 591.5 264.398 591.5 DL +274.398 591.5 269.398 591.5 DL F0 -8.38 9.272(=1 0 4 9)195.995 600 T F3 +<ae>1.666 E F0(Sa)3.773 E 1.573 -.15(ve c)-.2 H 1.273 +(ursor as in DECSC and use Alternate Screen Buf).15 F(fer)-.25 E(,)-.4 E +(clearing it \214rst \(unless disabled by the)180 616 Q F4(titeInhibit) +2.5 E F0(resource\))2.5 E F1(P)185 632 Q F2(s)-2 3 M 202.862 624.5 +202.862 634.5 DL 202.862 623.5 202.862 633.5 DL 218.86 624.5 218.86 +634.5 DL 207.862 634.5 202.862 634.5 DL 208.86 634.5 203.86 634.5 DL +213.86 634.5 208.86 634.5 DL 218.86 634.5 213.86 634.5 DL 218.86 623.5 +218.86 633.5 DL 207.862 623.5 202.862 623.5 DL 208.86 623.5 203.86 623.5 +DL 213.86 623.5 208.86 623.5 DL 218.86 623.5 213.86 623.5 DL 220.526 +624.5 220.526 634.5 DL 220.526 623.5 220.526 633.5 DL 236.524 624.5 +236.524 634.5 DL 225.526 634.5 220.526 634.5 DL 226.524 634.5 221.524 +634.5 DL 231.524 634.5 226.524 634.5 DL 236.524 634.5 231.524 634.5 DL +236.524 623.5 236.524 633.5 DL 225.526 623.5 220.526 623.5 DL 226.524 +623.5 221.524 623.5 DL 231.524 623.5 226.524 623.5 DL 236.524 623.5 +231.524 623.5 DL 238.19 624.5 238.19 634.5 DL 238.19 623.5 238.19 633.5 +DL 254.188 624.5 254.188 634.5 DL 243.19 634.5 238.19 634.5 DL 244.188 +634.5 239.188 634.5 DL 249.188 634.5 244.188 634.5 DL 254.188 634.5 +249.188 634.5 DL 254.188 623.5 254.188 633.5 DL 243.19 623.5 238.19 +623.5 DL 244.188 623.5 239.188 623.5 DL 249.188 623.5 244.188 623.5 DL +254.188 623.5 249.188 623.5 DL 255.854 624.5 255.854 634.5 DL 255.854 +623.5 255.854 633.5 DL 271.852 624.5 271.852 634.5 DL 260.854 634.5 +255.854 634.5 DL 261.852 634.5 256.852 634.5 DL 266.852 634.5 261.852 +634.5 DL 271.852 634.5 266.852 634.5 DL 271.852 623.5 271.852 633.5 DL +260.854 623.5 255.854 623.5 DL 261.852 623.5 256.852 623.5 DL 266.852 +623.5 261.852 623.5 DL 271.852 623.5 266.852 623.5 DL F0 -5.834 7.999 +(=1 0 5 1)194.722 632 T F3<ae>1.666 E F0(Set Sun function-k)2.5 E .3 +-.15(ey m)-.1 H(ode.).15 E F1(P)185 648 Q F2(s)-2 3 M 202.862 640.5 +202.862 650.5 DL 202.862 639.5 202.862 649.5 DL 218.86 640.5 218.86 +650.5 DL 207.862 650.5 202.862 650.5 DL 208.86 650.5 203.86 650.5 DL +213.86 650.5 208.86 650.5 DL 218.86 650.5 213.86 650.5 DL 218.86 639.5 +218.86 649.5 DL 207.862 639.5 202.862 639.5 DL 208.86 639.5 203.86 639.5 +DL 213.86 639.5 208.86 639.5 DL 218.86 639.5 213.86 639.5 DL 220.526 +640.5 220.526 650.5 DL 220.526 639.5 220.526 649.5 DL 236.524 640.5 +236.524 650.5 DL 225.526 650.5 220.526 650.5 DL 226.524 650.5 221.524 +650.5 DL 231.524 650.5 226.524 650.5 DL 236.524 650.5 231.524 650.5 DL +236.524 639.5 236.524 649.5 DL 225.526 639.5 220.526 639.5 DL 226.524 +639.5 221.524 639.5 DL 231.524 639.5 226.524 639.5 DL 236.524 639.5 +231.524 639.5 DL 238.19 640.5 238.19 650.5 DL 238.19 639.5 238.19 649.5 +DL 254.188 640.5 254.188 650.5 DL 243.19 650.5 238.19 650.5 DL 244.188 +650.5 239.188 650.5 DL 249.188 650.5 244.188 650.5 DL 254.188 650.5 +249.188 650.5 DL 254.188 639.5 254.188 649.5 DL 243.19 639.5 238.19 +639.5 DL 244.188 639.5 239.188 639.5 DL 249.188 639.5 244.188 639.5 DL +254.188 639.5 249.188 639.5 DL 255.854 640.5 255.854 650.5 DL 255.854 +639.5 255.854 649.5 DL 271.852 640.5 271.852 650.5 DL 260.854 650.5 +255.854 650.5 DL 261.852 650.5 256.852 650.5 DL 266.852 650.5 261.852 +650.5 DL 271.852 650.5 266.852 650.5 DL 271.852 639.5 271.852 649.5 DL +260.854 639.5 255.854 639.5 DL 261.852 639.5 256.852 639.5 DL 266.852 +639.5 261.852 639.5 DL 271.852 639.5 266.852 639.5 DL F0 -5.834 7.999 +(=1 0 5 2)194.722 648 T F3<ae>1.666 E F0(Set HP function-k)2.5 E .3 -.15 +(ey m)-.1 H(ode.).15 E F1(P)185 664 Q F2(s)-2 3 M 202.862 656.5 202.862 +666.5 DL 202.862 655.5 202.862 665.5 DL 218.86 656.5 218.86 666.5 DL +207.862 666.5 202.862 666.5 DL 208.86 666.5 203.86 666.5 DL 213.86 666.5 +208.86 666.5 DL 218.86 666.5 213.86 666.5 DL 218.86 655.5 218.86 665.5 +DL 207.862 655.5 202.862 655.5 DL 208.86 655.5 203.86 655.5 DL 213.86 +655.5 208.86 655.5 DL 218.86 655.5 213.86 655.5 DL 220.526 656.5 220.526 +666.5 DL 220.526 655.5 220.526 665.5 DL 236.524 656.5 236.524 666.5 DL +225.526 666.5 220.526 666.5 DL 226.524 666.5 221.524 666.5 DL 231.524 +666.5 226.524 666.5 DL 236.524 666.5 231.524 666.5 DL 236.524 655.5 +236.524 665.5 DL 225.526 655.5 220.526 655.5 DL 226.524 655.5 221.524 +655.5 DL 231.524 655.5 226.524 655.5 DL 236.524 655.5 231.524 655.5 DL +238.19 656.5 238.19 666.5 DL 238.19 655.5 238.19 665.5 DL 254.188 656.5 +254.188 666.5 DL 243.19 666.5 238.19 666.5 DL 244.188 666.5 239.188 +666.5 DL 249.188 666.5 244.188 666.5 DL 254.188 666.5 249.188 666.5 DL +254.188 655.5 254.188 665.5 DL 243.19 655.5 238.19 655.5 DL 244.188 +655.5 239.188 655.5 DL 249.188 655.5 244.188 655.5 DL 254.188 655.5 +249.188 655.5 DL 255.854 656.5 255.854 666.5 DL 255.854 655.5 255.854 +665.5 DL 271.852 656.5 271.852 666.5 DL 260.854 666.5 255.854 666.5 DL +261.852 666.5 256.852 666.5 DL 266.852 666.5 261.852 666.5 DL 271.852 +666.5 266.852 666.5 DL 271.852 655.5 271.852 665.5 DL 260.854 655.5 +255.854 655.5 DL 261.852 655.5 256.852 655.5 DL 266.852 655.5 261.852 +655.5 DL 271.852 655.5 266.852 655.5 DL F0 -5.834 7.999(=1 0 6 0)194.722 +664 T F3<ae>1.666 E F0(Set le)2.5 E -.05(ga)-.15 G .3 -.15(cy k).05 H +-.15(ey).05 G(board emulation \(X11R6\).).15 E F1(P)185 680 Q F2(s)-2 3 +M 202.862 672.5 202.862 682.5 DL 202.862 671.5 202.862 681.5 DL 218.86 +672.5 218.86 682.5 DL 207.862 682.5 202.862 682.5 DL 208.86 682.5 203.86 +682.5 DL 213.86 682.5 208.86 682.5 DL 218.86 682.5 213.86 682.5 DL +218.86 671.5 218.86 681.5 DL 207.862 671.5 202.862 671.5 DL 208.86 671.5 +203.86 671.5 DL 213.86 671.5 208.86 671.5 DL 218.86 671.5 213.86 671.5 +DL 220.526 672.5 220.526 682.5 DL 220.526 671.5 220.526 681.5 DL 236.524 +672.5 236.524 682.5 DL 225.526 682.5 220.526 682.5 DL 226.524 682.5 +221.524 682.5 DL 231.524 682.5 226.524 682.5 DL 236.524 682.5 231.524 +682.5 DL 236.524 671.5 236.524 681.5 DL 225.526 671.5 220.526 671.5 DL +226.524 671.5 221.524 671.5 DL 231.524 671.5 226.524 671.5 DL 236.524 +671.5 231.524 671.5 DL 238.19 672.5 238.19 682.5 DL 238.19 671.5 238.19 +681.5 DL 254.188 672.5 254.188 682.5 DL 243.19 682.5 238.19 682.5 DL +244.188 682.5 239.188 682.5 DL 249.188 682.5 244.188 682.5 DL 254.188 +682.5 249.188 682.5 DL 254.188 671.5 254.188 681.5 DL 243.19 671.5 +238.19 671.5 DL 244.188 671.5 239.188 671.5 DL 249.188 671.5 244.188 +671.5 DL 254.188 671.5 249.188 671.5 DL 255.854 672.5 255.854 682.5 DL +255.854 671.5 255.854 681.5 DL 271.852 672.5 271.852 682.5 DL 260.854 +682.5 255.854 682.5 DL 261.852 682.5 256.852 682.5 DL 266.852 682.5 +261.852 682.5 DL 271.852 682.5 266.852 682.5 DL 271.852 671.5 271.852 +681.5 DL 260.854 671.5 255.854 671.5 DL 261.852 671.5 256.852 671.5 DL +266.852 671.5 261.852 671.5 DL 271.852 671.5 266.852 671.5 DL F0 -5.834 +7.999(=1 0 6 1)194.722 680 T F3<ae>1.666 E F0(Set Sun/PC k)2.5 E -.15 +(ey)-.1 G(board emulation of VT220 k).15 E -.15(ey)-.1 G(board.).15 E 72 +688.5 72 698.5 DL 72 687.5 72 697.5 DL 87.998 688.5 87.998 698.5 DL 77 +698.5 72 698.5 DL 77.998 698.5 72.998 698.5 DL 82.998 698.5 77.998 698.5 +DL 87.998 698.5 82.998 698.5 DL 87.998 687.5 87.998 697.5 DL 77 687.5 72 +687.5 DL 77.998 687.5 72.998 687.5 DL 82.998 687.5 77.998 687.5 DL +87.998 687.5 82.998 687.5 DL/F5 6/Times-Roman@0 SF(CSI)75.331 695 Q F1 +(P)4.997 1 M 101.216 688.5 101.216 698.5 DL 101.216 687.5 101.216 697.5 +DL F2(m)93.774 699 Q 117.214 688.5 117.214 698.5 DL 106.216 698.5 +101.216 698.5 DL 107.214 698.5 102.214 698.5 DL 112.214 698.5 107.214 +698.5 DL 117.214 698.5 112.214 698.5 DL 117.214 687.5 117.214 697.5 DL +106.216 687.5 101.216 687.5 DL 107.214 687.5 102.214 687.5 DL 112.214 +687.5 107.214 687.5 DL 117.214 687.5 112.214 687.5 DL F0 69.395(iM) +107.825 696 S(edia Cop)-69.395 E 2.5(y\()-.1 G(MC\))-2.5 E F1(P)185 712 +Q F2(s)-2 3 M 202.862 704.5 202.862 714.5 DL 202.862 703.5 202.862 713.5 +DL 218.86 704.5 218.86 714.5 DL 207.862 714.5 202.862 714.5 DL 208.86 +714.5 203.86 714.5 DL 213.86 714.5 208.86 714.5 DL 218.86 714.5 213.86 +714.5 DL 218.86 703.5 218.86 713.5 DL 207.862 703.5 202.862 703.5 DL +208.86 703.5 203.86 703.5 DL 213.86 703.5 208.86 703.5 DL 218.86 703.5 +213.86 703.5 DL F0 7.999(=0)194.722 712 S F3<ae>1.666 E F0 +(Print screen \(def)2.5 E(ault\))-.1 E F1(P)185 728 Q F2(s)-2 3 M +202.862 720.5 202.862 730.5 DL 202.862 719.5 202.862 729.5 DL 218.86 +720.5 218.86 730.5 DL 207.862 730.5 202.862 730.5 DL 208.86 730.5 203.86 +730.5 DL 213.86 730.5 208.86 730.5 DL 218.86 730.5 213.86 730.5 DL +218.86 719.5 218.86 729.5 DL 207.862 719.5 202.862 719.5 DL 208.86 719.5 +203.86 719.5 DL 213.86 719.5 208.86 719.5 DL 218.86 719.5 213.86 719.5 +DL F0 7.999(=4)194.722 728 S F3<ae>1.666 E F0 -.45(Tu)2.5 G(rn of).45 E +2.5(fp)-.25 G(rinter controller mode)-2.5 E(7)303.5 772 Q EP +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E/F1 10/Times-Italic@0 SF(P)185 88 Q/F2 8/Times-Italic@0 SF(s)-2 +3 M .4 LW 202.862 80.5 202.862 90.5 DL 202.862 79.5 202.862 89.5 DL +218.86 80.5 218.86 90.5 DL 207.862 90.5 202.862 90.5 DL 208.86 90.5 +203.86 90.5 DL 213.86 90.5 208.86 90.5 DL 218.86 90.5 213.86 90.5 DL +218.86 79.5 218.86 89.5 DL 207.862 79.5 202.862 79.5 DL 208.86 79.5 +203.86 79.5 DL 213.86 79.5 208.86 79.5 DL 218.86 79.5 213.86 79.5 DL F0 +7.999(=5)194.722 88 S/F3 10/Symbol SF<ae>1.666 E F0 -.45(Tu)2.5 G +(rn on printer controller mode).45 E 72 96.5 72 106.5 DL 72 95.5 72 +105.5 DL 87.998 96.5 87.998 106.5 DL 77 106.5 72 106.5 DL 77.998 106.5 +72.998 106.5 DL 82.998 106.5 77.998 106.5 DL 87.998 106.5 82.998 106.5 +DL 87.998 95.5 87.998 105.5 DL 77 95.5 72 95.5 DL 77.998 95.5 72.998 +95.5 DL 82.998 95.5 77.998 95.5 DL 87.998 95.5 82.998 95.5 DL 89.664 +96.5 89.664 106.5 DL 89.664 95.5 89.664 105.5 DL/F4 6/Times-Roman@0 SF +(CSI)75.331 103 Q 105.662 96.5 105.662 106.5 DL 94.664 106.5 89.664 +106.5 DL 95.662 106.5 90.662 106.5 DL 100.662 106.5 95.662 106.5 DL +105.662 106.5 100.662 106.5 DL 105.662 95.5 105.662 105.5 DL 94.664 95.5 +89.664 95.5 DL 95.662 95.5 90.662 95.5 DL 100.662 95.5 95.662 95.5 DL +105.662 95.5 100.662 95.5 DL F0(?)95.443 104 Q F1(P)7.445 E 118.88 96.5 +118.88 106.5 DL 118.88 95.5 118.88 105.5 DL F2(m)111.438 107 Q 134.878 +96.5 134.878 106.5 DL 123.88 106.5 118.88 106.5 DL 124.878 106.5 119.878 +106.5 DL 129.878 106.5 124.878 106.5 DL 134.878 106.5 129.878 106.5 DL +134.878 95.5 134.878 105.5 DL 123.88 95.5 118.88 95.5 DL 124.878 95.5 +119.878 95.5 DL 129.878 95.5 124.878 95.5 DL 134.878 95.5 129.878 95.5 +DL F0 51.731(iM)125.489 104 S(edia Cop)-51.731 E 2.5(y\()-.1 G +(MC, DEC-speci\214c\))-2.5 E F1(P)185 120 Q F2(s)-2 3 M 202.862 112.5 +202.862 122.5 DL 202.862 111.5 202.862 121.5 DL 218.86 112.5 218.86 +122.5 DL 207.862 122.5 202.862 122.5 DL 208.86 122.5 203.86 122.5 DL +213.86 122.5 208.86 122.5 DL 218.86 122.5 213.86 122.5 DL 218.86 111.5 +218.86 121.5 DL 207.862 111.5 202.862 111.5 DL 208.86 111.5 203.86 111.5 +DL 213.86 111.5 208.86 111.5 DL 218.86 111.5 213.86 111.5 DL F0 7.999 +(=1)194.722 120 S F3<ae>1.666 E F0(Print line containing cursor)2.5 E F1 +(P)185 136 Q F2(s)-2 3 M 202.862 128.5 202.862 138.5 DL 202.862 127.5 +202.862 137.5 DL 218.86 128.5 218.86 138.5 DL 207.862 138.5 202.862 +138.5 DL 208.86 138.5 203.86 138.5 DL 213.86 138.5 208.86 138.5 DL +218.86 138.5 213.86 138.5 DL 218.86 127.5 218.86 137.5 DL 207.862 127.5 +202.862 127.5 DL 208.86 127.5 203.86 127.5 DL 213.86 127.5 208.86 127.5 +DL 218.86 127.5 213.86 127.5 DL F0 7.999(=4)194.722 136 S F3<ae>1.666 E +F0 -.45(Tu)2.5 G(rn of).45 E 2.5(fa)-.25 G(utoprint mode)-2.5 E F1(P)185 +152 Q F2(s)-2 3 M 202.862 144.5 202.862 154.5 DL 202.862 143.5 202.862 +153.5 DL 218.86 144.5 218.86 154.5 DL 207.862 154.5 202.862 154.5 DL +208.86 154.5 203.86 154.5 DL 213.86 154.5 208.86 154.5 DL 218.86 154.5 +213.86 154.5 DL 218.86 143.5 218.86 153.5 DL 207.862 143.5 202.862 143.5 +DL 208.86 143.5 203.86 143.5 DL 213.86 143.5 208.86 143.5 DL 218.86 +143.5 213.86 143.5 DL F0 7.999(=5)194.722 152 S F3<ae>1.666 E F0 -.45 +(Tu)2.5 G(rn on autoprint mode).45 E F1(P)185 168 Q F2(s)-2 3 M 202.862 +160.5 202.862 170.5 DL 202.862 159.5 202.862 169.5 DL 218.86 160.5 +218.86 170.5 DL 207.862 170.5 202.862 170.5 DL 208.86 170.5 203.86 170.5 +DL 213.86 170.5 208.86 170.5 DL 218.86 170.5 213.86 170.5 DL 218.86 +159.5 218.86 169.5 DL 207.862 159.5 202.862 159.5 DL 208.86 159.5 203.86 +159.5 DL 213.86 159.5 208.86 159.5 DL 218.86 159.5 213.86 159.5 DL +223.026 160.5 223.026 170.5 DL 223.026 159.5 223.026 169.5 DL 239.024 +160.5 239.024 170.5 DL 228.026 170.5 223.026 170.5 DL 229.024 170.5 +224.024 170.5 DL 234.024 170.5 229.024 170.5 DL 239.024 170.5 234.024 +170.5 DL 239.024 159.5 239.024 169.5 DL 228.026 159.5 223.026 159.5 DL +229.024 159.5 224.024 159.5 DL 234.024 159.5 229.024 159.5 DL 239.024 +159.5 234.024 159.5 DL F0 -3.334 7.999(=1 0)194.722 168 T F3<ae>1.666 E +F0(Print composed display)2.5 E 2.5(,i)-.65 G(gnores DECPEX)-2.5 E F1(P) +185 184 Q F2(s)-2 3 M 202.862 176.5 202.862 186.5 DL 202.862 175.5 +202.862 185.5 DL 218.86 176.5 218.86 186.5 DL 207.862 186.5 202.862 +186.5 DL 208.86 186.5 203.86 186.5 DL 213.86 186.5 208.86 186.5 DL +218.86 186.5 213.86 186.5 DL 218.86 175.5 218.86 185.5 DL 207.862 175.5 +202.862 175.5 DL 208.86 175.5 203.86 175.5 DL 213.86 175.5 208.86 175.5 +DL 218.86 175.5 213.86 175.5 DL 223.026 176.5 223.026 186.5 DL 223.026 +175.5 223.026 185.5 DL 239.024 176.5 239.024 186.5 DL 228.026 186.5 +223.026 186.5 DL 229.024 186.5 224.024 186.5 DL 234.024 186.5 229.024 +186.5 DL 239.024 186.5 234.024 186.5 DL 239.024 175.5 239.024 185.5 DL +228.026 175.5 223.026 175.5 DL 229.024 175.5 224.024 175.5 DL 234.024 +175.5 229.024 175.5 DL 239.024 175.5 234.024 175.5 DL F0 -3.334 7.999 +(=1 1)194.722 184 T F3<ae>1.666 E F0(Print all pages)2.5 E 72 192.5 72 +202.5 DL 72 191.5 72 201.5 DL 87.998 192.5 87.998 202.5 DL 77 202.5 72 +202.5 DL 77.998 202.5 72.998 202.5 DL 82.998 202.5 77.998 202.5 DL +87.998 202.5 82.998 202.5 DL 87.998 191.5 87.998 201.5 DL 77 191.5 72 +191.5 DL 77.998 191.5 72.998 191.5 DL 82.998 191.5 77.998 191.5 DL +87.998 191.5 82.998 191.5 DL F4(CSI)75.331 199 Q F1(P)4.997 1 M 101.216 +192.5 101.216 202.5 DL 101.216 191.5 101.216 201.5 DL F2(m)93.774 203 Q +117.214 192.5 117.214 202.5 DL 106.216 202.5 101.216 202.5 DL 107.214 +202.5 102.214 202.5 DL 112.214 202.5 107.214 202.5 DL 117.214 202.5 +112.214 202.5 DL 117.214 191.5 117.214 201.5 DL 106.216 191.5 101.216 +191.5 DL 107.214 191.5 102.214 191.5 DL 112.214 191.5 107.214 191.5 DL +117.214 191.5 112.214 191.5 DL F0 69.395(lR)107.825 200 S +(eset Mode \(RM\))-69.395 E F1(P)185 216 Q F2(s)-2 3 M 202.862 208.5 +202.862 218.5 DL 202.862 207.5 202.862 217.5 DL 218.86 208.5 218.86 +218.5 DL 207.862 218.5 202.862 218.5 DL 208.86 218.5 203.86 218.5 DL +213.86 218.5 208.86 218.5 DL 218.86 218.5 213.86 218.5 DL 218.86 207.5 +218.86 217.5 DL 207.862 207.5 202.862 207.5 DL 208.86 207.5 203.86 207.5 +DL 213.86 207.5 208.86 207.5 DL 218.86 207.5 213.86 207.5 DL F0 7.999 +(=2)194.722 216 S F3<ae>1.666 E F0 -2.15 -.25(Ke y)2.5 H +(board Action Mode \(AM\)).25 E F1(P)185 232 Q F2(s)-2 3 M 202.862 224.5 +202.862 234.5 DL 202.862 223.5 202.862 233.5 DL 218.86 224.5 218.86 +234.5 DL 207.862 234.5 202.862 234.5 DL 208.86 234.5 203.86 234.5 DL +213.86 234.5 208.86 234.5 DL 218.86 234.5 213.86 234.5 DL 218.86 223.5 +218.86 233.5 DL 207.862 223.5 202.862 223.5 DL 208.86 223.5 203.86 223.5 +DL 213.86 223.5 208.86 223.5 DL 218.86 223.5 213.86 223.5 DL F0 7.999 +(=4)194.722 232 S F3<ae>1.666 E F0(Replace Mode \(IRM\))2.5 E F1(P)185 +248 Q F2(s)-2 3 M 202.862 240.5 202.862 250.5 DL 202.862 239.5 202.862 +249.5 DL 218.86 240.5 218.86 250.5 DL 207.862 250.5 202.862 250.5 DL +208.86 250.5 203.86 250.5 DL 213.86 250.5 208.86 250.5 DL 218.86 250.5 +213.86 250.5 DL 218.86 239.5 218.86 249.5 DL 207.862 239.5 202.862 239.5 +DL 208.86 239.5 203.86 239.5 DL 213.86 239.5 208.86 239.5 DL 218.86 +239.5 213.86 239.5 DL 220.526 240.5 220.526 250.5 DL 220.526 239.5 +220.526 249.5 DL 236.524 240.5 236.524 250.5 DL 225.526 250.5 220.526 +250.5 DL 226.524 250.5 221.524 250.5 DL 231.524 250.5 226.524 250.5 DL +236.524 250.5 231.524 250.5 DL 236.524 239.5 236.524 249.5 DL 225.526 +239.5 220.526 239.5 DL 226.524 239.5 221.524 239.5 DL 231.524 239.5 +226.524 239.5 DL 236.524 239.5 231.524 239.5 DL F0 -5.834 7.999(=1 2) +194.722 248 T F3<ae>1.666 E F0(Send/recei)2.5 E .3 -.15(ve \()-.25 H +(SRM\)).15 E F1(P)185 264 Q F2(s)-2 3 M 202.862 256.5 202.862 266.5 DL +202.862 255.5 202.862 265.5 DL 218.86 256.5 218.86 266.5 DL 207.862 +266.5 202.862 266.5 DL 208.86 266.5 203.86 266.5 DL 213.86 266.5 208.86 +266.5 DL 218.86 266.5 213.86 266.5 DL 218.86 255.5 218.86 265.5 DL +207.862 255.5 202.862 255.5 DL 208.86 255.5 203.86 255.5 DL 213.86 255.5 +208.86 255.5 DL 218.86 255.5 213.86 255.5 DL 220.526 256.5 220.526 266.5 +DL 220.526 255.5 220.526 265.5 DL 236.524 256.5 236.524 266.5 DL 225.526 +266.5 220.526 266.5 DL 226.524 266.5 221.524 266.5 DL 231.524 266.5 +226.524 266.5 DL 236.524 266.5 231.524 266.5 DL 236.524 255.5 236.524 +265.5 DL 225.526 255.5 220.526 255.5 DL 226.524 255.5 221.524 255.5 DL +231.524 255.5 226.524 255.5 DL 236.524 255.5 231.524 255.5 DL F0 -5.834 +7.999(=2 0)194.722 264 T F3<ae>1.666 E F0(Normal Linefeed \(LNM\))2.5 E +72 272.5 72 282.5 DL 72 271.5 72 281.5 DL 87.998 272.5 87.998 282.5 DL +77 282.5 72 282.5 DL 77.998 282.5 72.998 282.5 DL 82.998 282.5 77.998 +282.5 DL 87.998 282.5 82.998 282.5 DL 87.998 271.5 87.998 281.5 DL 77 +271.5 72 271.5 DL 77.998 271.5 72.998 271.5 DL 82.998 271.5 77.998 271.5 +DL 87.998 271.5 82.998 271.5 DL 89.664 272.5 89.664 282.5 DL 89.664 +271.5 89.664 281.5 DL F4(CSI)75.331 279 Q 105.662 272.5 105.662 282.5 DL +94.664 282.5 89.664 282.5 DL 95.662 282.5 90.662 282.5 DL 100.662 282.5 +95.662 282.5 DL 105.662 282.5 100.662 282.5 DL 105.662 271.5 105.662 +281.5 DL 94.664 271.5 89.664 271.5 DL 95.662 271.5 90.662 271.5 DL +100.662 271.5 95.662 271.5 DL 105.662 271.5 100.662 271.5 DL F0(?)95.443 +280 Q F1(P)7.445 E 118.88 272.5 118.88 282.5 DL 118.88 271.5 118.88 +281.5 DL F2(m)111.438 283 Q 134.878 272.5 134.878 282.5 DL 123.88 282.5 +118.88 282.5 DL 124.878 282.5 119.878 282.5 DL 129.878 282.5 124.878 +282.5 DL 134.878 282.5 129.878 282.5 DL 134.878 271.5 134.878 281.5 DL +123.88 271.5 118.88 271.5 DL 124.878 271.5 119.878 271.5 DL 129.878 +271.5 124.878 271.5 DL 134.878 271.5 129.878 271.5 DL F0 51.731(lD) +125.489 280 S(EC Pri)-51.731 E -.25(va)-.25 G(te Mode Reset \(DECRST\)) +.25 E F1(P)185 296 Q F2(s)-2 3 M 202.862 288.5 202.862 298.5 DL 202.862 +287.5 202.862 297.5 DL 218.86 288.5 218.86 298.5 DL 207.862 298.5 +202.862 298.5 DL 208.86 298.5 203.86 298.5 DL 213.86 298.5 208.86 298.5 +DL 218.86 298.5 213.86 298.5 DL 218.86 287.5 218.86 297.5 DL 207.862 +287.5 202.862 287.5 DL 208.86 287.5 203.86 287.5 DL 213.86 287.5 208.86 +287.5 DL 218.86 287.5 213.86 287.5 DL F0 7.999(=1)194.722 296 S F3<ae> +1.666 E F0(Normal Cursor K)2.5 E -.15(ey)-.25 G 2.5(s\().15 G(DECCKM\)) +-2.5 E F1(P)185 312 Q F2(s)-2 3 M 202.862 304.5 202.862 314.5 DL 202.862 +303.5 202.862 313.5 DL 218.86 304.5 218.86 314.5 DL 207.862 314.5 +202.862 314.5 DL 208.86 314.5 203.86 314.5 DL 213.86 314.5 208.86 314.5 +DL 218.86 314.5 213.86 314.5 DL 218.86 303.5 218.86 313.5 DL 207.862 +303.5 202.862 303.5 DL 208.86 303.5 203.86 303.5 DL 213.86 303.5 208.86 +303.5 DL 218.86 303.5 213.86 303.5 DL F0 7.999(=2)194.722 312 S F3<ae> +1.666 E F0(Designate VT52 mode \(DECANM\).)2.5 E F1(P)185 328 Q F2(s)-2 +3 M 202.862 320.5 202.862 330.5 DL 202.862 319.5 202.862 329.5 DL 218.86 +320.5 218.86 330.5 DL 207.862 330.5 202.862 330.5 DL 208.86 330.5 203.86 +330.5 DL 213.86 330.5 208.86 330.5 DL 218.86 330.5 213.86 330.5 DL +218.86 319.5 218.86 329.5 DL 207.862 319.5 202.862 319.5 DL 208.86 319.5 +203.86 319.5 DL 213.86 319.5 208.86 319.5 DL 218.86 319.5 213.86 319.5 +DL F0 7.999(=3)194.722 328 S F3<ae>1.666 E F0 +(80 Column Mode \(DECCOLM\))2.5 E F1(P)185 344 Q F2(s)-2 3 M 202.862 +336.5 202.862 346.5 DL 202.862 335.5 202.862 345.5 DL 218.86 336.5 +218.86 346.5 DL 207.862 346.5 202.862 346.5 DL 208.86 346.5 203.86 346.5 +DL 213.86 346.5 208.86 346.5 DL 218.86 346.5 213.86 346.5 DL 218.86 +335.5 218.86 345.5 DL 207.862 335.5 202.862 335.5 DL 208.86 335.5 203.86 +335.5 DL 213.86 335.5 208.86 335.5 DL 218.86 335.5 213.86 335.5 DL F0 +7.999(=4)194.722 344 S F3<ae>1.666 E F0(Jump \(F)2.5 E +(ast\) Scroll \(DECSCLM\))-.15 E F1(P)185 360 Q F2(s)-2 3 M 202.862 +352.5 202.862 362.5 DL 202.862 351.5 202.862 361.5 DL 218.86 352.5 +218.86 362.5 DL 207.862 362.5 202.862 362.5 DL 208.86 362.5 203.86 362.5 +DL 213.86 362.5 208.86 362.5 DL 218.86 362.5 213.86 362.5 DL 218.86 +351.5 218.86 361.5 DL 207.862 351.5 202.862 351.5 DL 208.86 351.5 203.86 +351.5 DL 213.86 351.5 208.86 351.5 DL 218.86 351.5 213.86 351.5 DL F0 +7.999(=5)194.722 360 S F3<ae>1.666 E F0(Normal V)2.5 E(ideo \(DECSCNM\)) +-.6 E F1(P)185 376 Q F2(s)-2 3 M 202.862 368.5 202.862 378.5 DL 202.862 +367.5 202.862 377.5 DL 218.86 368.5 218.86 378.5 DL 207.862 378.5 +202.862 378.5 DL 208.86 378.5 203.86 378.5 DL 213.86 378.5 208.86 378.5 +DL 218.86 378.5 213.86 378.5 DL 218.86 367.5 218.86 377.5 DL 207.862 +367.5 202.862 367.5 DL 208.86 367.5 203.86 367.5 DL 213.86 367.5 208.86 +367.5 DL 218.86 367.5 213.86 367.5 DL F0 7.999(=6)194.722 376 S F3<ae> +1.666 E F0(Normal Cursor Mode \(DECOM\))2.5 E F1(P)185 392 Q F2(s)-2 3 M +202.862 384.5 202.862 394.5 DL 202.862 383.5 202.862 393.5 DL 218.86 +384.5 218.86 394.5 DL 207.862 394.5 202.862 394.5 DL 208.86 394.5 203.86 +394.5 DL 213.86 394.5 208.86 394.5 DL 218.86 394.5 213.86 394.5 DL +218.86 383.5 218.86 393.5 DL 207.862 383.5 202.862 383.5 DL 208.86 383.5 +203.86 383.5 DL 213.86 383.5 208.86 383.5 DL 218.86 383.5 213.86 383.5 +DL F0 7.999(=7)194.722 392 S F3<ae>1.666 E F0(No Wraparound Mode \(DECA) +2.5 E(WM\))-.9 E F1(P)185 408 Q F2(s)-2 3 M 202.862 400.5 202.862 410.5 +DL 202.862 399.5 202.862 409.5 DL 218.86 400.5 218.86 410.5 DL 207.862 +410.5 202.862 410.5 DL 208.86 410.5 203.86 410.5 DL 213.86 410.5 208.86 +410.5 DL 218.86 410.5 213.86 410.5 DL 218.86 399.5 218.86 409.5 DL +207.862 399.5 202.862 399.5 DL 208.86 399.5 203.86 399.5 DL 213.86 399.5 +208.86 399.5 DL 218.86 399.5 213.86 399.5 DL F0 7.999(=8)194.722 408 S +F3<ae>1.666 E F0(No Auto-repeat K)2.5 E -.15(ey)-.25 G 2.5(s\().15 G +(DECARM\))-2.5 E F1(P)185 424 Q F2(s)-2 3 M 202.862 416.5 202.862 426.5 +DL 202.862 415.5 202.862 425.5 DL 218.86 416.5 218.86 426.5 DL 207.862 +426.5 202.862 426.5 DL 208.86 426.5 203.86 426.5 DL 213.86 426.5 208.86 +426.5 DL 218.86 426.5 213.86 426.5 DL 218.86 415.5 218.86 425.5 DL +207.862 415.5 202.862 415.5 DL 208.86 415.5 203.86 415.5 DL 213.86 415.5 +208.86 415.5 DL 218.86 415.5 213.86 415.5 DL F0 7.999(=9)194.722 424 S +F3<ae>1.666 E F0(Don')2.5 E 2.5(tS)-.18 G(end Mouse X & Y on b)-2.5 E +(utton press)-.2 E F1(P)185 440 Q F2(s)-2 3 M 202.862 432.5 202.862 +442.5 DL 202.862 431.5 202.862 441.5 DL 218.86 432.5 218.86 442.5 DL +207.862 442.5 202.862 442.5 DL 208.86 442.5 203.86 442.5 DL 213.86 442.5 +208.86 442.5 DL 218.86 442.5 213.86 442.5 DL 218.86 431.5 218.86 441.5 +DL 207.862 431.5 202.862 431.5 DL 208.86 431.5 203.86 431.5 DL 213.86 +431.5 208.86 431.5 DL 218.86 431.5 213.86 431.5 DL 220.526 432.5 220.526 +442.5 DL 220.526 431.5 220.526 441.5 DL 236.524 432.5 236.524 442.5 DL +225.526 442.5 220.526 442.5 DL 226.524 442.5 221.524 442.5 DL 231.524 +442.5 226.524 442.5 DL 236.524 442.5 231.524 442.5 DL 236.524 431.5 +236.524 441.5 DL 225.526 431.5 220.526 431.5 DL 226.524 431.5 221.524 +431.5 DL 231.524 431.5 226.524 431.5 DL 236.524 431.5 231.524 431.5 DL +F0 -5.834 7.999(=1 8)194.722 440 T F3<ae>1.666 E F0(Don')2.5 E 2.5(tp) +-.18 G(rint form feed \(DECPFF\))-2.5 E F1(P)185 456 Q F2(s)-2 3 M +202.862 448.5 202.862 458.5 DL 202.862 447.5 202.862 457.5 DL 218.86 +448.5 218.86 458.5 DL 207.862 458.5 202.862 458.5 DL 208.86 458.5 203.86 +458.5 DL 213.86 458.5 208.86 458.5 DL 218.86 458.5 213.86 458.5 DL +218.86 447.5 218.86 457.5 DL 207.862 447.5 202.862 447.5 DL 208.86 447.5 +203.86 447.5 DL 213.86 447.5 208.86 447.5 DL 218.86 447.5 213.86 447.5 +DL 220.526 448.5 220.526 458.5 DL 220.526 447.5 220.526 457.5 DL 236.524 +448.5 236.524 458.5 DL 225.526 458.5 220.526 458.5 DL 226.524 458.5 +221.524 458.5 DL 231.524 458.5 226.524 458.5 DL 236.524 458.5 231.524 +458.5 DL 236.524 447.5 236.524 457.5 DL 225.526 447.5 220.526 447.5 DL +226.524 447.5 221.524 447.5 DL 231.524 447.5 226.524 447.5 DL 236.524 +447.5 231.524 447.5 DL F0 -5.834 7.999(=1 9)194.722 456 T F3<ae>1.666 E +F0(Limit print to scrolling re)2.5 E(gion \(DECPEX\))-.15 E F1(P)185 472 +Q F2(s)-2 3 M 202.862 464.5 202.862 474.5 DL 202.862 463.5 202.862 473.5 +DL 218.86 464.5 218.86 474.5 DL 207.862 474.5 202.862 474.5 DL 208.86 +474.5 203.86 474.5 DL 213.86 474.5 208.86 474.5 DL 218.86 474.5 213.86 +474.5 DL 218.86 463.5 218.86 473.5 DL 207.862 463.5 202.862 463.5 DL +208.86 463.5 203.86 463.5 DL 213.86 463.5 208.86 463.5 DL 218.86 463.5 +213.86 463.5 DL 220.526 464.5 220.526 474.5 DL 220.526 463.5 220.526 +473.5 DL 236.524 464.5 236.524 474.5 DL 225.526 474.5 220.526 474.5 DL +226.524 474.5 221.524 474.5 DL 231.524 474.5 226.524 474.5 DL 236.524 +474.5 231.524 474.5 DL 236.524 463.5 236.524 473.5 DL 225.526 463.5 +220.526 463.5 DL 226.524 463.5 221.524 463.5 DL 231.524 463.5 226.524 +463.5 DL 236.524 463.5 231.524 463.5 DL F0 -5.834 7.999(=2 5)194.722 472 +T F3<ae>1.666 E F0(Hide Cursor \(DECTCEM\))2.5 E F1(P)185 488 Q F2(s)-2 +3 M 202.862 480.5 202.862 490.5 DL 202.862 479.5 202.862 489.5 DL 218.86 +480.5 218.86 490.5 DL 207.862 490.5 202.862 490.5 DL 208.86 490.5 203.86 +490.5 DL 213.86 490.5 208.86 490.5 DL 218.86 490.5 213.86 490.5 DL +218.86 479.5 218.86 489.5 DL 207.862 479.5 202.862 479.5 DL 208.86 479.5 +203.86 479.5 DL 213.86 479.5 208.86 479.5 DL 218.86 479.5 213.86 479.5 +DL 220.526 480.5 220.526 490.5 DL 220.526 479.5 220.526 489.5 DL 236.524 +480.5 236.524 490.5 DL 225.526 490.5 220.526 490.5 DL 226.524 490.5 +221.524 490.5 DL 231.524 490.5 226.524 490.5 DL 236.524 490.5 231.524 +490.5 DL 236.524 479.5 236.524 489.5 DL 225.526 479.5 220.526 479.5 DL +226.524 479.5 221.524 479.5 DL 231.524 479.5 226.524 479.5 DL 236.524 +479.5 231.524 479.5 DL F0 -5.834 7.999(=3 0)194.722 488 T F3<ae>1.666 E +F0(Don')2.5 E 2.5(ts)-.18 G(ho)-2.5 E 2.5(ws)-.25 G(crollbar \(rxvt\).) +-2.5 E F1(P)185 504 Q F2(s)-2 3 M 202.862 496.5 202.862 506.5 DL 202.862 +495.5 202.862 505.5 DL 218.86 496.5 218.86 506.5 DL 207.862 506.5 +202.862 506.5 DL 208.86 506.5 203.86 506.5 DL 213.86 506.5 208.86 506.5 +DL 218.86 506.5 213.86 506.5 DL 218.86 495.5 218.86 505.5 DL 207.862 +495.5 202.862 495.5 DL 208.86 495.5 203.86 495.5 DL 213.86 495.5 208.86 +495.5 DL 218.86 495.5 213.86 495.5 DL 220.526 496.5 220.526 506.5 DL +220.526 495.5 220.526 505.5 DL 236.524 496.5 236.524 506.5 DL 225.526 +506.5 220.526 506.5 DL 226.524 506.5 221.524 506.5 DL 231.524 506.5 +226.524 506.5 DL 236.524 506.5 231.524 506.5 DL 236.524 495.5 236.524 +505.5 DL 225.526 495.5 220.526 495.5 DL 226.524 495.5 221.524 495.5 DL +231.524 495.5 226.524 495.5 DL 236.524 495.5 231.524 495.5 DL F0 -5.834 +7.999(=3 5)194.722 504 T F3<ae>1.666 E F0 +(Disable font-shifting functions \(rxvt\).)2.5 E F1(P)185 520 Q F2(s)-2 +3 M 202.862 512.5 202.862 522.5 DL 202.862 511.5 202.862 521.5 DL 218.86 +512.5 218.86 522.5 DL 207.862 522.5 202.862 522.5 DL 208.86 522.5 203.86 +522.5 DL 213.86 522.5 208.86 522.5 DL 218.86 522.5 213.86 522.5 DL +218.86 511.5 218.86 521.5 DL 207.862 511.5 202.862 511.5 DL 208.86 511.5 +203.86 511.5 DL 213.86 511.5 208.86 511.5 DL 218.86 511.5 213.86 511.5 +DL 220.526 512.5 220.526 522.5 DL 220.526 511.5 220.526 521.5 DL 236.524 +512.5 236.524 522.5 DL 225.526 522.5 220.526 522.5 DL 226.524 522.5 +221.524 522.5 DL 231.524 522.5 226.524 522.5 DL 236.524 522.5 231.524 +522.5 DL 236.524 511.5 236.524 521.5 DL 225.526 511.5 220.526 511.5 DL +226.524 511.5 221.524 511.5 DL 231.524 511.5 226.524 511.5 DL 236.524 +511.5 231.524 511.5 DL F0 -5.834 7.999(=4 0)194.722 520 T F3<ae>1.666 E +F0(Disallo)2.5 E 2.5(w8)-.25 G(0)-2.5 E F3 -9.87<acae>2.5 G F0(132 Mode) +12.37 E F1(P)185 536 Q F2(s)-2 3 M 202.862 528.5 202.862 538.5 DL +202.862 527.5 202.862 537.5 DL 218.86 528.5 218.86 538.5 DL 207.862 +538.5 202.862 538.5 DL 208.86 538.5 203.86 538.5 DL 213.86 538.5 208.86 +538.5 DL 218.86 538.5 213.86 538.5 DL 218.86 527.5 218.86 537.5 DL +207.862 527.5 202.862 527.5 DL 208.86 527.5 203.86 527.5 DL 213.86 527.5 +208.86 527.5 DL 218.86 527.5 213.86 527.5 DL 220.526 528.5 220.526 538.5 +DL 220.526 527.5 220.526 537.5 DL 236.524 528.5 236.524 538.5 DL 225.526 +538.5 220.526 538.5 DL 226.524 538.5 221.524 538.5 DL 231.524 538.5 +226.524 538.5 DL 236.524 538.5 231.524 538.5 DL 236.524 527.5 236.524 +537.5 DL 225.526 527.5 220.526 527.5 DL 226.524 527.5 221.524 527.5 DL +231.524 527.5 226.524 527.5 DL 236.524 527.5 231.524 527.5 DL F0 -5.834 +7.999(=4 1)194.722 536 T F3<ae>1.666 E F0(No)2.5 E F1(mor)2.5 E(e)-.37 E +F0(\(1\) \214x \(see)A F1(cur)2.5 E(ses)-.1 E F0(resource\))2.5 E F1(P) +185 552 Q F2(s)-2 3 M 202.862 544.5 202.862 554.5 DL 202.862 543.5 +202.862 553.5 DL 218.86 544.5 218.86 554.5 DL 207.862 554.5 202.862 +554.5 DL 208.86 554.5 203.86 554.5 DL 213.86 554.5 208.86 554.5 DL +218.86 554.5 213.86 554.5 DL 218.86 543.5 218.86 553.5 DL 207.862 543.5 +202.862 543.5 DL 208.86 543.5 203.86 543.5 DL 213.86 543.5 208.86 543.5 +DL 218.86 543.5 213.86 543.5 DL 220.526 544.5 220.526 554.5 DL 220.526 +543.5 220.526 553.5 DL 236.524 544.5 236.524 554.5 DL 225.526 554.5 +220.526 554.5 DL 226.524 554.5 221.524 554.5 DL 231.524 554.5 226.524 +554.5 DL 236.524 554.5 231.524 554.5 DL 236.524 543.5 236.524 553.5 DL +225.526 543.5 220.526 543.5 DL 226.524 543.5 221.524 543.5 DL 231.524 +543.5 226.524 543.5 DL 236.524 543.5 231.524 543.5 DL F0 -5.834 7.999 +(=4 2)194.722 552 T F3<ae>1.666 E F0 +(Disable Nation Replacement Character sets \(DECNRCM\))2.5 E F1(P)185 +568 Q F2(s)-2 3 M 202.862 560.5 202.862 570.5 DL 202.862 559.5 202.862 +569.5 DL 218.86 560.5 218.86 570.5 DL 207.862 570.5 202.862 570.5 DL +208.86 570.5 203.86 570.5 DL 213.86 570.5 208.86 570.5 DL 218.86 570.5 +213.86 570.5 DL 218.86 559.5 218.86 569.5 DL 207.862 559.5 202.862 559.5 +DL 208.86 559.5 203.86 559.5 DL 213.86 559.5 208.86 559.5 DL 218.86 +559.5 213.86 559.5 DL 220.526 560.5 220.526 570.5 DL 220.526 559.5 +220.526 569.5 DL 236.524 560.5 236.524 570.5 DL 225.526 570.5 220.526 +570.5 DL 226.524 570.5 221.524 570.5 DL 231.524 570.5 226.524 570.5 DL +236.524 570.5 231.524 570.5 DL 236.524 559.5 236.524 569.5 DL 225.526 +559.5 220.526 559.5 DL 226.524 559.5 221.524 559.5 DL 231.524 559.5 +226.524 559.5 DL 236.524 559.5 231.524 559.5 DL F0 -5.834 7.999(=4 4) +194.722 568 T F3<ae>1.666 E F0 -.45(Tu)2.5 G(rn Of).45 E 2.5(fM)-.25 G +(ar)-2.5 E(gin Bell)-.18 E F1(P)185 584 Q F2(s)-2 3 M 202.862 576.5 +202.862 586.5 DL 202.862 575.5 202.862 585.5 DL 218.86 576.5 218.86 +586.5 DL 207.862 586.5 202.862 586.5 DL 208.86 586.5 203.86 586.5 DL +213.86 586.5 208.86 586.5 DL 218.86 586.5 213.86 586.5 DL 218.86 575.5 +218.86 585.5 DL 207.862 575.5 202.862 575.5 DL 208.86 575.5 203.86 575.5 +DL 213.86 575.5 208.86 575.5 DL 218.86 575.5 213.86 575.5 DL 220.526 +576.5 220.526 586.5 DL 220.526 575.5 220.526 585.5 DL 236.524 576.5 +236.524 586.5 DL 225.526 586.5 220.526 586.5 DL 226.524 586.5 221.524 +586.5 DL 231.524 586.5 226.524 586.5 DL 236.524 586.5 231.524 586.5 DL +236.524 575.5 236.524 585.5 DL 225.526 575.5 220.526 575.5 DL 226.524 +575.5 221.524 575.5 DL 231.524 575.5 226.524 575.5 DL 236.524 575.5 +231.524 575.5 DL F0 -5.834 7.999(=4 5)194.722 584 T F3<ae>1.666 E F0 +(No Re)2.5 E -.15(ve)-.25 G(rse-wraparound Mode).15 E F1(P)185 600 Q F2 +(s)-2 3 M 202.862 592.5 202.862 602.5 DL 202.862 591.5 202.862 601.5 DL +218.86 592.5 218.86 602.5 DL 207.862 602.5 202.862 602.5 DL 208.86 602.5 +203.86 602.5 DL 213.86 602.5 208.86 602.5 DL 218.86 602.5 213.86 602.5 +DL 218.86 591.5 218.86 601.5 DL 207.862 591.5 202.862 591.5 DL 208.86 +591.5 203.86 591.5 DL 213.86 591.5 208.86 591.5 DL 218.86 591.5 213.86 +591.5 DL 220.526 592.5 220.526 602.5 DL 220.526 591.5 220.526 601.5 DL +236.524 592.5 236.524 602.5 DL 225.526 602.5 220.526 602.5 DL 226.524 +602.5 221.524 602.5 DL 231.524 602.5 226.524 602.5 DL 236.524 602.5 +231.524 602.5 DL 236.524 591.5 236.524 601.5 DL 225.526 591.5 220.526 +591.5 DL 226.524 591.5 221.524 591.5 DL 231.524 591.5 226.524 591.5 DL +236.524 591.5 231.524 591.5 DL F0 -5.834 7.999(=4 6)194.722 600 T F3<ae> +1.666 E F0(Stop Logging \(normally disabled by a compile-time option\)) +2.5 E F1(P)185 616 Q F2(s)-2 3 M 202.862 608.5 202.862 618.5 DL 202.862 +607.5 202.862 617.5 DL 218.86 608.5 218.86 618.5 DL 207.862 618.5 +202.862 618.5 DL 208.86 618.5 203.86 618.5 DL 213.86 618.5 208.86 618.5 +DL 218.86 618.5 213.86 618.5 DL 218.86 607.5 218.86 617.5 DL 207.862 +607.5 202.862 607.5 DL 208.86 607.5 203.86 607.5 DL 213.86 607.5 208.86 +607.5 DL 218.86 607.5 213.86 607.5 DL 220.526 608.5 220.526 618.5 DL +220.526 607.5 220.526 617.5 DL 236.524 608.5 236.524 618.5 DL 225.526 +618.5 220.526 618.5 DL 226.524 618.5 221.524 618.5 DL 231.524 618.5 +226.524 618.5 DL 236.524 618.5 231.524 618.5 DL 236.524 607.5 236.524 +617.5 DL 225.526 607.5 220.526 607.5 DL 226.524 607.5 221.524 607.5 DL +231.524 607.5 226.524 607.5 DL 236.524 607.5 231.524 607.5 DL F0 -5.834 +7.999(=4 7)194.722 616 T F3<ae>1.666 E F0(Use Normal Screen Buf)2.5 E +(fer)-.25 E F1(P)185 632 Q F2(s)-2 3 M 202.862 624.5 202.862 634.5 DL +202.862 623.5 202.862 633.5 DL 218.86 624.5 218.86 634.5 DL 207.862 +634.5 202.862 634.5 DL 208.86 634.5 203.86 634.5 DL 213.86 634.5 208.86 +634.5 DL 218.86 634.5 213.86 634.5 DL 218.86 623.5 218.86 633.5 DL +207.862 623.5 202.862 623.5 DL 208.86 623.5 203.86 623.5 DL 213.86 623.5 +208.86 623.5 DL 218.86 623.5 213.86 623.5 DL 220.526 624.5 220.526 634.5 +DL 220.526 623.5 220.526 633.5 DL 236.524 624.5 236.524 634.5 DL 225.526 +634.5 220.526 634.5 DL 226.524 634.5 221.524 634.5 DL 231.524 634.5 +226.524 634.5 DL 236.524 634.5 231.524 634.5 DL 236.524 623.5 236.524 +633.5 DL 225.526 623.5 220.526 623.5 DL 226.524 623.5 221.524 623.5 DL +231.524 623.5 226.524 623.5 DL 236.524 623.5 231.524 623.5 DL F0 -5.834 +7.999(=6 6)194.722 632 T F3<ae>1.666 E F0(Numeric k)2.5 E -.15(ey)-.1 G +(pad \(DECNKM\)).15 E F1(P)185 648 Q F2(s)-2 3 M 202.862 640.5 202.862 +650.5 DL 202.862 639.5 202.862 649.5 DL 218.86 640.5 218.86 650.5 DL +207.862 650.5 202.862 650.5 DL 208.86 650.5 203.86 650.5 DL 213.86 650.5 +208.86 650.5 DL 218.86 650.5 213.86 650.5 DL 218.86 639.5 218.86 649.5 +DL 207.862 639.5 202.862 639.5 DL 208.86 639.5 203.86 639.5 DL 213.86 +639.5 208.86 639.5 DL 218.86 639.5 213.86 639.5 DL 220.526 640.5 220.526 +650.5 DL 220.526 639.5 220.526 649.5 DL 236.524 640.5 236.524 650.5 DL +225.526 650.5 220.526 650.5 DL 226.524 650.5 221.524 650.5 DL 231.524 +650.5 226.524 650.5 DL 236.524 650.5 231.524 650.5 DL 236.524 639.5 +236.524 649.5 DL 225.526 639.5 220.526 639.5 DL 226.524 639.5 221.524 +639.5 DL 231.524 639.5 226.524 639.5 DL 236.524 639.5 231.524 639.5 DL +F0 -5.834 7.999(=6 7)194.722 648 T F3<ae>1.666 E F0(Backarro)2.5 E 2.5 +(wk)-.25 G .3 -.15(ey s)-2.6 H(ends backspace \(DECBKM\)).15 E F1(P)185 +664 Q F2(s)-2 3 M 204.726 656.5 204.726 666.5 DL 204.726 655.5 204.726 +665.5 DL 220.724 656.5 220.724 666.5 DL 209.726 666.5 204.726 666.5 DL +210.724 666.5 205.724 666.5 DL 215.724 666.5 210.724 666.5 DL 220.724 +666.5 215.724 666.5 DL 220.724 655.5 220.724 665.5 DL 209.726 655.5 +204.726 655.5 DL 210.724 655.5 205.724 655.5 DL 215.724 655.5 210.724 +655.5 DL 220.724 655.5 215.724 655.5 DL 222.39 656.5 222.39 666.5 DL +222.39 655.5 222.39 665.5 DL 238.388 656.5 238.388 666.5 DL 227.39 666.5 +222.39 666.5 DL 228.388 666.5 223.388 666.5 DL 233.388 666.5 228.388 +666.5 DL 238.388 666.5 233.388 666.5 DL 238.388 655.5 238.388 665.5 DL +227.39 655.5 222.39 655.5 DL 228.388 655.5 223.388 655.5 DL 233.388 +655.5 228.388 655.5 DL 238.388 655.5 233.388 655.5 DL 240.054 656.5 +240.054 666.5 DL 240.054 655.5 240.054 665.5 DL 256.052 656.5 256.052 +666.5 DL 245.054 666.5 240.054 666.5 DL 246.052 666.5 241.052 666.5 DL +251.052 666.5 246.052 666.5 DL 256.052 666.5 251.052 666.5 DL 256.052 +655.5 256.052 665.5 DL 245.054 655.5 240.054 655.5 DL 246.052 655.5 +241.052 655.5 DL 251.052 655.5 246.052 655.5 DL 256.052 655.5 251.052 +655.5 DL 257.718 656.5 257.718 666.5 DL 257.718 655.5 257.718 665.5 DL +273.716 656.5 273.716 666.5 DL 262.718 666.5 257.718 666.5 DL 263.716 +666.5 258.716 666.5 DL 268.716 666.5 263.716 666.5 DL 273.716 666.5 +268.716 666.5 DL 273.716 655.5 273.716 665.5 DL 262.718 655.5 257.718 +655.5 DL 263.716 655.5 258.716 655.5 DL 268.716 655.5 263.716 655.5 DL +273.716 655.5 268.716 655.5 DL F0 -7.698 8.931(=1 0 0 0)195.654 664 T F3 +<ae>1.666 E F0(Don')3.432 E 3.432(tS)-.18 G .931(end Mouse X & Y on b) +-3.432 F .931(utton press and release.)-.2 F(See)5.931 E(the section)180 +680 Q/F5 10/Times-Bold@0 SF(Mouse T)2.5 E(racking)-.74 E F0(.)A F1(P)185 +696 Q F2(s)-2 3 M 202.862 688.5 202.862 698.5 DL 202.862 687.5 202.862 +697.5 DL 218.86 688.5 218.86 698.5 DL 207.862 698.5 202.862 698.5 DL +208.86 698.5 203.86 698.5 DL 213.86 698.5 208.86 698.5 DL 218.86 698.5 +213.86 698.5 DL 218.86 687.5 218.86 697.5 DL 207.862 687.5 202.862 687.5 +DL 208.86 687.5 203.86 687.5 DL 213.86 687.5 208.86 687.5 DL 218.86 +687.5 213.86 687.5 DL 220.526 688.5 220.526 698.5 DL 220.526 687.5 +220.526 697.5 DL 236.524 688.5 236.524 698.5 DL 225.526 698.5 220.526 +698.5 DL 226.524 698.5 221.524 698.5 DL 231.524 698.5 226.524 698.5 DL +236.524 698.5 231.524 698.5 DL 236.524 687.5 236.524 697.5 DL 225.526 +687.5 220.526 687.5 DL 226.524 687.5 221.524 687.5 DL 231.524 687.5 +226.524 687.5 DL 236.524 687.5 231.524 687.5 DL 238.19 688.5 238.19 +698.5 DL 238.19 687.5 238.19 697.5 DL 254.188 688.5 254.188 698.5 DL +243.19 698.5 238.19 698.5 DL 244.188 698.5 239.188 698.5 DL 249.188 +698.5 244.188 698.5 DL 254.188 698.5 249.188 698.5 DL 254.188 687.5 +254.188 697.5 DL 243.19 687.5 238.19 687.5 DL 244.188 687.5 239.188 +687.5 DL 249.188 687.5 244.188 687.5 DL 254.188 687.5 249.188 687.5 DL +255.854 688.5 255.854 698.5 DL 255.854 687.5 255.854 697.5 DL 271.852 +688.5 271.852 698.5 DL 260.854 698.5 255.854 698.5 DL 261.852 698.5 +256.852 698.5 DL 266.852 698.5 261.852 698.5 DL 271.852 698.5 266.852 +698.5 DL 271.852 687.5 271.852 697.5 DL 260.854 687.5 255.854 687.5 DL +261.852 687.5 256.852 687.5 DL 266.852 687.5 261.852 687.5 DL 271.852 +687.5 266.852 687.5 DL F0 -5.834 7.999(=1 0 0 1)194.722 696 T F3<ae> +1.666 E F0(Don')2.5 E 2.5(tU)-.18 G(se Hilite Mouse T)-2.5 E(racking) +-.35 E F1(P)185 712 Q F2(s)-2 3 M 202.862 704.5 202.862 714.5 DL 202.862 +703.5 202.862 713.5 DL 218.86 704.5 218.86 714.5 DL 207.862 714.5 +202.862 714.5 DL 208.86 714.5 203.86 714.5 DL 213.86 714.5 208.86 714.5 +DL 218.86 714.5 213.86 714.5 DL 218.86 703.5 218.86 713.5 DL 207.862 +703.5 202.862 703.5 DL 208.86 703.5 203.86 703.5 DL 213.86 703.5 208.86 +703.5 DL 218.86 703.5 213.86 703.5 DL 220.526 704.5 220.526 714.5 DL +220.526 703.5 220.526 713.5 DL 236.524 704.5 236.524 714.5 DL 225.526 +714.5 220.526 714.5 DL 226.524 714.5 221.524 714.5 DL 231.524 714.5 +226.524 714.5 DL 236.524 714.5 231.524 714.5 DL 236.524 703.5 236.524 +713.5 DL 225.526 703.5 220.526 703.5 DL 226.524 703.5 221.524 703.5 DL +231.524 703.5 226.524 703.5 DL 236.524 703.5 231.524 703.5 DL 238.19 +704.5 238.19 714.5 DL 238.19 703.5 238.19 713.5 DL 254.188 704.5 254.188 +714.5 DL 243.19 714.5 238.19 714.5 DL 244.188 714.5 239.188 714.5 DL +249.188 714.5 244.188 714.5 DL 254.188 714.5 249.188 714.5 DL 254.188 +703.5 254.188 713.5 DL 243.19 703.5 238.19 703.5 DL 244.188 703.5 +239.188 703.5 DL 249.188 703.5 244.188 703.5 DL 254.188 703.5 249.188 +703.5 DL 255.854 704.5 255.854 714.5 DL 255.854 703.5 255.854 713.5 DL +271.852 704.5 271.852 714.5 DL 260.854 714.5 255.854 714.5 DL 261.852 +714.5 256.852 714.5 DL 266.852 714.5 261.852 714.5 DL 271.852 714.5 +266.852 714.5 DL 271.852 703.5 271.852 713.5 DL 260.854 703.5 255.854 +703.5 DL 261.852 703.5 256.852 703.5 DL 266.852 703.5 261.852 703.5 DL +271.852 703.5 266.852 703.5 DL F0 -5.834 7.999(=1 0 0 2)194.722 712 T F3 +<ae>1.666 E F0(Don')2.5 E 2.5(tU)-.18 G(se Cell Motion Mouse T)-2.5 E +(racking)-.35 E F1(P)185 728 Q F2(s)-2 3 M 202.862 720.5 202.862 730.5 +DL 202.862 719.5 202.862 729.5 DL 218.86 720.5 218.86 730.5 DL 207.862 +730.5 202.862 730.5 DL 208.86 730.5 203.86 730.5 DL 213.86 730.5 208.86 +730.5 DL 218.86 730.5 213.86 730.5 DL 218.86 719.5 218.86 729.5 DL +207.862 719.5 202.862 719.5 DL 208.86 719.5 203.86 719.5 DL 213.86 719.5 +208.86 719.5 DL 218.86 719.5 213.86 719.5 DL 220.526 720.5 220.526 730.5 +DL 220.526 719.5 220.526 729.5 DL 236.524 720.5 236.524 730.5 DL 225.526 +730.5 220.526 730.5 DL 226.524 730.5 221.524 730.5 DL 231.524 730.5 +226.524 730.5 DL 236.524 730.5 231.524 730.5 DL 236.524 719.5 236.524 +729.5 DL 225.526 719.5 220.526 719.5 DL 226.524 719.5 221.524 719.5 DL +231.524 719.5 226.524 719.5 DL 236.524 719.5 231.524 719.5 DL 238.19 +720.5 238.19 730.5 DL 238.19 719.5 238.19 729.5 DL 254.188 720.5 254.188 +730.5 DL 243.19 730.5 238.19 730.5 DL 244.188 730.5 239.188 730.5 DL +249.188 730.5 244.188 730.5 DL 254.188 730.5 249.188 730.5 DL 254.188 +719.5 254.188 729.5 DL 243.19 719.5 238.19 719.5 DL 244.188 719.5 +239.188 719.5 DL 249.188 719.5 244.188 719.5 DL 254.188 719.5 249.188 +719.5 DL 255.854 720.5 255.854 730.5 DL 255.854 719.5 255.854 729.5 DL +271.852 720.5 271.852 730.5 DL 260.854 730.5 255.854 730.5 DL 261.852 +730.5 256.852 730.5 DL 266.852 730.5 261.852 730.5 DL 271.852 730.5 +266.852 730.5 DL 271.852 719.5 271.852 729.5 DL 260.854 719.5 255.854 +719.5 DL 261.852 719.5 256.852 719.5 DL 266.852 719.5 261.852 719.5 DL +271.852 719.5 266.852 719.5 DL F0 -5.834 7.999(=1 0 0 3)194.722 728 T F3 +<ae>1.666 E F0(Don')2.5 E 2.5(tU)-.18 G(se All Motion Mouse T)-2.5 E +(racking)-.35 E(8)303.5 772 Q EP +%%Page: 9 9 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E/F1 10/Times-Italic@0 SF(P)185 88 Q/F2 8/Times-Italic@0 SF(s)-2 +3 M .4 LW 202.862 80.5 202.862 90.5 DL 202.862 79.5 202.862 89.5 DL +218.86 80.5 218.86 90.5 DL 207.862 90.5 202.862 90.5 DL 208.86 90.5 +203.86 90.5 DL 213.86 90.5 208.86 90.5 DL 218.86 90.5 213.86 90.5 DL +218.86 79.5 218.86 89.5 DL 207.862 79.5 202.862 79.5 DL 208.86 79.5 +203.86 79.5 DL 213.86 79.5 208.86 79.5 DL 218.86 79.5 213.86 79.5 DL +220.526 80.5 220.526 90.5 DL 220.526 79.5 220.526 89.5 DL 236.524 80.5 +236.524 90.5 DL 225.526 90.5 220.526 90.5 DL 226.524 90.5 221.524 90.5 +DL 231.524 90.5 226.524 90.5 DL 236.524 90.5 231.524 90.5 DL 236.524 +79.5 236.524 89.5 DL 225.526 79.5 220.526 79.5 DL 226.524 79.5 221.524 +79.5 DL 231.524 79.5 226.524 79.5 DL 236.524 79.5 231.524 79.5 DL 238.19 +80.5 238.19 90.5 DL 238.19 79.5 238.19 89.5 DL 254.188 80.5 254.188 90.5 +DL 243.19 90.5 238.19 90.5 DL 244.188 90.5 239.188 90.5 DL 249.188 90.5 +244.188 90.5 DL 254.188 90.5 249.188 90.5 DL 254.188 79.5 254.188 89.5 +DL 243.19 79.5 238.19 79.5 DL 244.188 79.5 239.188 79.5 DL 249.188 79.5 +244.188 79.5 DL 254.188 79.5 249.188 79.5 DL 255.854 80.5 255.854 90.5 +DL 255.854 79.5 255.854 89.5 DL 271.852 80.5 271.852 90.5 DL 260.854 +90.5 255.854 90.5 DL 261.852 90.5 256.852 90.5 DL 266.852 90.5 261.852 +90.5 DL 271.852 90.5 266.852 90.5 DL 271.852 79.5 271.852 89.5 DL +260.854 79.5 255.854 79.5 DL 261.852 79.5 256.852 79.5 DL 266.852 79.5 +261.852 79.5 DL 271.852 79.5 266.852 79.5 DL F0 -5.834 7.999(=1 0 1 0) +194.722 88 T/F3 10/Symbol SF<ae>1.666 E F0(Don')2.5 E 2.5(ts)-.18 G +(croll to bottom on tty output \(rxvt\).)-2.5 E F1(P)185 104 Q F2(s)-2 3 +M 202.862 96.5 202.862 106.5 DL 202.862 95.5 202.862 105.5 DL 218.86 +96.5 218.86 106.5 DL 207.862 106.5 202.862 106.5 DL 208.86 106.5 203.86 +106.5 DL 213.86 106.5 208.86 106.5 DL 218.86 106.5 213.86 106.5 DL +218.86 95.5 218.86 105.5 DL 207.862 95.5 202.862 95.5 DL 208.86 95.5 +203.86 95.5 DL 213.86 95.5 208.86 95.5 DL 218.86 95.5 213.86 95.5 DL +220.526 96.5 220.526 106.5 DL 220.526 95.5 220.526 105.5 DL 236.524 96.5 +236.524 106.5 DL 225.526 106.5 220.526 106.5 DL 226.524 106.5 221.524 +106.5 DL 231.524 106.5 226.524 106.5 DL 236.524 106.5 231.524 106.5 DL +236.524 95.5 236.524 105.5 DL 225.526 95.5 220.526 95.5 DL 226.524 95.5 +221.524 95.5 DL 231.524 95.5 226.524 95.5 DL 236.524 95.5 231.524 95.5 +DL 238.19 96.5 238.19 106.5 DL 238.19 95.5 238.19 105.5 DL 254.188 96.5 +254.188 106.5 DL 243.19 106.5 238.19 106.5 DL 244.188 106.5 239.188 +106.5 DL 249.188 106.5 244.188 106.5 DL 254.188 106.5 249.188 106.5 DL +254.188 95.5 254.188 105.5 DL 243.19 95.5 238.19 95.5 DL 244.188 95.5 +239.188 95.5 DL 249.188 95.5 244.188 95.5 DL 254.188 95.5 249.188 95.5 +DL 255.854 96.5 255.854 106.5 DL 255.854 95.5 255.854 105.5 DL 271.852 +96.5 271.852 106.5 DL 260.854 106.5 255.854 106.5 DL 261.852 106.5 +256.852 106.5 DL 266.852 106.5 261.852 106.5 DL 271.852 106.5 266.852 +106.5 DL 271.852 95.5 271.852 105.5 DL 260.854 95.5 255.854 95.5 DL +261.852 95.5 256.852 95.5 DL 266.852 95.5 261.852 95.5 DL 271.852 95.5 +266.852 95.5 DL F0 -5.834 7.999(=1 0 1 1)194.722 104 T F3<ae>1.666 E F0 +(Don')2.5 E 2.5(ts)-.18 G(croll to bottom on k)-2.5 E .3 -.15(ey p)-.1 H +(ress \(rxvt\).).15 E F1(P)185 120 Q F2(s)-2 3 M 202.862 112.5 202.862 +122.5 DL 202.862 111.5 202.862 121.5 DL 218.86 112.5 218.86 122.5 DL +207.862 122.5 202.862 122.5 DL 208.86 122.5 203.86 122.5 DL 213.86 122.5 +208.86 122.5 DL 218.86 122.5 213.86 122.5 DL 218.86 111.5 218.86 121.5 +DL 207.862 111.5 202.862 111.5 DL 208.86 111.5 203.86 111.5 DL 213.86 +111.5 208.86 111.5 DL 218.86 111.5 213.86 111.5 DL 220.526 112.5 220.526 +122.5 DL 220.526 111.5 220.526 121.5 DL 236.524 112.5 236.524 122.5 DL +225.526 122.5 220.526 122.5 DL 226.524 122.5 221.524 122.5 DL 231.524 +122.5 226.524 122.5 DL 236.524 122.5 231.524 122.5 DL 236.524 111.5 +236.524 121.5 DL 225.526 111.5 220.526 111.5 DL 226.524 111.5 221.524 +111.5 DL 231.524 111.5 226.524 111.5 DL 236.524 111.5 231.524 111.5 DL +238.19 112.5 238.19 122.5 DL 238.19 111.5 238.19 121.5 DL 254.188 112.5 +254.188 122.5 DL 243.19 122.5 238.19 122.5 DL 244.188 122.5 239.188 +122.5 DL 249.188 122.5 244.188 122.5 DL 254.188 122.5 249.188 122.5 DL +254.188 111.5 254.188 121.5 DL 243.19 111.5 238.19 111.5 DL 244.188 +111.5 239.188 111.5 DL 249.188 111.5 244.188 111.5 DL 254.188 111.5 +249.188 111.5 DL 255.854 112.5 255.854 122.5 DL 255.854 111.5 255.854 +121.5 DL 271.852 112.5 271.852 122.5 DL 260.854 122.5 255.854 122.5 DL +261.852 122.5 256.852 122.5 DL 266.852 122.5 261.852 122.5 DL 271.852 +122.5 266.852 122.5 DL 271.852 111.5 271.852 121.5 DL 260.854 111.5 +255.854 111.5 DL 261.852 111.5 256.852 111.5 DL 266.852 111.5 261.852 +111.5 DL 271.852 111.5 266.852 111.5 DL F0 -5.834 7.999(=1 0 3 5)194.722 +120 T F3<ae>1.666 E F0 +(Disable special modi\214ers for Alt and NumLock k)2.5 E -.15(ey)-.1 G +(s.).15 E F1(P)185 136 Q F2(s)-2 3 M 206.896 128.5 206.896 138.5 DL +206.896 127.5 206.896 137.5 DL 222.894 128.5 222.894 138.5 DL 211.896 +138.5 206.896 138.5 DL 212.894 138.5 207.894 138.5 DL 217.894 138.5 +212.894 138.5 DL 222.894 138.5 217.894 138.5 DL 222.894 127.5 222.894 +137.5 DL 211.896 127.5 206.896 127.5 DL 212.894 127.5 207.894 127.5 DL +217.894 127.5 212.894 127.5 DL 222.894 127.5 217.894 127.5 DL 224.56 +128.5 224.56 138.5 DL 224.56 127.5 224.56 137.5 DL 240.558 128.5 240.558 +138.5 DL 229.56 138.5 224.56 138.5 DL 230.558 138.5 225.558 138.5 DL +235.558 138.5 230.558 138.5 DL 240.558 138.5 235.558 138.5 DL 240.558 +127.5 240.558 137.5 DL 229.56 127.5 224.56 127.5 DL 230.558 127.5 +225.558 127.5 DL 235.558 127.5 230.558 127.5 DL 240.558 127.5 235.558 +127.5 DL 242.224 128.5 242.224 138.5 DL 242.224 127.5 242.224 137.5 DL +258.222 128.5 258.222 138.5 DL 247.224 138.5 242.224 138.5 DL 248.222 +138.5 243.222 138.5 DL 253.222 138.5 248.222 138.5 DL 258.222 138.5 +253.222 138.5 DL 258.222 127.5 258.222 137.5 DL 247.224 127.5 242.224 +127.5 DL 248.222 127.5 243.222 127.5 DL 253.222 127.5 248.222 127.5 DL +258.222 127.5 253.222 127.5 DL 259.888 128.5 259.888 138.5 DL 259.888 +127.5 259.888 137.5 DL 275.886 128.5 275.886 138.5 DL 264.888 138.5 +259.888 138.5 DL 265.886 138.5 260.886 138.5 DL 270.886 138.5 265.886 +138.5 DL 275.886 138.5 270.886 138.5 DL 275.886 127.5 275.886 137.5 DL +264.888 127.5 259.888 127.5 DL 265.886 127.5 260.886 127.5 DL 270.886 +127.5 265.886 127.5 DL 275.886 127.5 270.886 127.5 DL F0 -9.868 10.016 +(=1 0 3 6)196.739 136 T F3<ae>1.667 E F0(Don')4.518 E 4.518(ts)-.18 G +2.018(end ESC when Meta modi\214es a k)-4.518 F 2.318 -.15(ey \()-.1 H +2.018(disables the).15 F/F4 10/Times-Bold@0 SF(metaSendsEscape)180 152 Q +F0(resource\).)2.5 E F1(P)185 168 Q F2(s)-2 3 M 202.862 160.5 202.862 +170.5 DL 202.862 159.5 202.862 169.5 DL 218.86 160.5 218.86 170.5 DL +207.862 170.5 202.862 170.5 DL 208.86 170.5 203.86 170.5 DL 213.86 170.5 +208.86 170.5 DL 218.86 170.5 213.86 170.5 DL 218.86 159.5 218.86 169.5 +DL 207.862 159.5 202.862 159.5 DL 208.86 159.5 203.86 159.5 DL 213.86 +159.5 208.86 159.5 DL 218.86 159.5 213.86 159.5 DL 220.526 160.5 220.526 +170.5 DL 220.526 159.5 220.526 169.5 DL 236.524 160.5 236.524 170.5 DL +225.526 170.5 220.526 170.5 DL 226.524 170.5 221.524 170.5 DL 231.524 +170.5 226.524 170.5 DL 236.524 170.5 231.524 170.5 DL 236.524 159.5 +236.524 169.5 DL 225.526 159.5 220.526 159.5 DL 226.524 159.5 221.524 +159.5 DL 231.524 159.5 226.524 159.5 DL 236.524 159.5 231.524 159.5 DL +238.19 160.5 238.19 170.5 DL 238.19 159.5 238.19 169.5 DL 254.188 160.5 +254.188 170.5 DL 243.19 170.5 238.19 170.5 DL 244.188 170.5 239.188 +170.5 DL 249.188 170.5 244.188 170.5 DL 254.188 170.5 249.188 170.5 DL +254.188 159.5 254.188 169.5 DL 243.19 159.5 238.19 159.5 DL 244.188 +159.5 239.188 159.5 DL 249.188 159.5 244.188 159.5 DL 254.188 159.5 +249.188 159.5 DL 255.854 160.5 255.854 170.5 DL 255.854 159.5 255.854 +169.5 DL 271.852 160.5 271.852 170.5 DL 260.854 170.5 255.854 170.5 DL +261.852 170.5 256.852 170.5 DL 266.852 170.5 261.852 170.5 DL 271.852 +170.5 266.852 170.5 DL 271.852 159.5 271.852 169.5 DL 260.854 159.5 +255.854 159.5 DL 261.852 159.5 256.852 159.5 DL 266.852 159.5 261.852 +159.5 DL 271.852 159.5 266.852 159.5 DL F0 -5.834 7.999(=1 0 3 7)194.722 +168 T F3<ae>1.666 E F0(Send VT220 Remo)2.5 E .3 -.15(ve f)-.15 H +(rom the editing-k).15 E -.15(ey)-.1 G(pad Delete k).15 E -.15(ey)-.1 G +F1(P)185 184 Q F2(s)-2 3 M 203.184 176.5 203.184 186.5 DL 203.184 175.5 +203.184 185.5 DL 219.182 176.5 219.182 186.5 DL 208.184 186.5 203.184 +186.5 DL 209.182 186.5 204.182 186.5 DL 214.182 186.5 209.182 186.5 DL +219.182 186.5 214.182 186.5 DL 219.182 175.5 219.182 185.5 DL 208.184 +175.5 203.184 175.5 DL 209.182 175.5 204.182 175.5 DL 214.182 175.5 +209.182 175.5 DL 219.182 175.5 214.182 175.5 DL 220.848 176.5 220.848 +186.5 DL 220.848 175.5 220.848 185.5 DL 236.846 176.5 236.846 186.5 DL +225.848 186.5 220.848 186.5 DL 226.846 186.5 221.846 186.5 DL 231.846 +186.5 226.846 186.5 DL 236.846 186.5 231.846 186.5 DL 236.846 175.5 +236.846 185.5 DL 225.848 175.5 220.848 175.5 DL 226.846 175.5 221.846 +175.5 DL 231.846 175.5 226.846 175.5 DL 236.846 175.5 231.846 175.5 DL +238.512 176.5 238.512 186.5 DL 238.512 175.5 238.512 185.5 DL 254.51 +176.5 254.51 186.5 DL 243.512 186.5 238.512 186.5 DL 244.51 186.5 239.51 +186.5 DL 249.51 186.5 244.51 186.5 DL 254.51 186.5 249.51 186.5 DL +254.51 175.5 254.51 185.5 DL 243.512 175.5 238.512 175.5 DL 244.51 175.5 +239.51 175.5 DL 249.51 175.5 244.51 175.5 DL 254.51 175.5 249.51 175.5 +DL 256.176 176.5 256.176 186.5 DL 256.176 175.5 256.176 185.5 DL 272.174 +176.5 272.174 186.5 DL 261.176 186.5 256.176 186.5 DL 262.174 186.5 +257.174 186.5 DL 267.174 186.5 262.174 186.5 DL 272.174 186.5 267.174 +186.5 DL 272.174 175.5 272.174 185.5 DL 261.176 175.5 256.176 175.5 DL +262.174 175.5 257.174 175.5 DL 267.174 175.5 262.174 175.5 DL 272.174 +175.5 267.174 175.5 DL F0 -6.156 8.16(=1 0 4 7)194.883 184 T F3<ae>1.666 +E F0 .161(Use Normal Screen Buf)2.661 F(fer)-.25 E 2.661(,c)-.4 G .161 +(learing screen \214rst if in the Alter)-2.661 F(-)-.2 E +(nate Screen \(unless disabled by the)180 200 Q F4(titeInhibit)2.5 E F0 +(resource\))2.5 E F1(P)185 216 Q F2(s)-2 3 M 204.95 208.5 204.95 218.5 +DL 204.95 207.5 204.95 217.5 DL 220.948 208.5 220.948 218.5 DL 209.95 +218.5 204.95 218.5 DL 210.948 218.5 205.948 218.5 DL 215.948 218.5 +210.948 218.5 DL 220.948 218.5 215.948 218.5 DL 220.948 207.5 220.948 +217.5 DL 209.95 207.5 204.95 207.5 DL 210.948 207.5 205.948 207.5 DL +215.948 207.5 210.948 207.5 DL 220.948 207.5 215.948 207.5 DL 222.614 +208.5 222.614 218.5 DL 222.614 207.5 222.614 217.5 DL 238.612 208.5 +238.612 218.5 DL 227.614 218.5 222.614 218.5 DL 228.612 218.5 223.612 +218.5 DL 233.612 218.5 228.612 218.5 DL 238.612 218.5 233.612 218.5 DL +238.612 207.5 238.612 217.5 DL 227.614 207.5 222.614 207.5 DL 228.612 +207.5 223.612 207.5 DL 233.612 207.5 228.612 207.5 DL 238.612 207.5 +233.612 207.5 DL 240.278 208.5 240.278 218.5 DL 240.278 207.5 240.278 +217.5 DL 256.276 208.5 256.276 218.5 DL 245.278 218.5 240.278 218.5 DL +246.276 218.5 241.276 218.5 DL 251.276 218.5 246.276 218.5 DL 256.276 +218.5 251.276 218.5 DL 256.276 207.5 256.276 217.5 DL 245.278 207.5 +240.278 207.5 DL 246.276 207.5 241.276 207.5 DL 251.276 207.5 246.276 +207.5 DL 256.276 207.5 251.276 207.5 DL 257.942 208.5 257.942 218.5 DL +257.942 207.5 257.942 217.5 DL 273.94 208.5 273.94 218.5 DL 262.942 +218.5 257.942 218.5 DL 263.94 218.5 258.94 218.5 DL 268.94 218.5 263.94 +218.5 DL 273.94 218.5 268.94 218.5 DL 273.94 207.5 273.94 217.5 DL +262.942 207.5 257.942 207.5 DL 263.94 207.5 258.94 207.5 DL 268.94 207.5 +263.94 207.5 DL 273.94 207.5 268.94 207.5 DL F0 -7.922 9.043(=1 0 4 8) +195.766 216 T F3<ae>1.666 E F0 1.045 +(Restore cursor as in DECRC \(unless disabled by the)3.545 F F4(titeIn-) +3.545 E(hibit)180 232 Q F0(resource\))2.5 E F1(P)185 248 Q F2(s)-2 3 M +204.996 240.5 204.996 250.5 DL 204.996 239.5 204.996 249.5 DL 220.994 +240.5 220.994 250.5 DL 209.996 250.5 204.996 250.5 DL 210.994 250.5 +205.994 250.5 DL 215.994 250.5 210.994 250.5 DL 220.994 250.5 215.994 +250.5 DL 220.994 239.5 220.994 249.5 DL 209.996 239.5 204.996 239.5 DL +210.994 239.5 205.994 239.5 DL 215.994 239.5 210.994 239.5 DL 220.994 +239.5 215.994 239.5 DL 222.66 240.5 222.66 250.5 DL 222.66 239.5 222.66 +249.5 DL 238.658 240.5 238.658 250.5 DL 227.66 250.5 222.66 250.5 DL +228.658 250.5 223.658 250.5 DL 233.658 250.5 228.658 250.5 DL 238.658 +250.5 233.658 250.5 DL 238.658 239.5 238.658 249.5 DL 227.66 239.5 +222.66 239.5 DL 228.658 239.5 223.658 239.5 DL 233.658 239.5 228.658 +239.5 DL 238.658 239.5 233.658 239.5 DL 240.324 240.5 240.324 250.5 DL +240.324 239.5 240.324 249.5 DL 256.322 240.5 256.322 250.5 DL 245.324 +250.5 240.324 250.5 DL 246.322 250.5 241.322 250.5 DL 251.322 250.5 +246.322 250.5 DL 256.322 250.5 251.322 250.5 DL 256.322 239.5 256.322 +249.5 DL 245.324 239.5 240.324 239.5 DL 246.322 239.5 241.322 239.5 DL +251.322 239.5 246.322 239.5 DL 256.322 239.5 251.322 239.5 DL 257.988 +240.5 257.988 250.5 DL 257.988 239.5 257.988 249.5 DL 273.986 240.5 +273.986 250.5 DL 262.988 250.5 257.988 250.5 DL 263.986 250.5 258.986 +250.5 DL 268.986 250.5 263.986 250.5 DL 273.986 250.5 268.986 250.5 DL +273.986 239.5 273.986 249.5 DL 262.988 239.5 257.988 239.5 DL 263.986 +239.5 258.986 239.5 DL 268.986 239.5 263.986 239.5 DL 273.986 239.5 +268.986 239.5 DL F0 -7.968 9.066(=1 0 4 9)195.789 248 T F3<ae>1.666 E F0 +1.066(Use Normal Screen Buf)3.567 F 1.066 +(fer and restore cursor as in DECRC)-.25 F(\(unless disabled by the)180 +264 Q F4(titeInhibit)2.5 E F0(resource\))2.5 E F1(P)185 280 Q F2(s)-2 3 +M 202.862 272.5 202.862 282.5 DL 202.862 271.5 202.862 281.5 DL 218.86 +272.5 218.86 282.5 DL 207.862 282.5 202.862 282.5 DL 208.86 282.5 203.86 +282.5 DL 213.86 282.5 208.86 282.5 DL 218.86 282.5 213.86 282.5 DL +218.86 271.5 218.86 281.5 DL 207.862 271.5 202.862 271.5 DL 208.86 271.5 +203.86 271.5 DL 213.86 271.5 208.86 271.5 DL 218.86 271.5 213.86 271.5 +DL 220.526 272.5 220.526 282.5 DL 220.526 271.5 220.526 281.5 DL 236.524 +272.5 236.524 282.5 DL 225.526 282.5 220.526 282.5 DL 226.524 282.5 +221.524 282.5 DL 231.524 282.5 226.524 282.5 DL 236.524 282.5 231.524 +282.5 DL 236.524 271.5 236.524 281.5 DL 225.526 271.5 220.526 271.5 DL +226.524 271.5 221.524 271.5 DL 231.524 271.5 226.524 271.5 DL 236.524 +271.5 231.524 271.5 DL 238.19 272.5 238.19 282.5 DL 238.19 271.5 238.19 +281.5 DL 254.188 272.5 254.188 282.5 DL 243.19 282.5 238.19 282.5 DL +244.188 282.5 239.188 282.5 DL 249.188 282.5 244.188 282.5 DL 254.188 +282.5 249.188 282.5 DL 254.188 271.5 254.188 281.5 DL 243.19 271.5 +238.19 271.5 DL 244.188 271.5 239.188 271.5 DL 249.188 271.5 244.188 +271.5 DL 254.188 271.5 249.188 271.5 DL 255.854 272.5 255.854 282.5 DL +255.854 271.5 255.854 281.5 DL 271.852 272.5 271.852 282.5 DL 260.854 +282.5 255.854 282.5 DL 261.852 282.5 256.852 282.5 DL 266.852 282.5 +261.852 282.5 DL 271.852 282.5 266.852 282.5 DL 271.852 271.5 271.852 +281.5 DL 260.854 271.5 255.854 271.5 DL 261.852 271.5 256.852 271.5 DL +266.852 271.5 261.852 271.5 DL 271.852 271.5 266.852 271.5 DL F0 -5.834 +7.999(=1 0 5 1)194.722 280 T F3<ae>1.666 E F0(Reset Sun function-k)2.5 E +.3 -.15(ey m)-.1 H(ode.).15 E F1(P)185 296 Q F2(s)-2 3 M 202.862 288.5 +202.862 298.5 DL 202.862 287.5 202.862 297.5 DL 218.86 288.5 218.86 +298.5 DL 207.862 298.5 202.862 298.5 DL 208.86 298.5 203.86 298.5 DL +213.86 298.5 208.86 298.5 DL 218.86 298.5 213.86 298.5 DL 218.86 287.5 +218.86 297.5 DL 207.862 287.5 202.862 287.5 DL 208.86 287.5 203.86 287.5 +DL 213.86 287.5 208.86 287.5 DL 218.86 287.5 213.86 287.5 DL 220.526 +288.5 220.526 298.5 DL 220.526 287.5 220.526 297.5 DL 236.524 288.5 +236.524 298.5 DL 225.526 298.5 220.526 298.5 DL 226.524 298.5 221.524 +298.5 DL 231.524 298.5 226.524 298.5 DL 236.524 298.5 231.524 298.5 DL +236.524 287.5 236.524 297.5 DL 225.526 287.5 220.526 287.5 DL 226.524 +287.5 221.524 287.5 DL 231.524 287.5 226.524 287.5 DL 236.524 287.5 +231.524 287.5 DL 238.19 288.5 238.19 298.5 DL 238.19 287.5 238.19 297.5 +DL 254.188 288.5 254.188 298.5 DL 243.19 298.5 238.19 298.5 DL 244.188 +298.5 239.188 298.5 DL 249.188 298.5 244.188 298.5 DL 254.188 298.5 +249.188 298.5 DL 254.188 287.5 254.188 297.5 DL 243.19 287.5 238.19 +287.5 DL 244.188 287.5 239.188 287.5 DL 249.188 287.5 244.188 287.5 DL +254.188 287.5 249.188 287.5 DL 255.854 288.5 255.854 298.5 DL 255.854 +287.5 255.854 297.5 DL 271.852 288.5 271.852 298.5 DL 260.854 298.5 +255.854 298.5 DL 261.852 298.5 256.852 298.5 DL 266.852 298.5 261.852 +298.5 DL 271.852 298.5 266.852 298.5 DL 271.852 287.5 271.852 297.5 DL +260.854 287.5 255.854 287.5 DL 261.852 287.5 256.852 287.5 DL 266.852 +287.5 261.852 287.5 DL 271.852 287.5 266.852 287.5 DL F0 -5.834 7.999 +(=1 0 5 2)194.722 296 T F3<ae>1.666 E F0(Reset HP function-k)2.5 E .3 +-.15(ey m)-.1 H(ode.).15 E F1(P)185 312 Q F2(s)-2 3 M 202.862 304.5 +202.862 314.5 DL 202.862 303.5 202.862 313.5 DL 218.86 304.5 218.86 +314.5 DL 207.862 314.5 202.862 314.5 DL 208.86 314.5 203.86 314.5 DL +213.86 314.5 208.86 314.5 DL 218.86 314.5 213.86 314.5 DL 218.86 303.5 +218.86 313.5 DL 207.862 303.5 202.862 303.5 DL 208.86 303.5 203.86 303.5 +DL 213.86 303.5 208.86 303.5 DL 218.86 303.5 213.86 303.5 DL 220.526 +304.5 220.526 314.5 DL 220.526 303.5 220.526 313.5 DL 236.524 304.5 +236.524 314.5 DL 225.526 314.5 220.526 314.5 DL 226.524 314.5 221.524 +314.5 DL 231.524 314.5 226.524 314.5 DL 236.524 314.5 231.524 314.5 DL +236.524 303.5 236.524 313.5 DL 225.526 303.5 220.526 303.5 DL 226.524 +303.5 221.524 303.5 DL 231.524 303.5 226.524 303.5 DL 236.524 303.5 +231.524 303.5 DL 238.19 304.5 238.19 314.5 DL 238.19 303.5 238.19 313.5 +DL 254.188 304.5 254.188 314.5 DL 243.19 314.5 238.19 314.5 DL 244.188 +314.5 239.188 314.5 DL 249.188 314.5 244.188 314.5 DL 254.188 314.5 +249.188 314.5 DL 254.188 303.5 254.188 313.5 DL 243.19 303.5 238.19 +303.5 DL 244.188 303.5 239.188 303.5 DL 249.188 303.5 244.188 303.5 DL +254.188 303.5 249.188 303.5 DL 255.854 304.5 255.854 314.5 DL 255.854 +303.5 255.854 313.5 DL 271.852 304.5 271.852 314.5 DL 260.854 314.5 +255.854 314.5 DL 261.852 314.5 256.852 314.5 DL 266.852 314.5 261.852 +314.5 DL 271.852 314.5 266.852 314.5 DL 271.852 303.5 271.852 313.5 DL +260.854 303.5 255.854 303.5 DL 261.852 303.5 256.852 303.5 DL 266.852 +303.5 261.852 303.5 DL 271.852 303.5 266.852 303.5 DL F0 -5.834 7.999 +(=1 0 6 0)194.722 312 T F3<ae>1.666 E F0(Reset le)2.5 E -.05(ga)-.15 G +.3 -.15(cy k).05 H -.15(ey).05 G(board emulation \(X11R6\).).15 E F1(P) +185 328 Q F2(s)-2 3 M 202.862 320.5 202.862 330.5 DL 202.862 319.5 +202.862 329.5 DL 218.86 320.5 218.86 330.5 DL 207.862 330.5 202.862 +330.5 DL 208.86 330.5 203.86 330.5 DL 213.86 330.5 208.86 330.5 DL +218.86 330.5 213.86 330.5 DL 218.86 319.5 218.86 329.5 DL 207.862 319.5 +202.862 319.5 DL 208.86 319.5 203.86 319.5 DL 213.86 319.5 208.86 319.5 +DL 218.86 319.5 213.86 319.5 DL 220.526 320.5 220.526 330.5 DL 220.526 +319.5 220.526 329.5 DL 236.524 320.5 236.524 330.5 DL 225.526 330.5 +220.526 330.5 DL 226.524 330.5 221.524 330.5 DL 231.524 330.5 226.524 +330.5 DL 236.524 330.5 231.524 330.5 DL 236.524 319.5 236.524 329.5 DL +225.526 319.5 220.526 319.5 DL 226.524 319.5 221.524 319.5 DL 231.524 +319.5 226.524 319.5 DL 236.524 319.5 231.524 319.5 DL 238.19 320.5 +238.19 330.5 DL 238.19 319.5 238.19 329.5 DL 254.188 320.5 254.188 330.5 +DL 243.19 330.5 238.19 330.5 DL 244.188 330.5 239.188 330.5 DL 249.188 +330.5 244.188 330.5 DL 254.188 330.5 249.188 330.5 DL 254.188 319.5 +254.188 329.5 DL 243.19 319.5 238.19 319.5 DL 244.188 319.5 239.188 +319.5 DL 249.188 319.5 244.188 319.5 DL 254.188 319.5 249.188 319.5 DL +255.854 320.5 255.854 330.5 DL 255.854 319.5 255.854 329.5 DL 271.852 +320.5 271.852 330.5 DL 260.854 330.5 255.854 330.5 DL 261.852 330.5 +256.852 330.5 DL 266.852 330.5 261.852 330.5 DL 271.852 330.5 266.852 +330.5 DL 271.852 319.5 271.852 329.5 DL 260.854 319.5 255.854 319.5 DL +261.852 319.5 256.852 319.5 DL 266.852 319.5 261.852 319.5 DL 271.852 +319.5 266.852 319.5 DL F0 -5.834 7.999(=1 0 6 1)194.722 328 T F3<ae> +1.666 E F0(Reset Sun/PC k)2.5 E -.15(ey)-.1 G +(board emulation of VT220 k).15 E -.15(ey)-.1 G(board.).15 E 72 336.5 72 +346.5 DL 72 335.5 72 345.5 DL 87.998 336.5 87.998 346.5 DL 77 346.5 72 +346.5 DL 77.998 346.5 72.998 346.5 DL 82.998 346.5 77.998 346.5 DL +87.998 346.5 82.998 346.5 DL 87.998 335.5 87.998 345.5 DL 77 335.5 72 +335.5 DL 77.998 335.5 72.998 335.5 DL 82.998 335.5 77.998 335.5 DL +87.998 335.5 82.998 335.5 DL/F5 6/Times-Roman@0 SF(CSI)75.331 343 Q F1 +(P)4.997 1 M 101.216 336.5 101.216 346.5 DL 101.216 335.5 101.216 345.5 +DL F2(m)93.774 347 Q 117.214 336.5 117.214 346.5 DL 106.216 346.5 +101.216 346.5 DL 107.214 346.5 102.214 346.5 DL 112.214 346.5 107.214 +346.5 DL 117.214 346.5 112.214 346.5 DL 117.214 335.5 117.214 345.5 DL +106.216 335.5 101.216 335.5 DL 107.214 335.5 102.214 335.5 DL 112.214 +335.5 107.214 335.5 DL 117.214 335.5 112.214 335.5 DL F0 66.895(mC) +105.325 344 S(haracter Attrib)-66.895 E(utes \(SGR\))-.2 E F1(P)185 360 +Q F2(s)-2 3 M 202.862 352.5 202.862 362.5 DL 202.862 351.5 202.862 361.5 +DL 218.86 352.5 218.86 362.5 DL 207.862 362.5 202.862 362.5 DL 208.86 +362.5 203.86 362.5 DL 213.86 362.5 208.86 362.5 DL 218.86 362.5 213.86 +362.5 DL 218.86 351.5 218.86 361.5 DL 207.862 351.5 202.862 351.5 DL +208.86 351.5 203.86 351.5 DL 213.86 351.5 208.86 351.5 DL 218.86 351.5 +213.86 351.5 DL F0 7.999(=0)194.722 360 S F3<ae>1.666 E F0(Normal \(def) +2.5 E(ault\))-.1 E F1(P)185 376 Q F2(s)-2 3 M 202.862 368.5 202.862 +378.5 DL 202.862 367.5 202.862 377.5 DL 218.86 368.5 218.86 378.5 DL +207.862 378.5 202.862 378.5 DL 208.86 378.5 203.86 378.5 DL 213.86 378.5 +208.86 378.5 DL 218.86 378.5 213.86 378.5 DL 218.86 367.5 218.86 377.5 +DL 207.862 367.5 202.862 367.5 DL 208.86 367.5 203.86 367.5 DL 213.86 +367.5 208.86 367.5 DL 218.86 367.5 213.86 367.5 DL F0 7.999(=1)194.722 +376 S F3<ae>1.666 E F0(Bold)2.5 E F1(P)185 392 Q F2(s)-2 3 M 202.862 +384.5 202.862 394.5 DL 202.862 383.5 202.862 393.5 DL 218.86 384.5 +218.86 394.5 DL 207.862 394.5 202.862 394.5 DL 208.86 394.5 203.86 394.5 +DL 213.86 394.5 208.86 394.5 DL 218.86 394.5 213.86 394.5 DL 218.86 +383.5 218.86 393.5 DL 207.862 383.5 202.862 383.5 DL 208.86 383.5 203.86 +383.5 DL 213.86 383.5 208.86 383.5 DL 218.86 383.5 213.86 383.5 DL F0 +7.999(=4)194.722 392 S F3<ae>1.666 E F0(Underlined)2.5 E F1(P)185 408 Q +F2(s)-2 3 M 202.862 400.5 202.862 410.5 DL 202.862 399.5 202.862 409.5 +DL 218.86 400.5 218.86 410.5 DL 207.862 410.5 202.862 410.5 DL 208.86 +410.5 203.86 410.5 DL 213.86 410.5 208.86 410.5 DL 218.86 410.5 213.86 +410.5 DL 218.86 399.5 218.86 409.5 DL 207.862 399.5 202.862 399.5 DL +208.86 399.5 203.86 399.5 DL 213.86 399.5 208.86 399.5 DL 218.86 399.5 +213.86 399.5 DL F0 7.999(=5)194.722 408 S F3<ae>1.666 E F0 +(Blink \(appears as Bold\))2.5 E F1(P)185 424 Q F2(s)-2 3 M 202.862 +416.5 202.862 426.5 DL 202.862 415.5 202.862 425.5 DL 218.86 416.5 +218.86 426.5 DL 207.862 426.5 202.862 426.5 DL 208.86 426.5 203.86 426.5 +DL 213.86 426.5 208.86 426.5 DL 218.86 426.5 213.86 426.5 DL 218.86 +415.5 218.86 425.5 DL 207.862 415.5 202.862 415.5 DL 208.86 415.5 203.86 +415.5 DL 213.86 415.5 208.86 415.5 DL 218.86 415.5 213.86 415.5 DL F0 +7.999(=7)194.722 424 S F3<ae>1.666 E F0(In)2.5 E -.15(ve)-.4 G(rse).15 E +F1(P)185 440 Q F2(s)-2 3 M 202.862 432.5 202.862 442.5 DL 202.862 431.5 +202.862 441.5 DL 218.86 432.5 218.86 442.5 DL 207.862 442.5 202.862 +442.5 DL 208.86 442.5 203.86 442.5 DL 213.86 442.5 208.86 442.5 DL +218.86 442.5 213.86 442.5 DL 218.86 431.5 218.86 441.5 DL 207.862 431.5 +202.862 431.5 DL 208.86 431.5 203.86 431.5 DL 213.86 431.5 208.86 431.5 +DL 218.86 431.5 213.86 431.5 DL F0 7.999(=8)194.722 440 S F3<ae>1.666 E +F0(In)2.5 E(visible \(hidden\))-.4 E F1(P)185 456 Q F2(s)-2 3 M 202.862 +448.5 202.862 458.5 DL 202.862 447.5 202.862 457.5 DL 218.86 448.5 +218.86 458.5 DL 207.862 458.5 202.862 458.5 DL 208.86 458.5 203.86 458.5 +DL 213.86 458.5 208.86 458.5 DL 218.86 458.5 213.86 458.5 DL 218.86 +447.5 218.86 457.5 DL 207.862 447.5 202.862 447.5 DL 208.86 447.5 203.86 +447.5 DL 213.86 447.5 208.86 447.5 DL 218.86 447.5 213.86 447.5 DL +220.526 448.5 220.526 458.5 DL 220.526 447.5 220.526 457.5 DL 236.524 +448.5 236.524 458.5 DL 225.526 458.5 220.526 458.5 DL 226.524 458.5 +221.524 458.5 DL 231.524 458.5 226.524 458.5 DL 236.524 458.5 231.524 +458.5 DL 236.524 447.5 236.524 457.5 DL 225.526 447.5 220.526 447.5 DL +226.524 447.5 221.524 447.5 DL 231.524 447.5 226.524 447.5 DL 236.524 +447.5 231.524 447.5 DL F0 -5.834 7.999(=2 2)194.722 456 T F3<ae>1.666 E +F0(Normal \(neither bold nor f)2.5 E(aint\))-.1 E F1(P)185 472 Q F2(s)-2 +3 M 202.862 464.5 202.862 474.5 DL 202.862 463.5 202.862 473.5 DL 218.86 +464.5 218.86 474.5 DL 207.862 474.5 202.862 474.5 DL 208.86 474.5 203.86 +474.5 DL 213.86 474.5 208.86 474.5 DL 218.86 474.5 213.86 474.5 DL +218.86 463.5 218.86 473.5 DL 207.862 463.5 202.862 463.5 DL 208.86 463.5 +203.86 463.5 DL 213.86 463.5 208.86 463.5 DL 218.86 463.5 213.86 463.5 +DL 220.526 464.5 220.526 474.5 DL 220.526 463.5 220.526 473.5 DL 236.524 +464.5 236.524 474.5 DL 225.526 474.5 220.526 474.5 DL 226.524 474.5 +221.524 474.5 DL 231.524 474.5 226.524 474.5 DL 236.524 474.5 231.524 +474.5 DL 236.524 463.5 236.524 473.5 DL 225.526 463.5 220.526 463.5 DL +226.524 463.5 221.524 463.5 DL 231.524 463.5 226.524 463.5 DL 236.524 +463.5 231.524 463.5 DL F0 -5.834 7.999(=2 4)194.722 472 T F3<ae>1.666 E +F0(Not underlined)2.5 E F1(P)185 488 Q F2(s)-2 3 M 202.862 480.5 202.862 +490.5 DL 202.862 479.5 202.862 489.5 DL 218.86 480.5 218.86 490.5 DL +207.862 490.5 202.862 490.5 DL 208.86 490.5 203.86 490.5 DL 213.86 490.5 +208.86 490.5 DL 218.86 490.5 213.86 490.5 DL 218.86 479.5 218.86 489.5 +DL 207.862 479.5 202.862 479.5 DL 208.86 479.5 203.86 479.5 DL 213.86 +479.5 208.86 479.5 DL 218.86 479.5 213.86 479.5 DL 220.526 480.5 220.526 +490.5 DL 220.526 479.5 220.526 489.5 DL 236.524 480.5 236.524 490.5 DL +225.526 490.5 220.526 490.5 DL 226.524 490.5 221.524 490.5 DL 231.524 +490.5 226.524 490.5 DL 236.524 490.5 231.524 490.5 DL 236.524 479.5 +236.524 489.5 DL 225.526 479.5 220.526 479.5 DL 226.524 479.5 221.524 +479.5 DL 231.524 479.5 226.524 479.5 DL 236.524 479.5 231.524 479.5 DL +F0 -5.834 7.999(=2 5)194.722 488 T F3<ae>1.666 E F0 +(Steady \(not blinking\))2.5 E F1(P)185 504 Q F2(s)-2 3 M 202.862 496.5 +202.862 506.5 DL 202.862 495.5 202.862 505.5 DL 218.86 496.5 218.86 +506.5 DL 207.862 506.5 202.862 506.5 DL 208.86 506.5 203.86 506.5 DL +213.86 506.5 208.86 506.5 DL 218.86 506.5 213.86 506.5 DL 218.86 495.5 +218.86 505.5 DL 207.862 495.5 202.862 495.5 DL 208.86 495.5 203.86 495.5 +DL 213.86 495.5 208.86 495.5 DL 218.86 495.5 213.86 495.5 DL 220.526 +496.5 220.526 506.5 DL 220.526 495.5 220.526 505.5 DL 236.524 496.5 +236.524 506.5 DL 225.526 506.5 220.526 506.5 DL 226.524 506.5 221.524 +506.5 DL 231.524 506.5 226.524 506.5 DL 236.524 506.5 231.524 506.5 DL +236.524 495.5 236.524 505.5 DL 225.526 495.5 220.526 495.5 DL 226.524 +495.5 221.524 495.5 DL 231.524 495.5 226.524 495.5 DL 236.524 495.5 +231.524 495.5 DL F0 -5.834 7.999(=2 7)194.722 504 T F3<ae>1.666 E F0 +(Positi)2.5 E .3 -.15(ve \()-.25 H(not in).15 E -.15(ve)-.4 G(rse\)).15 +E F1(P)185 520 Q F2(s)-2 3 M 202.862 512.5 202.862 522.5 DL 202.862 +511.5 202.862 521.5 DL 218.86 512.5 218.86 522.5 DL 207.862 522.5 +202.862 522.5 DL 208.86 522.5 203.86 522.5 DL 213.86 522.5 208.86 522.5 +DL 218.86 522.5 213.86 522.5 DL 218.86 511.5 218.86 521.5 DL 207.862 +511.5 202.862 511.5 DL 208.86 511.5 203.86 511.5 DL 213.86 511.5 208.86 +511.5 DL 218.86 511.5 213.86 511.5 DL 220.526 512.5 220.526 522.5 DL +220.526 511.5 220.526 521.5 DL 236.524 512.5 236.524 522.5 DL 225.526 +522.5 220.526 522.5 DL 226.524 522.5 221.524 522.5 DL 231.524 522.5 +226.524 522.5 DL 236.524 522.5 231.524 522.5 DL 236.524 511.5 236.524 +521.5 DL 225.526 511.5 220.526 511.5 DL 226.524 511.5 221.524 511.5 DL +231.524 511.5 226.524 511.5 DL 236.524 511.5 231.524 511.5 DL F0 -5.834 +7.999(=2 8)194.722 520 T F3<ae>1.666 E F0 -.6(Vi)2.5 G +(sible \(not hidden\)).6 E F1(P)185 536 Q F2(s)-2 3 M 202.862 528.5 +202.862 538.5 DL 202.862 527.5 202.862 537.5 DL 218.86 528.5 218.86 +538.5 DL 207.862 538.5 202.862 538.5 DL 208.86 538.5 203.86 538.5 DL +213.86 538.5 208.86 538.5 DL 218.86 538.5 213.86 538.5 DL 218.86 527.5 +218.86 537.5 DL 207.862 527.5 202.862 527.5 DL 208.86 527.5 203.86 527.5 +DL 213.86 527.5 208.86 527.5 DL 218.86 527.5 213.86 527.5 DL 220.526 +528.5 220.526 538.5 DL 220.526 527.5 220.526 537.5 DL 236.524 528.5 +236.524 538.5 DL 225.526 538.5 220.526 538.5 DL 226.524 538.5 221.524 +538.5 DL 231.524 538.5 226.524 538.5 DL 236.524 538.5 231.524 538.5 DL +236.524 527.5 236.524 537.5 DL 225.526 527.5 220.526 527.5 DL 226.524 +527.5 221.524 527.5 DL 231.524 527.5 226.524 527.5 DL 236.524 527.5 +231.524 527.5 DL F0 -5.834 7.999(=3 0)194.722 536 T F3<ae>1.666 E F0 +(Set fore)2.5 E(ground color to Black)-.15 E F1(P)185 552 Q F2(s)-2 3 M +202.862 544.5 202.862 554.5 DL 202.862 543.5 202.862 553.5 DL 218.86 +544.5 218.86 554.5 DL 207.862 554.5 202.862 554.5 DL 208.86 554.5 203.86 +554.5 DL 213.86 554.5 208.86 554.5 DL 218.86 554.5 213.86 554.5 DL +218.86 543.5 218.86 553.5 DL 207.862 543.5 202.862 543.5 DL 208.86 543.5 +203.86 543.5 DL 213.86 543.5 208.86 543.5 DL 218.86 543.5 213.86 543.5 +DL 220.526 544.5 220.526 554.5 DL 220.526 543.5 220.526 553.5 DL 236.524 +544.5 236.524 554.5 DL 225.526 554.5 220.526 554.5 DL 226.524 554.5 +221.524 554.5 DL 231.524 554.5 226.524 554.5 DL 236.524 554.5 231.524 +554.5 DL 236.524 543.5 236.524 553.5 DL 225.526 543.5 220.526 543.5 DL +226.524 543.5 221.524 543.5 DL 231.524 543.5 226.524 543.5 DL 236.524 +543.5 231.524 543.5 DL F0 -5.834 7.999(=3 1)194.722 552 T F3<ae>1.666 E +F0(Set fore)2.5 E(ground color to Red)-.15 E F1(P)185 568 Q F2(s)-2 3 M +202.862 560.5 202.862 570.5 DL 202.862 559.5 202.862 569.5 DL 218.86 +560.5 218.86 570.5 DL 207.862 570.5 202.862 570.5 DL 208.86 570.5 203.86 +570.5 DL 213.86 570.5 208.86 570.5 DL 218.86 570.5 213.86 570.5 DL +218.86 559.5 218.86 569.5 DL 207.862 559.5 202.862 559.5 DL 208.86 559.5 +203.86 559.5 DL 213.86 559.5 208.86 559.5 DL 218.86 559.5 213.86 559.5 +DL 220.526 560.5 220.526 570.5 DL 220.526 559.5 220.526 569.5 DL 236.524 +560.5 236.524 570.5 DL 225.526 570.5 220.526 570.5 DL 226.524 570.5 +221.524 570.5 DL 231.524 570.5 226.524 570.5 DL 236.524 570.5 231.524 +570.5 DL 236.524 559.5 236.524 569.5 DL 225.526 559.5 220.526 559.5 DL +226.524 559.5 221.524 559.5 DL 231.524 559.5 226.524 559.5 DL 236.524 +559.5 231.524 559.5 DL F0 -5.834 7.999(=3 2)194.722 568 T F3<ae>1.666 E +F0(Set fore)2.5 E(ground color to Green)-.15 E F1(P)185 584 Q F2(s)-2 3 +M 202.862 576.5 202.862 586.5 DL 202.862 575.5 202.862 585.5 DL 218.86 +576.5 218.86 586.5 DL 207.862 586.5 202.862 586.5 DL 208.86 586.5 203.86 +586.5 DL 213.86 586.5 208.86 586.5 DL 218.86 586.5 213.86 586.5 DL +218.86 575.5 218.86 585.5 DL 207.862 575.5 202.862 575.5 DL 208.86 575.5 +203.86 575.5 DL 213.86 575.5 208.86 575.5 DL 218.86 575.5 213.86 575.5 +DL 220.526 576.5 220.526 586.5 DL 220.526 575.5 220.526 585.5 DL 236.524 +576.5 236.524 586.5 DL 225.526 586.5 220.526 586.5 DL 226.524 586.5 +221.524 586.5 DL 231.524 586.5 226.524 586.5 DL 236.524 586.5 231.524 +586.5 DL 236.524 575.5 236.524 585.5 DL 225.526 575.5 220.526 575.5 DL +226.524 575.5 221.524 575.5 DL 231.524 575.5 226.524 575.5 DL 236.524 +575.5 231.524 575.5 DL F0 -5.834 7.999(=3 3)194.722 584 T F3<ae>1.666 E +F0(Set fore)2.5 E(ground color to Y)-.15 E(ello)-1 E(w)-.25 E F1(P)185 +600 Q F2(s)-2 3 M 202.862 592.5 202.862 602.5 DL 202.862 591.5 202.862 +601.5 DL 218.86 592.5 218.86 602.5 DL 207.862 602.5 202.862 602.5 DL +208.86 602.5 203.86 602.5 DL 213.86 602.5 208.86 602.5 DL 218.86 602.5 +213.86 602.5 DL 218.86 591.5 218.86 601.5 DL 207.862 591.5 202.862 591.5 +DL 208.86 591.5 203.86 591.5 DL 213.86 591.5 208.86 591.5 DL 218.86 +591.5 213.86 591.5 DL 220.526 592.5 220.526 602.5 DL 220.526 591.5 +220.526 601.5 DL 236.524 592.5 236.524 602.5 DL 225.526 602.5 220.526 +602.5 DL 226.524 602.5 221.524 602.5 DL 231.524 602.5 226.524 602.5 DL +236.524 602.5 231.524 602.5 DL 236.524 591.5 236.524 601.5 DL 225.526 +591.5 220.526 591.5 DL 226.524 591.5 221.524 591.5 DL 231.524 591.5 +226.524 591.5 DL 236.524 591.5 231.524 591.5 DL F0 -5.834 7.999(=3 4) +194.722 600 T F3<ae>1.666 E F0(Set fore)2.5 E(ground color to Blue)-.15 +E F1(P)185 616 Q F2(s)-2 3 M 202.862 608.5 202.862 618.5 DL 202.862 +607.5 202.862 617.5 DL 218.86 608.5 218.86 618.5 DL 207.862 618.5 +202.862 618.5 DL 208.86 618.5 203.86 618.5 DL 213.86 618.5 208.86 618.5 +DL 218.86 618.5 213.86 618.5 DL 218.86 607.5 218.86 617.5 DL 207.862 +607.5 202.862 607.5 DL 208.86 607.5 203.86 607.5 DL 213.86 607.5 208.86 +607.5 DL 218.86 607.5 213.86 607.5 DL 220.526 608.5 220.526 618.5 DL +220.526 607.5 220.526 617.5 DL 236.524 608.5 236.524 618.5 DL 225.526 +618.5 220.526 618.5 DL 226.524 618.5 221.524 618.5 DL 231.524 618.5 +226.524 618.5 DL 236.524 618.5 231.524 618.5 DL 236.524 607.5 236.524 +617.5 DL 225.526 607.5 220.526 607.5 DL 226.524 607.5 221.524 607.5 DL +231.524 607.5 226.524 607.5 DL 236.524 607.5 231.524 607.5 DL F0 -5.834 +7.999(=3 5)194.722 616 T F3<ae>1.666 E F0(Set fore)2.5 E +(ground color to Magenta)-.15 E F1(P)185 632 Q F2(s)-2 3 M 202.862 624.5 +202.862 634.5 DL 202.862 623.5 202.862 633.5 DL 218.86 624.5 218.86 +634.5 DL 207.862 634.5 202.862 634.5 DL 208.86 634.5 203.86 634.5 DL +213.86 634.5 208.86 634.5 DL 218.86 634.5 213.86 634.5 DL 218.86 623.5 +218.86 633.5 DL 207.862 623.5 202.862 623.5 DL 208.86 623.5 203.86 623.5 +DL 213.86 623.5 208.86 623.5 DL 218.86 623.5 213.86 623.5 DL 220.526 +624.5 220.526 634.5 DL 220.526 623.5 220.526 633.5 DL 236.524 624.5 +236.524 634.5 DL 225.526 634.5 220.526 634.5 DL 226.524 634.5 221.524 +634.5 DL 231.524 634.5 226.524 634.5 DL 236.524 634.5 231.524 634.5 DL +236.524 623.5 236.524 633.5 DL 225.526 623.5 220.526 623.5 DL 226.524 +623.5 221.524 623.5 DL 231.524 623.5 226.524 623.5 DL 236.524 623.5 +231.524 623.5 DL F0 -5.834 7.999(=3 6)194.722 632 T F3<ae>1.666 E F0 +(Set fore)2.5 E(ground color to Cyan)-.15 E F1(P)185 648 Q F2(s)-2 3 M +202.862 640.5 202.862 650.5 DL 202.862 639.5 202.862 649.5 DL 218.86 +640.5 218.86 650.5 DL 207.862 650.5 202.862 650.5 DL 208.86 650.5 203.86 +650.5 DL 213.86 650.5 208.86 650.5 DL 218.86 650.5 213.86 650.5 DL +218.86 639.5 218.86 649.5 DL 207.862 639.5 202.862 639.5 DL 208.86 639.5 +203.86 639.5 DL 213.86 639.5 208.86 639.5 DL 218.86 639.5 213.86 639.5 +DL 220.526 640.5 220.526 650.5 DL 220.526 639.5 220.526 649.5 DL 236.524 +640.5 236.524 650.5 DL 225.526 650.5 220.526 650.5 DL 226.524 650.5 +221.524 650.5 DL 231.524 650.5 226.524 650.5 DL 236.524 650.5 231.524 +650.5 DL 236.524 639.5 236.524 649.5 DL 225.526 639.5 220.526 639.5 DL +226.524 639.5 221.524 639.5 DL 231.524 639.5 226.524 639.5 DL 236.524 +639.5 231.524 639.5 DL F0 -5.834 7.999(=3 7)194.722 648 T F3<ae>1.666 E +F0(Set fore)2.5 E(ground color to White)-.15 E F1(P)185 664 Q F2(s)-2 3 +M 202.862 656.5 202.862 666.5 DL 202.862 655.5 202.862 665.5 DL 218.86 +656.5 218.86 666.5 DL 207.862 666.5 202.862 666.5 DL 208.86 666.5 203.86 +666.5 DL 213.86 666.5 208.86 666.5 DL 218.86 666.5 213.86 666.5 DL +218.86 655.5 218.86 665.5 DL 207.862 655.5 202.862 655.5 DL 208.86 655.5 +203.86 655.5 DL 213.86 655.5 208.86 655.5 DL 218.86 655.5 213.86 655.5 +DL 220.526 656.5 220.526 666.5 DL 220.526 655.5 220.526 665.5 DL 236.524 +656.5 236.524 666.5 DL 225.526 666.5 220.526 666.5 DL 226.524 666.5 +221.524 666.5 DL 231.524 666.5 226.524 666.5 DL 236.524 666.5 231.524 +666.5 DL 236.524 655.5 236.524 665.5 DL 225.526 655.5 220.526 655.5 DL +226.524 655.5 221.524 655.5 DL 231.524 655.5 226.524 655.5 DL 236.524 +655.5 231.524 655.5 DL F0 -5.834 7.999(=3 9)194.722 664 T F3<ae>1.666 E +F0(Set fore)2.5 E(ground color to def)-.15 E(ault \(original\))-.1 E F1 +(P)185 680 Q F2(s)-2 3 M 202.862 672.5 202.862 682.5 DL 202.862 671.5 +202.862 681.5 DL 218.86 672.5 218.86 682.5 DL 207.862 682.5 202.862 +682.5 DL 208.86 682.5 203.86 682.5 DL 213.86 682.5 208.86 682.5 DL +218.86 682.5 213.86 682.5 DL 218.86 671.5 218.86 681.5 DL 207.862 671.5 +202.862 671.5 DL 208.86 671.5 203.86 671.5 DL 213.86 671.5 208.86 671.5 +DL 218.86 671.5 213.86 671.5 DL 220.526 672.5 220.526 682.5 DL 220.526 +671.5 220.526 681.5 DL 236.524 672.5 236.524 682.5 DL 225.526 682.5 +220.526 682.5 DL 226.524 682.5 221.524 682.5 DL 231.524 682.5 226.524 +682.5 DL 236.524 682.5 231.524 682.5 DL 236.524 671.5 236.524 681.5 DL +225.526 671.5 220.526 671.5 DL 226.524 671.5 221.524 671.5 DL 231.524 +671.5 226.524 671.5 DL 236.524 671.5 231.524 671.5 DL F0 -5.834 7.999 +(=4 0)194.722 680 T F3<ae>1.666 E F0(Set background color to Black)2.5 E +F1(P)185 696 Q F2(s)-2 3 M 202.862 688.5 202.862 698.5 DL 202.862 687.5 +202.862 697.5 DL 218.86 688.5 218.86 698.5 DL 207.862 698.5 202.862 +698.5 DL 208.86 698.5 203.86 698.5 DL 213.86 698.5 208.86 698.5 DL +218.86 698.5 213.86 698.5 DL 218.86 687.5 218.86 697.5 DL 207.862 687.5 +202.862 687.5 DL 208.86 687.5 203.86 687.5 DL 213.86 687.5 208.86 687.5 +DL 218.86 687.5 213.86 687.5 DL 220.526 688.5 220.526 698.5 DL 220.526 +687.5 220.526 697.5 DL 236.524 688.5 236.524 698.5 DL 225.526 698.5 +220.526 698.5 DL 226.524 698.5 221.524 698.5 DL 231.524 698.5 226.524 +698.5 DL 236.524 698.5 231.524 698.5 DL 236.524 687.5 236.524 697.5 DL +225.526 687.5 220.526 687.5 DL 226.524 687.5 221.524 687.5 DL 231.524 +687.5 226.524 687.5 DL 236.524 687.5 231.524 687.5 DL F0 -5.834 7.999 +(=4 1)194.722 696 T F3<ae>1.666 E F0(Set background color to Red)2.5 E +F1(P)185 712 Q F2(s)-2 3 M 202.862 704.5 202.862 714.5 DL 202.862 703.5 +202.862 713.5 DL 218.86 704.5 218.86 714.5 DL 207.862 714.5 202.862 +714.5 DL 208.86 714.5 203.86 714.5 DL 213.86 714.5 208.86 714.5 DL +218.86 714.5 213.86 714.5 DL 218.86 703.5 218.86 713.5 DL 207.862 703.5 +202.862 703.5 DL 208.86 703.5 203.86 703.5 DL 213.86 703.5 208.86 703.5 +DL 218.86 703.5 213.86 703.5 DL 220.526 704.5 220.526 714.5 DL 220.526 +703.5 220.526 713.5 DL 236.524 704.5 236.524 714.5 DL 225.526 714.5 +220.526 714.5 DL 226.524 714.5 221.524 714.5 DL 231.524 714.5 226.524 +714.5 DL 236.524 714.5 231.524 714.5 DL 236.524 703.5 236.524 713.5 DL +225.526 703.5 220.526 703.5 DL 226.524 703.5 221.524 703.5 DL 231.524 +703.5 226.524 703.5 DL 236.524 703.5 231.524 703.5 DL F0 -5.834 7.999 +(=4 2)194.722 712 T F3<ae>1.666 E F0(Set background color to Green)2.5 E +F1(P)185 728 Q F2(s)-2 3 M 202.862 720.5 202.862 730.5 DL 202.862 719.5 +202.862 729.5 DL 218.86 720.5 218.86 730.5 DL 207.862 730.5 202.862 +730.5 DL 208.86 730.5 203.86 730.5 DL 213.86 730.5 208.86 730.5 DL +218.86 730.5 213.86 730.5 DL 218.86 719.5 218.86 729.5 DL 207.862 719.5 +202.862 719.5 DL 208.86 719.5 203.86 719.5 DL 213.86 719.5 208.86 719.5 +DL 218.86 719.5 213.86 719.5 DL 220.526 720.5 220.526 730.5 DL 220.526 +719.5 220.526 729.5 DL 236.524 720.5 236.524 730.5 DL 225.526 730.5 +220.526 730.5 DL 226.524 730.5 221.524 730.5 DL 231.524 730.5 226.524 +730.5 DL 236.524 730.5 231.524 730.5 DL 236.524 719.5 236.524 729.5 DL +225.526 719.5 220.526 719.5 DL 226.524 719.5 221.524 719.5 DL 231.524 +719.5 226.524 719.5 DL 236.524 719.5 231.524 719.5 DL F0 -5.834 7.999 +(=4 3)194.722 728 T F3<ae>1.666 E F0(Set background color to Y)2.5 E +(ello)-1 E(w)-.25 E(9)303.5 772 Q EP +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E/F1 10/Times-Italic@0 SF(P)185 88 Q/F2 8/Times-Italic@0 SF(s)-2 +3 M .4 LW 202.862 80.5 202.862 90.5 DL 202.862 79.5 202.862 89.5 DL +218.86 80.5 218.86 90.5 DL 207.862 90.5 202.862 90.5 DL 208.86 90.5 +203.86 90.5 DL 213.86 90.5 208.86 90.5 DL 218.86 90.5 213.86 90.5 DL +218.86 79.5 218.86 89.5 DL 207.862 79.5 202.862 79.5 DL 208.86 79.5 +203.86 79.5 DL 213.86 79.5 208.86 79.5 DL 218.86 79.5 213.86 79.5 DL +220.526 80.5 220.526 90.5 DL 220.526 79.5 220.526 89.5 DL 236.524 80.5 +236.524 90.5 DL 225.526 90.5 220.526 90.5 DL 226.524 90.5 221.524 90.5 +DL 231.524 90.5 226.524 90.5 DL 236.524 90.5 231.524 90.5 DL 236.524 +79.5 236.524 89.5 DL 225.526 79.5 220.526 79.5 DL 226.524 79.5 221.524 +79.5 DL 231.524 79.5 226.524 79.5 DL 236.524 79.5 231.524 79.5 DL F0 +-5.834 7.999(=4 4)194.722 88 T/F3 10/Symbol SF<ae>1.666 E F0 +(Set background color to Blue)2.5 E F1(P)185 104 Q F2(s)-2 3 M 202.862 +96.5 202.862 106.5 DL 202.862 95.5 202.862 105.5 DL 218.86 96.5 218.86 +106.5 DL 207.862 106.5 202.862 106.5 DL 208.86 106.5 203.86 106.5 DL +213.86 106.5 208.86 106.5 DL 218.86 106.5 213.86 106.5 DL 218.86 95.5 +218.86 105.5 DL 207.862 95.5 202.862 95.5 DL 208.86 95.5 203.86 95.5 DL +213.86 95.5 208.86 95.5 DL 218.86 95.5 213.86 95.5 DL 220.526 96.5 +220.526 106.5 DL 220.526 95.5 220.526 105.5 DL 236.524 96.5 236.524 +106.5 DL 225.526 106.5 220.526 106.5 DL 226.524 106.5 221.524 106.5 DL +231.524 106.5 226.524 106.5 DL 236.524 106.5 231.524 106.5 DL 236.524 +95.5 236.524 105.5 DL 225.526 95.5 220.526 95.5 DL 226.524 95.5 221.524 +95.5 DL 231.524 95.5 226.524 95.5 DL 236.524 95.5 231.524 95.5 DL F0 +-5.834 7.999(=4 5)194.722 104 T F3<ae>1.666 E F0 +(Set background color to Magenta)2.5 E F1(P)185 120 Q F2(s)-2 3 M +202.862 112.5 202.862 122.5 DL 202.862 111.5 202.862 121.5 DL 218.86 +112.5 218.86 122.5 DL 207.862 122.5 202.862 122.5 DL 208.86 122.5 203.86 +122.5 DL 213.86 122.5 208.86 122.5 DL 218.86 122.5 213.86 122.5 DL +218.86 111.5 218.86 121.5 DL 207.862 111.5 202.862 111.5 DL 208.86 111.5 +203.86 111.5 DL 213.86 111.5 208.86 111.5 DL 218.86 111.5 213.86 111.5 +DL 220.526 112.5 220.526 122.5 DL 220.526 111.5 220.526 121.5 DL 236.524 +112.5 236.524 122.5 DL 225.526 122.5 220.526 122.5 DL 226.524 122.5 +221.524 122.5 DL 231.524 122.5 226.524 122.5 DL 236.524 122.5 231.524 +122.5 DL 236.524 111.5 236.524 121.5 DL 225.526 111.5 220.526 111.5 DL +226.524 111.5 221.524 111.5 DL 231.524 111.5 226.524 111.5 DL 236.524 +111.5 231.524 111.5 DL F0 -5.834 7.999(=4 6)194.722 120 T F3<ae>1.666 E +F0(Set background color to Cyan)2.5 E F1(P)185 136 Q F2(s)-2 3 M 202.862 +128.5 202.862 138.5 DL 202.862 127.5 202.862 137.5 DL 218.86 128.5 +218.86 138.5 DL 207.862 138.5 202.862 138.5 DL 208.86 138.5 203.86 138.5 +DL 213.86 138.5 208.86 138.5 DL 218.86 138.5 213.86 138.5 DL 218.86 +127.5 218.86 137.5 DL 207.862 127.5 202.862 127.5 DL 208.86 127.5 203.86 +127.5 DL 213.86 127.5 208.86 127.5 DL 218.86 127.5 213.86 127.5 DL +220.526 128.5 220.526 138.5 DL 220.526 127.5 220.526 137.5 DL 236.524 +128.5 236.524 138.5 DL 225.526 138.5 220.526 138.5 DL 226.524 138.5 +221.524 138.5 DL 231.524 138.5 226.524 138.5 DL 236.524 138.5 231.524 +138.5 DL 236.524 127.5 236.524 137.5 DL 225.526 127.5 220.526 127.5 DL +226.524 127.5 221.524 127.5 DL 231.524 127.5 226.524 127.5 DL 236.524 +127.5 231.524 127.5 DL F0 -5.834 7.999(=4 7)194.722 136 T F3<ae>1.666 E +F0(Set background color to White)2.5 E F1(P)185 152 Q F2(s)-2 3 M +202.862 144.5 202.862 154.5 DL 202.862 143.5 202.862 153.5 DL 218.86 +144.5 218.86 154.5 DL 207.862 154.5 202.862 154.5 DL 208.86 154.5 203.86 +154.5 DL 213.86 154.5 208.86 154.5 DL 218.86 154.5 213.86 154.5 DL +218.86 143.5 218.86 153.5 DL 207.862 143.5 202.862 143.5 DL 208.86 143.5 +203.86 143.5 DL 213.86 143.5 208.86 143.5 DL 218.86 143.5 213.86 143.5 +DL 220.526 144.5 220.526 154.5 DL 220.526 143.5 220.526 153.5 DL 236.524 +144.5 236.524 154.5 DL 225.526 154.5 220.526 154.5 DL 226.524 154.5 +221.524 154.5 DL 231.524 154.5 226.524 154.5 DL 236.524 154.5 231.524 +154.5 DL 236.524 143.5 236.524 153.5 DL 225.526 143.5 220.526 143.5 DL +226.524 143.5 221.524 143.5 DL 231.524 143.5 226.524 143.5 DL 236.524 +143.5 231.524 143.5 DL F0 -5.834 7.999(=4 9)194.722 152 T F3<ae>1.666 E +F0(Set background color to def)2.5 E(ault \(original\).)-.1 E .751 +(If 16-color support is compiled, the follo)180 184 R .751(wing apply) +-.25 F 5.751(.A)-.65 G .751(ssume that)-5.751 F F1(xterm)3.251 E F0 +1.851 -.55('s r)D .751(esources are).55 F .559 +(set so that the ISO color codes are the \214rst 8 of a set of 16.)180 +200 R .559(Then the)5.559 F F1(aixterm)3.059 E F0 .559(colors are)3.059 +F(the bright v)180 216 Q(ersions of the ISO colors:)-.15 E F1(P)185 232 +Q F2(s)-2 3 M 202.862 224.5 202.862 234.5 DL 202.862 223.5 202.862 233.5 +DL 218.86 224.5 218.86 234.5 DL 207.862 234.5 202.862 234.5 DL 208.86 +234.5 203.86 234.5 DL 213.86 234.5 208.86 234.5 DL 218.86 234.5 213.86 +234.5 DL 218.86 223.5 218.86 233.5 DL 207.862 223.5 202.862 223.5 DL +208.86 223.5 203.86 223.5 DL 213.86 223.5 208.86 223.5 DL 218.86 223.5 +213.86 223.5 DL 220.526 224.5 220.526 234.5 DL 220.526 223.5 220.526 +233.5 DL 236.524 224.5 236.524 234.5 DL 225.526 234.5 220.526 234.5 DL +226.524 234.5 221.524 234.5 DL 231.524 234.5 226.524 234.5 DL 236.524 +234.5 231.524 234.5 DL 236.524 223.5 236.524 233.5 DL 225.526 223.5 +220.526 223.5 DL 226.524 223.5 221.524 223.5 DL 231.524 223.5 226.524 +223.5 DL 236.524 223.5 231.524 223.5 DL F0 -5.834 7.999(=9 0)194.722 232 +T F3<ae>1.666 E F0(Set fore)2.5 E(ground color to Black)-.15 E F1(P)185 +248 Q F2(s)-2 3 M 202.862 240.5 202.862 250.5 DL 202.862 239.5 202.862 +249.5 DL 218.86 240.5 218.86 250.5 DL 207.862 250.5 202.862 250.5 DL +208.86 250.5 203.86 250.5 DL 213.86 250.5 208.86 250.5 DL 218.86 250.5 +213.86 250.5 DL 218.86 239.5 218.86 249.5 DL 207.862 239.5 202.862 239.5 +DL 208.86 239.5 203.86 239.5 DL 213.86 239.5 208.86 239.5 DL 218.86 +239.5 213.86 239.5 DL 220.526 240.5 220.526 250.5 DL 220.526 239.5 +220.526 249.5 DL 236.524 240.5 236.524 250.5 DL 225.526 250.5 220.526 +250.5 DL 226.524 250.5 221.524 250.5 DL 231.524 250.5 226.524 250.5 DL +236.524 250.5 231.524 250.5 DL 236.524 239.5 236.524 249.5 DL 225.526 +239.5 220.526 239.5 DL 226.524 239.5 221.524 239.5 DL 231.524 239.5 +226.524 239.5 DL 236.524 239.5 231.524 239.5 DL F0 -5.834 7.999(=9 1) +194.722 248 T F3<ae>1.666 E F0(Set fore)2.5 E(ground color to Red)-.15 E +F1(P)185 264 Q F2(s)-2 3 M 202.862 256.5 202.862 266.5 DL 202.862 255.5 +202.862 265.5 DL 218.86 256.5 218.86 266.5 DL 207.862 266.5 202.862 +266.5 DL 208.86 266.5 203.86 266.5 DL 213.86 266.5 208.86 266.5 DL +218.86 266.5 213.86 266.5 DL 218.86 255.5 218.86 265.5 DL 207.862 255.5 +202.862 255.5 DL 208.86 255.5 203.86 255.5 DL 213.86 255.5 208.86 255.5 +DL 218.86 255.5 213.86 255.5 DL 220.526 256.5 220.526 266.5 DL 220.526 +255.5 220.526 265.5 DL 236.524 256.5 236.524 266.5 DL 225.526 266.5 +220.526 266.5 DL 226.524 266.5 221.524 266.5 DL 231.524 266.5 226.524 +266.5 DL 236.524 266.5 231.524 266.5 DL 236.524 255.5 236.524 265.5 DL +225.526 255.5 220.526 255.5 DL 226.524 255.5 221.524 255.5 DL 231.524 +255.5 226.524 255.5 DL 236.524 255.5 231.524 255.5 DL F0 -5.834 7.999 +(=9 2)194.722 264 T F3<ae>1.666 E F0(Set fore)2.5 E +(ground color to Green)-.15 E F1(P)185 280 Q F2(s)-2 3 M 202.862 272.5 +202.862 282.5 DL 202.862 271.5 202.862 281.5 DL 218.86 272.5 218.86 +282.5 DL 207.862 282.5 202.862 282.5 DL 208.86 282.5 203.86 282.5 DL +213.86 282.5 208.86 282.5 DL 218.86 282.5 213.86 282.5 DL 218.86 271.5 +218.86 281.5 DL 207.862 271.5 202.862 271.5 DL 208.86 271.5 203.86 271.5 +DL 213.86 271.5 208.86 271.5 DL 218.86 271.5 213.86 271.5 DL 220.526 +272.5 220.526 282.5 DL 220.526 271.5 220.526 281.5 DL 236.524 272.5 +236.524 282.5 DL 225.526 282.5 220.526 282.5 DL 226.524 282.5 221.524 +282.5 DL 231.524 282.5 226.524 282.5 DL 236.524 282.5 231.524 282.5 DL +236.524 271.5 236.524 281.5 DL 225.526 271.5 220.526 271.5 DL 226.524 +271.5 221.524 271.5 DL 231.524 271.5 226.524 271.5 DL 236.524 271.5 +231.524 271.5 DL F0 -5.834 7.999(=9 3)194.722 280 T F3<ae>1.666 E F0 +(Set fore)2.5 E(ground color to Y)-.15 E(ello)-1 E(w)-.25 E F1(P)185 296 +Q F2(s)-2 3 M 202.862 288.5 202.862 298.5 DL 202.862 287.5 202.862 297.5 +DL 218.86 288.5 218.86 298.5 DL 207.862 298.5 202.862 298.5 DL 208.86 +298.5 203.86 298.5 DL 213.86 298.5 208.86 298.5 DL 218.86 298.5 213.86 +298.5 DL 218.86 287.5 218.86 297.5 DL 207.862 287.5 202.862 287.5 DL +208.86 287.5 203.86 287.5 DL 213.86 287.5 208.86 287.5 DL 218.86 287.5 +213.86 287.5 DL 220.526 288.5 220.526 298.5 DL 220.526 287.5 220.526 +297.5 DL 236.524 288.5 236.524 298.5 DL 225.526 298.5 220.526 298.5 DL +226.524 298.5 221.524 298.5 DL 231.524 298.5 226.524 298.5 DL 236.524 +298.5 231.524 298.5 DL 236.524 287.5 236.524 297.5 DL 225.526 287.5 +220.526 287.5 DL 226.524 287.5 221.524 287.5 DL 231.524 287.5 226.524 +287.5 DL 236.524 287.5 231.524 287.5 DL F0 -5.834 7.999(=9 4)194.722 296 +T F3<ae>1.666 E F0(Set fore)2.5 E(ground color to Blue)-.15 E F1(P)185 +312 Q F2(s)-2 3 M 202.862 304.5 202.862 314.5 DL 202.862 303.5 202.862 +313.5 DL 218.86 304.5 218.86 314.5 DL 207.862 314.5 202.862 314.5 DL +208.86 314.5 203.86 314.5 DL 213.86 314.5 208.86 314.5 DL 218.86 314.5 +213.86 314.5 DL 218.86 303.5 218.86 313.5 DL 207.862 303.5 202.862 303.5 +DL 208.86 303.5 203.86 303.5 DL 213.86 303.5 208.86 303.5 DL 218.86 +303.5 213.86 303.5 DL 220.526 304.5 220.526 314.5 DL 220.526 303.5 +220.526 313.5 DL 236.524 304.5 236.524 314.5 DL 225.526 314.5 220.526 +314.5 DL 226.524 314.5 221.524 314.5 DL 231.524 314.5 226.524 314.5 DL +236.524 314.5 231.524 314.5 DL 236.524 303.5 236.524 313.5 DL 225.526 +303.5 220.526 303.5 DL 226.524 303.5 221.524 303.5 DL 231.524 303.5 +226.524 303.5 DL 236.524 303.5 231.524 303.5 DL F0 -5.834 7.999(=9 5) +194.722 312 T F3<ae>1.666 E F0(Set fore)2.5 E(ground color to Magenta) +-.15 E F1(P)185 328 Q F2(s)-2 3 M 202.862 320.5 202.862 330.5 DL 202.862 +319.5 202.862 329.5 DL 218.86 320.5 218.86 330.5 DL 207.862 330.5 +202.862 330.5 DL 208.86 330.5 203.86 330.5 DL 213.86 330.5 208.86 330.5 +DL 218.86 330.5 213.86 330.5 DL 218.86 319.5 218.86 329.5 DL 207.862 +319.5 202.862 319.5 DL 208.86 319.5 203.86 319.5 DL 213.86 319.5 208.86 +319.5 DL 218.86 319.5 213.86 319.5 DL 220.526 320.5 220.526 330.5 DL +220.526 319.5 220.526 329.5 DL 236.524 320.5 236.524 330.5 DL 225.526 +330.5 220.526 330.5 DL 226.524 330.5 221.524 330.5 DL 231.524 330.5 +226.524 330.5 DL 236.524 330.5 231.524 330.5 DL 236.524 319.5 236.524 +329.5 DL 225.526 319.5 220.526 319.5 DL 226.524 319.5 221.524 319.5 DL +231.524 319.5 226.524 319.5 DL 236.524 319.5 231.524 319.5 DL F0 -5.834 +7.999(=9 6)194.722 328 T F3<ae>1.666 E F0(Set fore)2.5 E +(ground color to Cyan)-.15 E F1(P)185 344 Q F2(s)-2 3 M 202.862 336.5 +202.862 346.5 DL 202.862 335.5 202.862 345.5 DL 218.86 336.5 218.86 +346.5 DL 207.862 346.5 202.862 346.5 DL 208.86 346.5 203.86 346.5 DL +213.86 346.5 208.86 346.5 DL 218.86 346.5 213.86 346.5 DL 218.86 335.5 +218.86 345.5 DL 207.862 335.5 202.862 335.5 DL 208.86 335.5 203.86 335.5 +DL 213.86 335.5 208.86 335.5 DL 218.86 335.5 213.86 335.5 DL 220.526 +336.5 220.526 346.5 DL 220.526 335.5 220.526 345.5 DL 236.524 336.5 +236.524 346.5 DL 225.526 346.5 220.526 346.5 DL 226.524 346.5 221.524 +346.5 DL 231.524 346.5 226.524 346.5 DL 236.524 346.5 231.524 346.5 DL +236.524 335.5 236.524 345.5 DL 225.526 335.5 220.526 335.5 DL 226.524 +335.5 221.524 335.5 DL 231.524 335.5 226.524 335.5 DL 236.524 335.5 +231.524 335.5 DL F0 -5.834 7.999(=9 7)194.722 344 T F3<ae>1.666 E F0 +(Set fore)2.5 E(ground color to White)-.15 E F1(P)185 360 Q F2(s)-2 3 M +202.862 352.5 202.862 362.5 DL 202.862 351.5 202.862 361.5 DL 218.86 +352.5 218.86 362.5 DL 207.862 362.5 202.862 362.5 DL 208.86 362.5 203.86 +362.5 DL 213.86 362.5 208.86 362.5 DL 218.86 362.5 213.86 362.5 DL +218.86 351.5 218.86 361.5 DL 207.862 351.5 202.862 351.5 DL 208.86 351.5 +203.86 351.5 DL 213.86 351.5 208.86 351.5 DL 218.86 351.5 213.86 351.5 +DL 220.526 352.5 220.526 362.5 DL 220.526 351.5 220.526 361.5 DL 236.524 +352.5 236.524 362.5 DL 225.526 362.5 220.526 362.5 DL 226.524 362.5 +221.524 362.5 DL 231.524 362.5 226.524 362.5 DL 236.524 362.5 231.524 +362.5 DL 236.524 351.5 236.524 361.5 DL 225.526 351.5 220.526 351.5 DL +226.524 351.5 221.524 351.5 DL 231.524 351.5 226.524 351.5 DL 236.524 +351.5 231.524 351.5 DL 238.19 352.5 238.19 362.5 DL 238.19 351.5 238.19 +361.5 DL 254.188 352.5 254.188 362.5 DL 243.19 362.5 238.19 362.5 DL +244.188 362.5 239.188 362.5 DL 249.188 362.5 244.188 362.5 DL 254.188 +362.5 249.188 362.5 DL 254.188 351.5 254.188 361.5 DL 243.19 351.5 +238.19 351.5 DL 244.188 351.5 239.188 351.5 DL 249.188 351.5 244.188 +351.5 DL 254.188 351.5 249.188 351.5 DL F0 -5.834 7.999(=1 0 0)194.722 +360 T F3<ae>1.666 E F0(Set background color to Black)2.5 E F1(P)185 376 +Q F2(s)-2 3 M 202.862 368.5 202.862 378.5 DL 202.862 367.5 202.862 377.5 +DL 218.86 368.5 218.86 378.5 DL 207.862 378.5 202.862 378.5 DL 208.86 +378.5 203.86 378.5 DL 213.86 378.5 208.86 378.5 DL 218.86 378.5 213.86 +378.5 DL 218.86 367.5 218.86 377.5 DL 207.862 367.5 202.862 367.5 DL +208.86 367.5 203.86 367.5 DL 213.86 367.5 208.86 367.5 DL 218.86 367.5 +213.86 367.5 DL 220.526 368.5 220.526 378.5 DL 220.526 367.5 220.526 +377.5 DL 236.524 368.5 236.524 378.5 DL 225.526 378.5 220.526 378.5 DL +226.524 378.5 221.524 378.5 DL 231.524 378.5 226.524 378.5 DL 236.524 +378.5 231.524 378.5 DL 236.524 367.5 236.524 377.5 DL 225.526 367.5 +220.526 367.5 DL 226.524 367.5 221.524 367.5 DL 231.524 367.5 226.524 +367.5 DL 236.524 367.5 231.524 367.5 DL 238.19 368.5 238.19 378.5 DL +238.19 367.5 238.19 377.5 DL 254.188 368.5 254.188 378.5 DL 243.19 378.5 +238.19 378.5 DL 244.188 378.5 239.188 378.5 DL 249.188 378.5 244.188 +378.5 DL 254.188 378.5 249.188 378.5 DL 254.188 367.5 254.188 377.5 DL +243.19 367.5 238.19 367.5 DL 244.188 367.5 239.188 367.5 DL 249.188 +367.5 244.188 367.5 DL 254.188 367.5 249.188 367.5 DL F0 -5.834 7.999 +(=1 0 1)194.722 376 T F3<ae>1.666 E F0(Set background color to Red)2.5 E +F1(P)185 392 Q F2(s)-2 3 M 202.862 384.5 202.862 394.5 DL 202.862 383.5 +202.862 393.5 DL 218.86 384.5 218.86 394.5 DL 207.862 394.5 202.862 +394.5 DL 208.86 394.5 203.86 394.5 DL 213.86 394.5 208.86 394.5 DL +218.86 394.5 213.86 394.5 DL 218.86 383.5 218.86 393.5 DL 207.862 383.5 +202.862 383.5 DL 208.86 383.5 203.86 383.5 DL 213.86 383.5 208.86 383.5 +DL 218.86 383.5 213.86 383.5 DL 220.526 384.5 220.526 394.5 DL 220.526 +383.5 220.526 393.5 DL 236.524 384.5 236.524 394.5 DL 225.526 394.5 +220.526 394.5 DL 226.524 394.5 221.524 394.5 DL 231.524 394.5 226.524 +394.5 DL 236.524 394.5 231.524 394.5 DL 236.524 383.5 236.524 393.5 DL +225.526 383.5 220.526 383.5 DL 226.524 383.5 221.524 383.5 DL 231.524 +383.5 226.524 383.5 DL 236.524 383.5 231.524 383.5 DL 238.19 384.5 +238.19 394.5 DL 238.19 383.5 238.19 393.5 DL 254.188 384.5 254.188 394.5 +DL 243.19 394.5 238.19 394.5 DL 244.188 394.5 239.188 394.5 DL 249.188 +394.5 244.188 394.5 DL 254.188 394.5 249.188 394.5 DL 254.188 383.5 +254.188 393.5 DL 243.19 383.5 238.19 383.5 DL 244.188 383.5 239.188 +383.5 DL 249.188 383.5 244.188 383.5 DL 254.188 383.5 249.188 383.5 DL +F0 -5.834 7.999(=1 0 2)194.722 392 T F3<ae>1.666 E F0 +(Set background color to Green)2.5 E F1(P)185 408 Q F2(s)-2 3 M 202.862 +400.5 202.862 410.5 DL 202.862 399.5 202.862 409.5 DL 218.86 400.5 +218.86 410.5 DL 207.862 410.5 202.862 410.5 DL 208.86 410.5 203.86 410.5 +DL 213.86 410.5 208.86 410.5 DL 218.86 410.5 213.86 410.5 DL 218.86 +399.5 218.86 409.5 DL 207.862 399.5 202.862 399.5 DL 208.86 399.5 203.86 +399.5 DL 213.86 399.5 208.86 399.5 DL 218.86 399.5 213.86 399.5 DL +220.526 400.5 220.526 410.5 DL 220.526 399.5 220.526 409.5 DL 236.524 +400.5 236.524 410.5 DL 225.526 410.5 220.526 410.5 DL 226.524 410.5 +221.524 410.5 DL 231.524 410.5 226.524 410.5 DL 236.524 410.5 231.524 +410.5 DL 236.524 399.5 236.524 409.5 DL 225.526 399.5 220.526 399.5 DL +226.524 399.5 221.524 399.5 DL 231.524 399.5 226.524 399.5 DL 236.524 +399.5 231.524 399.5 DL 238.19 400.5 238.19 410.5 DL 238.19 399.5 238.19 +409.5 DL 254.188 400.5 254.188 410.5 DL 243.19 410.5 238.19 410.5 DL +244.188 410.5 239.188 410.5 DL 249.188 410.5 244.188 410.5 DL 254.188 +410.5 249.188 410.5 DL 254.188 399.5 254.188 409.5 DL 243.19 399.5 +238.19 399.5 DL 244.188 399.5 239.188 399.5 DL 249.188 399.5 244.188 +399.5 DL 254.188 399.5 249.188 399.5 DL F0 -5.834 7.999(=1 0 3)194.722 +408 T F3<ae>1.666 E F0(Set background color to Y)2.5 E(ello)-1 E(w)-.25 +E F1(P)185 424 Q F2(s)-2 3 M 202.862 416.5 202.862 426.5 DL 202.862 +415.5 202.862 425.5 DL 218.86 416.5 218.86 426.5 DL 207.862 426.5 +202.862 426.5 DL 208.86 426.5 203.86 426.5 DL 213.86 426.5 208.86 426.5 +DL 218.86 426.5 213.86 426.5 DL 218.86 415.5 218.86 425.5 DL 207.862 +415.5 202.862 415.5 DL 208.86 415.5 203.86 415.5 DL 213.86 415.5 208.86 +415.5 DL 218.86 415.5 213.86 415.5 DL 220.526 416.5 220.526 426.5 DL +220.526 415.5 220.526 425.5 DL 236.524 416.5 236.524 426.5 DL 225.526 +426.5 220.526 426.5 DL 226.524 426.5 221.524 426.5 DL 231.524 426.5 +226.524 426.5 DL 236.524 426.5 231.524 426.5 DL 236.524 415.5 236.524 +425.5 DL 225.526 415.5 220.526 415.5 DL 226.524 415.5 221.524 415.5 DL +231.524 415.5 226.524 415.5 DL 236.524 415.5 231.524 415.5 DL 238.19 +416.5 238.19 426.5 DL 238.19 415.5 238.19 425.5 DL 254.188 416.5 254.188 +426.5 DL 243.19 426.5 238.19 426.5 DL 244.188 426.5 239.188 426.5 DL +249.188 426.5 244.188 426.5 DL 254.188 426.5 249.188 426.5 DL 254.188 +415.5 254.188 425.5 DL 243.19 415.5 238.19 415.5 DL 244.188 415.5 +239.188 415.5 DL 249.188 415.5 244.188 415.5 DL 254.188 415.5 249.188 +415.5 DL F0 -5.834 7.999(=1 0 4)194.722 424 T F3<ae>1.666 E F0 +(Set background color to Blue)2.5 E F1(P)185 440 Q F2(s)-2 3 M 202.862 +432.5 202.862 442.5 DL 202.862 431.5 202.862 441.5 DL 218.86 432.5 +218.86 442.5 DL 207.862 442.5 202.862 442.5 DL 208.86 442.5 203.86 442.5 +DL 213.86 442.5 208.86 442.5 DL 218.86 442.5 213.86 442.5 DL 218.86 +431.5 218.86 441.5 DL 207.862 431.5 202.862 431.5 DL 208.86 431.5 203.86 +431.5 DL 213.86 431.5 208.86 431.5 DL 218.86 431.5 213.86 431.5 DL +220.526 432.5 220.526 442.5 DL 220.526 431.5 220.526 441.5 DL 236.524 +432.5 236.524 442.5 DL 225.526 442.5 220.526 442.5 DL 226.524 442.5 +221.524 442.5 DL 231.524 442.5 226.524 442.5 DL 236.524 442.5 231.524 +442.5 DL 236.524 431.5 236.524 441.5 DL 225.526 431.5 220.526 431.5 DL +226.524 431.5 221.524 431.5 DL 231.524 431.5 226.524 431.5 DL 236.524 +431.5 231.524 431.5 DL 238.19 432.5 238.19 442.5 DL 238.19 431.5 238.19 +441.5 DL 254.188 432.5 254.188 442.5 DL 243.19 442.5 238.19 442.5 DL +244.188 442.5 239.188 442.5 DL 249.188 442.5 244.188 442.5 DL 254.188 +442.5 249.188 442.5 DL 254.188 431.5 254.188 441.5 DL 243.19 431.5 +238.19 431.5 DL 244.188 431.5 239.188 431.5 DL 249.188 431.5 244.188 +431.5 DL 254.188 431.5 249.188 431.5 DL F0 -5.834 7.999(=1 0 5)194.722 +440 T F3<ae>1.666 E F0(Set background color to Magenta)2.5 E F1(P)185 +456 Q F2(s)-2 3 M 202.862 448.5 202.862 458.5 DL 202.862 447.5 202.862 +457.5 DL 218.86 448.5 218.86 458.5 DL 207.862 458.5 202.862 458.5 DL +208.86 458.5 203.86 458.5 DL 213.86 458.5 208.86 458.5 DL 218.86 458.5 +213.86 458.5 DL 218.86 447.5 218.86 457.5 DL 207.862 447.5 202.862 447.5 +DL 208.86 447.5 203.86 447.5 DL 213.86 447.5 208.86 447.5 DL 218.86 +447.5 213.86 447.5 DL 220.526 448.5 220.526 458.5 DL 220.526 447.5 +220.526 457.5 DL 236.524 448.5 236.524 458.5 DL 225.526 458.5 220.526 +458.5 DL 226.524 458.5 221.524 458.5 DL 231.524 458.5 226.524 458.5 DL +236.524 458.5 231.524 458.5 DL 236.524 447.5 236.524 457.5 DL 225.526 +447.5 220.526 447.5 DL 226.524 447.5 221.524 447.5 DL 231.524 447.5 +226.524 447.5 DL 236.524 447.5 231.524 447.5 DL 238.19 448.5 238.19 +458.5 DL 238.19 447.5 238.19 457.5 DL 254.188 448.5 254.188 458.5 DL +243.19 458.5 238.19 458.5 DL 244.188 458.5 239.188 458.5 DL 249.188 +458.5 244.188 458.5 DL 254.188 458.5 249.188 458.5 DL 254.188 447.5 +254.188 457.5 DL 243.19 447.5 238.19 447.5 DL 244.188 447.5 239.188 +447.5 DL 249.188 447.5 244.188 447.5 DL 254.188 447.5 249.188 447.5 DL +F0 -5.834 7.999(=1 0 6)194.722 456 T F3<ae>1.666 E F0 +(Set background color to Cyan)2.5 E F1(P)185 472 Q F2(s)-2 3 M 202.862 +464.5 202.862 474.5 DL 202.862 463.5 202.862 473.5 DL 218.86 464.5 +218.86 474.5 DL 207.862 474.5 202.862 474.5 DL 208.86 474.5 203.86 474.5 +DL 213.86 474.5 208.86 474.5 DL 218.86 474.5 213.86 474.5 DL 218.86 +463.5 218.86 473.5 DL 207.862 463.5 202.862 463.5 DL 208.86 463.5 203.86 +463.5 DL 213.86 463.5 208.86 463.5 DL 218.86 463.5 213.86 463.5 DL +220.526 464.5 220.526 474.5 DL 220.526 463.5 220.526 473.5 DL 236.524 +464.5 236.524 474.5 DL 225.526 474.5 220.526 474.5 DL 226.524 474.5 +221.524 474.5 DL 231.524 474.5 226.524 474.5 DL 236.524 474.5 231.524 +474.5 DL 236.524 463.5 236.524 473.5 DL 225.526 463.5 220.526 463.5 DL +226.524 463.5 221.524 463.5 DL 231.524 463.5 226.524 463.5 DL 236.524 +463.5 231.524 463.5 DL 238.19 464.5 238.19 474.5 DL 238.19 463.5 238.19 +473.5 DL 254.188 464.5 254.188 474.5 DL 243.19 474.5 238.19 474.5 DL +244.188 474.5 239.188 474.5 DL 249.188 474.5 244.188 474.5 DL 254.188 +474.5 249.188 474.5 DL 254.188 463.5 254.188 473.5 DL 243.19 463.5 +238.19 463.5 DL 244.188 463.5 239.188 463.5 DL 249.188 463.5 244.188 +463.5 DL 254.188 463.5 249.188 463.5 DL F0 -5.834 7.999(=1 0 7)194.722 +472 T F3<ae>1.666 E F0(Set background color to White)2.5 E(If)180 504 Q +F1(xterm)3.44 E F0 .94 +(is compiled with the 16-color support disabled, it supports the follo) +3.44 F .94(wing, from)-.25 F F1(rxvt)180 520 Q F0(:)A F1(P)185 536 Q F2 +(s)-2 3 M 202.862 528.5 202.862 538.5 DL 202.862 527.5 202.862 537.5 DL +218.86 528.5 218.86 538.5 DL 207.862 538.5 202.862 538.5 DL 208.86 538.5 +203.86 538.5 DL 213.86 538.5 208.86 538.5 DL 218.86 538.5 213.86 538.5 +DL 218.86 527.5 218.86 537.5 DL 207.862 527.5 202.862 527.5 DL 208.86 +527.5 203.86 527.5 DL 213.86 527.5 208.86 527.5 DL 218.86 527.5 213.86 +527.5 DL 220.526 528.5 220.526 538.5 DL 220.526 527.5 220.526 537.5 DL +236.524 528.5 236.524 538.5 DL 225.526 538.5 220.526 538.5 DL 226.524 +538.5 221.524 538.5 DL 231.524 538.5 226.524 538.5 DL 236.524 538.5 +231.524 538.5 DL 236.524 527.5 236.524 537.5 DL 225.526 527.5 220.526 +527.5 DL 226.524 527.5 221.524 527.5 DL 231.524 527.5 226.524 527.5 DL +236.524 527.5 231.524 527.5 DL 238.19 528.5 238.19 538.5 DL 238.19 527.5 +238.19 537.5 DL 254.188 528.5 254.188 538.5 DL 243.19 538.5 238.19 538.5 +DL 244.188 538.5 239.188 538.5 DL 249.188 538.5 244.188 538.5 DL 254.188 +538.5 249.188 538.5 DL 254.188 527.5 254.188 537.5 DL 243.19 527.5 +238.19 527.5 DL 244.188 527.5 239.188 527.5 DL 249.188 527.5 244.188 +527.5 DL 254.188 527.5 249.188 527.5 DL F0 -5.834 7.999(=1 0 0)194.722 +536 T F3<ae>1.666 E F0(Set fore)2.5 E +(ground and background color to def)-.15 E(ault)-.1 E +(If 88- or 256-color support is compiled, the follo)180 568 Q +(wing apply)-.25 E(.)-.65 E F1(P)185 584 Q F2(s)-2 3 M 202.862 576.5 +202.862 586.5 DL 202.862 575.5 202.862 585.5 DL 218.86 576.5 218.86 +586.5 DL 207.862 586.5 202.862 586.5 DL 208.86 586.5 203.86 586.5 DL +213.86 586.5 208.86 586.5 DL 218.86 586.5 213.86 586.5 DL 218.86 575.5 +218.86 585.5 DL 207.862 575.5 202.862 575.5 DL 208.86 575.5 203.86 575.5 +DL 213.86 575.5 208.86 575.5 DL 218.86 575.5 213.86 575.5 DL 220.526 +576.5 220.526 586.5 DL 220.526 575.5 220.526 585.5 DL 236.524 576.5 +236.524 586.5 DL 225.526 586.5 220.526 586.5 DL 226.524 586.5 221.524 +586.5 DL 231.524 586.5 226.524 586.5 DL 236.524 586.5 231.524 586.5 DL +236.524 575.5 236.524 585.5 DL 225.526 575.5 220.526 575.5 DL 226.524 +575.5 221.524 575.5 DL 231.524 575.5 226.524 575.5 DL 236.524 575.5 +231.524 575.5 DL F0 -5.834 7.999(=3 8)194.722 584 T 245.97 576.5 245.97 +586.5 DL 245.97 575.5 245.97 585.5 DL 261.968 576.5 261.968 586.5 DL +250.97 586.5 245.97 586.5 DL 251.968 586.5 246.968 586.5 DL 256.968 +586.5 251.968 586.5 DL 261.968 586.5 256.968 586.5 DL 261.968 575.5 +261.968 585.5 DL 250.97 575.5 245.97 575.5 DL 251.968 575.5 246.968 +575.5 DL 256.968 575.5 251.968 575.5 DL 261.968 575.5 256.968 575.5 DL +-8.833 7.999(;5 ;)240.69 584 T F1(P)-5.499 E F2(s)-2 3 M F3<ae>2.5 -3 M +F0(Set fore)2.5 E(ground color to the second)-.15 E F1(P)2.5 E F2(s)-2 3 +M F1(P)185 600 Q F2(s)-2 3 M 202.862 592.5 202.862 602.5 DL 202.862 +591.5 202.862 601.5 DL 218.86 592.5 218.86 602.5 DL 207.862 602.5 +202.862 602.5 DL 208.86 602.5 203.86 602.5 DL 213.86 602.5 208.86 602.5 +DL 218.86 602.5 213.86 602.5 DL 218.86 591.5 218.86 601.5 DL 207.862 +591.5 202.862 591.5 DL 208.86 591.5 203.86 591.5 DL 213.86 591.5 208.86 +591.5 DL 218.86 591.5 213.86 591.5 DL 220.526 592.5 220.526 602.5 DL +220.526 591.5 220.526 601.5 DL 236.524 592.5 236.524 602.5 DL 225.526 +602.5 220.526 602.5 DL 226.524 602.5 221.524 602.5 DL 231.524 602.5 +226.524 602.5 DL 236.524 602.5 231.524 602.5 DL 236.524 591.5 236.524 +601.5 DL 225.526 591.5 220.526 591.5 DL 226.524 591.5 221.524 591.5 DL +231.524 591.5 226.524 591.5 DL 236.524 591.5 231.524 591.5 DL F0 -5.834 +7.999(=4 8)194.722 600 T 245.97 592.5 245.97 602.5 DL 245.97 591.5 +245.97 601.5 DL 261.968 592.5 261.968 602.5 DL 250.97 602.5 245.97 602.5 +DL 251.968 602.5 246.968 602.5 DL 256.968 602.5 251.968 602.5 DL 261.968 +602.5 256.968 602.5 DL 261.968 591.5 261.968 601.5 DL 250.97 591.5 +245.97 591.5 DL 251.968 591.5 246.968 591.5 DL 256.968 591.5 251.968 +591.5 DL 261.968 591.5 256.968 591.5 DL -8.833 7.999(;5 ;)240.69 600 T +F1(P)-5.499 E F2(s)-2 3 M F3<ae>2.5 -3 M F0 +(Set background color to the second)2.5 E F1(P)2.5 E F2(s)-2 3 M 72 +624.5 72 634.5 DL 72 623.5 72 633.5 DL 87.998 624.5 87.998 634.5 DL 77 +634.5 72 634.5 DL 77.998 634.5 72.998 634.5 DL 82.998 634.5 77.998 634.5 +DL 87.998 634.5 82.998 634.5 DL 87.998 623.5 87.998 633.5 DL 77 623.5 72 +623.5 DL 77.998 623.5 72.998 623.5 DL 82.998 623.5 77.998 623.5 DL +87.998 623.5 82.998 623.5 DL/F4 6/Times-Roman@0 SF(CSI)75.331 631 Q F1 +(P)4.997 1 M 98.552 624.5 98.552 634.5 DL 98.552 623.5 98.552 633.5 DL +F2(s)93.774 635 Q 114.55 624.5 114.55 634.5 DL 103.552 634.5 98.552 +634.5 DL 104.55 634.5 99.55 634.5 DL 109.55 634.5 104.55 634.5 DL 114.55 +634.5 109.55 634.5 DL 114.55 623.5 114.55 633.5 DL 103.552 623.5 98.552 +623.5 DL 104.55 623.5 99.55 623.5 DL 109.55 623.5 104.55 623.5 DL 114.55 +623.5 109.55 623.5 DL F0 70.949(nD)104.051 632 S -.25(ev)-70.949 G +(ice Status Report \(DSR\)).25 E F1(P)185 648 Q F2(s)-2 3 M 202.862 +640.5 202.862 650.5 DL 202.862 639.5 202.862 649.5 DL 218.86 640.5 +218.86 650.5 DL 207.862 650.5 202.862 650.5 DL 208.86 650.5 203.86 650.5 +DL 213.86 650.5 208.86 650.5 DL 218.86 650.5 213.86 650.5 DL 218.86 +639.5 218.86 649.5 DL 207.862 639.5 202.862 639.5 DL 208.86 639.5 203.86 +639.5 DL 213.86 639.5 208.86 639.5 DL 218.86 639.5 213.86 639.5 DL F0 +7.999(=5)194.722 648 S F3<ae>1.666 E 292.066 640.5 292.066 650.5 DL +292.066 639.5 292.066 649.5 DL F0(Status Report)235.396 648 Q 308.064 +640.5 308.064 650.5 DL 297.066 650.5 292.066 650.5 DL 298.064 650.5 +293.064 650.5 DL 303.064 650.5 298.064 650.5 DL 308.064 650.5 303.064 +650.5 DL 308.064 639.5 308.064 649.5 DL 297.066 639.5 292.066 639.5 DL +298.064 639.5 293.064 639.5 DL 303.064 639.5 298.064 639.5 DL 308.064 +639.5 303.064 639.5 DL 309.73 640.5 309.73 650.5 DL 309.73 639.5 309.73 +649.5 DL F4(CSI)295.397 647 Q 325.728 640.5 325.728 650.5 DL 314.73 +650.5 309.73 650.5 DL 315.728 650.5 310.728 650.5 DL 320.728 650.5 +315.728 650.5 DL 325.728 650.5 320.728 650.5 DL 325.728 639.5 325.728 +649.5 DL 314.73 639.5 309.73 639.5 DL 315.728 639.5 310.728 639.5 DL +320.728 639.5 315.728 639.5 DL 325.728 639.5 320.728 639.5 DL 327.394 +640.5 327.394 650.5 DL 327.394 639.5 327.394 649.5 DL 343.392 640.5 +343.392 650.5 DL 332.394 650.5 327.394 650.5 DL 333.392 650.5 328.392 +650.5 DL 338.392 650.5 333.392 650.5 DL 343.392 650.5 338.392 650.5 DL +343.392 639.5 343.392 649.5 DL 332.394 639.5 327.394 639.5 DL 333.392 +639.5 328.392 639.5 DL 338.392 639.5 333.392 639.5 DL 343.392 639.5 +338.392 639.5 DL F0 12.664(0n)315.229 648 S(\(`)-2.999 E(`OK')-.74 E +('\))-.74 E F1(P)185 664 Q F2(s)-2 3 M 202.862 656.5 202.862 666.5 DL +202.862 655.5 202.862 665.5 DL 218.86 656.5 218.86 666.5 DL 207.862 +666.5 202.862 666.5 DL 208.86 666.5 203.86 666.5 DL 213.86 666.5 208.86 +666.5 DL 218.86 666.5 213.86 666.5 DL 218.86 655.5 218.86 665.5 DL +207.862 655.5 202.862 655.5 DL 208.86 655.5 203.86 655.5 DL 213.86 655.5 +208.86 655.5 DL 218.86 655.5 213.86 655.5 DL F0 7.999(=6)194.722 664 S +F3<ae>1.666 E F0(Report Cursor Position \(CPR\) [ro)2.5 E(w;column] as) +-.25 E 180 672.5 180 682.5 DL 180 671.5 180 681.5 DL 195.998 672.5 +195.998 682.5 DL 185 682.5 180 682.5 DL 185.998 682.5 180.998 682.5 DL +190.998 682.5 185.998 682.5 DL 195.998 682.5 190.998 682.5 DL 195.998 +671.5 195.998 681.5 DL 185 671.5 180 671.5 DL 185.998 671.5 180.998 +671.5 DL 190.998 671.5 185.998 671.5 DL 195.998 671.5 190.998 671.5 DL +F4(CSI)183.331 679 Q 203.22 672.5 203.22 682.5 DL 203.22 671.5 203.22 +681.5 DL F1(r)197.664 680 Q 219.218 672.5 219.218 682.5 DL 208.22 682.5 +203.22 682.5 DL 209.218 682.5 204.218 682.5 DL 214.218 682.5 209.218 +682.5 DL 219.218 682.5 214.218 682.5 DL 219.218 671.5 219.218 681.5 DL +208.22 671.5 203.22 671.5 DL 209.218 671.5 204.218 671.5 DL 214.218 +671.5 209.218 671.5 DL 219.218 671.5 214.218 671.5 DL F0(;)209.829 680 Q +226.99 672.5 226.99 682.5 DL 226.99 671.5 226.99 681.5 DL F1(c)220.884 +680 Q 242.988 672.5 242.988 682.5 DL 231.99 682.5 226.99 682.5 DL +232.988 682.5 227.988 682.5 DL 237.988 682.5 232.988 682.5 DL 242.988 +682.5 237.988 682.5 DL 242.988 671.5 242.988 681.5 DL 231.99 671.5 +226.99 671.5 DL 232.988 671.5 227.988 671.5 DL 237.988 671.5 232.988 +671.5 DL 242.988 671.5 237.988 671.5 DL F0(R)231.654 680 Q 72 688.5 72 +698.5 DL 72 687.5 72 697.5 DL 87.998 688.5 87.998 698.5 DL 77 698.5 72 +698.5 DL 77.998 698.5 72.998 698.5 DL 82.998 698.5 77.998 698.5 DL +87.998 698.5 82.998 698.5 DL 87.998 687.5 87.998 697.5 DL 77 687.5 72 +687.5 DL 77.998 687.5 72.998 687.5 DL 82.998 687.5 77.998 687.5 DL +87.998 687.5 82.998 687.5 DL 89.664 688.5 89.664 698.5 DL 89.664 687.5 +89.664 697.5 DL F4(CSI)75.331 695 Q 105.662 688.5 105.662 698.5 DL +94.664 698.5 89.664 698.5 DL 95.662 698.5 90.662 698.5 DL 100.662 698.5 +95.662 698.5 DL 105.662 698.5 100.662 698.5 DL 105.662 687.5 105.662 +697.5 DL 94.664 687.5 89.664 687.5 DL 95.662 687.5 90.662 687.5 DL +100.662 687.5 95.662 687.5 DL 105.662 687.5 100.662 687.5 DL F0(?)95.443 +696 Q F1(P)7.445 E 116.216 688.5 116.216 698.5 DL 116.216 687.5 116.216 +697.5 DL F2(s)111.438 699 Q 132.214 688.5 132.214 698.5 DL 121.216 698.5 +116.216 698.5 DL 122.214 698.5 117.214 698.5 DL 127.214 698.5 122.214 +698.5 DL 132.214 698.5 127.214 698.5 DL 132.214 687.5 132.214 697.5 DL +121.216 687.5 116.216 687.5 DL 122.214 687.5 117.214 687.5 DL 127.214 +687.5 122.214 687.5 DL 132.214 687.5 127.214 687.5 DL F0 53.285(nD) +121.715 696 S -.25(ev)-53.285 G +(ice Status Report \(DSR, DEC-speci\214c\)).25 E F1(P)185 712 Q F2(s)-2 +3 M 209.148 704.5 209.148 714.5 DL 209.148 703.5 209.148 713.5 DL +225.146 704.5 225.146 714.5 DL 214.148 714.5 209.148 714.5 DL 215.146 +714.5 210.146 714.5 DL 220.146 714.5 215.146 714.5 DL 225.146 714.5 +220.146 714.5 DL 225.146 703.5 225.146 713.5 DL 214.148 703.5 209.148 +703.5 DL 215.146 703.5 210.146 703.5 DL 220.146 703.5 215.146 703.5 DL +225.146 703.5 220.146 703.5 DL F0 11.142(=6)197.865 712 S F3<ae>1.666 E +F0 3.143(Report Cursor Position \(CPR\) [ro)5.643 F 457.682 704.5 +457.682 714.5 DL 457.682 703.5 457.682 713.5 DL 3.142(w;column] as) +394.738 712 R 473.68 704.5 473.68 714.5 DL 462.682 714.5 457.682 714.5 +DL 463.68 714.5 458.68 714.5 DL 468.68 714.5 463.68 714.5 DL 473.68 +714.5 468.68 714.5 DL 473.68 703.5 473.68 713.5 DL 462.682 703.5 457.682 +703.5 DL 463.68 703.5 458.68 703.5 DL 468.68 703.5 463.68 703.5 DL +473.68 703.5 468.68 703.5 DL 475.346 704.5 475.346 714.5 DL 475.346 +703.5 475.346 713.5 DL F4(CSI)461.013 711 Q 491.344 704.5 491.344 714.5 +DL 480.346 714.5 475.346 714.5 DL 481.344 714.5 476.344 714.5 DL 486.344 +714.5 481.344 714.5 DL 491.344 714.5 486.344 714.5 DL 491.344 703.5 +491.344 713.5 DL 480.346 703.5 475.346 703.5 DL 481.344 703.5 476.344 +703.5 DL 486.344 703.5 481.344 703.5 DL 491.344 703.5 486.344 703.5 DL +F0(?)481.125 712 Q 498.566 704.5 498.566 714.5 DL 498.566 703.5 498.566 +713.5 DL F1(r)493.01 712 Q 514.564 704.5 514.564 714.5 DL 503.566 714.5 +498.566 714.5 DL 504.564 714.5 499.564 714.5 DL 509.564 714.5 504.564 +714.5 DL 514.564 714.5 509.564 714.5 DL 514.564 703.5 514.564 713.5 DL +503.566 703.5 498.566 703.5 DL 504.564 703.5 499.564 703.5 DL 509.564 +703.5 504.564 703.5 DL 514.564 703.5 509.564 703.5 DL F0(;)505.175 712 Q +522.336 704.5 522.336 714.5 DL 522.336 703.5 522.336 713.5 DL F1(c) +516.23 712 Q 538.334 704.5 538.334 714.5 DL 527.336 714.5 522.336 714.5 +DL 528.334 714.5 523.334 714.5 DL 533.334 714.5 528.334 714.5 DL 538.334 +714.5 533.334 714.5 DL 538.334 703.5 538.334 713.5 DL 527.336 703.5 +522.336 703.5 DL 528.334 703.5 523.334 703.5 DL 533.334 703.5 528.334 +703.5 DL 538.334 703.5 533.334 703.5 DL F0(R)527 712 Q +(\(assumes page is zero\).)180 728 Q(10)301 772 Q EP +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E/F1 10/Times-Italic@0 SF(P)185 88 Q/F2 8/Times-Italic@0 SF(s)-2 +3 M .4 LW 214.702 80.5 214.702 90.5 DL 214.702 79.5 214.702 89.5 DL +230.7 80.5 230.7 90.5 DL 219.702 90.5 214.702 90.5 DL 220.7 90.5 215.7 +90.5 DL 225.7 90.5 220.7 90.5 DL 230.7 90.5 225.7 90.5 DL 230.7 79.5 +230.7 89.5 DL 219.702 79.5 214.702 79.5 DL 220.7 79.5 215.7 79.5 DL +225.7 79.5 220.7 79.5 DL 230.7 79.5 225.7 79.5 DL 232.366 80.5 232.366 +90.5 DL 232.366 79.5 232.366 89.5 DL F0 13.919(=1)200.642 88 S 248.364 +80.5 248.364 90.5 DL 237.366 90.5 232.366 90.5 DL 238.364 90.5 233.364 +90.5 DL 243.364 90.5 238.364 90.5 DL 248.364 90.5 243.364 90.5 DL +248.364 79.5 248.364 89.5 DL 237.366 79.5 232.366 79.5 DL 238.364 79.5 +233.364 79.5 DL 243.364 79.5 238.364 79.5 DL 248.364 79.5 243.364 79.5 +DL(5)237.865 88 Q/F3 10/Symbol SF<ae>15.585 E 395.972 80.5 395.972 90.5 +DL 395.972 79.5 395.972 89.5 DL F0 5.92(Report Printer status as)276.74 +88 R 411.97 80.5 411.97 90.5 DL 400.972 90.5 395.972 90.5 DL 401.97 90.5 +396.97 90.5 DL 406.97 90.5 401.97 90.5 DL 411.97 90.5 406.97 90.5 DL +411.97 79.5 411.97 89.5 DL 400.972 79.5 395.972 79.5 DL 401.97 79.5 +396.97 79.5 DL 406.97 79.5 401.97 79.5 DL 411.97 79.5 406.97 79.5 DL +413.636 80.5 413.636 90.5 DL 413.636 79.5 413.636 89.5 DL/F4 6 +/Times-Roman@0 SF(CSI)399.303 87 Q 429.634 80.5 429.634 90.5 DL 418.636 +90.5 413.636 90.5 DL 419.634 90.5 414.634 90.5 DL 424.634 90.5 419.634 +90.5 DL 429.634 90.5 424.634 90.5 DL 429.634 79.5 429.634 89.5 DL +418.636 79.5 413.636 79.5 DL 419.634 79.5 414.634 79.5 DL 424.634 79.5 +419.634 79.5 DL 429.634 79.5 424.634 79.5 DL 431.3 80.5 431.3 90.5 DL +431.3 79.5 431.3 89.5 DL 447.298 80.5 447.298 90.5 DL 436.3 90.5 431.3 +90.5 DL 437.298 90.5 432.298 90.5 DL 442.298 90.5 437.298 90.5 DL +447.298 90.5 442.298 90.5 DL 447.298 79.5 447.298 89.5 DL 436.3 79.5 +431.3 79.5 DL 437.298 79.5 432.298 79.5 DL 442.298 79.5 437.298 79.5 DL +447.298 79.5 442.298 79.5 DL 448.964 80.5 448.964 90.5 DL 448.964 79.5 +448.964 89.5 DL F0 12.944(?1)419.415 88 S 464.962 80.5 464.962 90.5 DL +453.964 90.5 448.964 90.5 DL 454.962 90.5 449.962 90.5 DL 459.962 90.5 +454.962 90.5 DL 464.962 90.5 459.962 90.5 DL 464.962 79.5 464.962 89.5 +DL 453.964 79.5 448.964 79.5 DL 454.962 79.5 449.962 79.5 DL 459.962 +79.5 454.962 79.5 DL 464.962 79.5 459.962 79.5 DL 468.294 80.5 468.294 +90.5 DL 468.294 79.5 468.294 89.5 DL 484.292 80.5 484.292 90.5 DL +473.294 90.5 468.294 90.5 DL 474.292 90.5 469.292 90.5 DL 479.292 90.5 +474.292 90.5 DL 484.292 90.5 479.292 90.5 DL 484.292 79.5 484.292 89.5 +DL 473.294 79.5 468.294 79.5 DL 474.292 79.5 469.292 79.5 DL 479.292 +79.5 474.292 79.5 DL 484.292 79.5 479.292 79.5 DL -15.574 14.33(0n \() +454.463 88 T 5.921(ready\) or)-14.33 F 180 96.5 180 106.5 DL 180 95.5 +180 105.5 DL 195.998 96.5 195.998 106.5 DL 185 106.5 180 106.5 DL +185.998 106.5 180.998 106.5 DL 190.998 106.5 185.998 106.5 DL 195.998 +106.5 190.998 106.5 DL 195.998 95.5 195.998 105.5 DL 185 95.5 180 95.5 +DL 185.998 95.5 180.998 95.5 DL 190.998 95.5 185.998 95.5 DL 195.998 +95.5 190.998 95.5 DL 197.664 96.5 197.664 106.5 DL 197.664 95.5 197.664 +105.5 DL F4(CSI)183.331 103 Q 213.662 96.5 213.662 106.5 DL 202.664 +106.5 197.664 106.5 DL 203.662 106.5 198.662 106.5 DL 208.662 106.5 +203.662 106.5 DL 213.662 106.5 208.662 106.5 DL 213.662 95.5 213.662 +105.5 DL 202.664 95.5 197.664 95.5 DL 203.662 95.5 198.662 95.5 DL +208.662 95.5 203.662 95.5 DL 213.662 95.5 208.662 95.5 DL 215.328 96.5 +215.328 106.5 DL 215.328 95.5 215.328 105.5 DL 231.326 96.5 231.326 +106.5 DL 220.328 106.5 215.328 106.5 DL 221.326 106.5 216.326 106.5 DL +226.326 106.5 221.326 106.5 DL 231.326 106.5 226.326 106.5 DL 231.326 +95.5 231.326 105.5 DL 220.328 95.5 215.328 95.5 DL 221.326 95.5 216.326 +95.5 DL 226.326 95.5 221.326 95.5 DL 231.326 95.5 226.326 95.5 DL +232.992 96.5 232.992 106.5 DL 232.992 95.5 232.992 105.5 DL F0 12.944 +(?1)203.443 104 S 248.99 96.5 248.99 106.5 DL 237.992 106.5 232.992 +106.5 DL 238.99 106.5 233.99 106.5 DL 243.99 106.5 238.99 106.5 DL +248.99 106.5 243.99 106.5 DL 248.99 95.5 248.99 105.5 DL 237.992 95.5 +232.992 95.5 DL 238.99 95.5 233.99 95.5 DL 243.99 95.5 238.99 95.5 DL +248.99 95.5 243.99 95.5 DL 252.322 96.5 252.322 106.5 DL 252.322 95.5 +252.322 105.5 DL 268.32 96.5 268.32 106.5 DL 257.322 106.5 252.322 106.5 +DL 258.32 106.5 253.32 106.5 DL 263.32 106.5 258.32 106.5 DL 268.32 +106.5 263.32 106.5 DL 268.32 95.5 268.32 105.5 DL 257.322 95.5 252.322 +95.5 DL 258.32 95.5 253.32 95.5 DL 263.32 95.5 258.32 95.5 DL 268.32 +95.5 263.32 95.5 DL 14.33(1n)238.491 104 S(\(not ready\))-4.665 E F1(P) +185 120 Q F2(s)-2 3 M 212.946 112.5 212.946 122.5 DL 212.946 111.5 +212.946 121.5 DL 228.944 112.5 228.944 122.5 DL 217.946 122.5 212.946 +122.5 DL 218.944 122.5 213.944 122.5 DL 223.944 122.5 218.944 122.5 DL +228.944 122.5 223.944 122.5 DL 228.944 111.5 228.944 121.5 DL 217.946 +111.5 212.946 111.5 DL 218.944 111.5 213.944 111.5 DL 223.944 111.5 +218.944 111.5 DL 228.944 111.5 223.944 111.5 DL 230.61 112.5 230.61 +122.5 DL 230.61 111.5 230.61 121.5 DL F0 13.041(=2)199.764 120 S 246.608 +112.5 246.608 122.5 DL 235.61 122.5 230.61 122.5 DL 236.608 122.5 +231.608 122.5 DL 241.608 122.5 236.608 122.5 DL 246.608 122.5 241.608 +122.5 DL 246.608 111.5 246.608 121.5 DL 235.61 111.5 230.61 111.5 DL +236.608 111.5 231.608 111.5 DL 241.608 111.5 236.608 111.5 DL 246.608 +111.5 241.608 111.5 DL(5)236.109 120 Q F3<ae>14.707 E 383.382 112.5 +383.382 122.5 DL 383.382 111.5 383.382 121.5 DL F0 5.041 +(Report UDK status as)273.228 120 R 399.38 112.5 399.38 122.5 DL 388.382 +122.5 383.382 122.5 DL 389.38 122.5 384.38 122.5 DL 394.38 122.5 389.38 +122.5 DL 399.38 122.5 394.38 122.5 DL 399.38 111.5 399.38 121.5 DL +388.382 111.5 383.382 111.5 DL 389.38 111.5 384.38 111.5 DL 394.38 111.5 +389.38 111.5 DL 399.38 111.5 394.38 111.5 DL 401.046 112.5 401.046 122.5 +DL 401.046 111.5 401.046 121.5 DL F4(CSI)386.713 119 Q 417.044 112.5 +417.044 122.5 DL 406.046 122.5 401.046 122.5 DL 407.044 122.5 402.044 +122.5 DL 412.044 122.5 407.044 122.5 DL 417.044 122.5 412.044 122.5 DL +417.044 111.5 417.044 121.5 DL 406.046 111.5 401.046 111.5 DL 407.044 +111.5 402.044 111.5 DL 412.044 111.5 407.044 111.5 DL 417.044 111.5 +412.044 111.5 DL 418.71 112.5 418.71 122.5 DL 418.71 111.5 418.71 121.5 +DL 434.708 112.5 434.708 122.5 DL 423.71 122.5 418.71 122.5 DL 424.708 +122.5 419.708 122.5 DL 429.708 122.5 424.708 122.5 DL 434.708 122.5 +429.708 122.5 DL 434.708 111.5 434.708 121.5 DL 423.71 111.5 418.71 +111.5 DL 424.708 111.5 419.708 111.5 DL 429.708 111.5 424.708 111.5 DL +434.708 111.5 429.708 111.5 DL 436.374 112.5 436.374 122.5 DL 436.374 +111.5 436.374 121.5 DL F0 12.944(?2)406.825 120 S 452.372 112.5 452.372 +122.5 DL 441.374 122.5 436.374 122.5 DL 442.372 122.5 437.372 122.5 DL +447.372 122.5 442.372 122.5 DL 452.372 122.5 447.372 122.5 DL 452.372 +111.5 452.372 121.5 DL 441.374 111.5 436.374 111.5 DL 442.372 111.5 +437.372 111.5 DL 447.372 111.5 442.372 111.5 DL 452.372 111.5 447.372 +111.5 DL 455.704 112.5 455.704 122.5 DL 455.704 111.5 455.704 121.5 DL +471.702 112.5 471.702 122.5 DL 460.704 122.5 455.704 122.5 DL 461.702 +122.5 456.702 122.5 DL 466.702 122.5 461.702 122.5 DL 471.702 122.5 +466.702 122.5 DL 471.702 111.5 471.702 121.5 DL 460.704 111.5 455.704 +111.5 DL 461.702 111.5 456.702 111.5 DL 466.702 111.5 461.702 111.5 DL +471.702 111.5 466.702 111.5 DL -16.454 14.33(0n \()441.873 120 T(unlock) +-14.33 E 5.041(ed\) or)-.1 F 180 128.5 180 138.5 DL 180 127.5 180 137.5 +DL 195.998 128.5 195.998 138.5 DL 185 138.5 180 138.5 DL 185.998 138.5 +180.998 138.5 DL 190.998 138.5 185.998 138.5 DL 195.998 138.5 190.998 +138.5 DL 195.998 127.5 195.998 137.5 DL 185 127.5 180 127.5 DL 185.998 +127.5 180.998 127.5 DL 190.998 127.5 185.998 127.5 DL 195.998 127.5 +190.998 127.5 DL 197.664 128.5 197.664 138.5 DL 197.664 127.5 197.664 +137.5 DL F4(CSI)183.331 135 Q 213.662 128.5 213.662 138.5 DL 202.664 +138.5 197.664 138.5 DL 203.662 138.5 198.662 138.5 DL 208.662 138.5 +203.662 138.5 DL 213.662 138.5 208.662 138.5 DL 213.662 127.5 213.662 +137.5 DL 202.664 127.5 197.664 127.5 DL 203.662 127.5 198.662 127.5 DL +208.662 127.5 203.662 127.5 DL 213.662 127.5 208.662 127.5 DL 215.328 +128.5 215.328 138.5 DL 215.328 127.5 215.328 137.5 DL 231.326 128.5 +231.326 138.5 DL 220.328 138.5 215.328 138.5 DL 221.326 138.5 216.326 +138.5 DL 226.326 138.5 221.326 138.5 DL 231.326 138.5 226.326 138.5 DL +231.326 127.5 231.326 137.5 DL 220.328 127.5 215.328 127.5 DL 221.326 +127.5 216.326 127.5 DL 226.326 127.5 221.326 127.5 DL 231.326 127.5 +226.326 127.5 DL 232.992 128.5 232.992 138.5 DL 232.992 127.5 232.992 +137.5 DL F0 12.944(?2)203.443 136 S 248.99 128.5 248.99 138.5 DL 237.992 +138.5 232.992 138.5 DL 238.99 138.5 233.99 138.5 DL 243.99 138.5 238.99 +138.5 DL 248.99 138.5 243.99 138.5 DL 248.99 127.5 248.99 137.5 DL +237.992 127.5 232.992 127.5 DL 238.99 127.5 233.99 127.5 DL 243.99 127.5 +238.99 127.5 DL 248.99 127.5 243.99 127.5 DL 252.322 128.5 252.322 138.5 +DL 252.322 127.5 252.322 137.5 DL 268.32 128.5 268.32 138.5 DL 257.322 +138.5 252.322 138.5 DL 258.32 138.5 253.32 138.5 DL 263.32 138.5 258.32 +138.5 DL 268.32 138.5 263.32 138.5 DL 268.32 127.5 268.32 137.5 DL +257.322 127.5 252.322 127.5 DL 258.32 127.5 253.32 127.5 DL 263.32 127.5 +258.32 127.5 DL 268.32 127.5 263.32 127.5 DL 14.33(1n)238.491 136 S +(\(lock)-4.665 E(ed\))-.1 E F1(P)185 152 Q F2(s)-2 3 M 202.862 144.5 +202.862 154.5 DL 202.862 143.5 202.862 153.5 DL 218.86 144.5 218.86 +154.5 DL 207.862 154.5 202.862 154.5 DL 208.86 154.5 203.86 154.5 DL +213.86 154.5 208.86 154.5 DL 218.86 154.5 213.86 154.5 DL 218.86 143.5 +218.86 153.5 DL 207.862 143.5 202.862 143.5 DL 208.86 143.5 203.86 143.5 +DL 213.86 143.5 208.86 143.5 DL 218.86 143.5 213.86 143.5 DL 220.526 +144.5 220.526 154.5 DL 220.526 143.5 220.526 153.5 DL 236.524 144.5 +236.524 154.5 DL 225.526 154.5 220.526 154.5 DL 226.524 154.5 221.524 +154.5 DL 231.524 154.5 226.524 154.5 DL 236.524 154.5 231.524 154.5 DL +236.524 143.5 236.524 153.5 DL 225.526 143.5 220.526 143.5 DL 226.524 +143.5 221.524 143.5 DL 231.524 143.5 226.524 143.5 DL 236.524 143.5 +231.524 143.5 DL F0 -5.834 7.999(=2 6)194.722 152 T F3<ae>1.666 E F0 +(Report K)2.5 E -.15(ey)-.25 G(board status as).15 E 180 160.5 180 170.5 +DL 180 159.5 180 169.5 DL 195.998 160.5 195.998 170.5 DL 185 170.5 180 +170.5 DL 185.998 170.5 180.998 170.5 DL 190.998 170.5 185.998 170.5 DL +195.998 170.5 190.998 170.5 DL 195.998 159.5 195.998 169.5 DL 185 159.5 +180 159.5 DL 185.998 159.5 180.998 159.5 DL 190.998 159.5 185.998 159.5 +DL 195.998 159.5 190.998 159.5 DL 197.664 160.5 197.664 170.5 DL 197.664 +159.5 197.664 169.5 DL F4(CSI)183.331 167 Q 213.662 160.5 213.662 170.5 +DL 202.664 170.5 197.664 170.5 DL 203.662 170.5 198.662 170.5 DL 208.662 +170.5 203.662 170.5 DL 213.662 170.5 208.662 170.5 DL 213.662 159.5 +213.662 169.5 DL 202.664 159.5 197.664 159.5 DL 203.662 159.5 198.662 +159.5 DL 208.662 159.5 203.662 159.5 DL 213.662 159.5 208.662 159.5 DL +215.328 160.5 215.328 170.5 DL 215.328 159.5 215.328 169.5 DL 231.326 +160.5 231.326 170.5 DL 220.328 170.5 215.328 170.5 DL 221.326 170.5 +216.326 170.5 DL 226.326 170.5 221.326 170.5 DL 231.326 170.5 226.326 +170.5 DL 231.326 159.5 231.326 169.5 DL 220.328 159.5 215.328 159.5 DL +221.326 159.5 216.326 159.5 DL 226.326 159.5 221.326 159.5 DL 231.326 +159.5 226.326 159.5 DL 232.992 160.5 232.992 170.5 DL 232.992 159.5 +232.992 169.5 DL F0 12.944(?2)203.443 168 S 248.99 160.5 248.99 170.5 DL +237.992 170.5 232.992 170.5 DL 238.99 170.5 233.99 170.5 DL 243.99 170.5 +238.99 170.5 DL 248.99 170.5 243.99 170.5 DL 248.99 159.5 248.99 169.5 +DL 237.992 159.5 232.992 159.5 DL 238.99 159.5 233.99 159.5 DL 243.99 +159.5 238.99 159.5 DL 248.99 159.5 243.99 159.5 DL 252.322 160.5 252.322 +170.5 DL 252.322 159.5 252.322 169.5 DL 268.32 160.5 268.32 170.5 DL +257.322 170.5 252.322 170.5 DL 258.32 170.5 253.32 170.5 DL 263.32 170.5 +258.32 170.5 DL 268.32 170.5 263.32 170.5 DL 268.32 159.5 268.32 169.5 +DL 257.322 159.5 252.322 159.5 DL 258.32 159.5 253.32 159.5 DL 263.32 +159.5 258.32 159.5 DL 268.32 159.5 263.32 159.5 DL 271.652 160.5 271.652 +170.5 DL 271.652 159.5 271.652 169.5 DL 287.65 160.5 287.65 170.5 DL +276.652 170.5 271.652 170.5 DL 277.65 170.5 272.65 170.5 DL 282.65 170.5 +277.65 170.5 DL 287.65 170.5 282.65 170.5 DL 287.65 159.5 287.65 169.5 +DL 276.652 159.5 271.652 159.5 DL 277.65 159.5 272.65 159.5 DL 282.65 +159.5 277.65 159.5 DL 287.65 159.5 282.65 159.5 DL 290.982 160.5 290.982 +170.5 DL 290.982 159.5 290.982 169.5 DL 306.98 160.5 306.98 170.5 DL +295.982 170.5 290.982 170.5 DL 296.98 170.5 291.98 170.5 DL 301.98 170.5 +296.98 170.5 DL 306.98 170.5 301.98 170.5 DL 306.98 159.5 306.98 169.5 +DL 295.982 159.5 290.982 159.5 DL 296.98 159.5 291.98 159.5 DL 301.98 +159.5 296.98 159.5 DL 306.98 159.5 301.98 159.5 DL 310.312 160.5 310.312 +170.5 DL 310.312 159.5 310.312 169.5 DL 326.31 160.5 326.31 170.5 DL +315.312 170.5 310.312 170.5 DL 316.31 170.5 311.31 170.5 DL 321.31 170.5 +316.31 170.5 DL 326.31 170.5 321.31 170.5 DL 326.31 159.5 326.31 169.5 +DL 315.312 159.5 310.312 159.5 DL 316.31 159.5 311.31 159.5 DL 321.31 +159.5 316.31 159.5 DL 326.31 159.5 321.31 159.5 DL 329.642 160.5 329.642 +170.5 DL 329.642 159.5 329.642 169.5 DL 345.64 160.5 345.64 170.5 DL +334.642 170.5 329.642 170.5 DL 335.64 170.5 330.64 170.5 DL 340.64 170.5 +335.64 170.5 DL 345.64 170.5 340.64 170.5 DL 345.64 159.5 345.64 169.5 +DL 334.642 159.5 329.642 159.5 DL 335.64 159.5 330.64 159.5 DL 340.64 +159.5 335.64 159.5 DL 345.64 159.5 340.64 159.5 DL 348.972 160.5 348.972 +170.5 DL 348.972 159.5 348.972 169.5 DL 364.97 160.5 364.97 170.5 DL +353.972 170.5 348.972 170.5 DL 354.97 170.5 349.97 170.5 DL 359.97 170.5 +354.97 170.5 DL 364.97 170.5 359.97 170.5 DL 364.97 159.5 364.97 169.5 +DL 353.972 159.5 348.972 159.5 DL 354.97 159.5 349.97 159.5 DL 359.97 +159.5 354.97 159.5 DL 364.97 159.5 359.97 159.5 DL 368.302 160.5 368.302 +170.5 DL 368.302 159.5 368.302 169.5 DL 15.44(7;1;0;0)238.491 168 S +384.3 160.5 384.3 170.5 DL 373.302 170.5 368.302 170.5 DL 374.3 170.5 +369.3 170.5 DL 379.3 170.5 374.3 170.5 DL 384.3 170.5 379.3 170.5 DL +384.3 159.5 384.3 169.5 DL 373.302 159.5 368.302 159.5 DL 374.3 159.5 +369.3 159.5 DL 379.3 159.5 374.3 159.5 DL 384.3 159.5 379.3 159.5 DL +9.665(n\()373.801 168 S(North American\))-9.665 E 180 176.5 180 186.5 DL +180 175.5 180 185.5 DL 195.998 176.5 195.998 186.5 DL 185 186.5 180 +186.5 DL 185.998 186.5 180.998 186.5 DL 190.998 186.5 185.998 186.5 DL +195.998 186.5 190.998 186.5 DL 195.998 175.5 195.998 185.5 DL 185 175.5 +180 175.5 DL 185.998 175.5 180.998 175.5 DL 190.998 175.5 185.998 175.5 +DL 195.998 175.5 190.998 175.5 DL 197.664 176.5 197.664 186.5 DL 197.664 +175.5 197.664 185.5 DL F4(CSI)183.331 183 Q 213.662 176.5 213.662 186.5 +DL 202.664 186.5 197.664 186.5 DL 203.662 186.5 198.662 186.5 DL 208.662 +186.5 203.662 186.5 DL 213.662 186.5 208.662 186.5 DL 213.662 175.5 +213.662 185.5 DL 202.664 175.5 197.664 175.5 DL 203.662 175.5 198.662 +175.5 DL 208.662 175.5 203.662 175.5 DL 213.662 175.5 208.662 175.5 DL +215.328 176.5 215.328 186.5 DL 215.328 175.5 215.328 185.5 DL 231.326 +176.5 231.326 186.5 DL 220.328 186.5 215.328 186.5 DL 221.326 186.5 +216.326 186.5 DL 226.326 186.5 221.326 186.5 DL 231.326 186.5 226.326 +186.5 DL 231.326 175.5 231.326 185.5 DL 220.328 175.5 215.328 175.5 DL +221.326 175.5 216.326 175.5 DL 226.326 175.5 221.326 175.5 DL 231.326 +175.5 226.326 175.5 DL 232.992 176.5 232.992 186.5 DL 232.992 175.5 +232.992 185.5 DL F0 12.944(?5)203.443 184 S 248.99 176.5 248.99 186.5 DL +237.992 186.5 232.992 186.5 DL 238.99 186.5 233.99 186.5 DL 243.99 186.5 +238.99 186.5 DL 248.99 186.5 243.99 186.5 DL 248.99 175.5 248.99 185.5 +DL 237.992 175.5 232.992 175.5 DL 238.99 175.5 233.99 175.5 DL 243.99 +175.5 238.99 175.5 DL 248.99 175.5 243.99 175.5 DL 252.322 176.5 252.322 +186.5 DL 252.322 175.5 252.322 185.5 DL 268.32 176.5 268.32 186.5 DL +257.322 186.5 252.322 186.5 DL 258.32 186.5 253.32 186.5 DL 263.32 186.5 +258.32 186.5 DL 268.32 186.5 263.32 186.5 DL 268.32 175.5 268.32 185.5 +DL 257.322 175.5 252.322 175.5 DL 258.32 175.5 253.32 175.5 DL 263.32 +175.5 258.32 175.5 DL 268.32 175.5 263.32 175.5 DL 14.33(3n)238.491 184 +S(Locator a)-4.665 E -.25(va)-.2 G(ilable, if compiled-in, or).25 E 180 +192.5 180 202.5 DL 180 191.5 180 201.5 DL 195.998 192.5 195.998 202.5 DL +185 202.5 180 202.5 DL 185.998 202.5 180.998 202.5 DL 190.998 202.5 +185.998 202.5 DL 195.998 202.5 190.998 202.5 DL 195.998 191.5 195.998 +201.5 DL 185 191.5 180 191.5 DL 185.998 191.5 180.998 191.5 DL 190.998 +191.5 185.998 191.5 DL 195.998 191.5 190.998 191.5 DL 197.664 192.5 +197.664 202.5 DL 197.664 191.5 197.664 201.5 DL F4(CSI)183.331 199 Q +213.662 192.5 213.662 202.5 DL 202.664 202.5 197.664 202.5 DL 203.662 +202.5 198.662 202.5 DL 208.662 202.5 203.662 202.5 DL 213.662 202.5 +208.662 202.5 DL 213.662 191.5 213.662 201.5 DL 202.664 191.5 197.664 +191.5 DL 203.662 191.5 198.662 191.5 DL 208.662 191.5 203.662 191.5 DL +213.662 191.5 208.662 191.5 DL 215.328 192.5 215.328 202.5 DL 215.328 +191.5 215.328 201.5 DL 231.326 192.5 231.326 202.5 DL 220.328 202.5 +215.328 202.5 DL 221.326 202.5 216.326 202.5 DL 226.326 202.5 221.326 +202.5 DL 231.326 202.5 226.326 202.5 DL 231.326 191.5 231.326 201.5 DL +220.328 191.5 215.328 191.5 DL 221.326 191.5 216.326 191.5 DL 226.326 +191.5 221.326 191.5 DL 231.326 191.5 226.326 191.5 DL 232.992 192.5 +232.992 202.5 DL 232.992 191.5 232.992 201.5 DL F0 12.944(?5)203.443 200 +S 248.99 192.5 248.99 202.5 DL 237.992 202.5 232.992 202.5 DL 238.99 +202.5 233.99 202.5 DL 243.99 202.5 238.99 202.5 DL 248.99 202.5 243.99 +202.5 DL 248.99 191.5 248.99 201.5 DL 237.992 191.5 232.992 191.5 DL +238.99 191.5 233.99 191.5 DL 243.99 191.5 238.99 191.5 DL 248.99 191.5 +243.99 191.5 DL 252.322 192.5 252.322 202.5 DL 252.322 191.5 252.322 +201.5 DL 268.32 192.5 268.32 202.5 DL 257.322 202.5 252.322 202.5 DL +258.32 202.5 253.32 202.5 DL 263.32 202.5 258.32 202.5 DL 268.32 202.5 +263.32 202.5 DL 268.32 191.5 268.32 201.5 DL 257.322 191.5 252.322 191.5 +DL 258.32 191.5 253.32 191.5 DL 263.32 191.5 258.32 191.5 DL 268.32 +191.5 263.32 191.5 DL 14.33(0n)238.491 200 S(No Locator)-4.665 E 2.5(,i) +-.4 G 2.5(fn)-2.5 G(ot.)-2.5 E 72 208.5 72 218.5 DL 72 207.5 72 217.5 DL +87.998 208.5 87.998 218.5 DL 77 218.5 72 218.5 DL 77.998 218.5 72.998 +218.5 DL 82.998 218.5 77.998 218.5 DL 87.998 218.5 82.998 218.5 DL +87.998 207.5 87.998 217.5 DL 77 207.5 72 207.5 DL 77.998 207.5 72.998 +207.5 DL 82.998 207.5 77.998 207.5 DL 87.998 207.5 82.998 207.5 DL 91.33 +208.5 91.33 218.5 DL 91.33 207.5 91.33 217.5 DL F4(CSI)75.331 215 Q +107.328 208.5 107.328 218.5 DL 96.33 218.5 91.33 218.5 DL 97.328 218.5 +92.328 218.5 DL 102.328 218.5 97.328 218.5 DL 107.328 218.5 102.328 +218.5 DL 107.328 207.5 107.328 217.5 DL 96.33 207.5 91.33 207.5 DL +97.328 207.5 92.328 207.5 DL 102.328 207.5 97.328 207.5 DL 107.328 207.5 +102.328 207.5 DL 108.994 208.5 108.994 218.5 DL 108.994 207.5 108.994 +217.5 DL 124.992 208.5 124.992 218.5 DL 113.994 218.5 108.994 218.5 DL +114.992 218.5 109.992 218.5 DL 119.992 218.5 114.992 218.5 DL 124.992 +218.5 119.992 218.5 DL 124.992 207.5 124.992 217.5 DL 113.994 207.5 +108.994 207.5 DL 114.992 207.5 109.992 207.5 DL 119.992 207.5 114.992 +207.5 DL 124.992 207.5 119.992 207.5 DL F0 31.009 13.499(!p S)97.664 216 +T(oft terminal reset \(DECSTR\))-13.499 E 72 224.5 72 234.5 DL 72 223.5 +72 233.5 DL 87.998 224.5 87.998 234.5 DL 77 234.5 72 234.5 DL 77.998 +234.5 72.998 234.5 DL 82.998 234.5 77.998 234.5 DL 87.998 234.5 82.998 +234.5 DL 87.998 223.5 87.998 233.5 DL 77 223.5 72 223.5 DL 77.998 223.5 +72.998 223.5 DL 82.998 223.5 77.998 223.5 DL 87.998 223.5 82.998 223.5 +DL F4(CSI)75.331 231 Q F1(P)4.997 1 M 98.552 224.5 98.552 234.5 DL +98.552 223.5 98.552 233.5 DL F2(s)93.774 235 Q 114.55 224.5 114.55 234.5 +DL 103.552 234.5 98.552 234.5 DL 104.55 234.5 99.55 234.5 DL 109.55 +234.5 104.55 234.5 DL 114.55 234.5 109.55 234.5 DL 114.55 223.5 114.55 +233.5 DL 103.552 223.5 98.552 223.5 DL 104.55 223.5 99.55 223.5 DL +109.55 223.5 104.55 223.5 DL 114.55 223.5 109.55 223.5 DL F0(;)105.161 +232 Q F1(P)8.275 E 125.104 224.5 125.104 234.5 DL 125.104 223.5 125.104 +233.5 DL F2(s)120.326 235 Q 141.102 224.5 141.102 234.5 DL 130.104 234.5 +125.104 234.5 DL 131.102 234.5 126.102 234.5 DL 136.102 234.5 131.102 +234.5 DL 141.102 234.5 136.102 234.5 DL 141.102 223.5 141.102 233.5 DL +130.104 223.5 125.104 223.5 DL 131.102 223.5 126.102 223.5 DL 136.102 +223.5 131.102 223.5 DL 141.102 223.5 136.102 223.5 DL 142.768 224.5 +142.768 234.5 DL 142.768 223.5 142.768 233.5 DL 158.766 224.5 158.766 +234.5 DL 147.768 234.5 142.768 234.5 DL 148.766 234.5 143.766 234.5 DL +153.766 234.5 148.766 234.5 DL 158.766 234.5 153.766 234.5 DL 158.766 +223.5 158.766 233.5 DL 147.768 223.5 142.768 223.5 DL 148.766 223.5 +143.766 223.5 DL 153.766 223.5 148.766 223.5 DL 158.766 223.5 153.766 +223.5 DL F0 -1.655 12.944(\231p S)130.883 232 T(et conformance le) +-12.944 E -.15(ve)-.25 G 2.5(l\().15 G(DECSCL\) V)-2.5 E(alid v)-1.11 E +(alues for the \214rst parameter:)-.25 E F1(P)185 248 Q F2(s)-2 3 M +202.862 240.5 202.862 250.5 DL 202.862 239.5 202.862 249.5 DL 218.86 +240.5 218.86 250.5 DL 207.862 250.5 202.862 250.5 DL 208.86 250.5 203.86 +250.5 DL 213.86 250.5 208.86 250.5 DL 218.86 250.5 213.86 250.5 DL +218.86 239.5 218.86 249.5 DL 207.862 239.5 202.862 239.5 DL 208.86 239.5 +203.86 239.5 DL 213.86 239.5 208.86 239.5 DL 218.86 239.5 213.86 239.5 +DL 220.526 240.5 220.526 250.5 DL 220.526 239.5 220.526 249.5 DL 236.524 +240.5 236.524 250.5 DL 225.526 250.5 220.526 250.5 DL 226.524 250.5 +221.524 250.5 DL 231.524 250.5 226.524 250.5 DL 236.524 250.5 231.524 +250.5 DL 236.524 239.5 236.524 249.5 DL 225.526 239.5 220.526 239.5 DL +226.524 239.5 221.524 239.5 DL 231.524 239.5 226.524 239.5 DL 236.524 +239.5 231.524 239.5 DL F0 -5.834 7.999(=6 1)194.722 248 T F3<ae>1.666 E +F0(VT100)2.5 E F1(P)185 264 Q F2(s)-2 3 M 202.862 256.5 202.862 266.5 DL +202.862 255.5 202.862 265.5 DL 218.86 256.5 218.86 266.5 DL 207.862 +266.5 202.862 266.5 DL 208.86 266.5 203.86 266.5 DL 213.86 266.5 208.86 +266.5 DL 218.86 266.5 213.86 266.5 DL 218.86 255.5 218.86 265.5 DL +207.862 255.5 202.862 255.5 DL 208.86 255.5 203.86 255.5 DL 213.86 255.5 +208.86 255.5 DL 218.86 255.5 213.86 255.5 DL 220.526 256.5 220.526 266.5 +DL 220.526 255.5 220.526 265.5 DL 236.524 256.5 236.524 266.5 DL 225.526 +266.5 220.526 266.5 DL 226.524 266.5 221.524 266.5 DL 231.524 266.5 +226.524 266.5 DL 236.524 266.5 231.524 266.5 DL 236.524 255.5 236.524 +265.5 DL 225.526 255.5 220.526 255.5 DL 226.524 255.5 221.524 255.5 DL +231.524 255.5 226.524 255.5 DL 236.524 255.5 231.524 255.5 DL F0 -5.834 +7.999(=6 2)194.722 264 T F3<ae>1.666 E F0(VT200)2.5 E F1(P)185 280 Q F2 +(s)-2 3 M 202.862 272.5 202.862 282.5 DL 202.862 271.5 202.862 281.5 DL +218.86 272.5 218.86 282.5 DL 207.862 282.5 202.862 282.5 DL 208.86 282.5 +203.86 282.5 DL 213.86 282.5 208.86 282.5 DL 218.86 282.5 213.86 282.5 +DL 218.86 271.5 218.86 281.5 DL 207.862 271.5 202.862 271.5 DL 208.86 +271.5 203.86 271.5 DL 213.86 271.5 208.86 271.5 DL 218.86 271.5 213.86 +271.5 DL 220.526 272.5 220.526 282.5 DL 220.526 271.5 220.526 281.5 DL +236.524 272.5 236.524 282.5 DL 225.526 282.5 220.526 282.5 DL 226.524 +282.5 221.524 282.5 DL 231.524 282.5 226.524 282.5 DL 236.524 282.5 +231.524 282.5 DL 236.524 271.5 236.524 281.5 DL 225.526 271.5 220.526 +271.5 DL 226.524 271.5 221.524 271.5 DL 231.524 271.5 226.524 271.5 DL +236.524 271.5 231.524 271.5 DL F0 -5.834 7.999(=6 3)194.722 280 T F3<ae> +1.666 E F0(VT300)2.5 E -1.11(Va)180 296 S(lid v)1.11 E +(alues for the second parameter:)-.25 E F1(P)185 312 Q F2(s)-2 3 M +202.862 304.5 202.862 314.5 DL 202.862 303.5 202.862 313.5 DL 218.86 +304.5 218.86 314.5 DL 207.862 314.5 202.862 314.5 DL 208.86 314.5 203.86 +314.5 DL 213.86 314.5 208.86 314.5 DL 218.86 314.5 213.86 314.5 DL +218.86 303.5 218.86 313.5 DL 207.862 303.5 202.862 303.5 DL 208.86 303.5 +203.86 303.5 DL 213.86 303.5 208.86 303.5 DL 218.86 303.5 213.86 303.5 +DL F0 7.999(=0)194.722 312 S F3<ae>1.666 E F0(8-bit controls)2.5 E F1(P) +185 328 Q F2(s)-2 3 M 202.862 320.5 202.862 330.5 DL 202.862 319.5 +202.862 329.5 DL 218.86 320.5 218.86 330.5 DL 207.862 330.5 202.862 +330.5 DL 208.86 330.5 203.86 330.5 DL 213.86 330.5 208.86 330.5 DL +218.86 330.5 213.86 330.5 DL 218.86 319.5 218.86 329.5 DL 207.862 319.5 +202.862 319.5 DL 208.86 319.5 203.86 319.5 DL 213.86 319.5 208.86 319.5 +DL 218.86 319.5 213.86 319.5 DL F0 7.999(=1)194.722 328 S F3<ae>1.666 E +F0(7-bit controls \(al)2.5 E -.1(wa)-.1 G(ys set for VT100\)).1 E F1(P) +185 344 Q F2(s)-2 3 M 202.862 336.5 202.862 346.5 DL 202.862 335.5 +202.862 345.5 DL 218.86 336.5 218.86 346.5 DL 207.862 346.5 202.862 +346.5 DL 208.86 346.5 203.86 346.5 DL 213.86 346.5 208.86 346.5 DL +218.86 346.5 213.86 346.5 DL 218.86 335.5 218.86 345.5 DL 207.862 335.5 +202.862 335.5 DL 208.86 335.5 203.86 335.5 DL 213.86 335.5 208.86 335.5 +DL 218.86 335.5 213.86 335.5 DL F0 7.999(=2)194.722 344 S F3<ae>1.666 E +F0(8-bit controls)2.5 E 72 352.5 72 362.5 DL 72 351.5 72 361.5 DL 87.998 +352.5 87.998 362.5 DL 77 362.5 72 362.5 DL 77.998 362.5 72.998 362.5 DL +82.998 362.5 77.998 362.5 DL 87.998 362.5 82.998 362.5 DL 87.998 351.5 +87.998 361.5 DL 77 351.5 72 351.5 DL 77.998 351.5 72.998 351.5 DL 82.998 +351.5 77.998 351.5 DL 87.998 351.5 82.998 351.5 DL F4(CSI)75.331 359 Q +F1(P)4.997 1 M 98.552 352.5 98.552 362.5 DL 98.552 351.5 98.552 361.5 DL +F2(s)93.774 363 Q 114.55 352.5 114.55 362.5 DL 103.552 362.5 98.552 +362.5 DL 104.55 362.5 99.55 362.5 DL 109.55 362.5 104.55 362.5 DL 114.55 +362.5 109.55 362.5 DL 114.55 351.5 114.55 361.5 DL 103.552 351.5 98.552 +351.5 DL 104.55 351.5 99.55 351.5 DL 109.55 351.5 104.55 351.5 DL 114.55 +351.5 109.55 351.5 DL 116.216 352.5 116.216 362.5 DL 116.216 351.5 +116.216 361.5 DL 132.214 352.5 132.214 362.5 DL 121.216 362.5 116.216 +362.5 DL 122.214 362.5 117.214 362.5 DL 127.214 362.5 122.214 362.5 DL +132.214 362.5 127.214 362.5 DL 132.214 351.5 132.214 361.5 DL 121.216 +351.5 116.216 351.5 DL 122.214 351.5 117.214 351.5 DL 127.214 351.5 +122.214 351.5 DL 132.214 351.5 127.214 351.5 DL F0 24.897 12.944 +(\231q S)104.331 360 T(elect character protection attrib)-12.944 E +(ute \(DECSCA\).)-.2 E -1.11(Va)5 G(lid v)1.11 E +(alues for the parameter:)-.25 E F1(P)185 376 Q F2(s)-2 3 M 202.862 +368.5 202.862 378.5 DL 202.862 367.5 202.862 377.5 DL 218.86 368.5 +218.86 378.5 DL 207.862 378.5 202.862 378.5 DL 208.86 378.5 203.86 378.5 +DL 213.86 378.5 208.86 378.5 DL 218.86 378.5 213.86 378.5 DL 218.86 +367.5 218.86 377.5 DL 207.862 367.5 202.862 367.5 DL 208.86 367.5 203.86 +367.5 DL 213.86 367.5 208.86 367.5 DL 218.86 367.5 213.86 367.5 DL F0 +7.999(=0)194.722 376 S F3<ae>1.666 E F0 +(DECSED and DECSEL can erase \(def)2.5 E(ault\))-.1 E F1(P)185 392 Q F2 +(s)-2 3 M 202.862 384.5 202.862 394.5 DL 202.862 383.5 202.862 393.5 DL +218.86 384.5 218.86 394.5 DL 207.862 394.5 202.862 394.5 DL 208.86 394.5 +203.86 394.5 DL 213.86 394.5 208.86 394.5 DL 218.86 394.5 213.86 394.5 +DL 218.86 383.5 218.86 393.5 DL 207.862 383.5 202.862 383.5 DL 208.86 +383.5 203.86 383.5 DL 213.86 383.5 208.86 383.5 DL 218.86 383.5 213.86 +383.5 DL F0 7.999(=1)194.722 392 S F3<ae>1.666 E F0 +(DECSED and DECSEL cannot erase)2.5 E F1(P)185 408 Q F2(s)-2 3 M 202.862 +400.5 202.862 410.5 DL 202.862 399.5 202.862 409.5 DL 218.86 400.5 +218.86 410.5 DL 207.862 410.5 202.862 410.5 DL 208.86 410.5 203.86 410.5 +DL 213.86 410.5 208.86 410.5 DL 218.86 410.5 213.86 410.5 DL 218.86 +399.5 218.86 409.5 DL 207.862 399.5 202.862 399.5 DL 208.86 399.5 203.86 +399.5 DL 213.86 399.5 208.86 399.5 DL 218.86 399.5 213.86 399.5 DL F0 +7.999(=2)194.722 408 S F3<ae>1.666 E F0(DECSED and DECSEL can erase)2.5 +E 72 416.5 72 426.5 DL 72 415.5 72 425.5 DL 87.998 416.5 87.998 426.5 DL +77 426.5 72 426.5 DL 77.998 426.5 72.998 426.5 DL 82.998 426.5 77.998 +426.5 DL 87.998 426.5 82.998 426.5 DL 87.998 415.5 87.998 425.5 DL 77 +415.5 72 415.5 DL 77.998 415.5 72.998 415.5 DL 82.998 415.5 77.998 415.5 +DL 87.998 415.5 82.998 415.5 DL F4(CSI)75.331 423 Q F1(P)4.997 1 M +98.552 416.5 98.552 426.5 DL 98.552 415.5 98.552 425.5 DL F2(s)93.774 +427 Q 114.55 416.5 114.55 426.5 DL 103.552 426.5 98.552 426.5 DL 104.55 +426.5 99.55 426.5 DL 109.55 426.5 104.55 426.5 DL 114.55 426.5 109.55 +426.5 DL 114.55 415.5 114.55 425.5 DL 103.552 415.5 98.552 415.5 DL +104.55 415.5 99.55 415.5 DL 109.55 415.5 104.55 415.5 DL 114.55 415.5 +109.55 415.5 DL F0(;)105.161 424 Q F1(P)8.275 E 125.104 416.5 125.104 +426.5 DL 125.104 415.5 125.104 425.5 DL F2(s)120.326 427 Q 141.102 416.5 +141.102 426.5 DL 130.104 426.5 125.104 426.5 DL 131.102 426.5 126.102 +426.5 DL 136.102 426.5 131.102 426.5 DL 141.102 426.5 136.102 426.5 DL +141.102 415.5 141.102 425.5 DL 130.104 415.5 125.104 415.5 DL 131.102 +415.5 126.102 415.5 DL 136.102 415.5 131.102 415.5 DL 141.102 415.5 +136.102 415.5 DL F0 45.232(rS)131.438 424 S(et Scrolling Re)-45.232 E +(gion [top;bottom] \(def)-.15 E(ault = full size of windo)-.1 E +(w\) \(DECSTBM\))-.25 E 72 432.5 72 442.5 DL 72 431.5 72 441.5 DL 87.998 +432.5 87.998 442.5 DL 77 442.5 72 442.5 DL 77.998 442.5 72.998 442.5 DL +82.998 442.5 77.998 442.5 DL 87.998 442.5 82.998 442.5 DL 87.998 431.5 +87.998 441.5 DL 77 431.5 72 431.5 DL 77.998 431.5 72.998 431.5 DL 82.998 +431.5 77.998 431.5 DL 87.998 431.5 82.998 431.5 DL 89.664 432.5 89.664 +442.5 DL 89.664 431.5 89.664 441.5 DL F4(CSI)75.331 439 Q 105.662 432.5 +105.662 442.5 DL 94.664 442.5 89.664 442.5 DL 95.662 442.5 90.662 442.5 +DL 100.662 442.5 95.662 442.5 DL 105.662 442.5 100.662 442.5 DL 105.662 +431.5 105.662 441.5 DL 94.664 431.5 89.664 431.5 DL 95.662 431.5 90.662 +431.5 DL 100.662 431.5 95.662 431.5 DL 105.662 431.5 100.662 431.5 DL F0 +(?)95.443 440 Q F1(P)7.445 E 118.88 432.5 118.88 442.5 DL 118.88 431.5 +118.88 441.5 DL F2(m)111.438 443 Q 134.878 432.5 134.878 442.5 DL 123.88 +442.5 118.88 442.5 DL 124.878 442.5 119.878 442.5 DL 129.878 442.5 +124.878 442.5 DL 134.878 442.5 129.878 442.5 DL 134.878 431.5 134.878 +441.5 DL 123.88 431.5 118.88 431.5 DL 124.878 431.5 119.878 431.5 DL +129.878 431.5 124.878 431.5 DL 134.878 431.5 129.878 431.5 DL F0 51.456 +(rR)125.214 440 S .594(estore DEC Pri)-51.456 F -.25(va)-.25 G .594 +(te Mode V).25 F 3.095(alues. The)-1.11 F -.25(va)3.095 G .595(lue of) +.25 F F1(P)3.095 E F2(s)-2 3 M F0(pre)3.095 -3 M .595(viously sa)-.25 F +-.15(ve)-.2 G 3.095(di).15 G 3.095(sr)-3.095 G(estored.)-3.095 E F1(P) +5.595 E F2(s)-2 3 M F0 -.25(va)3.095 -3 O(l-).25 E +(ues are the same as for DECSET)180 456 Q(.)-.74 E 72 464.5 72 474.5 DL +72 463.5 72 473.5 DL 87.998 464.5 87.998 474.5 DL 77 474.5 72 474.5 DL +77.998 474.5 72.998 474.5 DL 82.998 474.5 77.998 474.5 DL 87.998 474.5 +82.998 474.5 DL 87.998 463.5 87.998 473.5 DL 77 463.5 72 463.5 DL 77.998 +463.5 72.998 463.5 DL 82.998 463.5 77.998 463.5 DL 87.998 463.5 82.998 +463.5 DL 89.664 464.5 89.664 474.5 DL 89.664 463.5 89.664 473.5 DL F4 +(CSI)75.331 471 Q 105.662 464.5 105.662 474.5 DL 94.664 474.5 89.664 +474.5 DL 95.662 474.5 90.662 474.5 DL 100.662 474.5 95.662 474.5 DL +105.662 474.5 100.662 474.5 DL 105.662 463.5 105.662 473.5 DL 94.664 +463.5 89.664 463.5 DL 95.662 463.5 90.662 463.5 DL 100.662 463.5 95.662 +463.5 DL 105.662 463.5 100.662 463.5 DL F0(?)95.443 472 Q F1(P)7.445 E +118.88 464.5 118.88 474.5 DL 118.88 463.5 118.88 473.5 DL F2(m)111.438 +475 Q 134.878 464.5 134.878 474.5 DL 123.88 474.5 118.88 474.5 DL +124.878 474.5 119.878 474.5 DL 129.878 474.5 124.878 474.5 DL 134.878 +474.5 129.878 474.5 DL 134.878 463.5 134.878 473.5 DL 123.88 463.5 +118.88 463.5 DL 124.878 463.5 119.878 463.5 DL 129.878 463.5 124.878 +463.5 DL 134.878 463.5 129.878 463.5 DL F0 51.176(sS)124.934 472 S -2.25 +-.2(av e)-51.176 H(DEC Pri)2.7 E -.25(va)-.25 G(te Mode V).25 E(alues.) +-1.11 E F1(P)5 E F2(s)-2 3 M F0 -.25(va)2.5 -3 O +(lues are the same as for DECSET).25 E(.)-.74 E 72 480.5 72 490.5 DL 72 +479.5 72 489.5 DL 87.998 480.5 87.998 490.5 DL 77 490.5 72 490.5 DL +77.998 490.5 72.998 490.5 DL 82.998 490.5 77.998 490.5 DL 87.998 490.5 +82.998 490.5 DL 87.998 479.5 87.998 489.5 DL 77 479.5 72 479.5 DL 77.998 +479.5 72.998 479.5 DL 82.998 479.5 77.998 479.5 DL 87.998 479.5 82.998 +479.5 DL F4(CSI)75.331 487 Q F1(P)4.997 1 M 98.552 480.5 98.552 490.5 DL +98.552 479.5 98.552 489.5 DL F2(s)93.774 491 Q 114.55 480.5 114.55 490.5 +DL 103.552 490.5 98.552 490.5 DL 104.55 490.5 99.55 490.5 DL 109.55 +490.5 104.55 490.5 DL 114.55 490.5 109.55 490.5 DL 114.55 479.5 114.55 +489.5 DL 103.552 479.5 98.552 479.5 DL 104.55 479.5 99.55 479.5 DL +109.55 479.5 104.55 479.5 DL 114.55 479.5 109.55 479.5 DL F0(;)105.161 +488 Q F1(P)8.275 E 125.104 480.5 125.104 490.5 DL 125.104 479.5 125.104 +489.5 DL F2(s)120.326 491 Q 141.102 480.5 141.102 490.5 DL 130.104 490.5 +125.104 490.5 DL 131.102 490.5 126.102 490.5 DL 136.102 490.5 131.102 +490.5 DL 141.102 490.5 136.102 490.5 DL 141.102 479.5 141.102 489.5 DL +130.104 479.5 125.104 479.5 DL 131.102 479.5 126.102 479.5 DL 136.102 +479.5 131.102 479.5 DL 141.102 479.5 136.102 479.5 DL F0(;)131.713 488 Q +F1(P)8.275 E 151.656 480.5 151.656 490.5 DL 151.656 479.5 151.656 489.5 +DL F2(s)146.878 491 Q 167.654 480.5 167.654 490.5 DL 156.656 490.5 +151.656 490.5 DL 157.654 490.5 152.654 490.5 DL 162.654 490.5 157.654 +490.5 DL 167.654 490.5 162.654 490.5 DL 167.654 479.5 167.654 489.5 DL +156.656 479.5 151.656 479.5 DL 157.654 479.5 152.654 479.5 DL 162.654 +479.5 157.654 479.5 DL 167.654 479.5 162.654 479.5 DL F0 18.955(tW) +158.265 488 S(indo)-19.355 E 2.627(wm)-.25 G .127(anipulation \(from) +-2.627 F F1(dtterm)2.627 E F0 2.627(,a)C 2.627(sw)-2.627 G .127 +(ell as e)-2.627 F 2.627(xtensions\). V)-.15 F .127(alid v)-1.11 F .127 +(alues for the \214rst \(and)-.25 F(an)180 504 Q 2.5(ya)-.15 G +(dditional parameters\) are:)-2.5 E F1(P)185 520 Q F2(s)-2 3 M 202.862 +512.5 202.862 522.5 DL 202.862 511.5 202.862 521.5 DL 218.86 512.5 +218.86 522.5 DL 207.862 522.5 202.862 522.5 DL 208.86 522.5 203.86 522.5 +DL 213.86 522.5 208.86 522.5 DL 218.86 522.5 213.86 522.5 DL 218.86 +511.5 218.86 521.5 DL 207.862 511.5 202.862 511.5 DL 208.86 511.5 203.86 +511.5 DL 213.86 511.5 208.86 511.5 DL 218.86 511.5 213.86 511.5 DL F0 +7.999(=1)194.722 520 S F3<ae>1.666 E F0(De-iconify windo)2.5 E -.65(w.) +-.25 G F1(P)185 536 Q F2(s)-2 3 M 202.862 528.5 202.862 538.5 DL 202.862 +527.5 202.862 537.5 DL 218.86 528.5 218.86 538.5 DL 207.862 538.5 +202.862 538.5 DL 208.86 538.5 203.86 538.5 DL 213.86 538.5 208.86 538.5 +DL 218.86 538.5 213.86 538.5 DL 218.86 527.5 218.86 537.5 DL 207.862 +527.5 202.862 527.5 DL 208.86 527.5 203.86 527.5 DL 213.86 527.5 208.86 +527.5 DL 218.86 527.5 213.86 527.5 DL F0 7.999(=2)194.722 536 S F3<ae> +1.666 E F0(Iconify windo)2.5 E -.65(w.)-.25 G F1(P)185 552 Q F2(s)-2 3 M +202.862 544.5 202.862 554.5 DL 202.862 543.5 202.862 553.5 DL 218.86 +544.5 218.86 554.5 DL 207.862 554.5 202.862 554.5 DL 208.86 554.5 203.86 +554.5 DL 213.86 554.5 208.86 554.5 DL 218.86 554.5 213.86 554.5 DL +218.86 543.5 218.86 553.5 DL 207.862 543.5 202.862 543.5 DL 208.86 543.5 +203.86 543.5 DL 213.86 543.5 208.86 543.5 DL 218.86 543.5 213.86 543.5 +DL F0 -8.833 7.999(=3 ;)194.722 552 T F1 2.5(x;y)-5.499 G F3<ae>A F0(Mo) +2.5 E .3 -.15(ve w)-.15 H(indo).15 E 2.5(wt)-.25 G 2.5(o[)-2.5 G(x, y].) +-2.5 E F1(P)185 568 Q F2(s)-2 3 M 202.862 560.5 202.862 570.5 DL 202.862 +559.5 202.862 569.5 DL 218.86 560.5 218.86 570.5 DL 207.862 570.5 +202.862 570.5 DL 208.86 570.5 203.86 570.5 DL 213.86 570.5 208.86 570.5 +DL 218.86 570.5 213.86 570.5 DL 218.86 559.5 218.86 569.5 DL 207.862 +559.5 202.862 559.5 DL 208.86 559.5 203.86 559.5 DL 213.86 559.5 208.86 +559.5 DL 218.86 559.5 213.86 559.5 DL F0 -8.833 7.999(=4 ;)194.722 568 T +F1(height ; width)-5.499 E F3<ae>2.5 E F0(Resize the)2.5 E F1(xterm)2.5 +E F0(windo)2.5 E 2.5(wt)-.25 G 2.5(oh)-2.5 G(eight and width in pix)-2.5 +E(els.)-.15 E F1(P)185 584 Q F2(s)-2 3 M 202.862 576.5 202.862 586.5 DL +202.862 575.5 202.862 585.5 DL 218.86 576.5 218.86 586.5 DL 207.862 +586.5 202.862 586.5 DL 208.86 586.5 203.86 586.5 DL 213.86 586.5 208.86 +586.5 DL 218.86 586.5 213.86 586.5 DL 218.86 575.5 218.86 585.5 DL +207.862 575.5 202.862 575.5 DL 208.86 575.5 203.86 575.5 DL 213.86 575.5 +208.86 575.5 DL 218.86 575.5 213.86 575.5 DL F0 7.999(=5)194.722 584 S +F3<ae>1.666 E F0(Raise the)2.5 E F1(xterm)2.5 E F0(windo)2.5 E 2.5(wt) +-.25 G 2.5(ot)-2.5 G(he front of the stacking order)-2.5 E(.)-.55 E F1 +(P)185 600 Q F2(s)-2 3 M 202.862 592.5 202.862 602.5 DL 202.862 591.5 +202.862 601.5 DL 218.86 592.5 218.86 602.5 DL 207.862 602.5 202.862 +602.5 DL 208.86 602.5 203.86 602.5 DL 213.86 602.5 208.86 602.5 DL +218.86 602.5 213.86 602.5 DL 218.86 591.5 218.86 601.5 DL 207.862 591.5 +202.862 591.5 DL 208.86 591.5 203.86 591.5 DL 213.86 591.5 208.86 591.5 +DL 218.86 591.5 213.86 591.5 DL F0 7.999(=6)194.722 600 S F3<ae>1.666 E +F0(Lo)2.5 E(wer the)-.25 E F1(xterm)2.5 E F0(windo)2.5 E 2.5(wt)-.25 G +2.5(ot)-2.5 G(he bottom of the stacking order)-2.5 E(.)-.55 E F1(P)185 +616 Q F2(s)-2 3 M 202.862 608.5 202.862 618.5 DL 202.862 607.5 202.862 +617.5 DL 218.86 608.5 218.86 618.5 DL 207.862 618.5 202.862 618.5 DL +208.86 618.5 203.86 618.5 DL 213.86 618.5 208.86 618.5 DL 218.86 618.5 +213.86 618.5 DL 218.86 607.5 218.86 617.5 DL 207.862 607.5 202.862 607.5 +DL 208.86 607.5 203.86 607.5 DL 213.86 607.5 208.86 607.5 DL 218.86 +607.5 213.86 607.5 DL F0 7.999(=7)194.722 616 S F3<ae>1.666 E F0 +(Refresh the)2.5 E F1(xterm)2.5 E F0(windo)2.5 E -.65(w.)-.25 G F1(P)185 +632 Q F2(s)-2 3 M 202.862 624.5 202.862 634.5 DL 202.862 623.5 202.862 +633.5 DL 218.86 624.5 218.86 634.5 DL 207.862 634.5 202.862 634.5 DL +208.86 634.5 203.86 634.5 DL 213.86 634.5 208.86 634.5 DL 218.86 634.5 +213.86 634.5 DL 218.86 623.5 218.86 633.5 DL 207.862 623.5 202.862 623.5 +DL 208.86 623.5 203.86 623.5 DL 213.86 623.5 208.86 623.5 DL 218.86 +623.5 213.86 623.5 DL F0 -8.833 7.999(=8 ;)194.722 632 T F1 +(height ; width)-5.499 E F3<ae>2.5 E F0(Resize the te)2.5 E +(xt area to [height;width] in characters.)-.15 E F1(P)185 648 Q F2(s)-2 +3 M 202.862 640.5 202.862 650.5 DL 202.862 639.5 202.862 649.5 DL 218.86 +640.5 218.86 650.5 DL 207.862 650.5 202.862 650.5 DL 208.86 650.5 203.86 +650.5 DL 213.86 650.5 208.86 650.5 DL 218.86 650.5 213.86 650.5 DL +218.86 639.5 218.86 649.5 DL 207.862 639.5 202.862 639.5 DL 208.86 639.5 +203.86 639.5 DL 213.86 639.5 208.86 639.5 DL 218.86 639.5 213.86 639.5 +DL 228.306 640.5 228.306 650.5 DL 228.306 639.5 228.306 649.5 DL 244.304 +640.5 244.304 650.5 DL 233.306 650.5 228.306 650.5 DL 234.304 650.5 +229.304 650.5 DL 239.304 650.5 234.304 650.5 DL 244.304 650.5 239.304 +650.5 DL 244.304 639.5 244.304 649.5 DL 233.306 639.5 228.306 639.5 DL +234.304 639.5 229.304 639.5 DL 239.304 639.5 234.304 639.5 DL 244.304 +639.5 239.304 639.5 DL F0 -8.833 7.999(=9 ;0)194.722 648 T F3<ae>1.666 E +F0(Restore maximized windo)2.5 E -.65(w.)-.25 G F1(P)185 664 Q F2(s)-2 3 +M 202.862 656.5 202.862 666.5 DL 202.862 655.5 202.862 665.5 DL 218.86 +656.5 218.86 666.5 DL 207.862 666.5 202.862 666.5 DL 208.86 666.5 203.86 +666.5 DL 213.86 666.5 208.86 666.5 DL 218.86 666.5 213.86 666.5 DL +218.86 655.5 218.86 665.5 DL 207.862 655.5 202.862 655.5 DL 208.86 655.5 +203.86 655.5 DL 213.86 655.5 208.86 655.5 DL 218.86 655.5 213.86 655.5 +DL 228.306 656.5 228.306 666.5 DL 228.306 655.5 228.306 665.5 DL 244.304 +656.5 244.304 666.5 DL 233.306 666.5 228.306 666.5 DL 234.304 666.5 +229.304 666.5 DL 239.304 666.5 234.304 666.5 DL 244.304 666.5 239.304 +666.5 DL 244.304 655.5 244.304 665.5 DL 233.306 655.5 228.306 655.5 DL +234.304 655.5 229.304 655.5 DL 239.304 655.5 234.304 655.5 DL 244.304 +655.5 239.304 655.5 DL F0 -8.833 7.999(=9 ;1)194.722 664 T F3<ae>1.666 E +F0(Maximize windo)2.5 E 2.5(w\()-.25 G(i.e., resize to screen size\).) +-2.5 E F1(P)185 680 Q F2(s)-2 3 M 204.566 672.5 204.566 682.5 DL 204.566 +671.5 204.566 681.5 DL 220.564 672.5 220.564 682.5 DL 209.566 682.5 +204.566 682.5 DL 210.564 682.5 205.564 682.5 DL 215.564 682.5 210.564 +682.5 DL 220.564 682.5 215.564 682.5 DL 220.564 671.5 220.564 681.5 DL +209.566 671.5 204.566 671.5 DL 210.564 671.5 205.564 671.5 DL 215.564 +671.5 210.564 671.5 DL 220.564 671.5 215.564 671.5 DL 222.23 672.5 +222.23 682.5 DL 222.23 671.5 222.23 681.5 DL 238.228 672.5 238.228 682.5 +DL 227.23 682.5 222.23 682.5 DL 228.228 682.5 223.228 682.5 DL 233.228 +682.5 228.228 682.5 DL 238.228 682.5 233.228 682.5 DL 238.228 671.5 +238.228 681.5 DL 227.23 671.5 222.23 671.5 DL 228.228 671.5 223.228 +671.5 DL 233.228 671.5 228.228 671.5 DL 238.228 671.5 233.228 671.5 DL +F0 -7.538 8.851(=1 1)195.574 680 T F3<ae>1.666 E F0(Report)3.352 E F1 +(xterm)3.352 E F0(windo)3.352 E 3.352(ws)-.25 G 3.352(tate. If)-3.352 F +(the)3.352 E F1(xterm)3.352 E F0(windo)3.352 E 3.352(wi)-.25 G 3.353(so) +-3.352 G .853(pen \(non-iconi-)-3.353 F 241.66 688.5 241.66 698.5 DL +241.66 687.5 241.66 697.5 DL(\214ed\), it returns)180 696 Q 257.658 +688.5 257.658 698.5 DL 246.66 698.5 241.66 698.5 DL 247.658 698.5 +242.658 698.5 DL 252.658 698.5 247.658 698.5 DL 257.658 698.5 252.658 +698.5 DL 257.658 687.5 257.658 697.5 DL 246.66 687.5 241.66 687.5 DL +247.658 687.5 242.658 687.5 DL 252.658 687.5 247.658 687.5 DL 257.658 +687.5 252.658 687.5 DL 259.324 688.5 259.324 698.5 DL 259.324 687.5 +259.324 697.5 DL F4(CSI)244.991 695 Q 275.322 688.5 275.322 698.5 DL +264.324 698.5 259.324 698.5 DL 265.322 698.5 260.322 698.5 DL 270.322 +698.5 265.322 698.5 DL 275.322 698.5 270.322 698.5 DL 275.322 687.5 +275.322 697.5 DL 264.324 687.5 259.324 687.5 DL 265.322 687.5 260.322 +687.5 DL 270.322 687.5 265.322 687.5 DL 275.322 687.5 270.322 687.5 DL +276.988 688.5 276.988 698.5 DL 276.988 687.5 276.988 697.5 DL 292.986 +688.5 292.986 698.5 DL 281.988 698.5 276.988 698.5 DL 282.986 698.5 +277.986 698.5 DL 287.986 698.5 282.986 698.5 DL 292.986 698.5 287.986 +698.5 DL 292.986 687.5 292.986 697.5 DL 281.988 687.5 276.988 687.5 DL +282.986 687.5 277.986 687.5 DL 287.986 687.5 282.986 687.5 DL 292.986 +687.5 287.986 687.5 DL F0 13.774(1t)264.823 696 S 5(.I)-5.499 G 2.5(ft) +-5 G(he)-2.5 E F1(xterm)2.5 E F0(windo)2.5 E 2.5(wi)-.25 G 2.5(si)-2.5 G +473.272 688.5 473.272 698.5 DL 473.272 687.5 473.272 697.5 DL +(coni\214ed, it returns)397.722 696 Q 489.27 688.5 489.27 698.5 DL +478.272 698.5 473.272 698.5 DL 479.27 698.5 474.27 698.5 DL 484.27 698.5 +479.27 698.5 DL 489.27 698.5 484.27 698.5 DL 489.27 687.5 489.27 697.5 +DL 478.272 687.5 473.272 687.5 DL 479.27 687.5 474.27 687.5 DL 484.27 +687.5 479.27 687.5 DL 489.27 687.5 484.27 687.5 DL 490.936 688.5 490.936 +698.5 DL 490.936 687.5 490.936 697.5 DL F4(CSI)476.603 695 Q 506.934 +688.5 506.934 698.5 DL 495.936 698.5 490.936 698.5 DL 496.934 698.5 +491.934 698.5 DL 501.934 698.5 496.934 698.5 DL 506.934 698.5 501.934 +698.5 DL 506.934 687.5 506.934 697.5 DL 495.936 687.5 490.936 687.5 DL +496.934 687.5 491.934 687.5 DL 501.934 687.5 496.934 687.5 DL 506.934 +687.5 501.934 687.5 DL 508.6 688.5 508.6 698.5 DL 508.6 687.5 508.6 +697.5 DL 524.598 688.5 524.598 698.5 DL 513.6 698.5 508.6 698.5 DL +514.598 698.5 509.598 698.5 DL 519.598 698.5 514.598 698.5 DL 524.598 +698.5 519.598 698.5 DL 524.598 687.5 524.598 697.5 DL 513.6 687.5 508.6 +687.5 DL 514.598 687.5 509.598 687.5 DL 519.598 687.5 514.598 687.5 DL +524.598 687.5 519.598 687.5 DL F0 13.774(2t)496.435 696 S(.)-5.499 E F1 +(P)185 712 Q F2(s)-2 3 M 202.862 704.5 202.862 714.5 DL 202.862 703.5 +202.862 713.5 DL 218.86 704.5 218.86 714.5 DL 207.862 714.5 202.862 +714.5 DL 208.86 714.5 203.86 714.5 DL 213.86 714.5 208.86 714.5 DL +218.86 714.5 213.86 714.5 DL 218.86 703.5 218.86 713.5 DL 207.862 703.5 +202.862 703.5 DL 208.86 703.5 203.86 703.5 DL 213.86 703.5 208.86 703.5 +DL 218.86 703.5 213.86 703.5 DL 220.526 704.5 220.526 714.5 DL 220.526 +703.5 220.526 713.5 DL 236.524 704.5 236.524 714.5 DL 225.526 714.5 +220.526 714.5 DL 226.524 714.5 221.524 714.5 DL 231.524 714.5 226.524 +714.5 DL 236.524 714.5 231.524 714.5 DL 236.524 703.5 236.524 713.5 DL +225.526 703.5 220.526 703.5 DL 226.524 703.5 221.524 703.5 DL 231.524 +703.5 226.524 703.5 DL 236.524 703.5 231.524 703.5 DL F0 -5.834 7.999 +(=1 3)194.722 712 T F3<ae>1.666 E F0(Report)2.5 E F1(xterm)2.5 E F0 +(windo)2.5 E 2.5(wp)-.25 G 388.08 704.5 388.08 714.5 DL 388.08 703.5 +388.08 713.5 DL(osition as)347.52 712 Q 404.078 704.5 404.078 714.5 DL +393.08 714.5 388.08 714.5 DL 394.078 714.5 389.078 714.5 DL 399.078 +714.5 394.078 714.5 DL 404.078 714.5 399.078 714.5 DL 404.078 703.5 +404.078 713.5 DL 393.08 703.5 388.08 703.5 DL 394.078 703.5 389.078 +703.5 DL 399.078 703.5 394.078 703.5 DL 404.078 703.5 399.078 703.5 DL +405.744 704.5 405.744 714.5 DL 405.744 703.5 405.744 713.5 DL F4(CSI) +391.411 711 Q 421.742 704.5 421.742 714.5 DL 410.744 714.5 405.744 714.5 +DL 411.742 714.5 406.742 714.5 DL 416.742 714.5 411.742 714.5 DL 421.742 +714.5 416.742 714.5 DL 421.742 703.5 421.742 713.5 DL 410.744 703.5 +405.744 703.5 DL 411.742 703.5 406.742 703.5 DL 416.742 703.5 411.742 +703.5 DL 421.742 703.5 416.742 703.5 DL 423.408 704.5 423.408 714.5 DL +423.408 703.5 423.408 713.5 DL 439.406 704.5 439.406 714.5 DL 428.408 +714.5 423.408 714.5 DL 429.406 714.5 424.406 714.5 DL 434.406 714.5 +429.406 714.5 DL 439.406 714.5 434.406 714.5 DL 439.406 703.5 439.406 +713.5 DL 428.408 703.5 423.408 703.5 DL 429.406 703.5 424.406 703.5 DL +434.406 703.5 429.406 703.5 DL 439.406 703.5 434.406 703.5 DL F0 13.774 +(3;)411.243 712 S 445.512 704.5 445.512 714.5 DL 445.512 703.5 445.512 +713.5 DL F1(x)441.072 712 Q 461.51 704.5 461.51 714.5 DL 450.512 714.5 +445.512 714.5 DL 451.51 714.5 446.51 714.5 DL 456.51 714.5 451.51 714.5 +DL 461.51 714.5 456.51 714.5 DL 461.51 703.5 461.51 713.5 DL 450.512 +703.5 445.512 703.5 DL 451.51 703.5 446.51 703.5 DL 456.51 703.5 451.51 +703.5 DL 461.51 703.5 456.51 703.5 DL F0(;)452.121 712 Q 467.616 704.5 +467.616 714.5 DL 467.616 703.5 467.616 713.5 DL F1(y)463.176 712 Q +483.614 704.5 483.614 714.5 DL 472.616 714.5 467.616 714.5 DL 473.614 +714.5 468.614 714.5 DL 478.614 714.5 473.614 714.5 DL 483.614 714.5 +478.614 714.5 DL 483.614 703.5 483.614 713.5 DL 472.616 703.5 467.616 +703.5 DL 473.614 703.5 468.614 703.5 DL 478.614 703.5 473.614 703.5 DL +483.614 703.5 478.614 703.5 DL F0(t)474.225 712 Q F1(P)185 728 Q F2(s)-2 +3 M 202.862 720.5 202.862 730.5 DL 202.862 719.5 202.862 729.5 DL 218.86 +720.5 218.86 730.5 DL 207.862 730.5 202.862 730.5 DL 208.86 730.5 203.86 +730.5 DL 213.86 730.5 208.86 730.5 DL 218.86 730.5 213.86 730.5 DL +218.86 719.5 218.86 729.5 DL 207.862 719.5 202.862 719.5 DL 208.86 719.5 +203.86 719.5 DL 213.86 719.5 208.86 719.5 DL 218.86 719.5 213.86 719.5 +DL 220.526 720.5 220.526 730.5 DL 220.526 719.5 220.526 729.5 DL 236.524 +720.5 236.524 730.5 DL 225.526 730.5 220.526 730.5 DL 226.524 730.5 +221.524 730.5 DL 231.524 730.5 226.524 730.5 DL 236.524 730.5 231.524 +730.5 DL 236.524 719.5 236.524 729.5 DL 225.526 719.5 220.526 719.5 DL +226.524 719.5 221.524 719.5 DL 231.524 719.5 226.524 719.5 DL 236.524 +719.5 231.524 719.5 DL F0 -5.834 7.999(=1 4)194.722 728 T F3<ae>1.666 E +F0(Report)2.5 E F1(xterm)2.5 E F0(windo)2.5 E 2.5(wi)-.25 G 2.5(np)-2.5 +G(ix)-2.5 E 389.87 720.5 389.87 730.5 DL 389.87 719.5 389.87 729.5 DL +(els as)365.43 728 Q 405.868 720.5 405.868 730.5 DL 394.87 730.5 389.87 +730.5 DL 395.868 730.5 390.868 730.5 DL 400.868 730.5 395.868 730.5 DL +405.868 730.5 400.868 730.5 DL 405.868 719.5 405.868 729.5 DL 394.87 +719.5 389.87 719.5 DL 395.868 719.5 390.868 719.5 DL 400.868 719.5 +395.868 719.5 DL 405.868 719.5 400.868 719.5 DL 409.2 720.5 409.2 730.5 +DL 409.2 719.5 409.2 729.5 DL F4(CSI)393.201 727 Q 425.198 720.5 425.198 +730.5 DL 414.2 730.5 409.2 730.5 DL 415.198 730.5 410.198 730.5 DL +420.198 730.5 415.198 730.5 DL 425.198 730.5 420.198 730.5 DL 425.198 +719.5 425.198 729.5 DL 414.2 719.5 409.2 719.5 DL 415.198 719.5 410.198 +719.5 DL 420.198 719.5 415.198 719.5 DL 425.198 719.5 420.198 719.5 DL +428.53 720.5 428.53 730.5 DL 428.53 719.5 428.53 729.5 DL 444.528 720.5 +444.528 730.5 DL 433.53 730.5 428.53 730.5 DL 434.528 730.5 429.528 +730.5 DL 439.528 730.5 434.528 730.5 DL 444.528 730.5 439.528 730.5 DL +444.528 719.5 444.528 729.5 DL 433.53 719.5 428.53 719.5 DL 434.528 +719.5 429.528 719.5 DL 439.528 719.5 434.528 719.5 DL 444.528 719.5 +439.528 719.5 DL F0 15.44(4;)414.699 728 S 474.526 720.5 474.526 730.5 +DL 474.526 719.5 474.526 729.5 DL F1(height)447.86 728 Q 490.524 720.5 +490.524 730.5 DL 479.526 730.5 474.526 730.5 DL 480.524 730.5 475.524 +730.5 DL 485.524 730.5 480.524 730.5 DL 490.524 730.5 485.524 730.5 DL +490.524 719.5 490.524 729.5 DL 479.526 719.5 474.526 719.5 DL 480.524 +719.5 475.524 719.5 DL 485.524 719.5 480.524 719.5 DL 490.524 719.5 +485.524 719.5 DL F0(;)481.135 728 Q 517.752 720.5 517.752 730.5 DL +517.752 719.5 517.752 729.5 DL F1(width)493.856 728 Q 533.75 720.5 +533.75 730.5 DL 522.752 730.5 517.752 730.5 DL 523.75 730.5 518.75 730.5 +DL 528.75 730.5 523.75 730.5 DL 533.75 730.5 528.75 730.5 DL 533.75 +719.5 533.75 729.5 DL 522.752 719.5 517.752 719.5 DL 523.75 719.5 518.75 +719.5 DL 528.75 719.5 523.75 719.5 DL 533.75 719.5 528.75 719.5 DL F0(t) +524.361 728 Q(11)301 772 Q EP +%%Page: 12 12 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E/F1 10/Times-Italic@0 SF(P)185 88 Q/F2 8/Times-Italic@0 SF(s)-2 +3 M .4 LW 218.364 80.5 218.364 90.5 DL 218.364 79.5 218.364 89.5 DL +234.362 80.5 234.362 90.5 DL 223.364 90.5 218.364 90.5 DL 224.362 90.5 +219.362 90.5 DL 229.362 90.5 224.362 90.5 DL 234.362 90.5 229.362 90.5 +DL 234.362 79.5 234.362 89.5 DL 223.364 79.5 218.364 79.5 DL 224.362 +79.5 219.362 79.5 DL 229.362 79.5 224.362 79.5 DL 234.362 79.5 229.362 +79.5 DL 236.028 80.5 236.028 90.5 DL 236.028 79.5 236.028 89.5 DL F0 +15.75(=1)202.473 88 S 252.026 80.5 252.026 90.5 DL 241.028 90.5 236.028 +90.5 DL 242.026 90.5 237.026 90.5 DL 247.026 90.5 242.026 90.5 DL +252.026 90.5 247.026 90.5 DL 252.026 79.5 252.026 89.5 DL 241.028 79.5 +236.028 79.5 DL 242.026 79.5 237.026 79.5 DL 247.026 79.5 242.026 79.5 +DL 252.026 79.5 247.026 79.5 DL(8)241.527 88 Q/F3 10/Symbol SF<ae>17.416 +E F0 7.751(Report the size of the te)10.251 F 7.75 +(xt area in characters as)-.15 F 180 96.5 180 106.5 DL 180 95.5 180 +105.5 DL 195.998 96.5 195.998 106.5 DL 185 106.5 180 106.5 DL 185.998 +106.5 180.998 106.5 DL 190.998 106.5 185.998 106.5 DL 195.998 106.5 +190.998 106.5 DL 195.998 95.5 195.998 105.5 DL 185 95.5 180 95.5 DL +185.998 95.5 180.998 95.5 DL 190.998 95.5 185.998 95.5 DL 195.998 95.5 +190.998 95.5 DL 199.33 96.5 199.33 106.5 DL 199.33 95.5 199.33 105.5 DL +/F4 6/Times-Roman@0 SF(CSI)183.331 103 Q 215.328 96.5 215.328 106.5 DL +204.33 106.5 199.33 106.5 DL 205.328 106.5 200.328 106.5 DL 210.328 +106.5 205.328 106.5 DL 215.328 106.5 210.328 106.5 DL 215.328 95.5 +215.328 105.5 DL 204.33 95.5 199.33 95.5 DL 205.328 95.5 200.328 95.5 DL +210.328 95.5 205.328 95.5 DL 215.328 95.5 210.328 95.5 DL 218.66 96.5 +218.66 106.5 DL 218.66 95.5 218.66 105.5 DL 234.658 96.5 234.658 106.5 +DL 223.66 106.5 218.66 106.5 DL 224.658 106.5 219.658 106.5 DL 229.658 +106.5 224.658 106.5 DL 234.658 106.5 229.658 106.5 DL 234.658 95.5 +234.658 105.5 DL 223.66 95.5 218.66 95.5 DL 224.658 95.5 219.658 95.5 DL +229.658 95.5 224.658 95.5 DL 234.658 95.5 229.658 95.5 DL F0 15.44(8;) +204.829 104 S 264.656 96.5 264.656 106.5 DL 264.656 95.5 264.656 105.5 +DL F1(height)237.99 104 Q 280.654 96.5 280.654 106.5 DL 269.656 106.5 +264.656 106.5 DL 270.654 106.5 265.654 106.5 DL 275.654 106.5 270.654 +106.5 DL 280.654 106.5 275.654 106.5 DL 280.654 95.5 280.654 105.5 DL +269.656 95.5 264.656 95.5 DL 270.654 95.5 265.654 95.5 DL 275.654 95.5 +270.654 95.5 DL 280.654 95.5 275.654 95.5 DL F0(;)271.265 104 Q 307.882 +96.5 307.882 106.5 DL 307.882 95.5 307.882 105.5 DL F1(width)283.986 104 +Q 323.88 96.5 323.88 106.5 DL 312.882 106.5 307.882 106.5 DL 313.88 +106.5 308.88 106.5 DL 318.88 106.5 313.88 106.5 DL 323.88 106.5 318.88 +106.5 DL 323.88 95.5 323.88 105.5 DL 312.882 95.5 307.882 95.5 DL 313.88 +95.5 308.88 95.5 DL 318.88 95.5 313.88 95.5 DL 323.88 95.5 318.88 95.5 +DL F0(t)314.491 104 Q F1(P)185 120 Q F2(s)-2 3 M 221.064 112.5 221.064 +122.5 DL 221.064 111.5 221.064 121.5 DL 237.062 112.5 237.062 122.5 DL +226.064 122.5 221.064 122.5 DL 227.062 122.5 222.062 122.5 DL 232.062 +122.5 227.062 122.5 DL 237.062 122.5 232.062 122.5 DL 237.062 111.5 +237.062 121.5 DL 226.064 111.5 221.064 111.5 DL 227.062 111.5 222.062 +111.5 DL 232.062 111.5 227.062 111.5 DL 237.062 111.5 232.062 111.5 DL +238.728 112.5 238.728 122.5 DL 238.728 111.5 238.728 121.5 DL F0 17.1 +(=1)203.823 120 S 254.726 112.5 254.726 122.5 DL 243.728 122.5 238.728 +122.5 DL 244.726 122.5 239.726 122.5 DL 249.726 122.5 244.726 122.5 DL +254.726 122.5 249.726 122.5 DL 254.726 111.5 254.726 121.5 DL 243.728 +111.5 238.728 111.5 DL 244.726 111.5 239.726 111.5 DL 249.726 111.5 +244.726 111.5 DL 254.726 111.5 249.726 111.5 DL(9)244.227 120 Q F3<ae> +18.766 E F0 9.102(Report the size of the screen in characters as)11.601 +F 180 128.5 180 138.5 DL 180 127.5 180 137.5 DL 195.998 128.5 195.998 +138.5 DL 185 138.5 180 138.5 DL 185.998 138.5 180.998 138.5 DL 190.998 +138.5 185.998 138.5 DL 195.998 138.5 190.998 138.5 DL 195.998 127.5 +195.998 137.5 DL 185 127.5 180 127.5 DL 185.998 127.5 180.998 127.5 DL +190.998 127.5 185.998 127.5 DL 195.998 127.5 190.998 127.5 DL 199.33 +128.5 199.33 138.5 DL 199.33 127.5 199.33 137.5 DL F4(CSI)183.331 135 Q +215.328 128.5 215.328 138.5 DL 204.33 138.5 199.33 138.5 DL 205.328 +138.5 200.328 138.5 DL 210.328 138.5 205.328 138.5 DL 215.328 138.5 +210.328 138.5 DL 215.328 127.5 215.328 137.5 DL 204.33 127.5 199.33 +127.5 DL 205.328 127.5 200.328 127.5 DL 210.328 127.5 205.328 127.5 DL +215.328 127.5 210.328 127.5 DL 218.66 128.5 218.66 138.5 DL 218.66 127.5 +218.66 137.5 DL 234.658 128.5 234.658 138.5 DL 223.66 138.5 218.66 138.5 +DL 224.658 138.5 219.658 138.5 DL 229.658 138.5 224.658 138.5 DL 234.658 +138.5 229.658 138.5 DL 234.658 127.5 234.658 137.5 DL 223.66 127.5 +218.66 127.5 DL 224.658 127.5 219.658 127.5 DL 229.658 127.5 224.658 +127.5 DL 234.658 127.5 229.658 127.5 DL F0 15.44(9;)204.829 136 S +264.656 128.5 264.656 138.5 DL 264.656 127.5 264.656 137.5 DL F1(height) +237.99 136 Q 280.654 128.5 280.654 138.5 DL 269.656 138.5 264.656 138.5 +DL 270.654 138.5 265.654 138.5 DL 275.654 138.5 270.654 138.5 DL 280.654 +138.5 275.654 138.5 DL 280.654 127.5 280.654 137.5 DL 269.656 127.5 +264.656 127.5 DL 270.654 127.5 265.654 127.5 DL 275.654 127.5 270.654 +127.5 DL 280.654 127.5 275.654 127.5 DL F0(;)271.265 136 Q 307.882 128.5 +307.882 138.5 DL 307.882 127.5 307.882 137.5 DL F1(width)283.986 136 Q +323.88 128.5 323.88 138.5 DL 312.882 138.5 307.882 138.5 DL 313.88 138.5 +308.88 138.5 DL 318.88 138.5 313.88 138.5 DL 323.88 138.5 318.88 138.5 +DL 323.88 127.5 323.88 137.5 DL 312.882 127.5 307.882 127.5 DL 313.88 +127.5 308.88 127.5 DL 318.88 127.5 313.88 127.5 DL 323.88 127.5 318.88 +127.5 DL F0(t)314.491 136 Q F1(P)185 152 Q F2(s)-2 3 M 202.862 144.5 +202.862 154.5 DL 202.862 143.5 202.862 153.5 DL 218.86 144.5 218.86 +154.5 DL 207.862 154.5 202.862 154.5 DL 208.86 154.5 203.86 154.5 DL +213.86 154.5 208.86 154.5 DL 218.86 154.5 213.86 154.5 DL 218.86 143.5 +218.86 153.5 DL 207.862 143.5 202.862 143.5 DL 208.86 143.5 203.86 143.5 +DL 213.86 143.5 208.86 143.5 DL 218.86 143.5 213.86 143.5 DL 220.526 +144.5 220.526 154.5 DL 220.526 143.5 220.526 153.5 DL 236.524 144.5 +236.524 154.5 DL 225.526 154.5 220.526 154.5 DL 226.524 154.5 221.524 +154.5 DL 231.524 154.5 226.524 154.5 DL 236.524 154.5 231.524 154.5 DL +236.524 143.5 236.524 153.5 DL 225.526 143.5 220.526 143.5 DL 226.524 +143.5 221.524 143.5 DL 231.524 143.5 226.524 143.5 DL 236.524 143.5 +231.524 143.5 DL F0 -5.834 7.999(=2 0)194.722 152 T F3<ae>1.666 E F0 +(Report)2.5 E F1(xterm)2.5 E F0(windo)2.5 E(w')-.25 E 2.5(si)-.55 G +401.68 144.5 401.68 154.5 DL 401.68 143.5 401.68 153.5 DL(con label as) +351.97 152 Q 417.678 144.5 417.678 154.5 DL 406.68 154.5 401.68 154.5 DL +407.678 154.5 402.678 154.5 DL 412.678 154.5 407.678 154.5 DL 417.678 +154.5 412.678 154.5 DL 417.678 143.5 417.678 153.5 DL 406.68 143.5 +401.68 143.5 DL 407.678 143.5 402.678 143.5 DL 412.678 143.5 407.678 +143.5 DL 417.678 143.5 412.678 143.5 DL 421.01 144.5 421.01 154.5 DL +421.01 143.5 421.01 153.5 DL F4(OSC)403.844 151 Q 437.008 144.5 437.008 +154.5 DL 426.01 154.5 421.01 154.5 DL 427.008 154.5 422.008 154.5 DL +432.008 154.5 427.008 154.5 DL 437.008 154.5 432.008 154.5 DL 437.008 +143.5 437.008 153.5 DL 426.01 143.5 421.01 143.5 DL 427.008 143.5 +422.008 143.5 DL 432.008 143.5 427.008 143.5 DL 437.008 143.5 432.008 +143.5 DL F0(L)425.954 152 Q 462.006 144.5 462.006 154.5 DL 462.006 143.5 +462.006 153.5 DL F1(label)440.34 152 Q 478.004 144.5 478.004 154.5 DL +467.006 154.5 462.006 154.5 DL 468.004 154.5 463.004 154.5 DL 473.004 +154.5 468.004 154.5 DL 478.004 154.5 473.004 154.5 DL 478.004 143.5 +478.004 153.5 DL 467.006 143.5 462.006 143.5 DL 468.004 143.5 463.004 +143.5 DL 473.004 143.5 468.004 143.5 DL 478.004 143.5 473.004 143.5 DL +F4(ST)466.504 151 Q F1(P)185 168 Q F2(s)-2 3 M 202.862 160.5 202.862 +170.5 DL 202.862 159.5 202.862 169.5 DL 218.86 160.5 218.86 170.5 DL +207.862 170.5 202.862 170.5 DL 208.86 170.5 203.86 170.5 DL 213.86 170.5 +208.86 170.5 DL 218.86 170.5 213.86 170.5 DL 218.86 159.5 218.86 169.5 +DL 207.862 159.5 202.862 159.5 DL 208.86 159.5 203.86 159.5 DL 213.86 +159.5 208.86 159.5 DL 218.86 159.5 213.86 159.5 DL 220.526 160.5 220.526 +170.5 DL 220.526 159.5 220.526 169.5 DL 236.524 160.5 236.524 170.5 DL +225.526 170.5 220.526 170.5 DL 226.524 170.5 221.524 170.5 DL 231.524 +170.5 226.524 170.5 DL 236.524 170.5 231.524 170.5 DL 236.524 159.5 +236.524 169.5 DL 225.526 159.5 220.526 159.5 DL 226.524 159.5 221.524 +159.5 DL 231.524 159.5 226.524 159.5 DL 236.524 159.5 231.524 159.5 DL +F0 -5.834 7.999(=2 1)194.722 168 T F3<ae>1.666 E F0(Report)2.5 E F1 +(xterm)2.5 E F0(windo)2.5 E(w')-.25 E 2.5(st)-.55 G 378.08 160.5 378.08 +170.5 DL 378.08 159.5 378.08 169.5 DL(itle as)351.97 168 Q 394.078 160.5 +394.078 170.5 DL 383.08 170.5 378.08 170.5 DL 384.078 170.5 379.078 +170.5 DL 389.078 170.5 384.078 170.5 DL 394.078 170.5 389.078 170.5 DL +394.078 159.5 394.078 169.5 DL 383.08 159.5 378.08 159.5 DL 384.078 +159.5 379.078 159.5 DL 389.078 159.5 384.078 159.5 DL 394.078 159.5 +389.078 159.5 DL 397.41 160.5 397.41 170.5 DL 397.41 159.5 397.41 169.5 +DL F4(OSC)380.244 167 Q 413.408 160.5 413.408 170.5 DL 402.41 170.5 +397.41 170.5 DL 403.408 170.5 398.408 170.5 DL 408.408 170.5 403.408 +170.5 DL 413.408 170.5 408.408 170.5 DL 413.408 159.5 413.408 169.5 DL +402.41 159.5 397.41 159.5 DL 403.408 159.5 398.408 159.5 DL 408.408 +159.5 403.408 159.5 DL 413.408 159.5 408.408 159.5 DL F0(l)404.019 168 Q +433.966 160.5 433.966 170.5 DL 433.966 159.5 433.966 169.5 DL F1(title) +416.74 168 Q 449.964 160.5 449.964 170.5 DL 438.966 170.5 433.966 170.5 +DL 439.964 170.5 434.964 170.5 DL 444.964 170.5 439.964 170.5 DL 449.964 +170.5 444.964 170.5 DL 449.964 159.5 449.964 169.5 DL 438.966 159.5 +433.966 159.5 DL 439.964 159.5 434.964 159.5 DL 444.964 159.5 439.964 +159.5 DL 449.964 159.5 444.964 159.5 DL F4(ST)438.464 167 Q F1(P)185 184 +Q F2(s)-2 3 M 208.502 176.5 208.502 186.5 DL 208.502 175.5 208.502 185.5 +DL 224.5 176.5 224.5 186.5 DL 213.502 186.5 208.502 186.5 DL 214.5 186.5 +209.5 186.5 DL 219.5 186.5 214.5 186.5 DL 224.5 186.5 219.5 186.5 DL +224.5 175.5 224.5 185.5 DL 213.502 175.5 208.502 175.5 DL 214.5 175.5 +209.5 175.5 DL 219.5 175.5 214.5 175.5 DL 224.5 175.5 219.5 175.5 DL +226.166 176.5 226.166 186.5 DL 226.166 175.5 226.166 185.5 DL F0 5.499 +(>= 2)194.722 184 R 242.164 176.5 242.164 186.5 DL 231.166 186.5 226.166 +186.5 DL 232.164 186.5 227.164 186.5 DL 237.164 186.5 232.164 186.5 DL +242.164 186.5 237.164 186.5 DL 242.164 175.5 242.164 185.5 DL 231.166 +175.5 226.166 175.5 DL 232.164 175.5 227.164 175.5 DL 237.164 175.5 +232.164 175.5 DL 242.164 175.5 237.164 175.5 DL(4)231.665 184 Q F3<ae> +9.665 E F0(Resize to)2.5 E F1(P)2.5 E F2(s)-2 3 M F0(lines \(DECSLPP\)) +2.5 -3 M 72 192.5 72 202.5 DL 72 191.5 72 201.5 DL 87.998 192.5 87.998 +202.5 DL 77 202.5 72 202.5 DL 77.998 202.5 72.998 202.5 DL 82.998 202.5 +77.998 202.5 DL 87.998 202.5 82.998 202.5 DL 87.998 191.5 87.998 201.5 +DL 77 191.5 72 191.5 DL 77.998 191.5 72.998 191.5 DL 82.998 191.5 77.998 +191.5 DL 87.998 191.5 82.998 191.5 DL F4(CSI)75.331 199 Q F1(P)4.997 1 M +97.664 192.5 97.664 202.5 DL 97.664 191.5 97.664 201.5 DL F2(t)93.774 +203 Q 113.662 192.5 113.662 202.5 DL 102.664 202.5 97.664 202.5 DL +103.662 202.5 98.662 202.5 DL 108.662 202.5 103.662 202.5 DL 113.662 +202.5 108.662 202.5 DL 113.662 191.5 113.662 201.5 DL 102.664 191.5 +97.664 191.5 DL 103.662 191.5 98.662 191.5 DL 108.662 191.5 103.662 +191.5 DL 113.662 191.5 108.662 191.5 DL F0(;)104.273 200 Q F1(P)8.275 E +123.328 192.5 123.328 202.5 DL 123.328 191.5 123.328 201.5 DL F2(l) +119.438 203 Q 139.326 192.5 139.326 202.5 DL 128.328 202.5 123.328 202.5 +DL 129.326 202.5 124.326 202.5 DL 134.326 202.5 129.326 202.5 DL 139.326 +202.5 134.326 202.5 DL 139.326 191.5 139.326 201.5 DL 128.328 191.5 +123.328 191.5 DL 129.326 191.5 124.326 191.5 DL 134.326 191.5 129.326 +191.5 DL 139.326 191.5 134.326 191.5 DL F0(;)129.937 200 Q F1(P)8.275 E +150.768 192.5 150.768 202.5 DL 150.768 191.5 150.768 201.5 DL F2(b) +145.102 203 Q 166.766 192.5 166.766 202.5 DL 155.768 202.5 150.768 202.5 +DL 156.766 202.5 151.766 202.5 DL 161.766 202.5 156.766 202.5 DL 166.766 +202.5 161.766 202.5 DL 166.766 191.5 166.766 201.5 DL 155.768 191.5 +150.768 191.5 DL 156.766 191.5 151.766 191.5 DL 161.766 191.5 156.766 +191.5 DL 166.766 191.5 161.766 191.5 DL F0(;)157.377 200 Q F1(P)8.275 E +177.32 192.5 177.32 202.5 DL 177.32 191.5 177.32 201.5 DL F2(r)172.542 +203 Q 193.318 192.5 193.318 202.5 DL 182.32 202.5 177.32 202.5 DL +183.318 202.5 178.318 202.5 DL 188.318 202.5 183.318 202.5 DL 193.318 +202.5 188.318 202.5 DL 193.318 191.5 193.318 201.5 DL 182.32 191.5 +177.32 191.5 DL 183.318 191.5 178.318 191.5 DL 188.318 191.5 183.318 +191.5 DL 193.318 191.5 188.318 191.5 DL 194.984 192.5 194.984 202.5 DL +194.984 191.5 194.984 201.5 DL 210.982 192.5 210.982 202.5 DL 199.984 +202.5 194.984 202.5 DL 200.982 202.5 195.982 202.5 DL 205.982 202.5 +200.982 202.5 DL 210.982 202.5 205.982 202.5 DL 210.982 191.5 210.982 +201.5 DL 199.984 191.5 194.984 191.5 DL 200.982 191.5 195.982 191.5 DL +205.982 191.5 200.982 191.5 DL 210.982 191.5 205.982 191.5 DL F0 12.389 +<b477>183.654 200 S(Enable Filter Rectangle \(DECEFR\))180 216 Q -.15 +(Pa)180 232 S(rameters are [top;left;bottom;right].).15 E 2.256 +(De\214nes the coordinates of a \214lter rectangle and acti)180 248 R +-.25(va)-.25 G 2.255(tes it.).25 F(An)7.255 E 2.255 +(ytime the locator is)-.15 F 1.404 +(detected outside of the \214lter rectangle, an outside rectangle e)180 +264 R -.15(ve)-.25 G 1.405(nt is generated and the).15 F 2.137 +(rectangle is disabled.)180 280 R 2.136(Filter rectangles are al)7.137 F +-.1(wa)-.1 G 2.136(ys treated as "one-shot" e).1 F -.15(ve)-.25 G 4.636 +(nts. An).15 F(y)-.15 E .933(parameters that are omitted def)180 296 R +.933(ault to the current locator position.)-.1 F .933 +(If all parameters are)5.933 F .293(omitted, an)180 312 R 2.793(yl)-.15 +G .293(ocator motion will be reported.)-2.793 F .292(DECELR al)5.292 F +-.1(wa)-.1 G .292(ys cancels an).1 F 2.792(yp)-.15 G(re)-2.792 E -.2(vo) +-.25 G .292(us rect-).2 F(angle de\214nition.)180 328 Q 72 336.5 72 +346.5 DL 72 335.5 72 345.5 DL 87.998 336.5 87.998 346.5 DL 77 346.5 72 +346.5 DL 77.998 346.5 72.998 346.5 DL 82.998 346.5 77.998 346.5 DL +87.998 346.5 82.998 346.5 DL 87.998 335.5 87.998 345.5 DL 77 335.5 72 +335.5 DL 77.998 335.5 72.998 335.5 DL 82.998 335.5 77.998 335.5 DL +87.998 335.5 82.998 335.5 DL F4(CSI)75.331 343 Q F1(P)4.997 1 M 98.552 +336.5 98.552 346.5 DL 98.552 335.5 98.552 345.5 DL F2(s)93.774 347 Q +114.55 336.5 114.55 346.5 DL 103.552 346.5 98.552 346.5 DL 104.55 346.5 +99.55 346.5 DL 109.55 346.5 104.55 346.5 DL 114.55 346.5 109.55 346.5 DL +114.55 335.5 114.55 345.5 DL 103.552 335.5 98.552 335.5 DL 104.55 335.5 +99.55 335.5 DL 109.55 335.5 104.55 335.5 DL 114.55 335.5 109.55 335.5 DL +F0 70.949(xR)104.051 344 S(equest T)-70.949 E(erminal P)-.7 E +(arameters \(DECREQTP)-.15 E(ARM\))-.92 E 72 352.5 72 362.5 DL 72 351.5 +72 361.5 DL 87.998 352.5 87.998 362.5 DL 77 362.5 72 362.5 DL 77.998 +362.5 72.998 362.5 DL 82.998 362.5 77.998 362.5 DL 87.998 362.5 82.998 +362.5 DL 87.998 351.5 87.998 361.5 DL 77 351.5 72 351.5 DL 77.998 351.5 +72.998 351.5 DL 82.998 351.5 77.998 351.5 DL 87.998 351.5 82.998 351.5 +DL F4(CSI)75.331 359 Q F1(P)4.997 1 M 98.552 352.5 98.552 362.5 DL +98.552 351.5 98.552 361.5 DL F2(s)93.774 363 Q 114.55 352.5 114.55 362.5 +DL 103.552 362.5 98.552 362.5 DL 104.55 362.5 99.55 362.5 DL 109.55 +362.5 104.55 362.5 DL 114.55 362.5 109.55 362.5 DL 114.55 351.5 114.55 +361.5 DL 103.552 351.5 98.552 351.5 DL 104.55 351.5 99.55 351.5 DL +109.55 351.5 104.55 351.5 DL 114.55 351.5 109.55 351.5 DL F0(;)105.161 +360 Q F1(P)8.275 E 125.992 352.5 125.992 362.5 DL 125.992 351.5 125.992 +361.5 DL F2(u)120.326 363 Q 141.99 352.5 141.99 362.5 DL 130.992 362.5 +125.992 362.5 DL 131.99 362.5 126.99 362.5 DL 136.99 362.5 131.99 362.5 +DL 141.99 362.5 136.99 362.5 DL 141.99 351.5 141.99 361.5 DL 130.992 +351.5 125.992 351.5 DL 131.99 351.5 126.99 351.5 DL 136.99 351.5 131.99 +351.5 DL 141.99 351.5 136.99 351.5 DL 143.656 352.5 143.656 362.5 DL +143.656 351.5 143.656 361.5 DL 159.654 352.5 159.654 362.5 DL 148.656 +362.5 143.656 362.5 DL 149.654 362.5 144.654 362.5 DL 154.654 362.5 +149.654 362.5 DL 159.654 362.5 154.654 362.5 DL 159.654 351.5 159.654 +361.5 DL 148.656 351.5 143.656 351.5 DL 149.654 351.5 144.654 351.5 DL +154.654 351.5 149.654 351.5 DL 159.654 351.5 154.654 351.5 DL F0 -3.933 +13.779(\264z E)132.326 360 T(nable Locator Reporting \(DECELR\))-13.779 +E -1.11(Va)180 376 S(lid v)1.11 E(alues for the \214rst parameter:)-.25 +E F1(P)185 392 Q F2(s)-2 3 M 202.862 384.5 202.862 394.5 DL 202.862 +383.5 202.862 393.5 DL 218.86 384.5 218.86 394.5 DL 207.862 394.5 +202.862 394.5 DL 208.86 394.5 203.86 394.5 DL 213.86 394.5 208.86 394.5 +DL 218.86 394.5 213.86 394.5 DL 218.86 383.5 218.86 393.5 DL 207.862 +383.5 202.862 383.5 DL 208.86 383.5 203.86 383.5 DL 213.86 383.5 208.86 +383.5 DL 218.86 383.5 213.86 383.5 DL F0 7.999(=0)194.722 392 S F3<ae> +1.666 E F0(Locator disabled \(def)2.5 E(ault\))-.1 E F1(P)185 408 Q F2 +(s)-2 3 M 202.862 400.5 202.862 410.5 DL 202.862 399.5 202.862 409.5 DL +218.86 400.5 218.86 410.5 DL 207.862 410.5 202.862 410.5 DL 208.86 410.5 +203.86 410.5 DL 213.86 410.5 208.86 410.5 DL 218.86 410.5 213.86 410.5 +DL 218.86 399.5 218.86 409.5 DL 207.862 399.5 202.862 399.5 DL 208.86 +399.5 203.86 399.5 DL 213.86 399.5 208.86 399.5 DL 218.86 399.5 213.86 +399.5 DL F0 7.999(=1)194.722 408 S F3<ae>1.666 E F0(Locator enabled)2.5 +E F1(P)185 424 Q F2(s)-2 3 M 202.862 416.5 202.862 426.5 DL 202.862 +415.5 202.862 425.5 DL 218.86 416.5 218.86 426.5 DL 207.862 426.5 +202.862 426.5 DL 208.86 426.5 203.86 426.5 DL 213.86 426.5 208.86 426.5 +DL 218.86 426.5 213.86 426.5 DL 218.86 415.5 218.86 425.5 DL 207.862 +415.5 202.862 415.5 DL 208.86 415.5 203.86 415.5 DL 213.86 415.5 208.86 +415.5 DL 218.86 415.5 213.86 415.5 DL F0 7.999(=2)194.722 424 S F3<ae> +1.666 E F0(Locator enabled for one report, then disabled)2.5 E(The seco\ +nd parameter speci\214es the coordinate unit for locator reports.)180 +440 Q -1.11(Va)180 456 S(lid v)1.11 E(alues for the second parameter:) +-.25 E F1(P)185 472 Q F2(u)-2 3 M 203.75 464.5 203.75 474.5 DL 203.75 +463.5 203.75 473.5 DL 219.748 464.5 219.748 474.5 DL 208.75 474.5 203.75 +474.5 DL 209.748 474.5 204.748 474.5 DL 214.748 474.5 209.748 474.5 DL +219.748 474.5 214.748 474.5 DL 219.748 463.5 219.748 473.5 DL 208.75 +463.5 203.75 463.5 DL 209.748 463.5 204.748 463.5 DL 214.748 463.5 +209.748 463.5 DL 219.748 463.5 214.748 463.5 DL F0 -8.833 7.999(=0 o) +195.61 472 T 2.5(ro)-7.999 G(mitted)-2.5 E F3<ae>2.5 E F0(def)2.5 E +(ault to character cells)-.1 E F1(P)185 488 Q F2(u)-2 3 M 203.75 480.5 +203.75 490.5 DL 203.75 479.5 203.75 489.5 DL 219.748 480.5 219.748 490.5 +DL 208.75 490.5 203.75 490.5 DL 209.748 490.5 204.748 490.5 DL 214.748 +490.5 209.748 490.5 DL 219.748 490.5 214.748 490.5 DL 219.748 479.5 +219.748 489.5 DL 208.75 479.5 203.75 479.5 DL 209.748 479.5 204.748 +479.5 DL 214.748 479.5 209.748 479.5 DL 219.748 479.5 214.748 479.5 DL +F0 7.999(=1)195.61 488 S F3<ae>1.666 E F0(de)2.5 E(vice ph)-.25 E +(ysical pix)-.05 E(els)-.15 E F1(P)185 504 Q F2(u)-2 3 M 203.75 496.5 +203.75 506.5 DL 203.75 495.5 203.75 505.5 DL 219.748 496.5 219.748 506.5 +DL 208.75 506.5 203.75 506.5 DL 209.748 506.5 204.748 506.5 DL 214.748 +506.5 209.748 506.5 DL 219.748 506.5 214.748 506.5 DL 219.748 495.5 +219.748 505.5 DL 208.75 495.5 203.75 495.5 DL 209.748 495.5 204.748 +495.5 DL 214.748 495.5 209.748 495.5 DL 219.748 495.5 214.748 495.5 DL +F0 7.999(=2)195.61 504 S F3<ae>1.666 E F0(character cells)2.5 E 72 512.5 +72 522.5 DL 72 511.5 72 521.5 DL 87.998 512.5 87.998 522.5 DL 77 522.5 +72 522.5 DL 77.998 522.5 72.998 522.5 DL 82.998 522.5 77.998 522.5 DL +87.998 522.5 82.998 522.5 DL 87.998 511.5 87.998 521.5 DL 77 511.5 72 +511.5 DL 77.998 511.5 72.998 511.5 DL 82.998 511.5 77.998 511.5 DL +87.998 511.5 82.998 511.5 DL F4(CSI)75.331 519 Q F1(P)4.997 1 M 101.216 +512.5 101.216 522.5 DL 101.216 511.5 101.216 521.5 DL F2(m)93.774 523 Q +117.214 512.5 117.214 522.5 DL 106.216 522.5 101.216 522.5 DL 107.214 +522.5 102.214 522.5 DL 112.214 522.5 107.214 522.5 DL 117.214 522.5 +112.214 522.5 DL 117.214 511.5 117.214 521.5 DL 106.216 511.5 101.216 +511.5 DL 107.214 511.5 102.214 511.5 DL 112.214 511.5 107.214 511.5 DL +117.214 511.5 112.214 511.5 DL 118.88 512.5 118.88 522.5 DL 118.88 511.5 +118.88 521.5 DL 134.878 512.5 134.878 522.5 DL 123.88 522.5 118.88 522.5 +DL 124.878 522.5 119.878 522.5 DL 129.878 522.5 124.878 522.5 DL 134.878 +522.5 129.878 522.5 DL 134.878 511.5 134.878 521.5 DL 123.88 511.5 +118.88 511.5 DL 124.878 511.5 119.878 511.5 DL 129.878 511.5 124.878 +511.5 DL 134.878 511.5 129.878 511.5 DL F0 21.023 13.599(\264{ S)107.55 +520 T(elect Locator Ev)-13.599 E(ents \(DECSLE\))-.15 E -1.11(Va)180 536 +S(lid v)1.11 E(alues for the \214rst \(and an)-.25 E 2.5(ya)-.15 G +(dditional parameters\) are:)-2.5 E F1(P)185 552 Q F2(s)-2 3 M 202.862 +544.5 202.862 554.5 DL 202.862 543.5 202.862 553.5 DL 218.86 544.5 +218.86 554.5 DL 207.862 554.5 202.862 554.5 DL 208.86 554.5 203.86 554.5 +DL 213.86 554.5 208.86 554.5 DL 218.86 554.5 213.86 554.5 DL 218.86 +543.5 218.86 553.5 DL 207.862 543.5 202.862 543.5 DL 208.86 543.5 203.86 +543.5 DL 213.86 543.5 208.86 543.5 DL 218.86 543.5 213.86 543.5 DL F0 +7.999(=0)194.722 552 S F3<ae>1.666 E F0(only respond to e)2.5 E +(xplicit host requests \(DECRQLP\))-.15 E(\(def)212.5 568 Q +(ault\) also cancels an)-.1 E 2.5<798c>-.15 G(lter rectangle)-2.5 E F1 +(P)185 584 Q F2(s)-2 3 M 202.862 576.5 202.862 586.5 DL 202.862 575.5 +202.862 585.5 DL 218.86 576.5 218.86 586.5 DL 207.862 586.5 202.862 +586.5 DL 208.86 586.5 203.86 586.5 DL 213.86 586.5 208.86 586.5 DL +218.86 586.5 213.86 586.5 DL 218.86 575.5 218.86 585.5 DL 207.862 575.5 +202.862 575.5 DL 208.86 575.5 203.86 575.5 DL 213.86 575.5 208.86 575.5 +DL 218.86 575.5 213.86 575.5 DL F0 7.999(=1)194.722 584 S F3<ae>1.666 E +F0(report b)2.5 E(utton do)-.2 E(wn transitions)-.25 E F1(P)185 600 Q F2 +(s)-2 3 M 202.862 592.5 202.862 602.5 DL 202.862 591.5 202.862 601.5 DL +218.86 592.5 218.86 602.5 DL 207.862 602.5 202.862 602.5 DL 208.86 602.5 +203.86 602.5 DL 213.86 602.5 208.86 602.5 DL 218.86 602.5 213.86 602.5 +DL 218.86 591.5 218.86 601.5 DL 207.862 591.5 202.862 591.5 DL 208.86 +591.5 203.86 591.5 DL 213.86 591.5 208.86 591.5 DL 218.86 591.5 213.86 +591.5 DL F0 7.999(=2)194.722 600 S F3<ae>1.666 E F0(do not report b)2.5 +E(utton do)-.2 E(wn transitions)-.25 E F1(P)185 616 Q F2(s)-2 3 M +202.862 608.5 202.862 618.5 DL 202.862 607.5 202.862 617.5 DL 218.86 +608.5 218.86 618.5 DL 207.862 618.5 202.862 618.5 DL 208.86 618.5 203.86 +618.5 DL 213.86 618.5 208.86 618.5 DL 218.86 618.5 213.86 618.5 DL +218.86 607.5 218.86 617.5 DL 207.862 607.5 202.862 607.5 DL 208.86 607.5 +203.86 607.5 DL 213.86 607.5 208.86 607.5 DL 218.86 607.5 213.86 607.5 +DL F0 7.999(=3)194.722 616 S F3<ae>1.666 E F0(report b)2.5 E +(utton up transitions)-.2 E F1(P)185 632 Q F2(s)-2 3 M 202.862 624.5 +202.862 634.5 DL 202.862 623.5 202.862 633.5 DL 218.86 624.5 218.86 +634.5 DL 207.862 634.5 202.862 634.5 DL 208.86 634.5 203.86 634.5 DL +213.86 634.5 208.86 634.5 DL 218.86 634.5 213.86 634.5 DL 218.86 623.5 +218.86 633.5 DL 207.862 623.5 202.862 623.5 DL 208.86 623.5 203.86 623.5 +DL 213.86 623.5 208.86 623.5 DL 218.86 623.5 213.86 623.5 DL F0 7.999 +(=4)194.722 632 S F3<ae>1.666 E F0(do not report b)2.5 E +(utton up transitions)-.2 E 72 640.5 72 650.5 DL 72 639.5 72 649.5 DL +87.998 640.5 87.998 650.5 DL 77 650.5 72 650.5 DL 77.998 650.5 72.998 +650.5 DL 82.998 650.5 77.998 650.5 DL 87.998 650.5 82.998 650.5 DL +87.998 639.5 87.998 649.5 DL 77 639.5 72 639.5 DL 77.998 639.5 72.998 +639.5 DL 82.998 639.5 77.998 639.5 DL 87.998 639.5 82.998 639.5 DL F4 +(CSI)75.331 647 Q F1(P)4.997 1 M 98.552 640.5 98.552 650.5 DL 98.552 +639.5 98.552 649.5 DL F2(s)93.774 651 Q 114.55 640.5 114.55 650.5 DL +103.552 650.5 98.552 650.5 DL 104.55 650.5 99.55 650.5 DL 109.55 650.5 +104.55 650.5 DL 114.55 650.5 109.55 650.5 DL 114.55 639.5 114.55 649.5 +DL 103.552 639.5 98.552 639.5 DL 104.55 639.5 99.55 639.5 DL 109.55 +639.5 104.55 639.5 DL 114.55 639.5 109.55 639.5 DL 116.216 640.5 116.216 +650.5 DL 116.216 639.5 116.216 649.5 DL 132.214 640.5 132.214 650.5 DL +121.216 650.5 116.216 650.5 DL 122.214 650.5 117.214 650.5 DL 127.214 +650.5 122.214 650.5 DL 132.214 650.5 127.214 650.5 DL 132.214 639.5 +132.214 649.5 DL 121.216 639.5 116.216 639.5 DL 122.214 639.5 117.214 +639.5 DL 127.214 639.5 122.214 639.5 DL 132.214 639.5 127.214 639.5 DL +F0 22.287 14.999(\264| R)104.886 648 T +(equest Locator Position \(DECRQLP\))-14.999 E -1.11(Va)180 664 S(lid v) +1.11 E(alues for the parameter are:)-.25 E F1(P)185 680 Q F2(s)-2 3 M +202.862 672.5 202.862 682.5 DL 202.862 671.5 202.862 681.5 DL 218.86 +672.5 218.86 682.5 DL 207.862 682.5 202.862 682.5 DL 208.86 682.5 203.86 +682.5 DL 213.86 682.5 208.86 682.5 DL 218.86 682.5 213.86 682.5 DL +218.86 671.5 218.86 681.5 DL 207.862 671.5 202.862 671.5 DL 208.86 671.5 +203.86 671.5 DL 213.86 671.5 208.86 671.5 DL 218.86 671.5 213.86 671.5 +DL F0 7.999(=0)194.722 680 S 2.5(,1o)-.834 G 2.5(ro)-2.5 G(mitted)-2.5 E +F3<ae>2.5 E F0(transmit a single DECLRP locator report)2.5 E 2.91(If Lo\ +cator Reporting has been enabled by a DECELR, xterm will respond with a) +180 712 R .5(DECLRP Locator Report.)180 728 R .5 +(This report is also generated on b)5.5 F .5(utton up and do)-.2 F .5 +(wn e)-.25 F -.15(ve)-.25 G .5(nts if).15 F(12)301 772 Q EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E(the)180 88 Q 2.587(yh)-.15 G -2.25 -.2(av e)-2.587 H .088(been\ + enabled with a DECSLE, or when the locator is detected outside of a \ +\214lter)2.787 F(rectangle, if \214lter rectangles ha)180 104 Q .3 -.15 +(ve b)-.2 H(een enabled with a DECEFR.).15 E .4 LW 197.37 128.5 197.37 +138.5 DL 197.37 127.5 197.37 137.5 DL/F1 10/Symbol SF<ae>185 136 Q +213.368 128.5 213.368 138.5 DL 202.37 138.5 197.37 138.5 DL 203.368 +138.5 198.368 138.5 DL 208.368 138.5 203.368 138.5 DL 213.368 138.5 +208.368 138.5 DL 213.368 127.5 213.368 137.5 DL 202.37 127.5 197.37 +127.5 DL 203.368 127.5 198.368 127.5 DL 208.368 127.5 203.368 127.5 DL +213.368 127.5 208.368 127.5 DL/F2 6/Times-Roman@0 SF(CSI)200.701 135 Q +/F3 10/Times-Italic@0 SF(P)4.997 1 M 224.362 128.5 224.362 138.5 DL +224.362 127.5 224.362 137.5 DL/F4 8/Times-Italic@0 SF(e)219.144 139 Q +240.36 128.5 240.36 138.5 DL 229.362 138.5 224.362 138.5 DL 230.36 138.5 +225.36 138.5 DL 235.36 138.5 230.36 138.5 DL 240.36 138.5 235.36 138.5 +DL 240.36 127.5 240.36 137.5 DL 229.362 127.5 224.362 127.5 DL 230.36 +127.5 225.36 127.5 DL 235.36 127.5 230.36 127.5 DL 240.36 127.5 235.36 +127.5 DL F0(;)230.971 136 Q F3(P)8.275 E 251.802 128.5 251.802 138.5 DL +251.802 127.5 251.802 137.5 DL F4(b)246.136 139 Q 267.8 128.5 267.8 +138.5 DL 256.802 138.5 251.802 138.5 DL 257.8 138.5 252.8 138.5 DL 262.8 +138.5 257.8 138.5 DL 267.8 138.5 262.8 138.5 DL 267.8 127.5 267.8 137.5 +DL 256.802 127.5 251.802 127.5 DL 257.8 127.5 252.8 127.5 DL 262.8 127.5 +257.8 127.5 DL 267.8 127.5 262.8 127.5 DL F0(;)258.411 136 Q F3(P)8.275 +E 278.354 128.5 278.354 138.5 DL 278.354 127.5 278.354 137.5 DL F4(r) +273.576 139 Q 294.352 128.5 294.352 138.5 DL 283.354 138.5 278.354 138.5 +DL 284.352 138.5 279.352 138.5 DL 289.352 138.5 284.352 138.5 DL 294.352 +138.5 289.352 138.5 DL 294.352 127.5 294.352 137.5 DL 283.354 127.5 +278.354 127.5 DL 284.352 127.5 279.352 127.5 DL 289.352 127.5 284.352 +127.5 DL 294.352 127.5 289.352 127.5 DL F0(;)284.963 136 Q F3(P)8.275 E +305.346 128.5 305.346 138.5 DL 305.346 127.5 305.346 137.5 DL F4(c) +300.128 139 Q 321.344 128.5 321.344 138.5 DL 310.346 138.5 305.346 138.5 +DL 311.344 138.5 306.344 138.5 DL 316.344 138.5 311.344 138.5 DL 321.344 +138.5 316.344 138.5 DL 321.344 127.5 321.344 137.5 DL 310.346 127.5 +305.346 127.5 DL 311.344 127.5 306.344 127.5 DL 316.344 127.5 311.344 +127.5 DL 321.344 127.5 316.344 127.5 DL F0(;)311.955 136 Q F3(P)8.275 E +332.786 128.5 332.786 138.5 DL 332.786 127.5 332.786 137.5 DL F4(p) +327.12 139 Q 348.784 128.5 348.784 138.5 DL 337.786 138.5 332.786 138.5 +DL 338.784 138.5 333.784 138.5 DL 343.784 138.5 338.784 138.5 DL 348.784 +138.5 343.784 138.5 DL 348.784 127.5 348.784 137.5 DL 337.786 127.5 +332.786 127.5 DL 338.784 127.5 333.784 127.5 DL 343.784 127.5 338.784 +127.5 DL 348.784 127.5 343.784 127.5 DL 352.116 128.5 352.116 138.5 DL +352.116 127.5 352.116 137.5 DL 368.114 128.5 368.114 138.5 DL 357.116 +138.5 352.116 138.5 DL 358.114 138.5 353.114 138.5 DL 363.114 138.5 +358.114 138.5 DL 368.114 138.5 363.114 138.5 DL 368.114 127.5 368.114 +137.5 DL 357.116 127.5 352.116 127.5 DL 358.114 127.5 353.114 127.5 DL +363.114 127.5 358.114 127.5 DL 368.114 127.5 363.114 127.5 DL F0 11.83 +(&w)336.895 136 S -.15(Pa)180 168 S(rameters are [e).15 E -.15(ve)-.25 G +(nt;b).15 E(utton;ro)-.2 E(w;column;page].)-.25 E -1.11(Va)180 184 S +(lid v)1.11 E(alues for the e)-.25 E -.15(ve)-.25 G(nt:).15 E F3(P)185 +200 Q F4(e)-2 3 M 203.302 192.5 203.302 202.5 DL 203.302 191.5 203.302 +201.5 DL 219.3 192.5 219.3 202.5 DL 208.302 202.5 203.302 202.5 DL 209.3 +202.5 204.3 202.5 DL 214.3 202.5 209.3 202.5 DL 219.3 202.5 214.3 202.5 +DL 219.3 191.5 219.3 201.5 DL 208.302 191.5 203.302 191.5 DL 209.3 191.5 +204.3 191.5 DL 214.3 191.5 209.3 191.5 DL 219.3 191.5 214.3 191.5 DL F0 +7.999(=0)195.162 200 S F1<ae>1.666 E F0(locator una)2.5 E -.25(va)-.2 G +(ilable - no other parameters sent).25 E F3(P)185 216 Q F4(e)-2 3 M +203.302 208.5 203.302 218.5 DL 203.302 207.5 203.302 217.5 DL 219.3 +208.5 219.3 218.5 DL 208.302 218.5 203.302 218.5 DL 209.3 218.5 204.3 +218.5 DL 214.3 218.5 209.3 218.5 DL 219.3 218.5 214.3 218.5 DL 219.3 +207.5 219.3 217.5 DL 208.302 207.5 203.302 207.5 DL 209.3 207.5 204.3 +207.5 DL 214.3 207.5 209.3 207.5 DL 219.3 207.5 214.3 207.5 DL F0 7.999 +(=1)195.162 216 S F1<ae>1.666 E F0(request - xterm recei)2.5 E -.15(ve) +-.25 G 2.5(daD).15 G(ECRQLP)-2.5 E F3(P)185 232 Q F4(e)-2 3 M 203.302 +224.5 203.302 234.5 DL 203.302 223.5 203.302 233.5 DL 219.3 224.5 219.3 +234.5 DL 208.302 234.5 203.302 234.5 DL 209.3 234.5 204.3 234.5 DL 214.3 +234.5 209.3 234.5 DL 219.3 234.5 214.3 234.5 DL 219.3 223.5 219.3 233.5 +DL 208.302 223.5 203.302 223.5 DL 209.3 223.5 204.3 223.5 DL 214.3 223.5 +209.3 223.5 DL 219.3 223.5 214.3 223.5 DL F0 7.999(=2)195.162 232 S F1 +<ae>1.666 E F0(left b)2.5 E(utton do)-.2 E(wn)-.25 E F3(P)185 248 Q F4 +(e)-2 3 M 203.302 240.5 203.302 250.5 DL 203.302 239.5 203.302 249.5 DL +219.3 240.5 219.3 250.5 DL 208.302 250.5 203.302 250.5 DL 209.3 250.5 +204.3 250.5 DL 214.3 250.5 209.3 250.5 DL 219.3 250.5 214.3 250.5 DL +219.3 239.5 219.3 249.5 DL 208.302 239.5 203.302 239.5 DL 209.3 239.5 +204.3 239.5 DL 214.3 239.5 209.3 239.5 DL 219.3 239.5 214.3 239.5 DL F0 +7.999(=3)195.162 248 S F1<ae>1.666 E F0(left b)2.5 E(utton up)-.2 E F3 +(P)185 264 Q F4(e)-2 3 M 203.302 256.5 203.302 266.5 DL 203.302 255.5 +203.302 265.5 DL 219.3 256.5 219.3 266.5 DL 208.302 266.5 203.302 266.5 +DL 209.3 266.5 204.3 266.5 DL 214.3 266.5 209.3 266.5 DL 219.3 266.5 +214.3 266.5 DL 219.3 255.5 219.3 265.5 DL 208.302 255.5 203.302 255.5 DL +209.3 255.5 204.3 255.5 DL 214.3 255.5 209.3 255.5 DL 219.3 255.5 214.3 +255.5 DL F0 7.999(=4)195.162 264 S F1<ae>1.666 E F0(middle b)2.5 E +(utton do)-.2 E(wn)-.25 E F3(P)185 280 Q F4(e)-2 3 M 203.302 272.5 +203.302 282.5 DL 203.302 271.5 203.302 281.5 DL 219.3 272.5 219.3 282.5 +DL 208.302 282.5 203.302 282.5 DL 209.3 282.5 204.3 282.5 DL 214.3 282.5 +209.3 282.5 DL 219.3 282.5 214.3 282.5 DL 219.3 271.5 219.3 281.5 DL +208.302 271.5 203.302 271.5 DL 209.3 271.5 204.3 271.5 DL 214.3 271.5 +209.3 271.5 DL 219.3 271.5 214.3 271.5 DL F0 7.999(=5)195.162 280 S F1 +<ae>1.666 E F0(middle b)2.5 E(utton up)-.2 E F3(P)185 296 Q F4(e)-2 3 M +203.302 288.5 203.302 298.5 DL 203.302 287.5 203.302 297.5 DL 219.3 +288.5 219.3 298.5 DL 208.302 298.5 203.302 298.5 DL 209.3 298.5 204.3 +298.5 DL 214.3 298.5 209.3 298.5 DL 219.3 298.5 214.3 298.5 DL 219.3 +287.5 219.3 297.5 DL 208.302 287.5 203.302 287.5 DL 209.3 287.5 204.3 +287.5 DL 214.3 287.5 209.3 287.5 DL 219.3 287.5 214.3 287.5 DL F0 7.999 +(=6)195.162 296 S F1<ae>1.666 E F0(right b)2.5 E(utton do)-.2 E(wn)-.25 +E F3(P)185 312 Q F4(e)-2 3 M 203.302 304.5 203.302 314.5 DL 203.302 +303.5 203.302 313.5 DL 219.3 304.5 219.3 314.5 DL 208.302 314.5 203.302 +314.5 DL 209.3 314.5 204.3 314.5 DL 214.3 314.5 209.3 314.5 DL 219.3 +314.5 214.3 314.5 DL 219.3 303.5 219.3 313.5 DL 208.302 303.5 203.302 +303.5 DL 209.3 303.5 204.3 303.5 DL 214.3 303.5 209.3 303.5 DL 219.3 +303.5 214.3 303.5 DL F0 7.999(=7)195.162 312 S F1<ae>1.666 E F0(right b) +2.5 E(utton up)-.2 E F3(P)185 328 Q F4(e)-2 3 M 203.302 320.5 203.302 +330.5 DL 203.302 319.5 203.302 329.5 DL 219.3 320.5 219.3 330.5 DL +208.302 330.5 203.302 330.5 DL 209.3 330.5 204.3 330.5 DL 214.3 330.5 +209.3 330.5 DL 219.3 330.5 214.3 330.5 DL 219.3 319.5 219.3 329.5 DL +208.302 319.5 203.302 319.5 DL 209.3 319.5 204.3 319.5 DL 214.3 319.5 +209.3 319.5 DL 219.3 319.5 214.3 319.5 DL F0 7.999(=8)195.162 328 S F1 +<ae>1.666 E F0(M4 b)2.5 E(utton do)-.2 E(wn)-.25 E F3(P)185 344 Q F4(e) +-2 3 M 203.302 336.5 203.302 346.5 DL 203.302 335.5 203.302 345.5 DL +219.3 336.5 219.3 346.5 DL 208.302 346.5 203.302 346.5 DL 209.3 346.5 +204.3 346.5 DL 214.3 346.5 209.3 346.5 DL 219.3 346.5 214.3 346.5 DL +219.3 335.5 219.3 345.5 DL 208.302 335.5 203.302 335.5 DL 209.3 335.5 +204.3 335.5 DL 214.3 335.5 209.3 335.5 DL 219.3 335.5 214.3 335.5 DL F0 +7.999(=9)195.162 344 S F1<ae>1.666 E F0(M4 b)2.5 E(utton up)-.2 E F3(P) +185 360 Q F4(e)-2 3 M 203.302 352.5 203.302 362.5 DL 203.302 351.5 +203.302 361.5 DL 219.3 352.5 219.3 362.5 DL 208.302 362.5 203.302 362.5 +DL 209.3 362.5 204.3 362.5 DL 214.3 362.5 209.3 362.5 DL 219.3 362.5 +214.3 362.5 DL 219.3 351.5 219.3 361.5 DL 208.302 351.5 203.302 351.5 DL +209.3 351.5 204.3 351.5 DL 214.3 351.5 209.3 351.5 DL 219.3 351.5 214.3 +351.5 DL 220.966 352.5 220.966 362.5 DL 220.966 351.5 220.966 361.5 DL +236.964 352.5 236.964 362.5 DL 225.966 362.5 220.966 362.5 DL 226.964 +362.5 221.964 362.5 DL 231.964 362.5 226.964 362.5 DL 236.964 362.5 +231.964 362.5 DL 236.964 351.5 236.964 361.5 DL 225.966 351.5 220.966 +351.5 DL 226.964 351.5 221.964 351.5 DL 231.964 351.5 226.964 351.5 DL +236.964 351.5 231.964 351.5 DL F0 -5.834 7.999(=1 0)195.162 360 T F1<ae> +1.666 E F0(locator outside \214lter rectangle)2.5 E -.74(``)180 376 S +-.2(bu).74 G(tton').2 E 2.5('p)-.74 G +(arameter is a bitmask indicating which b)-2.5 E(uttons are pressed:)-.2 +E F3(P)185 392 Q F4(b)-2 3 M 203.75 384.5 203.75 394.5 DL 203.75 383.5 +203.75 393.5 DL 219.748 384.5 219.748 394.5 DL 208.75 394.5 203.75 394.5 +DL 209.748 394.5 204.748 394.5 DL 214.748 394.5 209.748 394.5 DL 219.748 +394.5 214.748 394.5 DL 219.748 383.5 219.748 393.5 DL 208.75 383.5 +203.75 383.5 DL 209.748 383.5 204.748 383.5 DL 214.748 383.5 209.748 +383.5 DL 219.748 383.5 214.748 383.5 DL F0 7.999(=0)195.61 392 S F1<ae> +1.666 E F0(no b)2.5 E(uttons do)-.2 E(wn)-.25 E F3(P)185 408 Q F4(b)-2 3 +M 205.89 400.5 205.89 410.5 DL 205.89 399.5 205.89 409.5 DL 221.888 +400.5 221.888 410.5 DL 210.89 410.5 205.89 410.5 DL 211.888 410.5 +206.888 410.5 DL 216.888 410.5 211.888 410.5 DL 221.888 410.5 216.888 +410.5 DL 221.888 399.5 221.888 409.5 DL 210.89 399.5 205.89 399.5 DL +211.888 399.5 206.888 399.5 DL 216.888 399.5 211.888 399.5 DL 221.888 +399.5 216.888 399.5 DL F0 7.999(&1)195.61 408 S F1<ae>1.666 E F0 +(right b)2.5 E(utton do)-.2 E(wn)-.25 E F3(P)185 424 Q F4(b)-2 3 M +205.89 416.5 205.89 426.5 DL 205.89 415.5 205.89 425.5 DL 221.888 416.5 +221.888 426.5 DL 210.89 426.5 205.89 426.5 DL 211.888 426.5 206.888 +426.5 DL 216.888 426.5 211.888 426.5 DL 221.888 426.5 216.888 426.5 DL +221.888 415.5 221.888 425.5 DL 210.89 415.5 205.89 415.5 DL 211.888 +415.5 206.888 415.5 DL 216.888 415.5 211.888 415.5 DL 221.888 415.5 +216.888 415.5 DL F0 7.999(&2)195.61 424 S F1<ae>1.666 E F0(middle b)2.5 +E(utton do)-.2 E(wn)-.25 E F3(P)185 440 Q F4(b)-2 3 M 205.89 432.5 +205.89 442.5 DL 205.89 431.5 205.89 441.5 DL 221.888 432.5 221.888 442.5 +DL 210.89 442.5 205.89 442.5 DL 211.888 442.5 206.888 442.5 DL 216.888 +442.5 211.888 442.5 DL 221.888 442.5 216.888 442.5 DL 221.888 431.5 +221.888 441.5 DL 210.89 431.5 205.89 431.5 DL 211.888 431.5 206.888 +431.5 DL 216.888 431.5 211.888 431.5 DL 221.888 431.5 216.888 431.5 DL +F0 7.999(&4)195.61 440 S F1<ae>1.666 E F0(left b)2.5 E(utton do)-.2 E +(wn)-.25 E F3(P)185 456 Q F4(b)-2 3 M 205.89 448.5 205.89 458.5 DL +205.89 447.5 205.89 457.5 DL 221.888 448.5 221.888 458.5 DL 210.89 458.5 +205.89 458.5 DL 211.888 458.5 206.888 458.5 DL 216.888 458.5 211.888 +458.5 DL 221.888 458.5 216.888 458.5 DL 221.888 447.5 221.888 457.5 DL +210.89 447.5 205.89 447.5 DL 211.888 447.5 206.888 447.5 DL 216.888 +447.5 211.888 447.5 DL 221.888 447.5 216.888 447.5 DL F0 7.999(&8)195.61 +456 S F1<ae>1.666 E F0(M4 b)2.5 E(utton do)-.2 E(wn)-.25 E -.74(``)180 +472 S(ro).74 E(w')-.25 E 2.947('a)-.74 G .447(nd `)-2.947 F(`column') +-.74 E 2.946('p)-.74 G .446 +(arameters are the coordinates of the locator position in the xterm) +-2.946 F(windo)180 488 Q 1.3 -.65(w, e)-.25 H(ncoded as ASCII decimal.) +.65 E(The `)180 504 Q(`page')-.74 E 2.5('p)-.74 G +(arameter is not used by xterm, and will be omitted.)-2.5 E/F5 10 +/Times-Bold@0 SF(Operating System Contr)72 536 Q(ols)-.18 E 72 544.5 72 +554.5 DL 72 543.5 72 553.5 DL 87.998 544.5 87.998 554.5 DL 77 554.5 72 +554.5 DL 77.998 554.5 72.998 554.5 DL 82.998 554.5 77.998 554.5 DL +87.998 554.5 82.998 554.5 DL 87.998 543.5 87.998 553.5 DL 77 543.5 72 +543.5 DL 77.998 543.5 72.998 543.5 DL 82.998 543.5 77.998 543.5 DL +87.998 543.5 82.998 543.5 DL F2(OSC)74.164 551 Q F3(P)3.83 1 M 98.552 +544.5 98.552 554.5 DL 98.552 543.5 98.552 553.5 DL F4(s)93.774 555 Q +114.55 544.5 114.55 554.5 DL 103.552 554.5 98.552 554.5 DL 104.55 554.5 +99.55 554.5 DL 109.55 554.5 104.55 554.5 DL 114.55 554.5 109.55 554.5 DL +114.55 543.5 114.55 553.5 DL 103.552 543.5 98.552 543.5 DL 104.55 543.5 +99.55 543.5 DL 109.55 543.5 104.55 543.5 DL 114.55 543.5 109.55 543.5 DL +F0(;)105.161 552 Q F3(P)8.275 E 124.216 544.5 124.216 554.5 DL 124.216 +543.5 124.216 553.5 DL F4(t)120.326 555 Q 140.214 544.5 140.214 554.5 DL +129.216 554.5 124.216 554.5 DL 130.214 554.5 125.214 554.5 DL 135.214 +554.5 130.214 554.5 DL 140.214 554.5 135.214 554.5 DL 140.214 543.5 +140.214 553.5 DL 129.216 543.5 124.216 543.5 DL 130.214 543.5 125.214 +543.5 DL 135.214 543.5 130.214 543.5 DL 140.214 543.5 135.214 543.5 DL +F2(ST)128.714 551 Q 72 560.5 72 570.5 DL 72 559.5 72 569.5 DL 87.998 +560.5 87.998 570.5 DL 77 570.5 72 570.5 DL 77.998 570.5 72.998 570.5 DL +82.998 570.5 77.998 570.5 DL 87.998 570.5 82.998 570.5 DL 87.998 559.5 +87.998 569.5 DL 77 559.5 72 559.5 DL 77.998 559.5 72.998 559.5 DL 82.998 +559.5 77.998 559.5 DL 87.998 559.5 82.998 559.5 DL(OSC)74.164 567 Q F3 +(P)3.83 1 M 98.552 560.5 98.552 570.5 DL 98.552 559.5 98.552 569.5 DL F4 +(s)93.774 571 Q 114.55 560.5 114.55 570.5 DL 103.552 570.5 98.552 570.5 +DL 104.55 570.5 99.55 570.5 DL 109.55 570.5 104.55 570.5 DL 114.55 570.5 +109.55 570.5 DL 114.55 559.5 114.55 569.5 DL 103.552 559.5 98.552 559.5 +DL 104.55 559.5 99.55 559.5 DL 109.55 559.5 104.55 559.5 DL 114.55 559.5 +109.55 559.5 DL F0(;)105.161 568 Q F3(P)8.275 E 124.216 560.5 124.216 +570.5 DL 124.216 559.5 124.216 569.5 DL F4(t)120.326 571 Q 140.214 560.5 +140.214 570.5 DL 129.216 570.5 124.216 570.5 DL 130.214 570.5 125.214 +570.5 DL 135.214 570.5 130.214 570.5 DL 140.214 570.5 135.214 570.5 DL +140.214 559.5 140.214 569.5 DL 129.216 559.5 124.216 559.5 DL 130.214 +559.5 125.214 559.5 DL 135.214 559.5 130.214 559.5 DL 140.214 559.5 +135.214 559.5 DL F2(BEL)126.548 567 Q F0 1.565(Set T)42.118 1 N -.15(ex) +-.7 G 4.065(tP).15 G 4.065(arameters. F)-4.215 F 1.565 +(or colors and font, if)-.15 F F3(P)4.065 E F4(t)-2 3 M F0 1.566 +(is a "?", the control sequence elicits a)4.065 -3 N 2.363 +(response which consists of the control sequence which w)180 584 R 2.362 +(ould set the corresponding)-.1 F -.25(va)180 600 S 3.139(lue. The).25 F +F3(dtterm)3.139 E F0 .639(control sequences allo)3.139 F 3.139(wy)-.25 G +.639(ou to determine the icon name and windo)-3.139 F(w)-.25 E(title.) +180 616 Q F3(P)185 632 Q F4(s)-2 3 M 202.862 624.5 202.862 634.5 DL +202.862 623.5 202.862 633.5 DL 218.86 624.5 218.86 634.5 DL 207.862 +634.5 202.862 634.5 DL 208.86 634.5 203.86 634.5 DL 213.86 634.5 208.86 +634.5 DL 218.86 634.5 213.86 634.5 DL 218.86 623.5 218.86 633.5 DL +207.862 623.5 202.862 623.5 DL 208.86 623.5 203.86 623.5 DL 213.86 623.5 +208.86 623.5 DL 218.86 623.5 213.86 623.5 DL F0 7.999(=0)194.722 632 S +F1<ae>1.666 E F0(Change Icon Name and W)2.5 E(indo)-.4 E 2.5(wT)-.25 G +(itle to)-2.85 E F3(P)2.5 E F4(t)-2 3 M F3(P)185 648 Q F4(s)-2 3 M +202.862 640.5 202.862 650.5 DL 202.862 639.5 202.862 649.5 DL 218.86 +640.5 218.86 650.5 DL 207.862 650.5 202.862 650.5 DL 208.86 650.5 203.86 +650.5 DL 213.86 650.5 208.86 650.5 DL 218.86 650.5 213.86 650.5 DL +218.86 639.5 218.86 649.5 DL 207.862 639.5 202.862 639.5 DL 208.86 639.5 +203.86 639.5 DL 213.86 639.5 208.86 639.5 DL 218.86 639.5 213.86 639.5 +DL F0 7.999(=1)194.722 648 S F1<ae>1.666 E F0(Change Icon Name to)2.5 E +F3(P)2.5 E F4(t)-2 3 M F3(P)185 664 Q F4(s)-2 3 M 202.862 656.5 202.862 +666.5 DL 202.862 655.5 202.862 665.5 DL 218.86 656.5 218.86 666.5 DL +207.862 666.5 202.862 666.5 DL 208.86 666.5 203.86 666.5 DL 213.86 666.5 +208.86 666.5 DL 218.86 666.5 213.86 666.5 DL 218.86 655.5 218.86 665.5 +DL 207.862 655.5 202.862 655.5 DL 208.86 655.5 203.86 655.5 DL 213.86 +655.5 208.86 655.5 DL 218.86 655.5 213.86 655.5 DL F0 7.999(=2)194.722 +664 S F1<ae>1.666 E F0(Change W)2.5 E(indo)-.4 E 2.5(wT)-.25 G(itle to) +-2.85 E F3(P)2.5 E F4(t)-2 3 M F3(P)185 680 Q F4(s)-2 3 M 203.158 672.5 +203.158 682.5 DL 203.158 671.5 203.158 681.5 DL 219.156 672.5 219.156 +682.5 DL 208.158 682.5 203.158 682.5 DL 209.156 682.5 204.156 682.5 DL +214.156 682.5 209.156 682.5 DL 219.156 682.5 214.156 682.5 DL 219.156 +671.5 219.156 681.5 DL 208.158 671.5 203.158 671.5 DL 209.156 671.5 +204.156 671.5 DL 214.156 671.5 209.156 671.5 DL 219.156 671.5 214.156 +671.5 DL F0 8.147(=3)194.87 680 S F1<ae>1.666 E F0 .148 +(Set X property on top-le)2.648 F -.15(ve)-.25 G 2.647(lw).15 G(indo) +-2.647 E -.65(w.)-.25 G F3(P)3.297 E F4(t)-2 3 M F0 .147 +(should be in the form ")2.647 -3 N F3(pr)A(op=value)-.45 E F0(",)A +(or just ")180 696 Q F3(pr)A(op)-.45 E F0 2.5("t)C 2.5(od)-2.5 G +(elete the property)-2.5 E F3(P)185 712 Q F4(s)-2 3 M 203.12 704.5 +203.12 714.5 DL 203.12 703.5 203.12 713.5 DL 219.118 704.5 219.118 714.5 +DL 208.12 714.5 203.12 714.5 DL 209.118 714.5 204.118 714.5 DL 214.118 +714.5 209.118 714.5 DL 219.118 714.5 214.118 714.5 DL 219.118 703.5 +219.118 713.5 DL 208.12 703.5 203.12 703.5 DL 209.118 703.5 204.118 +703.5 DL 214.118 703.5 209.118 703.5 DL 219.118 703.5 214.118 703.5 DL +F0 -8.962 8.128(=4 ;)194.851 712 T F3 2.629(c;n)-5.499 G(ame)-2.629 E F1 +<ae>2.63 E F0 .13(Change Color #)2.63 F F3(c)A F0(to)2.63 E F3(cname) +2.63 E F0 5.13(.A)C .43 -.15(ny n)-5.13 H .13(umber of).15 F F3 2.63(cn) +2.63 G(ame)-2.63 E F0 .13(pairs may be)2.63 F(gi)180 728 Q -.15(ve)-.25 +G(n.).15 E(13)301 772 Q EP +%%Page: 14 14 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT100 Mode) +310.52 E/F1 10/Times-Italic@0 SF(P)185 88 Q/F2 8/Times-Italic@0 SF(s)-2 +3 M .4 LW 203.53 80.5 203.53 90.5 DL 203.53 79.5 203.53 89.5 DL 219.528 +80.5 219.528 90.5 DL 208.53 90.5 203.53 90.5 DL 209.528 90.5 204.528 +90.5 DL 214.528 90.5 209.528 90.5 DL 219.528 90.5 214.528 90.5 DL +219.528 79.5 219.528 89.5 DL 208.53 79.5 203.53 79.5 DL 209.528 79.5 +204.528 79.5 DL 214.528 79.5 209.528 79.5 DL 219.528 79.5 214.528 79.5 +DL 221.194 80.5 221.194 90.5 DL 221.194 79.5 221.194 89.5 DL 237.192 +80.5 237.192 90.5 DL 226.194 90.5 221.194 90.5 DL 227.192 90.5 222.192 +90.5 DL 232.192 90.5 227.192 90.5 DL 237.192 90.5 232.192 90.5 DL +237.192 79.5 237.192 89.5 DL 226.194 79.5 221.194 79.5 DL 227.192 79.5 +222.192 79.5 DL 232.192 79.5 227.192 79.5 DL 237.192 79.5 232.192 79.5 +DL F0 -6.502 8.333(=1 0)195.056 88 T/F3 10/Symbol SF<ae>1.666 E F0 .333 +(Change color names starting with te)2.834 F .333(xt fore)-.15 F .333 +(ground to)-.15 F F1(P)2.833 E F2(t)-2 3 M F0 .333(\(a list of one or) +2.833 -3 N 1.713(more color names or RGB speci\214cations, separated by\ + semicolon, up to eight, as per)180 104 R F1(XP)180 120 Q(ar)-.8 E +(seColor)-.1 E F0(\).)A F1(P)185 136 Q F2(s)-2 3 M 202.862 128.5 202.862 +138.5 DL 202.862 127.5 202.862 137.5 DL 218.86 128.5 218.86 138.5 DL +207.862 138.5 202.862 138.5 DL 208.86 138.5 203.86 138.5 DL 213.86 138.5 +208.86 138.5 DL 218.86 138.5 213.86 138.5 DL 218.86 127.5 218.86 137.5 +DL 207.862 127.5 202.862 127.5 DL 208.86 127.5 203.86 127.5 DL 213.86 +127.5 208.86 127.5 DL 218.86 127.5 213.86 127.5 DL 220.526 128.5 220.526 +138.5 DL 220.526 127.5 220.526 137.5 DL 236.524 128.5 236.524 138.5 DL +225.526 138.5 220.526 138.5 DL 226.524 138.5 221.524 138.5 DL 231.524 +138.5 226.524 138.5 DL 236.524 138.5 231.524 138.5 DL 236.524 127.5 +236.524 137.5 DL 225.526 127.5 220.526 127.5 DL 226.524 127.5 221.524 +127.5 DL 231.524 127.5 226.524 127.5 DL 236.524 127.5 231.524 127.5 DL +F0 -5.834 7.999(=1 1)194.722 136 T F3<ae>1.666 E F0 +(Change colors starting with te)2.5 E(xt background to)-.15 E F1(P)2.5 E +F2(t)-2 3 M F1(P)185 152 Q F2(s)-2 3 M 202.862 144.5 202.862 154.5 DL +202.862 143.5 202.862 153.5 DL 218.86 144.5 218.86 154.5 DL 207.862 +154.5 202.862 154.5 DL 208.86 154.5 203.86 154.5 DL 213.86 154.5 208.86 +154.5 DL 218.86 154.5 213.86 154.5 DL 218.86 143.5 218.86 153.5 DL +207.862 143.5 202.862 143.5 DL 208.86 143.5 203.86 143.5 DL 213.86 143.5 +208.86 143.5 DL 218.86 143.5 213.86 143.5 DL 220.526 144.5 220.526 154.5 +DL 220.526 143.5 220.526 153.5 DL 236.524 144.5 236.524 154.5 DL 225.526 +154.5 220.526 154.5 DL 226.524 154.5 221.524 154.5 DL 231.524 154.5 +226.524 154.5 DL 236.524 154.5 231.524 154.5 DL 236.524 143.5 236.524 +153.5 DL 225.526 143.5 220.526 143.5 DL 226.524 143.5 221.524 143.5 DL +231.524 143.5 226.524 143.5 DL 236.524 143.5 231.524 143.5 DL F0 -5.834 +7.999(=1 2)194.722 152 T F3<ae>1.666 E F0 +(Change colors starting with te)2.5 E(xt cursor to)-.15 E F1(P)2.5 E F2 +(t)-2 3 M F1(P)185 168 Q F2(s)-2 3 M 202.862 160.5 202.862 170.5 DL +202.862 159.5 202.862 169.5 DL 218.86 160.5 218.86 170.5 DL 207.862 +170.5 202.862 170.5 DL 208.86 170.5 203.86 170.5 DL 213.86 170.5 208.86 +170.5 DL 218.86 170.5 213.86 170.5 DL 218.86 159.5 218.86 169.5 DL +207.862 159.5 202.862 159.5 DL 208.86 159.5 203.86 159.5 DL 213.86 159.5 +208.86 159.5 DL 218.86 159.5 213.86 159.5 DL 220.526 160.5 220.526 170.5 +DL 220.526 159.5 220.526 169.5 DL 236.524 160.5 236.524 170.5 DL 225.526 +170.5 220.526 170.5 DL 226.524 170.5 221.524 170.5 DL 231.524 170.5 +226.524 170.5 DL 236.524 170.5 231.524 170.5 DL 236.524 159.5 236.524 +169.5 DL 225.526 159.5 220.526 159.5 DL 226.524 159.5 221.524 159.5 DL +231.524 159.5 226.524 159.5 DL 236.524 159.5 231.524 159.5 DL F0 -5.834 +7.999(=1 3)194.722 168 T F3<ae>1.666 E F0 +(Change colors starting with mouse fore)2.5 E(ground to)-.15 E F1(P)2.5 +E F2(t)-2 3 M F1(P)185 184 Q F2(s)-2 3 M 202.862 176.5 202.862 186.5 DL +202.862 175.5 202.862 185.5 DL 218.86 176.5 218.86 186.5 DL 207.862 +186.5 202.862 186.5 DL 208.86 186.5 203.86 186.5 DL 213.86 186.5 208.86 +186.5 DL 218.86 186.5 213.86 186.5 DL 218.86 175.5 218.86 185.5 DL +207.862 175.5 202.862 175.5 DL 208.86 175.5 203.86 175.5 DL 213.86 175.5 +208.86 175.5 DL 218.86 175.5 213.86 175.5 DL 220.526 176.5 220.526 186.5 +DL 220.526 175.5 220.526 185.5 DL 236.524 176.5 236.524 186.5 DL 225.526 +186.5 220.526 186.5 DL 226.524 186.5 221.524 186.5 DL 231.524 186.5 +226.524 186.5 DL 236.524 186.5 231.524 186.5 DL 236.524 175.5 236.524 +185.5 DL 225.526 175.5 220.526 175.5 DL 226.524 175.5 221.524 175.5 DL +231.524 175.5 226.524 175.5 DL 236.524 175.5 231.524 175.5 DL F0 -5.834 +7.999(=1 4)194.722 184 T F3<ae>1.666 E F0 +(Change colors starting with mouse background to)2.5 E F1(P)2.5 E F2(t) +-2 3 M F1(P)185 200 Q F2(s)-2 3 M 202.862 192.5 202.862 202.5 DL 202.862 +191.5 202.862 201.5 DL 218.86 192.5 218.86 202.5 DL 207.862 202.5 +202.862 202.5 DL 208.86 202.5 203.86 202.5 DL 213.86 202.5 208.86 202.5 +DL 218.86 202.5 213.86 202.5 DL 218.86 191.5 218.86 201.5 DL 207.862 +191.5 202.862 191.5 DL 208.86 191.5 203.86 191.5 DL 213.86 191.5 208.86 +191.5 DL 218.86 191.5 213.86 191.5 DL 220.526 192.5 220.526 202.5 DL +220.526 191.5 220.526 201.5 DL 236.524 192.5 236.524 202.5 DL 225.526 +202.5 220.526 202.5 DL 226.524 202.5 221.524 202.5 DL 231.524 202.5 +226.524 202.5 DL 236.524 202.5 231.524 202.5 DL 236.524 191.5 236.524 +201.5 DL 225.526 191.5 220.526 191.5 DL 226.524 191.5 221.524 191.5 DL +231.524 191.5 226.524 191.5 DL 236.524 191.5 231.524 191.5 DL F0 -5.834 +7.999(=1 5)194.722 200 T F3<ae>1.666 E F0(Change colors starting with T) +2.5 E(ek fore)-.7 E(ground to)-.15 E F1(P)2.5 E F2(t)-2 3 M F1(P)185 216 +Q F2(s)-2 3 M 202.862 208.5 202.862 218.5 DL 202.862 207.5 202.862 217.5 +DL 218.86 208.5 218.86 218.5 DL 207.862 218.5 202.862 218.5 DL 208.86 +218.5 203.86 218.5 DL 213.86 218.5 208.86 218.5 DL 218.86 218.5 213.86 +218.5 DL 218.86 207.5 218.86 217.5 DL 207.862 207.5 202.862 207.5 DL +208.86 207.5 203.86 207.5 DL 213.86 207.5 208.86 207.5 DL 218.86 207.5 +213.86 207.5 DL 220.526 208.5 220.526 218.5 DL 220.526 207.5 220.526 +217.5 DL 236.524 208.5 236.524 218.5 DL 225.526 218.5 220.526 218.5 DL +226.524 218.5 221.524 218.5 DL 231.524 218.5 226.524 218.5 DL 236.524 +218.5 231.524 218.5 DL 236.524 207.5 236.524 217.5 DL 225.526 207.5 +220.526 207.5 DL 226.524 207.5 221.524 207.5 DL 231.524 207.5 226.524 +207.5 DL 236.524 207.5 231.524 207.5 DL F0 -5.834 7.999(=1 6)194.722 216 +T F3<ae>1.666 E F0(Change colors starting with T)2.5 E(ek background to) +-.7 E F1(P)2.5 E F2(t)-2 3 M F1(P)185 232 Q F2(s)-2 3 M 202.862 224.5 +202.862 234.5 DL 202.862 223.5 202.862 233.5 DL 218.86 224.5 218.86 +234.5 DL 207.862 234.5 202.862 234.5 DL 208.86 234.5 203.86 234.5 DL +213.86 234.5 208.86 234.5 DL 218.86 234.5 213.86 234.5 DL 218.86 223.5 +218.86 233.5 DL 207.862 223.5 202.862 223.5 DL 208.86 223.5 203.86 223.5 +DL 213.86 223.5 208.86 223.5 DL 218.86 223.5 213.86 223.5 DL 220.526 +224.5 220.526 234.5 DL 220.526 223.5 220.526 233.5 DL 236.524 224.5 +236.524 234.5 DL 225.526 234.5 220.526 234.5 DL 226.524 234.5 221.524 +234.5 DL 231.524 234.5 226.524 234.5 DL 236.524 234.5 231.524 234.5 DL +236.524 223.5 236.524 233.5 DL 225.526 223.5 220.526 223.5 DL 226.524 +223.5 221.524 223.5 DL 231.524 223.5 226.524 223.5 DL 236.524 223.5 +231.524 223.5 DL F0 -5.834 7.999(=1 7)194.722 232 T F3<ae>1.666 E F0 +(Change colors starting with highlight to)2.5 E F1(P)2.5 E F2(t)-2 3 M +F1(P)185 248 Q F2(s)-2 3 M 202.862 240.5 202.862 250.5 DL 202.862 239.5 +202.862 249.5 DL 218.86 240.5 218.86 250.5 DL 207.862 250.5 202.862 +250.5 DL 208.86 250.5 203.86 250.5 DL 213.86 250.5 208.86 250.5 DL +218.86 250.5 213.86 250.5 DL 218.86 239.5 218.86 249.5 DL 207.862 239.5 +202.862 239.5 DL 208.86 239.5 203.86 239.5 DL 213.86 239.5 208.86 239.5 +DL 218.86 239.5 213.86 239.5 DL 220.526 240.5 220.526 250.5 DL 220.526 +239.5 220.526 249.5 DL 236.524 240.5 236.524 250.5 DL 225.526 250.5 +220.526 250.5 DL 226.524 250.5 221.524 250.5 DL 231.524 250.5 226.524 +250.5 DL 236.524 250.5 231.524 250.5 DL 236.524 239.5 236.524 249.5 DL +225.526 239.5 220.526 239.5 DL 226.524 239.5 221.524 239.5 DL 231.524 +239.5 226.524 239.5 DL 236.524 239.5 231.524 239.5 DL F0 -5.834 7.999 +(=4 6)194.722 248 T F3<ae>1.666 E F0(Change Log File to)2.5 E F1(P)2.5 E +F2(t)-2 3 M F0(\(normally disabled by a compile-time option\))2.5 -3 M +F1(P)185 264 Q F2(s)-2 3 M 203.172 256.5 203.172 266.5 DL 203.172 255.5 +203.172 265.5 DL 219.17 256.5 219.17 266.5 DL 208.172 266.5 203.172 +266.5 DL 209.17 266.5 204.17 266.5 DL 214.17 266.5 209.17 266.5 DL +219.17 266.5 214.17 266.5 DL 219.17 255.5 219.17 265.5 DL 208.172 255.5 +203.172 255.5 DL 209.17 255.5 204.17 255.5 DL 214.17 255.5 209.17 255.5 +DL 219.17 255.5 214.17 255.5 DL 220.836 256.5 220.836 266.5 DL 220.836 +255.5 220.836 265.5 DL 236.834 256.5 236.834 266.5 DL 225.836 266.5 +220.836 266.5 DL 226.834 266.5 221.834 266.5 DL 231.834 266.5 226.834 +266.5 DL 236.834 266.5 231.834 266.5 DL 236.834 255.5 236.834 265.5 DL +225.836 255.5 220.836 255.5 DL 226.834 255.5 221.834 255.5 DL 231.834 +255.5 226.834 255.5 DL 236.834 255.5 231.834 255.5 DL F0 -6.144 8.154 +(=5 0)194.877 264 T F3<ae>1.666 E F0 .155(Set F)2.655 F .155(ont to)-.15 +F F1(P)2.655 E F2(t)-2 3 M F0(If)2.655 -3 M F1(P)2.655 E F2(t)-2 3 M F0 +(be)2.655 -3 M .155(gins with a "#", inde)-.15 F 2.654(xi)-.15 G 2.654 +(nt)-2.654 G .154(he font menu, relati)-2.654 F .454 -.15(ve \()-.25 H +(if).15 E 1.353(the ne)180 280 R 1.354 +(xt character is a plus or minus sign\) or absolute.)-.15 F 3.854(An) +6.354 G 1.354(umber is e)-3.854 F 1.354(xpected b)-.15 F 1.354(ut not) +-.2 F 1.967(required after the sign \(the def)180 296 R 1.967 +(ault is the current entry for relati)-.1 F -.15(ve)-.25 G 4.467(,z).15 +G 1.967(ero for absolute)-4.467 F(inde)180 312 Q(xing\).)-.15 E/F4 10 +/Times-Bold@0 SF(Pri)72 344 Q -.1(va)-.1 G(cy Message).1 E 72 352.5 72 +362.5 DL 72 351.5 72 361.5 DL 87.998 352.5 87.998 362.5 DL 77 362.5 72 +362.5 DL 77.998 362.5 72.998 362.5 DL 82.998 362.5 77.998 362.5 DL +87.998 362.5 82.998 362.5 DL 87.998 351.5 87.998 361.5 DL 77 351.5 72 +351.5 DL 77.998 351.5 72.998 351.5 DL 82.998 351.5 77.998 351.5 DL +87.998 351.5 82.998 351.5 DL/F5 6/Times-Roman@0 SF(PM)75.664 359 Q F1(P) +5.33 1 M 97.664 352.5 97.664 362.5 DL 97.664 351.5 97.664 361.5 DL F2(t) +93.774 363 Q 113.662 352.5 113.662 362.5 DL 102.664 362.5 97.664 362.5 +DL 103.662 362.5 98.662 362.5 DL 108.662 362.5 103.662 362.5 DL 113.662 +362.5 108.662 362.5 DL 113.662 351.5 113.662 361.5 DL 102.664 351.5 +97.664 351.5 DL 103.662 351.5 98.662 351.5 DL 108.662 351.5 103.662 +351.5 DL 113.662 351.5 108.662 351.5 DL F5(ST)102.162 359 Q F1(xterm) +70.836 1 M F0(implements no PM functions;)2.5 E F1(P)2.5 E F2(t)-2 3 M +F0(is ignored.)2.5 -3 M F1(P)5 E F2(t)-2 3 M F0 +(need not be printable characters.)2.5 -3 M F4(PC-Style Function K)72 +384 Q(eys)-.25 E F0(If)72 400.8 Q F1(xterm)3.528 E F0 1.029 +(does minimal translation of the function k)3.528 F -.15(ey)-.1 G 1.029 +(s, it usually does this with a PC-style k).15 F -.15(ey)-.1 G 1.029 +(board, so PC-style).15 F .295(function k)72 412.8 R -.15(ey)-.1 G 2.795 +(sr).15 G 2.795(esult. Sun)-2.795 F -.1(ke)2.795 G .294 +(yboards are similar to PC k)-.05 F -.15(ey)-.1 G 2.794(boards. Both).15 +F(ha)2.794 E .594 -.15(ve c)-.2 H .294 +(ursor and scrolling operations printed).15 F(on the k)72 424.8 Q -.15 +(ey)-.1 G(pad, which duplicate the smaller cursor and scrolling k).15 E +-.15(ey)-.1 G(pads.).15 E 2.707(Xd)72 441.6 S .207 +(oes not prede\214ne NumLock \(used for VT220 k)-2.707 F -.15(ey)-.1 G +.207(boards\) or Alt \(used as an e).15 F .208 +(xtension for the Sun/PC k)-.15 F -.15(ey)-.1 G(boards\)).15 E .556 +(as modi\214ers.)72 453.6 R .556(These k)5.556 F -.15(ey)-.1 G 3.056(sa) +.15 G .555(re recognized as modi\214ers when enabled by the)-3.056 F F4 +(numLock)3.055 E F0 .555(resource, or by the DECSET)3.055 F 72 458.1 72 +468.1 DL 72 457.1 72 467.1 DL 87.998 458.1 87.998 468.1 DL 77 468.1 72 +468.1 DL 77.998 468.1 72.998 468.1 DL 82.998 468.1 77.998 468.1 DL +87.998 468.1 82.998 468.1 DL 87.998 457.1 87.998 467.1 DL 77 457.1 72 +457.1 DL 77.998 457.1 72.998 457.1 DL 82.998 457.1 77.998 457.1 DL +87.998 457.1 82.998 457.1 DL 89.664 458.1 89.664 468.1 DL 89.664 457.1 +89.664 467.1 DL 105.662 458.1 105.662 468.1 DL 94.664 468.1 89.664 468.1 +DL 95.662 468.1 90.662 468.1 DL 100.662 468.1 95.662 468.1 DL 105.662 +468.1 100.662 468.1 DL 105.662 457.1 105.662 467.1 DL 94.664 457.1 +89.664 457.1 DL 95.662 457.1 90.662 457.1 DL 100.662 457.1 95.662 457.1 +DL 105.662 457.1 100.662 457.1 DL 107.328 458.1 107.328 468.1 DL 107.328 +457.1 107.328 467.1 DL 123.326 458.1 123.326 468.1 DL 112.328 468.1 +107.328 468.1 DL 113.326 468.1 108.326 468.1 DL 118.326 468.1 113.326 +468.1 DL 123.326 468.1 118.326 468.1 DL 123.326 457.1 123.326 467.1 DL +112.328 457.1 107.328 457.1 DL 113.326 457.1 108.326 457.1 DL 118.326 +457.1 113.326 457.1 DL 123.326 457.1 118.326 457.1 DL 124.992 458.1 +124.992 468.1 DL 124.992 457.1 124.992 467.1 DL 140.99 458.1 140.99 +468.1 DL 129.992 468.1 124.992 468.1 DL 130.99 468.1 125.99 468.1 DL +135.99 468.1 130.99 468.1 DL 140.99 468.1 135.99 468.1 DL 140.99 457.1 +140.99 467.1 DL 129.992 457.1 124.992 457.1 DL 130.99 457.1 125.99 457.1 +DL 135.99 457.1 130.99 457.1 DL 140.99 457.1 135.99 457.1 DL 12.664 +(1035)77.499 465.6 S(control sequence.)-2.999 E .016(The cursor k)72 +482.4 R -.15(ey)-.1 G 2.516(st).15 G .016(ransmit the follo)-2.516 F +.016(wing escape sequences depending on the mode speci\214ed via the) +-.25 F F4(DECCKM)2.517 E F0(escape)2.517 E(sequence.)72 494.4 Q 11.525 +(center; cf3)72 512.4 R 9.73(cf3 cf3)12.23 F 13.07 +(lf3w\(2c\) lf3w\(2c\) lf3w\(2c\))14.025 F 16.525(.K)14.025 G 6.54 -.15 +(ey N)-16.775 H 16.95(ormal Application).15 F 14.025(_C)14.025 G(ursor) +-14.025 E 92.28 516.9 92.28 526.9 DL 92.28 515.9 92.28 525.9 DL(Up)72 +524.4 Q 108.278 516.9 108.278 526.9 DL 97.28 526.9 92.28 526.9 DL 98.278 +526.9 93.278 526.9 DL 103.278 526.9 98.278 526.9 DL 108.278 526.9 +103.278 526.9 DL 108.278 515.9 108.278 525.9 DL 97.28 515.9 92.28 515.9 +DL 98.278 515.9 93.278 515.9 DL 103.278 515.9 98.278 515.9 DL 108.278 +515.9 103.278 515.9 DL 109.944 516.9 109.944 526.9 DL 109.944 515.9 +109.944 525.9 DL F5(CSI)95.611 523.4 Q 125.942 516.9 125.942 526.9 DL +114.944 526.9 109.944 526.9 DL 115.942 526.9 110.942 526.9 DL 120.942 +526.9 115.942 526.9 DL 125.942 526.9 120.942 526.9 DL 125.942 515.9 +125.942 525.9 DL 114.944 515.9 109.944 515.9 DL 115.942 515.9 110.942 +515.9 DL 120.942 515.9 115.942 515.9 DL 125.942 515.9 120.942 515.9 DL +142.28 516.9 142.28 526.9 DL 142.28 515.9 142.28 525.9 DL F0(A)114.333 +524.4 Q 158.278 516.9 158.278 526.9 DL 147.28 526.9 142.28 526.9 DL +148.278 526.9 143.278 526.9 DL 153.278 526.9 148.278 526.9 DL 158.278 +526.9 153.278 526.9 DL 158.278 515.9 158.278 525.9 DL 147.28 515.9 +142.28 515.9 DL 148.278 515.9 143.278 515.9 DL 153.278 515.9 148.278 +515.9 DL 158.278 515.9 153.278 515.9 DL 159.944 516.9 159.944 526.9 DL +159.944 515.9 159.944 525.9 DL F5(SS3)145.443 523.4 Q 175.942 516.9 +175.942 526.9 DL 164.944 526.9 159.944 526.9 DL 165.942 526.9 160.942 +526.9 DL 170.942 526.9 165.942 526.9 DL 175.942 526.9 170.942 526.9 DL +175.942 515.9 175.942 525.9 DL 164.944 515.9 159.944 515.9 DL 165.942 +515.9 160.942 515.9 DL 170.942 515.9 165.942 515.9 DL 175.942 515.9 +170.942 515.9 DL F0 9.958(AC)164.333 524.4 S 1.403(ursor Do)-9.958 F +257.914 516.9 257.914 526.9 DL 257.914 515.9 257.914 525.9 DL(wn)224.604 +524.4 Q 273.912 516.9 273.912 526.9 DL 262.914 526.9 257.914 526.9 DL +263.912 526.9 258.912 526.9 DL 268.912 526.9 263.912 526.9 DL 273.912 +526.9 268.912 526.9 DL 273.912 515.9 273.912 525.9 DL 262.914 515.9 +257.914 515.9 DL 263.912 515.9 258.912 515.9 DL 268.912 515.9 263.912 +515.9 DL 273.912 515.9 268.912 515.9 DL 275.578 516.9 275.578 526.9 DL +275.578 515.9 275.578 525.9 DL F5(CSI)261.245 523.4 Q 291.576 516.9 +291.576 526.9 DL 280.578 526.9 275.578 526.9 DL 281.576 526.9 276.576 +526.9 DL 286.576 526.9 281.576 526.9 DL 291.576 526.9 286.576 526.9 DL +291.576 515.9 291.576 525.9 DL 280.578 515.9 275.578 515.9 DL 281.576 +515.9 276.576 515.9 DL 286.576 515.9 281.576 515.9 DL 291.576 515.9 +286.576 515.9 DL 307.914 516.9 307.914 526.9 DL 307.914 515.9 307.914 +525.9 DL F0(B)280.242 524.4 Q 323.912 516.9 323.912 526.9 DL 312.914 +526.9 307.914 526.9 DL 313.912 526.9 308.912 526.9 DL 318.912 526.9 +313.912 526.9 DL 323.912 526.9 318.912 526.9 DL 323.912 515.9 323.912 +525.9 DL 312.914 515.9 307.914 515.9 DL 313.912 515.9 308.912 515.9 DL +318.912 515.9 313.912 515.9 DL 323.912 515.9 318.912 515.9 DL 325.578 +516.9 325.578 526.9 DL 325.578 515.9 325.578 525.9 DL F5(SS3)311.077 +523.4 Q 341.576 516.9 341.576 526.9 DL 330.578 526.9 325.578 526.9 DL +331.576 526.9 326.576 526.9 DL 336.576 526.9 331.576 526.9 DL 341.576 +526.9 336.576 526.9 DL 341.576 515.9 341.576 525.9 DL 330.578 515.9 +325.578 515.9 DL 331.576 515.9 326.576 515.9 DL 336.576 515.9 331.576 +515.9 DL 341.576 515.9 336.576 515.9 DL F0 10.233(BC)330.242 524.4 S +423.548 516.9 423.548 526.9 DL 423.548 515.9 423.548 525.9 DL 1.403 +(ursor Right)353.815 524.4 R 439.546 516.9 439.546 526.9 DL 428.548 +526.9 423.548 526.9 DL 429.546 526.9 424.546 526.9 DL 434.546 526.9 +429.546 526.9 DL 439.546 526.9 434.546 526.9 DL 439.546 515.9 439.546 +525.9 DL 428.548 515.9 423.548 515.9 DL 429.546 515.9 424.546 515.9 DL +434.546 515.9 429.546 515.9 DL 439.546 515.9 434.546 515.9 DL 441.212 +516.9 441.212 526.9 DL 441.212 515.9 441.212 525.9 DL F5(CSI)426.879 +523.4 Q 457.21 516.9 457.21 526.9 DL 446.212 526.9 441.212 526.9 DL +447.21 526.9 442.21 526.9 DL 452.21 526.9 447.21 526.9 DL 457.21 526.9 +452.21 526.9 DL 457.21 515.9 457.21 525.9 DL 446.212 515.9 441.212 515.9 +DL 447.21 515.9 442.21 515.9 DL 452.21 515.9 447.21 515.9 DL 457.21 +515.9 452.21 515.9 DL 473.548 516.9 473.548 526.9 DL 473.548 515.9 +473.548 525.9 DL F0(C)445.876 524.4 Q 489.546 516.9 489.546 526.9 DL +478.548 526.9 473.548 526.9 DL 479.546 526.9 474.546 526.9 DL 484.546 +526.9 479.546 526.9 DL 489.546 526.9 484.546 526.9 DL 489.546 515.9 +489.546 525.9 DL 478.548 515.9 473.548 515.9 DL 479.546 515.9 474.546 +515.9 DL 484.546 515.9 479.546 515.9 DL 489.546 515.9 484.546 515.9 DL +491.212 516.9 491.212 526.9 DL 491.212 515.9 491.212 525.9 DL F5(SS3) +476.711 523.4 Q 507.21 516.9 507.21 526.9 DL 496.212 526.9 491.212 526.9 +DL 497.21 526.9 492.21 526.9 DL 502.21 526.9 497.21 526.9 DL 507.21 +526.9 502.21 526.9 DL 507.21 515.9 507.21 525.9 DL 496.212 515.9 491.212 +515.9 DL 497.21 515.9 492.21 515.9 DL 502.21 515.9 497.21 515.9 DL +507.21 515.9 502.21 515.9 DL F0 10.234(CC)495.876 524.4 S(ursor)-10.234 +E 92.28 528.9 92.28 538.9 DL 92.28 527.9 92.28 537.9 DL(Left)72 536.4 Q +108.278 528.9 108.278 538.9 DL 97.28 538.9 92.28 538.9 DL 98.278 538.9 +93.278 538.9 DL 103.278 538.9 98.278 538.9 DL 108.278 538.9 103.278 +538.9 DL 108.278 527.9 108.278 537.9 DL 97.28 527.9 92.28 527.9 DL +98.278 527.9 93.278 527.9 DL 103.278 527.9 98.278 527.9 DL 108.278 527.9 +103.278 527.9 DL 109.944 528.9 109.944 538.9 DL 109.944 527.9 109.944 +537.9 DL F5(CSI)95.611 535.4 Q 125.942 528.9 125.942 538.9 DL 114.944 +538.9 109.944 538.9 DL 115.942 538.9 110.942 538.9 DL 120.942 538.9 +115.942 538.9 DL 125.942 538.9 120.942 538.9 DL 125.942 527.9 125.942 +537.9 DL 114.944 527.9 109.944 527.9 DL 115.942 527.9 110.942 527.9 DL +120.942 527.9 115.942 527.9 DL 125.942 527.9 120.942 527.9 DL 137.764 +528.9 137.764 538.9 DL 137.764 527.9 137.764 537.9 DL F0(D)114.333 536.4 +Q 153.762 528.9 153.762 538.9 DL 142.764 538.9 137.764 538.9 DL 143.762 +538.9 138.762 538.9 DL 148.762 538.9 143.762 538.9 DL 153.762 538.9 +148.762 538.9 DL 153.762 527.9 153.762 537.9 DL 142.764 527.9 137.764 +527.9 DL 143.762 527.9 138.762 527.9 DL 148.762 527.9 143.762 527.9 DL +153.762 527.9 148.762 527.9 DL 155.428 528.9 155.428 538.9 DL 155.428 +527.9 155.428 537.9 DL F5(SS3)140.927 535.4 Q 171.426 528.9 171.426 +538.9 DL 160.428 538.9 155.428 538.9 DL 161.426 538.9 156.426 538.9 DL +166.426 538.9 161.426 538.9 DL 171.426 538.9 166.426 538.9 DL 171.426 +527.9 171.426 537.9 DL 160.428 527.9 155.428 527.9 DL 161.426 527.9 +156.426 527.9 DL 166.426 527.9 161.426 527.9 DL 171.426 527.9 166.426 +527.9 DL F0(D)159.817 536.4 Q 3.113(The application k)72 559.2 R -.15 +(ey)-.1 G 3.112(pad transmits the follo).15 F 3.112 +(wing escape sequences depending on the mode speci\214ed via the)-.25 F +F4(DECPNM)72 571.2 Q F0(and)2.5 E F4(DECP)2.5 E(AM)-.74 E F0 +(escape sequences.)2.5 E(Use the NumLock k)5 E .3 -.15(ey t)-.1 H 2.5 +(oo).15 G -.15(ve)-2.65 G(rride the application mode.).15 E(Not all k)72 +588 Q -.15(ey)-.1 G 2.5(sa).15 G(re present on the Sun/PC k)-2.5 E -.15 +(ey)-.1 G(pad \(e.g., PF1, T).15 E(ab\), b)-.8 E +(ut are supported by the program.)-.2 E 27.863(center; cf3)72 606 R 9.73 +(cf3 cf3 cf3 cf3)12.23 F 13.07 +(lf3w\(2c\) lf3w\(2c\) lf3w\(2c\) lf3w\(2c\) lf3w\(2c\))30.363 F(.) +30.364 E -2.15 -.25(Ke y)72 618 T 12.51(Numeric Application)8.99 F -.7 +(Te)2.78 G 10.43(rminfo T).7 F 436.67 610.5 436.67 620.5 DL 436.67 609.5 +436.67 619.5 DL 59.915(ermcap _ Space)252.41 618 R 452.668 610.5 452.668 +620.5 DL 441.67 620.5 436.67 620.5 DL 442.668 620.5 437.668 620.5 DL +447.668 620.5 442.668 620.5 DL 452.668 620.5 447.668 620.5 DL 452.668 +609.5 452.668 619.5 DL 441.67 609.5 436.67 609.5 DL 442.668 609.5 +437.668 609.5 DL 447.668 609.5 442.668 609.5 DL 452.668 609.5 447.668 +609.5 DL 461.67 610.5 461.67 620.5 DL 461.67 609.5 461.67 619.5 DL +477.668 610.5 477.668 620.5 DL 466.67 620.5 461.67 620.5 DL 467.668 +620.5 462.668 620.5 DL 472.668 620.5 467.668 620.5 DL 477.668 620.5 +472.668 620.5 DL 477.668 609.5 477.668 619.5 DL 466.67 609.5 461.67 +609.5 DL 467.668 609.5 462.668 609.5 DL 472.668 609.5 467.668 609.5 DL +477.668 609.5 472.668 609.5 DL 479.334 610.5 479.334 620.5 DL 479.334 +609.5 479.334 619.5 DL F5 15.328(SP SS3)441.333 617 R 495.332 610.5 +495.332 620.5 DL 484.334 620.5 479.334 620.5 DL 485.332 620.5 480.332 +620.5 DL 490.332 620.5 485.332 620.5 DL 495.332 620.5 490.332 620.5 DL +495.332 609.5 495.332 619.5 DL 484.334 609.5 479.334 609.5 DL 485.332 +609.5 480.332 609.5 DL 490.332 609.5 485.332 609.5 DL 495.332 609.5 +490.332 609.5 DL(SP)483.997 617 Q F0 21.67(--)21.001 1 O -.8(Ta)72 630 S +97 622.5 97 632.5 DL 97 621.5 97 631.5 DL(b)81.75 630 Q F5 -.558(TA) +12.528 -1 O 112.998 622.5 112.998 632.5 DL 102 632.5 97 632.5 DL 102.998 +632.5 97.998 632.5 DL 107.998 632.5 102.998 632.5 DL 112.998 632.5 +107.998 632.5 DL 112.998 621.5 112.998 631.5 DL 102 621.5 97 621.5 DL +102.998 621.5 97.998 621.5 DL 107.998 621.5 102.998 621.5 DL 112.998 +621.5 107.998 621.5 DL 122 622.5 122 632.5 DL 122 621.5 122 631.5 DL +14.443(BS)106.718 629 S 137.998 622.5 137.998 632.5 DL 127 632.5 122 +632.5 DL 127.998 632.5 122.998 632.5 DL 132.998 632.5 127.998 632.5 DL +137.998 632.5 132.998 632.5 DL 137.998 621.5 137.998 631.5 DL 127 621.5 +122 621.5 DL 127.998 621.5 122.998 621.5 DL 132.998 621.5 127.998 621.5 +DL 137.998 621.5 132.998 621.5 DL 139.664 622.5 139.664 632.5 DL 139.664 +621.5 139.664 631.5 DL(S3)128.499 629 Q 155.662 622.5 155.662 632.5 DL +144.664 632.5 139.664 632.5 DL 145.662 632.5 140.662 632.5 DL 150.662 +632.5 145.662 632.5 DL 155.662 632.5 150.662 632.5 DL 155.662 621.5 +155.662 631.5 DL 144.664 621.5 139.664 621.5 DL 145.662 621.5 140.662 +621.5 DL 150.662 621.5 145.662 621.5 DL 155.662 621.5 150.662 621.5 DL +F0 22.672(I-)145.998 630 S 20.23(-E)-1.002 G 245.56 622.5 245.56 632.5 +DL 245.56 621.5 245.56 631.5 DL(nter)226.67 630 Q 261.558 622.5 261.558 +632.5 DL 250.56 632.5 245.56 632.5 DL 251.558 632.5 246.558 632.5 DL +256.558 632.5 251.558 632.5 DL 261.558 632.5 256.558 632.5 DL 261.558 +621.5 261.558 631.5 DL 250.56 621.5 245.56 621.5 DL 251.558 621.5 +246.558 621.5 DL 256.558 621.5 251.558 621.5 DL 261.558 621.5 256.558 +621.5 DL 270.56 622.5 270.56 632.5 DL 270.56 621.5 270.56 631.5 DL +286.558 622.5 286.558 632.5 DL 275.56 632.5 270.56 632.5 DL 276.558 +632.5 271.558 632.5 DL 281.558 632.5 276.558 632.5 DL 286.558 632.5 +281.558 632.5 DL 286.558 621.5 286.558 631.5 DL 275.56 621.5 270.56 +621.5 DL 276.558 621.5 271.558 621.5 DL 281.558 621.5 276.558 621.5 DL +286.558 621.5 281.558 621.5 DL 288.224 622.5 288.224 632.5 DL 288.224 +621.5 288.224 631.5 DL F5 14.662(CR SS3)249.557 629 R 304.222 622.5 +304.222 632.5 DL 293.224 632.5 288.224 632.5 DL 294.222 632.5 289.222 +632.5 DL 299.222 632.5 294.222 632.5 DL 304.222 632.5 299.222 632.5 DL +304.222 621.5 304.222 631.5 DL 293.224 621.5 288.224 621.5 DL 294.222 +621.5 289.222 621.5 DL 299.222 621.5 294.222 621.5 DL 304.222 621.5 +299.222 621.5 DL F0 19.892(Mk)291.778 630 S 5.38(ent @8)-19.992 F 405 +622.5 405 632.5 DL 405 621.5 405 631.5 DL(PF1)380 630 Q 420.998 622.5 +420.998 632.5 DL 410 632.5 405 632.5 DL 410.998 632.5 405.998 632.5 DL +415.998 632.5 410.998 632.5 DL 420.998 632.5 415.998 632.5 DL 420.998 +621.5 420.998 631.5 DL 410 621.5 405 621.5 DL 410.998 621.5 405.998 +621.5 DL 415.998 621.5 410.998 621.5 DL 420.998 621.5 415.998 621.5 DL +422.664 622.5 422.664 632.5 DL 422.664 621.5 422.664 631.5 DL F5(SS3) +408.163 629 Q 438.662 622.5 438.662 632.5 DL 427.664 632.5 422.664 632.5 +DL 428.662 632.5 423.662 632.5 DL 433.662 632.5 428.662 632.5 DL 438.662 +632.5 433.662 632.5 DL 438.662 621.5 438.662 631.5 DL 427.664 621.5 +422.664 621.5 DL 428.662 621.5 423.662 621.5 DL 433.662 621.5 428.662 +621.5 DL 438.662 621.5 433.662 621.5 DL 455 622.5 455 632.5 DL 455 621.5 +455 631.5 DL F0(P)427.883 630 Q 470.998 622.5 470.998 632.5 DL 460 632.5 +455 632.5 DL 460.998 632.5 455.998 632.5 DL 465.998 632.5 460.998 632.5 +DL 470.998 632.5 465.998 632.5 DL 470.998 621.5 470.998 631.5 DL 460 +621.5 455 621.5 DL 460.998 621.5 455.998 621.5 DL 465.998 621.5 460.998 +621.5 DL 470.998 621.5 465.998 621.5 DL 472.664 622.5 472.664 632.5 DL +472.664 621.5 472.664 631.5 DL F5(SS3)458.163 629 Q 488.662 622.5 +488.662 632.5 DL 477.664 632.5 472.664 632.5 DL 478.662 632.5 473.662 +632.5 DL 483.662 632.5 478.662 632.5 DL 488.662 632.5 483.662 632.5 DL +488.662 621.5 488.662 631.5 DL 477.664 621.5 472.664 621.5 DL 478.662 +621.5 473.662 621.5 DL 483.662 621.5 478.662 621.5 DL 488.662 621.5 +483.662 621.5 DL F0 21.557(Pk)477.883 630 S 9.17(f1 k1)-21.557 F 97 +634.5 97 644.5 DL 97 633.5 97 643.5 DL(PF2)72 642 Q 112.998 634.5 +112.998 644.5 DL 102 644.5 97 644.5 DL 102.998 644.5 97.998 644.5 DL +107.998 644.5 102.998 644.5 DL 112.998 644.5 107.998 644.5 DL 112.998 +633.5 112.998 643.5 DL 102 633.5 97 633.5 DL 102.998 633.5 97.998 633.5 +DL 107.998 633.5 102.998 633.5 DL 112.998 633.5 107.998 633.5 DL 114.664 +634.5 114.664 644.5 DL 114.664 633.5 114.664 643.5 DL F5(SS3)100.163 641 +Q 130.662 634.5 130.662 644.5 DL 119.664 644.5 114.664 644.5 DL 120.662 +644.5 115.662 644.5 DL 125.662 644.5 120.662 644.5 DL 130.662 644.5 +125.662 644.5 DL 130.662 633.5 130.662 643.5 DL 119.664 633.5 114.664 +633.5 DL 120.662 633.5 115.662 633.5 DL 125.662 633.5 120.662 633.5 DL +130.662 633.5 125.662 633.5 DL 139.04 634.5 139.04 644.5 DL 139.04 633.5 +139.04 643.5 DL F0(Q)119.053 642 Q 155.038 634.5 155.038 644.5 DL 144.04 +644.5 139.04 644.5 DL 145.038 644.5 140.038 644.5 DL 150.038 644.5 +145.038 644.5 DL 155.038 644.5 150.038 644.5 DL 155.038 633.5 155.038 +643.5 DL 144.04 633.5 139.04 633.5 DL 145.038 633.5 140.038 633.5 DL +150.038 633.5 145.038 633.5 DL 155.038 633.5 150.038 633.5 DL 156.704 +634.5 156.704 644.5 DL 156.704 633.5 156.704 643.5 DL F5(SS3)142.203 641 +Q 172.702 634.5 172.702 644.5 DL 161.704 644.5 156.704 644.5 DL 162.702 +644.5 157.702 644.5 DL 167.702 644.5 162.702 644.5 DL 172.702 644.5 +167.702 644.5 DL 172.702 633.5 172.702 643.5 DL 161.704 633.5 156.704 +633.5 DL 162.702 633.5 157.702 633.5 DL 167.702 633.5 162.702 633.5 DL +172.702 633.5 167.702 633.5 DL F0 20.727(Qk)161.093 642 S 9.17(f2 k2) +-20.727 F 405 634.5 405 644.5 DL 405 633.5 405 643.5 DL(PF3)380 642 Q +420.998 634.5 420.998 644.5 DL 410 644.5 405 644.5 DL 410.998 644.5 +405.998 644.5 DL 415.998 644.5 410.998 644.5 DL 420.998 644.5 415.998 +644.5 DL 420.998 633.5 420.998 643.5 DL 410 633.5 405 633.5 DL 410.998 +633.5 405.998 633.5 DL 415.998 633.5 410.998 633.5 DL 420.998 633.5 +415.998 633.5 DL 422.664 634.5 422.664 644.5 DL 422.664 633.5 422.664 +643.5 DL F5(SS3)408.163 641 Q 438.662 634.5 438.662 644.5 DL 427.664 +644.5 422.664 644.5 DL 428.662 644.5 423.662 644.5 DL 433.662 644.5 +428.662 644.5 DL 438.662 644.5 433.662 644.5 DL 438.662 633.5 438.662 +643.5 DL 427.664 633.5 422.664 633.5 DL 428.662 633.5 423.662 633.5 DL +433.662 633.5 428.662 633.5 DL 438.662 633.5 433.662 633.5 DL 455 634.5 +455 644.5 DL 455 633.5 455 643.5 DL F0(R)427.328 642 Q 470.998 634.5 +470.998 644.5 DL 460 644.5 455 644.5 DL 460.998 644.5 455.998 644.5 DL +465.998 644.5 460.998 644.5 DL 470.998 644.5 465.998 644.5 DL 470.998 +633.5 470.998 643.5 DL 460 633.5 455 633.5 DL 460.998 633.5 455.998 +633.5 DL 465.998 633.5 460.998 633.5 DL 470.998 633.5 465.998 633.5 DL +472.664 634.5 472.664 644.5 DL 472.664 633.5 472.664 643.5 DL F5(SS3) +458.163 641 Q 488.662 634.5 488.662 644.5 DL 477.664 644.5 472.664 644.5 +DL 478.662 644.5 473.662 644.5 DL 483.662 644.5 478.662 644.5 DL 488.662 +644.5 483.662 644.5 DL 488.662 633.5 488.662 643.5 DL 477.664 633.5 +472.664 633.5 DL 478.662 633.5 473.662 633.5 DL 483.662 633.5 478.662 +633.5 DL 488.662 633.5 483.662 633.5 DL F0 21.002(Rk)477.328 642 S 9.17 +(f3 k3)-21.002 F 97 646.5 97 656.5 DL 97 645.5 97 655.5 DL(PF4)72 654 Q +112.998 646.5 112.998 656.5 DL 102 656.5 97 656.5 DL 102.998 656.5 +97.998 656.5 DL 107.998 656.5 102.998 656.5 DL 112.998 656.5 107.998 +656.5 DL 112.998 645.5 112.998 655.5 DL 102 645.5 97 645.5 DL 102.998 +645.5 97.998 645.5 DL 107.998 645.5 102.998 645.5 DL 112.998 645.5 +107.998 645.5 DL 114.664 646.5 114.664 656.5 DL 114.664 645.5 114.664 +655.5 DL F5(SS3)100.163 653 Q 130.662 646.5 130.662 656.5 DL 119.664 +656.5 114.664 656.5 DL 120.662 656.5 115.662 656.5 DL 125.662 656.5 +120.662 656.5 DL 130.662 656.5 125.662 656.5 DL 130.662 645.5 130.662 +655.5 DL 119.664 645.5 114.664 645.5 DL 120.662 645.5 115.662 645.5 DL +125.662 645.5 120.662 645.5 DL 130.662 645.5 125.662 645.5 DL 147 646.5 +147 656.5 DL 147 645.5 147 655.5 DL F0(S)119.883 654 Q 162.998 646.5 +162.998 656.5 DL 152 656.5 147 656.5 DL 152.998 656.5 147.998 656.5 DL +157.998 656.5 152.998 656.5 DL 162.998 656.5 157.998 656.5 DL 162.998 +645.5 162.998 655.5 DL 152 645.5 147 645.5 DL 152.998 645.5 147.998 +645.5 DL 157.998 645.5 152.998 645.5 DL 162.998 645.5 157.998 645.5 DL +164.664 646.5 164.664 656.5 DL 164.664 645.5 164.664 655.5 DL F5(SS3) +150.163 653 Q 180.662 646.5 180.662 656.5 DL 169.664 656.5 164.664 656.5 +DL 170.662 656.5 165.662 656.5 DL 175.662 656.5 170.662 656.5 DL 180.662 +656.5 175.662 656.5 DL 180.662 645.5 180.662 655.5 DL 169.664 645.5 +164.664 645.5 DL 170.662 645.5 165.662 645.5 DL 175.662 645.5 170.662 +645.5 DL 180.662 645.5 175.662 645.5 DL F0 21.557(Sk)169.883 654 S 9.17 +(f4 k4)-21.557 F 50.51(*\()50.51 G 405.52 646.5 405.52 656.5 DL 405.52 +645.5 405.52 655.5 DL -.56(multiply\) *)341.35 654 R 421.518 646.5 +421.518 656.5 DL 410.52 656.5 405.52 656.5 DL 411.518 656.5 406.518 +656.5 DL 416.518 656.5 411.518 656.5 DL 421.518 656.5 416.518 656.5 DL +421.518 645.5 421.518 655.5 DL 410.52 645.5 405.52 645.5 DL 411.518 +645.5 406.518 645.5 DL 416.518 645.5 411.518 645.5 DL 421.518 645.5 +416.518 645.5 DL 423.184 646.5 423.184 656.5 DL 423.184 645.5 423.184 +655.5 DL F5(SS3)408.683 653 Q 439.182 646.5 439.182 656.5 DL 428.184 +656.5 423.184 656.5 DL 429.182 656.5 424.182 656.5 DL 434.182 656.5 +429.182 656.5 DL 439.182 656.5 434.182 656.5 DL 439.182 645.5 439.182 +655.5 DL 428.184 645.5 423.184 645.5 DL 429.182 645.5 424.182 645.5 DL +434.182 645.5 429.182 645.5 DL 439.182 645.5 434.182 645.5 DL F0 22.947 +(j-)429.793 654 S 50.51(-+)-1.277 G 138.86 658.5 138.86 668.5 DL 138.86 +657.5 138.86 667.5 DL 18.26(\(add\) +)72 666 R 154.858 658.5 154.858 +668.5 DL 143.86 668.5 138.86 668.5 DL 144.858 668.5 139.858 668.5 DL +149.858 668.5 144.858 668.5 DL 154.858 668.5 149.858 668.5 DL 154.858 +657.5 154.858 667.5 DL 143.86 657.5 138.86 657.5 DL 144.858 657.5 +139.858 657.5 DL 149.858 657.5 144.858 657.5 DL 154.858 657.5 149.858 +657.5 DL 156.524 658.5 156.524 668.5 DL 156.524 657.5 156.524 667.5 DL +F5(SS3)142.023 665 Q 172.522 658.5 172.522 668.5 DL 161.524 668.5 +156.524 668.5 DL 162.522 668.5 157.522 668.5 DL 167.522 668.5 162.522 +668.5 DL 172.522 668.5 167.522 668.5 DL 172.522 657.5 172.522 667.5 DL +161.524 657.5 156.524 657.5 DL 162.522 657.5 157.522 657.5 DL 167.522 +657.5 162.522 657.5 DL 172.522 657.5 167.522 657.5 DL F0 21.837(k-) +162.023 666 S 3.674(-,\()-.167 G 297.038 658.5 297.038 668.5 DL 297.038 +657.5 297.038 667.5 DL 6.4(comma\) ,)230.368 666 R 313.036 658.5 313.036 +668.5 DL 302.038 668.5 297.038 668.5 DL 303.036 668.5 298.036 668.5 DL +308.036 668.5 303.036 668.5 DL 313.036 668.5 308.036 668.5 DL 313.036 +657.5 313.036 667.5 DL 302.038 657.5 297.038 657.5 DL 303.036 657.5 +298.036 657.5 DL 308.036 657.5 303.036 657.5 DL 313.036 657.5 308.036 +657.5 DL 314.702 658.5 314.702 668.5 DL 314.702 657.5 314.702 667.5 DL +F5(SS3)300.201 665 Q 330.7 658.5 330.7 668.5 DL 319.702 668.5 314.702 +668.5 DL 320.7 668.5 315.7 668.5 DL 325.7 668.5 320.7 668.5 DL 330.7 +668.5 325.7 668.5 DL 330.7 657.5 330.7 667.5 DL 319.702 657.5 314.702 +657.5 DL 320.7 657.5 315.7 657.5 DL 325.7 657.5 320.7 657.5 DL 330.7 +657.5 325.7 657.5 DL F0 22.947(l-)321.311 666 S 3.674(--\()-1.277 G +455.216 658.5 455.216 668.5 DL 455.216 657.5 455.216 667.5 DL 10.56 +(minus\) -)389.376 666 R 471.214 658.5 471.214 668.5 DL 460.216 668.5 +455.216 668.5 DL 461.214 668.5 456.214 668.5 DL 466.214 668.5 461.214 +668.5 DL 471.214 668.5 466.214 668.5 DL 471.214 657.5 471.214 667.5 DL +460.216 657.5 455.216 657.5 DL 461.214 657.5 456.214 657.5 DL 466.214 +657.5 461.214 657.5 DL 471.214 657.5 466.214 657.5 DL 472.88 658.5 +472.88 668.5 DL 472.88 657.5 472.88 667.5 DL F5(SS3)458.379 665 Q +488.878 658.5 488.878 668.5 DL 477.88 668.5 472.88 668.5 DL 478.878 +668.5 473.878 668.5 DL 483.878 668.5 478.878 668.5 DL 488.878 668.5 +483.878 668.5 DL 488.878 657.5 488.878 667.5 DL 477.88 657.5 472.88 +657.5 DL 478.878 657.5 473.878 657.5 DL 483.878 657.5 478.878 657.5 DL +488.878 657.5 483.878 657.5 DL F0 -21.724 20.447(m- -)476.989 666 T(/) +-16.773 E(\(di)72 678 Q 141.72 670.5 141.72 680.5 DL 141.72 669.5 141.72 +679.5 DL 10.81(vide\) /)82.86 678 R 157.718 670.5 157.718 680.5 DL +146.72 680.5 141.72 680.5 DL 147.718 680.5 142.718 680.5 DL 152.718 +680.5 147.718 680.5 DL 157.718 680.5 152.718 680.5 DL 157.718 669.5 +157.718 679.5 DL 146.72 669.5 141.72 669.5 DL 147.718 669.5 142.718 +669.5 DL 152.718 669.5 147.718 669.5 DL 157.718 669.5 152.718 669.5 DL +159.384 670.5 159.384 680.5 DL 159.384 669.5 159.384 679.5 DL F5(SS3) +144.883 677 Q 175.382 670.5 175.382 680.5 DL 164.384 680.5 159.384 680.5 +DL 165.382 680.5 160.382 680.5 DL 170.382 680.5 165.382 680.5 DL 175.382 +680.5 170.382 680.5 DL 175.382 669.5 175.382 679.5 DL 164.384 669.5 +159.384 669.5 DL 165.382 669.5 160.382 669.5 DL 170.382 669.5 165.382 +669.5 DL 175.382 669.5 170.382 669.5 DL F0 -17.764 18.467(o- -)164.883 +678 T 47.497(0\()29.029 G 384.173 670.5 384.173 680.5 DL 384.173 669.5 +384.173 679.5 DL 10.57(Insert\) 0)320.003 678 R 400.171 670.5 400.171 +680.5 DL 389.173 680.5 384.173 680.5 DL 390.171 680.5 385.171 680.5 DL +395.171 680.5 390.171 680.5 DL 400.171 680.5 395.171 680.5 DL 400.171 +669.5 400.171 679.5 DL 389.173 669.5 384.173 669.5 DL 390.171 669.5 +385.171 669.5 DL 395.171 669.5 390.171 669.5 DL 400.171 669.5 395.171 +669.5 DL 401.837 670.5 401.837 680.5 DL 401.837 669.5 401.837 679.5 DL +F5(CSI)387.504 677 Q 417.835 670.5 417.835 680.5 DL 406.837 680.5 +401.837 680.5 DL 407.835 680.5 402.835 680.5 DL 412.835 680.5 407.835 +680.5 DL 417.835 680.5 412.835 680.5 DL 417.835 669.5 417.835 679.5 DL +406.837 669.5 401.837 669.5 DL 407.835 669.5 402.835 669.5 DL 412.835 +669.5 407.835 669.5 DL 417.835 669.5 412.835 669.5 DL 419.501 670.5 +419.501 680.5 DL 419.501 669.5 419.501 679.5 DL 435.499 670.5 435.499 +680.5 DL 424.501 680.5 419.501 680.5 DL 425.499 680.5 420.499 680.5 DL +430.499 680.5 425.499 680.5 DL 435.499 680.5 430.499 680.5 DL 435.499 +669.5 435.499 679.5 DL 424.501 669.5 419.501 669.5 DL 425.499 669.5 +420.499 669.5 DL 430.499 669.5 425.499 669.5 DL 435.499 669.5 430.499 +669.5 DL F0 .51 13.499(2~ -)407.336 678 T 47.497(-1)8.171 G 139.5 682.5 +139.5 692.5 DL 139.5 681.5 139.5 691.5 DL 17.23(\(End\) 1)72 690 R +155.498 682.5 155.498 692.5 DL 144.5 692.5 139.5 692.5 DL 145.498 692.5 +140.498 692.5 DL 150.498 692.5 145.498 692.5 DL 155.498 692.5 150.498 +692.5 DL 155.498 681.5 155.498 691.5 DL 144.5 681.5 139.5 681.5 DL +145.498 681.5 140.498 681.5 DL 150.498 681.5 145.498 681.5 DL 155.498 +681.5 150.498 681.5 DL 157.164 682.5 157.164 692.5 DL 157.164 681.5 +157.164 691.5 DL F5(CSI)142.831 689 Q 173.162 682.5 173.162 692.5 DL +162.164 692.5 157.164 692.5 DL 163.162 692.5 158.162 692.5 DL 168.162 +692.5 163.162 692.5 DL 173.162 692.5 168.162 692.5 DL 173.162 681.5 +173.162 691.5 DL 162.164 681.5 157.164 681.5 DL 163.162 681.5 158.162 +681.5 DL 168.162 681.5 163.162 681.5 DL 173.162 681.5 168.162 681.5 DL +174.828 682.5 174.828 692.5 DL 174.828 681.5 174.828 691.5 DL 190.826 +682.5 190.826 692.5 DL 179.828 692.5 174.828 692.5 DL 180.826 692.5 +175.826 692.5 DL 185.826 692.5 180.826 692.5 DL 190.826 692.5 185.826 +692.5 DL 190.826 681.5 190.826 691.5 DL 179.828 681.5 174.828 681.5 DL +180.826 681.5 175.826 681.5 DL 185.826 681.5 180.826 681.5 DL 190.826 +681.5 185.826 681.5 DL F0 .51 13.499(4~ k)162.663 690 T 8.06(c1 K4) +-13.499 F 35.817(2\()35.817 G(Do)-35.817 E(wnArro)-.25 E 420.854 682.5 +420.854 692.5 DL 420.854 681.5 420.854 691.5 DL 8.3(w\) 2)374.504 690 R +436.852 682.5 436.852 692.5 DL 425.854 692.5 420.854 692.5 DL 426.852 +692.5 421.852 692.5 DL 431.852 692.5 426.852 692.5 DL 436.852 692.5 +431.852 692.5 DL 436.852 681.5 436.852 691.5 DL 425.854 681.5 420.854 +681.5 DL 426.852 681.5 421.852 681.5 DL 431.852 681.5 426.852 681.5 DL +436.852 681.5 431.852 681.5 DL 438.518 682.5 438.518 692.5 DL 438.518 +681.5 438.518 691.5 DL F5(CSI)424.185 689 Q 454.516 682.5 454.516 692.5 +DL 443.518 692.5 438.518 692.5 DL 444.516 692.5 439.516 692.5 DL 449.516 +692.5 444.516 692.5 DL 454.516 692.5 449.516 692.5 DL 454.516 681.5 +454.516 691.5 DL 443.518 681.5 438.518 681.5 DL 444.516 681.5 439.516 +681.5 DL 449.516 681.5 444.516 681.5 DL 454.516 681.5 449.516 681.5 DL +F0 -22.834 21.002(B- -)443.182 690 T(3)14.814 E(\(P)72 702 Q(ageDo)-.15 +E 164.5 694.5 164.5 704.5 DL 164.5 693.5 164.5 703.5 DL 14.86(wn\) 3) +106.59 702 R 180.498 694.5 180.498 704.5 DL 169.5 704.5 164.5 704.5 DL +170.498 704.5 165.498 704.5 DL 175.498 704.5 170.498 704.5 DL 180.498 +704.5 175.498 704.5 DL 180.498 693.5 180.498 703.5 DL 169.5 693.5 164.5 +693.5 DL 170.498 693.5 165.498 693.5 DL 175.498 693.5 170.498 693.5 DL +180.498 693.5 175.498 693.5 DL 182.164 694.5 182.164 704.5 DL 182.164 +693.5 182.164 703.5 DL F5(CSI)167.831 701 Q 198.162 694.5 198.162 704.5 +DL 187.164 704.5 182.164 704.5 DL 188.162 704.5 183.162 704.5 DL 193.162 +704.5 188.162 704.5 DL 198.162 704.5 193.162 704.5 DL 198.162 693.5 +198.162 703.5 DL 187.164 693.5 182.164 693.5 DL 188.162 693.5 183.162 +693.5 DL 193.162 693.5 188.162 693.5 DL 198.162 693.5 193.162 693.5 DL +199.828 694.5 199.828 704.5 DL 199.828 693.5 199.828 703.5 DL 215.826 +694.5 215.826 704.5 DL 204.828 704.5 199.828 704.5 DL 205.826 704.5 +200.826 704.5 DL 210.826 704.5 205.826 704.5 DL 215.826 704.5 210.826 +704.5 DL 215.826 693.5 215.826 703.5 DL 204.828 693.5 199.828 693.5 DL +205.826 693.5 200.826 693.5 DL 210.826 693.5 205.826 693.5 DL 215.826 +693.5 210.826 693.5 DL F0 3.06 13.499(5~ k)187.663 702 T 8.06(c3 K5) +-13.499 F 26.633(4\()26.633 G(LeftArro)-26.633 E 430.036 694.5 430.036 +704.5 DL 430.036 693.5 430.036 703.5 DL 15.83(w\) 4)376.156 702 R +446.034 694.5 446.034 704.5 DL 435.036 704.5 430.036 704.5 DL 436.034 +704.5 431.034 704.5 DL 441.034 704.5 436.034 704.5 DL 446.034 704.5 +441.034 704.5 DL 446.034 693.5 446.034 703.5 DL 435.036 693.5 430.036 +693.5 DL 436.034 693.5 431.034 693.5 DL 441.034 693.5 436.034 693.5 DL +446.034 693.5 441.034 693.5 DL 447.7 694.5 447.7 704.5 DL 447.7 693.5 +447.7 703.5 DL F5(CSI)433.367 701 Q 463.698 694.5 463.698 704.5 DL 452.7 +704.5 447.7 704.5 DL 453.698 704.5 448.698 704.5 DL 458.698 704.5 +453.698 704.5 DL 463.698 704.5 458.698 704.5 DL 463.698 693.5 463.698 +703.5 DL 452.7 693.5 447.7 693.5 DL 453.698 693.5 448.698 693.5 DL +458.698 693.5 453.698 693.5 DL 463.698 693.5 458.698 693.5 DL F0 -22.284 +20.727(D- -)452.089 702 T(5)5.907 E(\(Be)72 714 Q 139.5 706.5 139.5 +716.5 DL 139.5 705.5 139.5 715.5 DL 9.6(gin\) 5)86.29 714 R 155.498 +706.5 155.498 716.5 DL 144.5 716.5 139.5 716.5 DL 145.498 716.5 140.498 +716.5 DL 150.498 716.5 145.498 716.5 DL 155.498 716.5 150.498 716.5 DL +155.498 705.5 155.498 715.5 DL 144.5 705.5 139.5 705.5 DL 145.498 705.5 +140.498 705.5 DL 150.498 705.5 145.498 705.5 DL 155.498 705.5 150.498 +705.5 DL 157.164 706.5 157.164 716.5 DL 157.164 705.5 157.164 715.5 DL +F5(CSI)142.831 713 Q 173.162 706.5 173.162 716.5 DL 162.164 716.5 +157.164 716.5 DL 163.162 716.5 158.162 716.5 DL 168.162 716.5 163.162 +716.5 DL 173.162 716.5 168.162 716.5 DL 173.162 705.5 173.162 715.5 DL +162.164 705.5 157.164 705.5 DL 163.162 705.5 158.162 705.5 DL 168.162 +705.5 163.162 705.5 DL 173.162 705.5 168.162 705.5 DL F0 26.382(Ek) +162.108 714 S 7.5(b2 K2)-26.382 F 42.45(6\()42.45 G(RightArro)-42.45 E +414.22 706.5 414.22 716.5 DL 414.22 705.5 414.22 715.5 DL 10.26(w\) 6) +365.91 714 R 430.218 706.5 430.218 716.5 DL 419.22 716.5 414.22 716.5 DL +420.218 716.5 415.218 716.5 DL 425.218 716.5 420.218 716.5 DL 430.218 +716.5 425.218 716.5 DL 430.218 705.5 430.218 715.5 DL 419.22 705.5 +414.22 705.5 DL 420.218 705.5 415.218 705.5 DL 425.218 705.5 420.218 +705.5 DL 430.218 705.5 425.218 705.5 DL 431.884 706.5 431.884 716.5 DL +431.884 705.5 431.884 715.5 DL F5(CSI)417.551 713 Q 447.882 706.5 +447.882 716.5 DL 436.884 716.5 431.884 716.5 DL 437.882 716.5 432.882 +716.5 DL 442.882 716.5 437.882 716.5 DL 447.882 716.5 442.882 716.5 DL +447.882 705.5 447.882 715.5 DL 436.884 705.5 431.884 705.5 DL 437.882 +705.5 432.882 705.5 DL 442.882 705.5 437.882 705.5 DL 447.882 705.5 +442.882 705.5 DL F0 -22.834 21.002(C- -)436.548 714 T(7)21.448 E 139.5 +718.5 139.5 728.5 DL 139.5 717.5 139.5 727.5 DL 8.9(\(Home\) 7)72 726 R +155.498 718.5 155.498 728.5 DL 144.5 728.5 139.5 728.5 DL 145.498 728.5 +140.498 728.5 DL 150.498 728.5 145.498 728.5 DL 155.498 728.5 150.498 +728.5 DL 155.498 717.5 155.498 727.5 DL 144.5 717.5 139.5 717.5 DL +145.498 717.5 140.498 717.5 DL 150.498 717.5 145.498 717.5 DL 155.498 +717.5 150.498 717.5 DL 157.164 718.5 157.164 728.5 DL 157.164 717.5 +157.164 727.5 DL F5(CSI)142.831 725 Q 173.162 718.5 173.162 728.5 DL +162.164 728.5 157.164 728.5 DL 163.162 728.5 158.162 728.5 DL 168.162 +728.5 163.162 728.5 DL 173.162 728.5 168.162 728.5 DL 173.162 717.5 +173.162 727.5 DL 162.164 717.5 157.164 717.5 DL 163.162 717.5 158.162 +717.5 DL 168.162 717.5 163.162 717.5 DL 173.162 717.5 168.162 717.5 DL +174.828 718.5 174.828 728.5 DL 174.828 717.5 174.828 727.5 DL 190.826 +718.5 190.826 728.5 DL 179.828 728.5 174.828 728.5 DL 180.826 728.5 +175.826 728.5 DL 185.826 728.5 180.826 728.5 DL 190.826 728.5 185.826 +728.5 DL 190.826 717.5 190.826 727.5 DL 179.828 717.5 174.828 717.5 DL +180.826 717.5 175.826 717.5 DL 185.826 717.5 180.826 717.5 DL 190.826 +717.5 185.826 717.5 DL F0 13.499(1~)162.663 726 S 8.06(ka1 K1)-.841 F +41.6(8\()41.6 G(UpArro)-41.6 E 415.07 718.5 415.07 728.5 DL 415.07 717.5 +415.07 727.5 DL 20.27(w\) 8)356.75 726 R 431.068 718.5 431.068 728.5 DL +420.07 728.5 415.07 728.5 DL 421.068 728.5 416.068 728.5 DL 426.068 +728.5 421.068 728.5 DL 431.068 728.5 426.068 728.5 DL 431.068 717.5 +431.068 727.5 DL 420.07 717.5 415.07 717.5 DL 421.068 717.5 416.068 +717.5 DL 426.068 717.5 421.068 717.5 DL 431.068 717.5 426.068 717.5 DL +432.734 718.5 432.734 728.5 DL 432.734 717.5 432.734 727.5 DL F5(CSI) +418.401 725 Q 448.732 718.5 448.732 728.5 DL 437.734 728.5 432.734 728.5 +DL 438.732 728.5 433.732 728.5 DL 443.732 728.5 438.732 728.5 DL 448.732 +728.5 443.732 728.5 DL 448.732 717.5 448.732 727.5 DL 437.734 717.5 +432.734 717.5 DL 438.732 717.5 433.732 717.5 DL 443.732 717.5 438.732 +717.5 DL 448.732 717.5 443.732 717.5 DL F0 -22.284 20.727(A- -)437.123 +726 T(9)20.873 E(14)301 768 Q EP +%%Page: 15 15 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 48 Q(Function K) +306.47 E -.15(ey)-.25 G(s).15 E(\(P)72 84 Q .4 LW 139.5 76.5 139.5 86.5 +DL 139.5 75.5 139.5 85.5 DL 1.83(ageUp\) 9)80.74 84 R 155.498 76.5 +155.498 86.5 DL 144.5 86.5 139.5 86.5 DL 145.498 86.5 140.498 86.5 DL +150.498 86.5 145.498 86.5 DL 155.498 86.5 150.498 86.5 DL 155.498 75.5 +155.498 85.5 DL 144.5 75.5 139.5 75.5 DL 145.498 75.5 140.498 75.5 DL +150.498 75.5 145.498 75.5 DL 155.498 75.5 150.498 75.5 DL 157.164 76.5 +157.164 86.5 DL 157.164 75.5 157.164 85.5 DL/F1 6/Times-Roman@0 SF(CSI) +142.831 83 Q 173.162 76.5 173.162 86.5 DL 162.164 86.5 157.164 86.5 DL +163.162 86.5 158.162 86.5 DL 168.162 86.5 163.162 86.5 DL 173.162 86.5 +168.162 86.5 DL 173.162 75.5 173.162 85.5 DL 162.164 75.5 157.164 75.5 +DL 163.162 75.5 158.162 75.5 DL 168.162 75.5 163.162 75.5 DL 173.162 +75.5 168.162 75.5 DL 174.828 76.5 174.828 86.5 DL 174.828 75.5 174.828 +85.5 DL 190.826 76.5 190.826 86.5 DL 179.828 86.5 174.828 86.5 DL +180.826 86.5 175.826 86.5 DL 185.826 86.5 180.826 86.5 DL 190.826 86.5 +185.826 86.5 DL 190.826 75.5 190.826 85.5 DL 179.828 75.5 174.828 75.5 +DL 180.826 75.5 175.826 75.5 DL 185.826 75.5 180.826 75.5 DL 190.826 +75.5 185.826 75.5 DL F0 -14.29 13.499(5~ k)162.663 84 T 8.06(a3 K3) +-13.499 F 2.5(=\()2.5 G 314.42 76.5 314.42 86.5 DL 314.42 75.5 314.42 +85.5 DL 11.04(equal\) =)250.89 84 R 330.418 76.5 330.418 86.5 DL 319.42 +86.5 314.42 86.5 DL 320.418 86.5 315.418 86.5 DL 325.418 86.5 320.418 +86.5 DL 330.418 86.5 325.418 86.5 DL 330.418 75.5 330.418 85.5 DL 319.42 +75.5 314.42 75.5 DL 320.418 75.5 315.418 75.5 DL 325.418 75.5 320.418 +75.5 DL 330.418 75.5 325.418 75.5 DL 332.084 76.5 332.084 86.5 DL +332.084 75.5 332.084 85.5 DL F1(SS3)317.583 83 Q 348.082 76.5 348.082 +86.5 DL 337.084 86.5 332.084 86.5 DL 338.082 86.5 333.082 86.5 DL +343.082 86.5 338.082 86.5 DL 348.082 86.5 343.082 86.5 DL 348.082 75.5 +348.082 85.5 DL 337.084 75.5 332.084 75.5 DL 338.082 75.5 333.082 75.5 +DL 343.082 75.5 338.082 75.5 DL 348.082 75.5 343.082 75.5 DL F0 -22.284 +20.727(X- -)336.473 84 T(The)72 102 Q 2.5(ya)-.15 G(lso pro)-2.5 E +(vide 12 function k)-.15 E -.15(ey)-.1 G(s, as well as a fe).15 E 2.5 +(wo)-.25 G(ther special-purpose k)-2.5 E -.15(ey)-.1 G(s.).15 E 1.497 +(center; cf3)72 120 R 1.497(cf3 lf3w\(2c\))12.23 F 1.496(lf3w\(2c\) .) +15.57 F -2.15 -.25(Ke y)6.496 H 376.024 112.5 376.024 122.5 DL 376.024 +111.5 376.024 121.5 DL 1.496(Escape Sequence _ F1)267.396 120 R 392.022 +112.5 392.022 122.5 DL 381.024 122.5 376.024 122.5 DL 382.022 122.5 +377.022 122.5 DL 387.022 122.5 382.022 122.5 DL 392.022 122.5 387.022 +122.5 DL 392.022 111.5 392.022 121.5 DL 381.024 111.5 376.024 111.5 DL +382.022 111.5 377.022 111.5 DL 387.022 111.5 382.022 111.5 DL 392.022 +111.5 387.022 111.5 DL 393.688 112.5 393.688 122.5 DL 393.688 111.5 +393.688 121.5 DL F1(SS3)379.187 119 Q 409.686 112.5 409.686 122.5 DL +398.688 122.5 393.688 122.5 DL 399.686 122.5 394.686 122.5 DL 404.686 +122.5 399.686 122.5 DL 409.686 122.5 404.686 122.5 DL 409.686 111.5 +409.686 121.5 DL 398.688 111.5 393.688 111.5 DL 399.686 111.5 394.686 +111.5 DL 404.686 111.5 399.686 111.5 DL 409.686 111.5 404.686 111.5 DL +F0 10.881(PF)398.907 120 S 440.348 112.5 440.348 122.5 DL 440.348 111.5 +440.348 121.5 DL(2)420.908 120 Q 456.346 112.5 456.346 122.5 DL 445.348 +122.5 440.348 122.5 DL 446.346 122.5 441.346 122.5 DL 451.346 122.5 +446.346 122.5 DL 456.346 122.5 451.346 122.5 DL 456.346 111.5 456.346 +121.5 DL 445.348 111.5 440.348 111.5 DL 446.346 111.5 441.346 111.5 DL +451.346 111.5 446.346 111.5 DL 456.346 111.5 451.346 111.5 DL 458.012 +112.5 458.012 122.5 DL 458.012 111.5 458.012 121.5 DL F1(SS3)443.511 119 +Q 474.01 112.5 474.01 122.5 DL 463.012 122.5 458.012 122.5 DL 464.01 +122.5 459.01 122.5 DL 469.01 122.5 464.01 122.5 DL 474.01 122.5 469.01 +122.5 DL 474.01 111.5 474.01 121.5 DL 463.012 111.5 458.012 111.5 DL +464.01 111.5 459.01 111.5 DL 469.01 111.5 464.01 111.5 DL 474.01 111.5 +469.01 111.5 DL F0 10.051(QF)462.401 120 S 504.672 112.5 504.672 122.5 +DL 504.672 111.5 504.672 121.5 DL(3)485.232 120 Q 520.67 112.5 520.67 +122.5 DL 509.672 122.5 504.672 122.5 DL 510.67 122.5 505.67 122.5 DL +515.67 122.5 510.67 122.5 DL 520.67 122.5 515.67 122.5 DL 520.67 111.5 +520.67 121.5 DL 509.672 111.5 504.672 111.5 DL 510.67 111.5 505.67 111.5 +DL 515.67 111.5 510.67 111.5 DL 520.67 111.5 515.67 111.5 DL 522.336 +112.5 522.336 122.5 DL 522.336 111.5 522.336 121.5 DL F1(SS3)507.835 119 +Q 538.334 112.5 538.334 122.5 DL 527.336 122.5 522.336 122.5 DL 528.334 +122.5 523.334 122.5 DL 533.334 122.5 528.334 122.5 DL 538.334 122.5 +533.334 122.5 DL 538.334 111.5 538.334 121.5 DL 527.336 111.5 522.336 +111.5 DL 528.334 111.5 523.334 111.5 DL 533.334 111.5 528.334 111.5 DL +538.334 111.5 533.334 111.5 DL F0(R)527 120 Q 97 124.5 97 134.5 DL 97 +123.5 97 133.5 DL(F4)72 132 Q 112.998 124.5 112.998 134.5 DL 102 134.5 +97 134.5 DL 102.998 134.5 97.998 134.5 DL 107.998 134.5 102.998 134.5 DL +112.998 134.5 107.998 134.5 DL 112.998 123.5 112.998 133.5 DL 102 123.5 +97 123.5 DL 102.998 123.5 97.998 123.5 DL 107.998 123.5 102.998 123.5 DL +112.998 123.5 107.998 123.5 DL 114.664 124.5 114.664 134.5 DL 114.664 +123.5 114.664 133.5 DL F1(SS3)100.163 131 Q 130.662 124.5 130.662 134.5 +DL 119.664 134.5 114.664 134.5 DL 120.662 134.5 115.662 134.5 DL 125.662 +134.5 120.662 134.5 DL 130.662 134.5 125.662 134.5 DL 130.662 123.5 +130.662 133.5 DL 119.664 123.5 114.664 123.5 DL 120.662 123.5 115.662 +123.5 DL 125.662 123.5 120.662 123.5 DL 130.662 123.5 125.662 123.5 DL +F0 13.147(SF)119.883 132 S 163.59 124.5 163.59 134.5 DL 163.59 123.5 +163.59 133.5 DL(5)144.15 132 Q 179.588 124.5 179.588 134.5 DL 168.59 +134.5 163.59 134.5 DL 169.588 134.5 164.588 134.5 DL 174.588 134.5 +169.588 134.5 DL 179.588 134.5 174.588 134.5 DL 179.588 123.5 179.588 +133.5 DL 168.59 123.5 163.59 123.5 DL 169.588 123.5 164.588 123.5 DL +174.588 123.5 169.588 123.5 DL 179.588 123.5 174.588 123.5 DL 181.254 +124.5 181.254 134.5 DL 181.254 123.5 181.254 133.5 DL F1(CSI)166.921 131 +Q 197.252 124.5 197.252 134.5 DL 186.254 134.5 181.254 134.5 DL 187.252 +134.5 182.252 134.5 DL 192.252 134.5 187.252 134.5 DL 197.252 134.5 +192.252 134.5 DL 197.252 123.5 197.252 133.5 DL 186.254 123.5 181.254 +123.5 DL 187.252 123.5 182.252 123.5 DL 192.252 123.5 187.252 123.5 DL +197.252 123.5 192.252 123.5 DL 198.918 124.5 198.918 134.5 DL 198.918 +123.5 198.918 133.5 DL 214.916 124.5 214.916 134.5 DL 203.918 134.5 +198.918 134.5 DL 204.916 134.5 199.916 134.5 DL 209.916 134.5 204.916 +134.5 DL 214.916 134.5 209.916 134.5 DL 214.916 123.5 214.916 133.5 DL +203.918 123.5 198.918 123.5 DL 204.916 123.5 199.916 123.5 DL 209.916 +123.5 204.916 123.5 DL 214.916 123.5 209.916 123.5 DL 216.582 124.5 +216.582 134.5 DL 216.582 123.5 216.582 133.5 DL 232.58 124.5 232.58 +134.5 DL 221.582 134.5 216.582 134.5 DL 222.58 134.5 217.58 134.5 DL +227.58 134.5 222.58 134.5 DL 232.58 134.5 227.58 134.5 DL 232.58 123.5 +232.58 133.5 DL 221.582 123.5 216.582 123.5 DL 222.58 123.5 217.58 123.5 +DL 227.58 123.5 222.58 123.5 DL 232.58 123.5 227.58 123.5 DL F0 -14.329 +12.664(15 ~)186.753 132 T 265.508 124.5 265.508 134.5 DL 265.508 123.5 +265.508 133.5 DL(F6)240.508 132 Q 281.506 124.5 281.506 134.5 DL 270.508 +134.5 265.508 134.5 DL 271.506 134.5 266.506 134.5 DL 276.506 134.5 +271.506 134.5 DL 281.506 134.5 276.506 134.5 DL 281.506 123.5 281.506 +133.5 DL 270.508 123.5 265.508 123.5 DL 271.506 123.5 266.506 123.5 DL +276.506 123.5 271.506 123.5 DL 281.506 123.5 276.506 123.5 DL 283.172 +124.5 283.172 134.5 DL 283.172 123.5 283.172 133.5 DL F1(CSI)268.839 131 +Q 299.17 124.5 299.17 134.5 DL 288.172 134.5 283.172 134.5 DL 289.17 +134.5 284.17 134.5 DL 294.17 134.5 289.17 134.5 DL 299.17 134.5 294.17 +134.5 DL 299.17 123.5 299.17 133.5 DL 288.172 123.5 283.172 123.5 DL +289.17 123.5 284.17 123.5 DL 294.17 123.5 289.17 123.5 DL 299.17 123.5 +294.17 123.5 DL 300.836 124.5 300.836 134.5 DL 300.836 123.5 300.836 +133.5 DL 316.834 124.5 316.834 134.5 DL 305.836 134.5 300.836 134.5 DL +306.834 134.5 301.834 134.5 DL 311.834 134.5 306.834 134.5 DL 316.834 +134.5 311.834 134.5 DL 316.834 123.5 316.834 133.5 DL 305.836 123.5 +300.836 123.5 DL 306.834 123.5 301.834 123.5 DL 311.834 123.5 306.834 +123.5 DL 316.834 123.5 311.834 123.5 DL 318.5 124.5 318.5 134.5 DL 318.5 +123.5 318.5 133.5 DL 334.498 124.5 334.498 134.5 DL 323.5 134.5 318.5 +134.5 DL 324.498 134.5 319.498 134.5 DL 329.498 134.5 324.498 134.5 DL +334.498 134.5 329.498 134.5 DL 334.498 123.5 334.498 133.5 DL 323.5 +123.5 318.5 123.5 DL 324.498 123.5 319.498 123.5 DL 329.498 123.5 +324.498 123.5 DL 334.498 123.5 329.498 123.5 DL F0 -14.329 12.664(17 ~) +288.671 132 T 367.426 124.5 367.426 134.5 DL 367.426 123.5 367.426 133.5 +DL(F7)342.426 132 Q 383.424 124.5 383.424 134.5 DL 372.426 134.5 367.426 +134.5 DL 373.424 134.5 368.424 134.5 DL 378.424 134.5 373.424 134.5 DL +383.424 134.5 378.424 134.5 DL 383.424 123.5 383.424 133.5 DL 372.426 +123.5 367.426 123.5 DL 373.424 123.5 368.424 123.5 DL 378.424 123.5 +373.424 123.5 DL 383.424 123.5 378.424 123.5 DL 385.09 124.5 385.09 +134.5 DL 385.09 123.5 385.09 133.5 DL F1(CSI)370.757 131 Q 401.088 124.5 +401.088 134.5 DL 390.09 134.5 385.09 134.5 DL 391.088 134.5 386.088 +134.5 DL 396.088 134.5 391.088 134.5 DL 401.088 134.5 396.088 134.5 DL +401.088 123.5 401.088 133.5 DL 390.09 123.5 385.09 123.5 DL 391.088 +123.5 386.088 123.5 DL 396.088 123.5 391.088 123.5 DL 401.088 123.5 +396.088 123.5 DL 402.754 124.5 402.754 134.5 DL 402.754 123.5 402.754 +133.5 DL 418.752 124.5 418.752 134.5 DL 407.754 134.5 402.754 134.5 DL +408.752 134.5 403.752 134.5 DL 413.752 134.5 408.752 134.5 DL 418.752 +134.5 413.752 134.5 DL 418.752 123.5 418.752 133.5 DL 407.754 123.5 +402.754 123.5 DL 408.752 123.5 403.752 123.5 DL 413.752 123.5 408.752 +123.5 DL 418.752 123.5 413.752 123.5 DL 420.418 124.5 420.418 134.5 DL +420.418 123.5 420.418 133.5 DL 436.416 124.5 436.416 134.5 DL 425.418 +134.5 420.418 134.5 DL 426.416 134.5 421.416 134.5 DL 431.416 134.5 +426.416 134.5 DL 436.416 134.5 431.416 134.5 DL 436.416 123.5 436.416 +133.5 DL 425.418 123.5 420.418 123.5 DL 426.416 123.5 421.416 123.5 DL +431.416 123.5 426.416 123.5 DL 436.416 123.5 431.416 123.5 DL F0 -14.329 +12.664(18 ~)390.589 132 T 469.344 124.5 469.344 134.5 DL 469.344 123.5 +469.344 133.5 DL(F8)444.344 132 Q 485.342 124.5 485.342 134.5 DL 474.344 +134.5 469.344 134.5 DL 475.342 134.5 470.342 134.5 DL 480.342 134.5 +475.342 134.5 DL 485.342 134.5 480.342 134.5 DL 485.342 123.5 485.342 +133.5 DL 474.344 123.5 469.344 123.5 DL 475.342 123.5 470.342 123.5 DL +480.342 123.5 475.342 123.5 DL 485.342 123.5 480.342 123.5 DL 487.008 +124.5 487.008 134.5 DL 487.008 123.5 487.008 133.5 DL F1(CSI)472.675 131 +Q 503.006 124.5 503.006 134.5 DL 492.008 134.5 487.008 134.5 DL 493.006 +134.5 488.006 134.5 DL 498.006 134.5 493.006 134.5 DL 503.006 134.5 +498.006 134.5 DL 503.006 123.5 503.006 133.5 DL 492.008 123.5 487.008 +123.5 DL 493.006 123.5 488.006 123.5 DL 498.006 123.5 493.006 123.5 DL +503.006 123.5 498.006 123.5 DL 504.672 124.5 504.672 134.5 DL 504.672 +123.5 504.672 133.5 DL 520.67 124.5 520.67 134.5 DL 509.672 134.5 +504.672 134.5 DL 510.67 134.5 505.67 134.5 DL 515.67 134.5 510.67 134.5 +DL 520.67 134.5 515.67 134.5 DL 520.67 123.5 520.67 133.5 DL 509.672 +123.5 504.672 123.5 DL 510.67 123.5 505.67 123.5 DL 515.67 123.5 510.67 +123.5 DL 520.67 123.5 515.67 123.5 DL 522.336 124.5 522.336 134.5 DL +522.336 123.5 522.336 133.5 DL 538.334 124.5 538.334 134.5 DL 527.336 +134.5 522.336 134.5 DL 528.334 134.5 523.334 134.5 DL 533.334 134.5 +528.334 134.5 DL 538.334 134.5 533.334 134.5 DL 538.334 123.5 538.334 +133.5 DL 527.336 123.5 522.336 123.5 DL 528.334 123.5 523.334 123.5 DL +533.334 123.5 528.334 123.5 DL 538.334 123.5 533.334 123.5 DL F0 -14.329 +12.664(19 ~)492.507 132 T 97 136.5 97 146.5 DL 97 135.5 97 145.5 DL(F9) +72 144 Q 112.998 136.5 112.998 146.5 DL 102 146.5 97 146.5 DL 102.998 +146.5 97.998 146.5 DL 107.998 146.5 102.998 146.5 DL 112.998 146.5 +107.998 146.5 DL 112.998 135.5 112.998 145.5 DL 102 135.5 97 135.5 DL +102.998 135.5 97.998 135.5 DL 107.998 135.5 102.998 135.5 DL 112.998 +135.5 107.998 135.5 DL 114.664 136.5 114.664 146.5 DL 114.664 135.5 +114.664 145.5 DL F1(CSI)100.331 143 Q 130.662 136.5 130.662 146.5 DL +119.664 146.5 114.664 146.5 DL 120.662 146.5 115.662 146.5 DL 125.662 +146.5 120.662 146.5 DL 130.662 146.5 125.662 146.5 DL 130.662 135.5 +130.662 145.5 DL 119.664 135.5 114.664 135.5 DL 120.662 135.5 115.662 +135.5 DL 125.662 135.5 120.662 135.5 DL 130.662 135.5 125.662 135.5 DL +132.328 136.5 132.328 146.5 DL 132.328 135.5 132.328 145.5 DL 148.326 +136.5 148.326 146.5 DL 137.328 146.5 132.328 146.5 DL 138.326 146.5 +133.326 146.5 DL 143.326 146.5 138.326 146.5 DL 148.326 146.5 143.326 +146.5 DL 148.326 135.5 148.326 145.5 DL 137.328 135.5 132.328 135.5 DL +138.326 135.5 133.326 135.5 DL 143.326 135.5 138.326 135.5 DL 148.326 +135.5 143.326 135.5 DL 149.992 136.5 149.992 146.5 DL 149.992 135.5 +149.992 145.5 DL 165.99 136.5 165.99 146.5 DL 154.992 146.5 149.992 +146.5 DL 155.99 146.5 150.99 146.5 DL 160.99 146.5 155.99 146.5 DL +165.99 146.5 160.99 146.5 DL 165.99 135.5 165.99 145.5 DL 154.992 135.5 +149.992 135.5 DL 155.99 135.5 150.99 135.5 DL 160.99 135.5 155.99 135.5 +DL 165.99 135.5 160.99 135.5 DL F0 -14.329 12.664(20 ~)120.163 144 T +195.156 136.5 195.156 146.5 DL 195.156 135.5 195.156 145.5 DL(F10) +170.156 144 Q 211.154 136.5 211.154 146.5 DL 200.156 146.5 195.156 146.5 +DL 201.154 146.5 196.154 146.5 DL 206.154 146.5 201.154 146.5 DL 211.154 +146.5 206.154 146.5 DL 211.154 135.5 211.154 145.5 DL 200.156 135.5 +195.156 135.5 DL 201.154 135.5 196.154 135.5 DL 206.154 135.5 201.154 +135.5 DL 211.154 135.5 206.154 135.5 DL 212.82 136.5 212.82 146.5 DL +212.82 135.5 212.82 145.5 DL F1(CSI)198.487 143 Q 228.818 136.5 228.818 +146.5 DL 217.82 146.5 212.82 146.5 DL 218.818 146.5 213.818 146.5 DL +223.818 146.5 218.818 146.5 DL 228.818 146.5 223.818 146.5 DL 228.818 +135.5 228.818 145.5 DL 217.82 135.5 212.82 135.5 DL 218.818 135.5 +213.818 135.5 DL 223.818 135.5 218.818 135.5 DL 228.818 135.5 223.818 +135.5 DL 230.484 136.5 230.484 146.5 DL 230.484 135.5 230.484 145.5 DL +246.482 136.5 246.482 146.5 DL 235.484 146.5 230.484 146.5 DL 236.482 +146.5 231.482 146.5 DL 241.482 146.5 236.482 146.5 DL 246.482 146.5 +241.482 146.5 DL 246.482 135.5 246.482 145.5 DL 235.484 135.5 230.484 +135.5 DL 236.482 135.5 231.482 135.5 DL 241.482 135.5 236.482 135.5 DL +246.482 135.5 241.482 135.5 DL 248.148 136.5 248.148 146.5 DL 248.148 +135.5 248.148 145.5 DL 264.146 136.5 264.146 146.5 DL 253.148 146.5 +248.148 146.5 DL 254.146 146.5 249.146 146.5 DL 259.146 146.5 254.146 +146.5 DL 264.146 146.5 259.146 146.5 DL 264.146 135.5 264.146 145.5 DL +253.148 135.5 248.148 135.5 DL 254.146 135.5 249.146 135.5 DL 259.146 +135.5 254.146 135.5 DL 264.146 135.5 259.146 135.5 DL F0 -14.329 12.664 +(21 ~)218.319 144 T 293.312 136.5 293.312 146.5 DL 293.312 135.5 293.312 +145.5 DL(F11)268.312 144 Q 309.31 136.5 309.31 146.5 DL 298.312 146.5 +293.312 146.5 DL 299.31 146.5 294.31 146.5 DL 304.31 146.5 299.31 146.5 +DL 309.31 146.5 304.31 146.5 DL 309.31 135.5 309.31 145.5 DL 298.312 +135.5 293.312 135.5 DL 299.31 135.5 294.31 135.5 DL 304.31 135.5 299.31 +135.5 DL 309.31 135.5 304.31 135.5 DL 310.976 136.5 310.976 146.5 DL +310.976 135.5 310.976 145.5 DL F1(CSI)296.643 143 Q 326.974 136.5 +326.974 146.5 DL 315.976 146.5 310.976 146.5 DL 316.974 146.5 311.974 +146.5 DL 321.974 146.5 316.974 146.5 DL 326.974 146.5 321.974 146.5 DL +326.974 135.5 326.974 145.5 DL 315.976 135.5 310.976 135.5 DL 316.974 +135.5 311.974 135.5 DL 321.974 135.5 316.974 135.5 DL 326.974 135.5 +321.974 135.5 DL 328.64 136.5 328.64 146.5 DL 328.64 135.5 328.64 145.5 +DL 344.638 136.5 344.638 146.5 DL 333.64 146.5 328.64 146.5 DL 334.638 +146.5 329.638 146.5 DL 339.638 146.5 334.638 146.5 DL 344.638 146.5 +339.638 146.5 DL 344.638 135.5 344.638 145.5 DL 333.64 135.5 328.64 +135.5 DL 334.638 135.5 329.638 135.5 DL 339.638 135.5 334.638 135.5 DL +344.638 135.5 339.638 135.5 DL 346.304 136.5 346.304 146.5 DL 346.304 +135.5 346.304 145.5 DL 362.302 136.5 362.302 146.5 DL 351.304 146.5 +346.304 146.5 DL 352.302 146.5 347.302 146.5 DL 357.302 146.5 352.302 +146.5 DL 362.302 146.5 357.302 146.5 DL 362.302 135.5 362.302 145.5 DL +351.304 135.5 346.304 135.5 DL 352.302 135.5 347.302 135.5 DL 357.302 +135.5 352.302 135.5 DL 362.302 135.5 357.302 135.5 DL F0 -14.329 12.664 +(23 ~)316.475 144 T 391.468 136.5 391.468 146.5 DL 391.468 135.5 391.468 +145.5 DL(F12)366.468 144 Q 407.466 136.5 407.466 146.5 DL 396.468 146.5 +391.468 146.5 DL 397.466 146.5 392.466 146.5 DL 402.466 146.5 397.466 +146.5 DL 407.466 146.5 402.466 146.5 DL 407.466 135.5 407.466 145.5 DL +396.468 135.5 391.468 135.5 DL 397.466 135.5 392.466 135.5 DL 402.466 +135.5 397.466 135.5 DL 407.466 135.5 402.466 135.5 DL 409.132 136.5 +409.132 146.5 DL 409.132 135.5 409.132 145.5 DL F1(CSI)394.799 143 Q +425.13 136.5 425.13 146.5 DL 414.132 146.5 409.132 146.5 DL 415.13 146.5 +410.13 146.5 DL 420.13 146.5 415.13 146.5 DL 425.13 146.5 420.13 146.5 +DL 425.13 135.5 425.13 145.5 DL 414.132 135.5 409.132 135.5 DL 415.13 +135.5 410.13 135.5 DL 420.13 135.5 415.13 135.5 DL 425.13 135.5 420.13 +135.5 DL 426.796 136.5 426.796 146.5 DL 426.796 135.5 426.796 145.5 DL +442.794 136.5 442.794 146.5 DL 431.796 146.5 426.796 146.5 DL 432.794 +146.5 427.794 146.5 DL 437.794 146.5 432.794 146.5 DL 442.794 146.5 +437.794 146.5 DL 442.794 135.5 442.794 145.5 DL 431.796 135.5 426.796 +135.5 DL 432.794 135.5 427.794 135.5 DL 437.794 135.5 432.794 135.5 DL +442.794 135.5 437.794 135.5 DL 444.46 136.5 444.46 146.5 DL 444.46 135.5 +444.46 145.5 DL 460.458 136.5 460.458 146.5 DL 449.46 146.5 444.46 146.5 +DL 450.458 146.5 445.458 146.5 DL 455.458 146.5 450.458 146.5 DL 460.458 +146.5 455.458 146.5 DL 460.458 135.5 460.458 145.5 DL 449.46 135.5 +444.46 135.5 DL 450.458 135.5 445.458 135.5 DL 455.458 135.5 450.458 +135.5 DL 460.458 135.5 455.458 135.5 DL F0 -14.329 12.664(24 ~)414.631 +144 T .35(Older v)72 166.8 R .35(ersions of)-.15 F/F2 10/Times-Italic@0 +SF(xterm)2.85 E F0 .35(implement dif)2.85 F .349 +(ferent escape sequences for F1 through F4.)-.25 F .349 +(These can be acti)5.349 F -.25(va)-.25 G .349(ted by setting).25 F(the) +72 178.8 Q F2(oldXtermFK)2.788 E -.3(ey)-.35 G(s).3 E F0 2.788 +(resource. Ho)2.788 F(we)-.25 E -.15(ve)-.25 G 1.088 -.4(r, s).15 H .288 +(ince the).4 F 2.788(yd)-.15 G 2.788(on)-2.788 G .288 +(ot correspond to an)-2.788 F 2.788(yh)-.15 G(ardw)-2.788 E .288 +(are terminal, the)-.1 F 2.788(yh)-.15 G -2.25 -.2(av e)-2.788 H .289 +(been dep-)2.989 F 2.5(recated. \(The)72 190.8 R(DEC VT220 reserv)2.5 E +(es F1 through F5 for local functions such as)-.15 E/F3 10/Times-Bold@0 +SF(Setup)2.5 E F0(\).)A .705(center; cf3)72 208.8 R .705(cf3 lf3w\(2c\)) +12.23 F .705(lf3w\(2c\) .)15.57 F -2.15 -.25(Ke y)5.705 H 370.484 201.3 +370.484 211.3 DL 370.484 200.3 370.484 210.3 DL .705 +(Escape Sequence _ F1)264.23 208.8 R 386.482 201.3 386.482 211.3 DL +375.484 211.3 370.484 211.3 DL 376.482 211.3 371.482 211.3 DL 381.482 +211.3 376.482 211.3 DL 386.482 211.3 381.482 211.3 DL 386.482 200.3 +386.482 210.3 DL 375.484 200.3 370.484 200.3 DL 376.482 200.3 371.482 +200.3 DL 381.482 200.3 376.482 200.3 DL 386.482 200.3 381.482 200.3 DL +388.148 201.3 388.148 211.3 DL 388.148 200.3 388.148 210.3 DL F1(CSI) +373.815 207.8 Q 404.146 201.3 404.146 211.3 DL 393.148 211.3 388.148 +211.3 DL 394.146 211.3 389.146 211.3 DL 399.146 211.3 394.146 211.3 DL +404.146 211.3 399.146 211.3 DL 404.146 200.3 404.146 210.3 DL 393.148 +200.3 388.148 200.3 DL 394.146 200.3 389.146 200.3 DL 399.146 200.3 +394.146 200.3 DL 404.146 200.3 399.146 200.3 DL 405.812 201.3 405.812 +211.3 DL 405.812 200.3 405.812 210.3 DL 421.81 201.3 421.81 211.3 DL +410.812 211.3 405.812 211.3 DL 411.81 211.3 406.81 211.3 DL 416.81 211.3 +411.81 211.3 DL 421.81 211.3 416.81 211.3 DL 421.81 200.3 421.81 210.3 +DL 410.812 200.3 405.812 200.3 DL 411.81 200.3 406.81 200.3 DL 416.81 +200.3 411.81 200.3 DL 421.81 200.3 416.81 200.3 DL 423.476 201.3 423.476 +211.3 DL 423.476 200.3 423.476 210.3 DL 439.474 201.3 439.474 211.3 DL +428.476 211.3 423.476 211.3 DL 429.474 211.3 424.474 211.3 DL 434.474 +211.3 429.474 211.3 DL 439.474 211.3 434.474 211.3 DL 439.474 200.3 +439.474 210.3 DL 428.476 200.3 423.476 200.3 DL 429.474 200.3 424.474 +200.3 DL 434.474 200.3 429.474 200.3 DL 439.474 200.3 434.474 200.3 DL +F0 -14.329 12.664(11 ~)393.647 208.8 T 469.344 201.3 469.344 211.3 DL +469.344 200.3 469.344 210.3 DL(F2)444.344 208.8 Q 485.342 201.3 485.342 +211.3 DL 474.344 211.3 469.344 211.3 DL 475.342 211.3 470.342 211.3 DL +480.342 211.3 475.342 211.3 DL 485.342 211.3 480.342 211.3 DL 485.342 +200.3 485.342 210.3 DL 474.344 200.3 469.344 200.3 DL 475.342 200.3 +470.342 200.3 DL 480.342 200.3 475.342 200.3 DL 485.342 200.3 480.342 +200.3 DL 487.008 201.3 487.008 211.3 DL 487.008 200.3 487.008 210.3 DL +F1(CSI)472.675 207.8 Q 503.006 201.3 503.006 211.3 DL 492.008 211.3 +487.008 211.3 DL 493.006 211.3 488.006 211.3 DL 498.006 211.3 493.006 +211.3 DL 503.006 211.3 498.006 211.3 DL 503.006 200.3 503.006 210.3 DL +492.008 200.3 487.008 200.3 DL 493.006 200.3 488.006 200.3 DL 498.006 +200.3 493.006 200.3 DL 503.006 200.3 498.006 200.3 DL 504.672 201.3 +504.672 211.3 DL 504.672 200.3 504.672 210.3 DL 520.67 201.3 520.67 +211.3 DL 509.672 211.3 504.672 211.3 DL 510.67 211.3 505.67 211.3 DL +515.67 211.3 510.67 211.3 DL 520.67 211.3 515.67 211.3 DL 520.67 200.3 +520.67 210.3 DL 509.672 200.3 504.672 200.3 DL 510.67 200.3 505.67 200.3 +DL 515.67 200.3 510.67 200.3 DL 520.67 200.3 515.67 200.3 DL 522.336 +201.3 522.336 211.3 DL 522.336 200.3 522.336 210.3 DL 538.334 201.3 +538.334 211.3 DL 527.336 211.3 522.336 211.3 DL 528.334 211.3 523.334 +211.3 DL 533.334 211.3 528.334 211.3 DL 538.334 211.3 533.334 211.3 DL +538.334 200.3 538.334 210.3 DL 527.336 200.3 522.336 200.3 DL 528.334 +200.3 523.334 200.3 DL 533.334 200.3 528.334 200.3 DL 538.334 200.3 +533.334 200.3 DL F0 -14.329 12.664(12 ~)492.507 208.8 T 97 213.3 97 +223.3 DL 97 212.3 97 222.3 DL(F3)72 220.8 Q 112.998 213.3 112.998 223.3 +DL 102 223.3 97 223.3 DL 102.998 223.3 97.998 223.3 DL 107.998 223.3 +102.998 223.3 DL 112.998 223.3 107.998 223.3 DL 112.998 212.3 112.998 +222.3 DL 102 212.3 97 212.3 DL 102.998 212.3 97.998 212.3 DL 107.998 +212.3 102.998 212.3 DL 112.998 212.3 107.998 212.3 DL 114.664 213.3 +114.664 223.3 DL 114.664 212.3 114.664 222.3 DL F1(CSI)100.331 219.8 Q +130.662 213.3 130.662 223.3 DL 119.664 223.3 114.664 223.3 DL 120.662 +223.3 115.662 223.3 DL 125.662 223.3 120.662 223.3 DL 130.662 223.3 +125.662 223.3 DL 130.662 212.3 130.662 222.3 DL 119.664 212.3 114.664 +212.3 DL 120.662 212.3 115.662 212.3 DL 125.662 212.3 120.662 212.3 DL +130.662 212.3 125.662 212.3 DL 132.328 213.3 132.328 223.3 DL 132.328 +212.3 132.328 222.3 DL 148.326 213.3 148.326 223.3 DL 137.328 223.3 +132.328 223.3 DL 138.326 223.3 133.326 223.3 DL 143.326 223.3 138.326 +223.3 DL 148.326 223.3 143.326 223.3 DL 148.326 212.3 148.326 222.3 DL +137.328 212.3 132.328 212.3 DL 138.326 212.3 133.326 212.3 DL 143.326 +212.3 138.326 212.3 DL 148.326 212.3 143.326 212.3 DL 149.992 213.3 +149.992 223.3 DL 149.992 212.3 149.992 222.3 DL 165.99 213.3 165.99 +223.3 DL 154.992 223.3 149.992 223.3 DL 155.99 223.3 150.99 223.3 DL +160.99 223.3 155.99 223.3 DL 165.99 223.3 160.99 223.3 DL 165.99 212.3 +165.99 222.3 DL 154.992 212.3 149.992 212.3 DL 155.99 212.3 150.99 212.3 +DL 160.99 212.3 155.99 212.3 DL 165.99 212.3 160.99 212.3 DL F0 -14.329 +12.664(13 ~)120.163 220.8 T 195.156 213.3 195.156 223.3 DL 195.156 212.3 +195.156 222.3 DL(F4)170.156 220.8 Q 211.154 213.3 211.154 223.3 DL +200.156 223.3 195.156 223.3 DL 201.154 223.3 196.154 223.3 DL 206.154 +223.3 201.154 223.3 DL 211.154 223.3 206.154 223.3 DL 211.154 212.3 +211.154 222.3 DL 200.156 212.3 195.156 212.3 DL 201.154 212.3 196.154 +212.3 DL 206.154 212.3 201.154 212.3 DL 211.154 212.3 206.154 212.3 DL +212.82 213.3 212.82 223.3 DL 212.82 212.3 212.82 222.3 DL F1(CSI)198.487 +219.8 Q 228.818 213.3 228.818 223.3 DL 217.82 223.3 212.82 223.3 DL +218.818 223.3 213.818 223.3 DL 223.818 223.3 218.818 223.3 DL 228.818 +223.3 223.818 223.3 DL 228.818 212.3 228.818 222.3 DL 217.82 212.3 +212.82 212.3 DL 218.818 212.3 213.818 212.3 DL 223.818 212.3 218.818 +212.3 DL 228.818 212.3 223.818 212.3 DL 230.484 213.3 230.484 223.3 DL +230.484 212.3 230.484 222.3 DL 246.482 213.3 246.482 223.3 DL 235.484 +223.3 230.484 223.3 DL 236.482 223.3 231.482 223.3 DL 241.482 223.3 +236.482 223.3 DL 246.482 223.3 241.482 223.3 DL 246.482 212.3 246.482 +222.3 DL 235.484 212.3 230.484 212.3 DL 236.482 212.3 231.482 212.3 DL +241.482 212.3 236.482 212.3 DL 246.482 212.3 241.482 212.3 DL 248.148 +213.3 248.148 223.3 DL 248.148 212.3 248.148 222.3 DL 264.146 213.3 +264.146 223.3 DL 253.148 223.3 248.148 223.3 DL 254.146 223.3 249.146 +223.3 DL 259.146 223.3 254.146 223.3 DL 264.146 223.3 259.146 223.3 DL +264.146 212.3 264.146 222.3 DL 253.148 212.3 248.148 212.3 DL 254.146 +212.3 249.146 212.3 DL 259.146 212.3 254.146 212.3 DL 264.146 212.3 +259.146 212.3 DL F0 -14.329 12.664(14 ~)218.319 220.8 T .852 +(In normal mode, i.e., a Sun/PC k)72 238.8 R -.15(ey)-.1 G .852 +(board when the).15 F F3(sunK)3.353 E(eyboard)-.25 E F0 .853 +(resource is f)3.353 F(alse,)-.1 E F2(xterm)3.353 E F0 .853 +(recognizes function k)3.353 F -.15(ey)-.1 G(modi\214ers which are para\ +meters appended before the \214nal character of the control sequence.)72 +250.8 Q 1.655(center; cf3)72 268.8 R 1.655(lf3 cf3w\(2c\))12.23 F 1.655 +(lf3w\(2c\) .)13.91 F 1.39(Code Modi\214ers)6.655 F 9.19 4.155(_2 S) +4.155 H 1.654(hift 3)-4.155 F 1.654(Alt 4)20 F 1.654(Shift + Alt 5)20 F +(Control)20 E 20(6S)72 280.8 S(hift + Control 7)-20 E(Alt + Control 8)20 +E(Shift + Alt + Control)20 E -.15(Fo)72 298.8 S 2.5(re).15 G +(xample, shift-F5 w)-2.65 E 229.92 291.3 229.92 301.3 DL 229.92 290.3 +229.92 300.3 DL(ould be sent as)168.26 298.8 Q 245.918 291.3 245.918 +301.3 DL 234.92 301.3 229.92 301.3 DL 235.918 301.3 230.918 301.3 DL +240.918 301.3 235.918 301.3 DL 245.918 301.3 240.918 301.3 DL 245.918 +290.3 245.918 300.3 DL 234.92 290.3 229.92 290.3 DL 235.918 290.3 +230.918 290.3 DL 240.918 290.3 235.918 290.3 DL 245.918 290.3 240.918 +290.3 DL 247.584 291.3 247.584 301.3 DL 247.584 290.3 247.584 300.3 DL +F1(CSI)233.251 297.8 Q 263.582 291.3 263.582 301.3 DL 252.584 301.3 +247.584 301.3 DL 253.582 301.3 248.582 301.3 DL 258.582 301.3 253.582 +301.3 DL 263.582 301.3 258.582 301.3 DL 263.582 290.3 263.582 300.3 DL +252.584 290.3 247.584 290.3 DL 253.582 290.3 248.582 290.3 DL 258.582 +290.3 253.582 290.3 DL 263.582 290.3 258.582 290.3 DL 265.248 291.3 +265.248 301.3 DL 265.248 290.3 265.248 300.3 DL 281.246 291.3 281.246 +301.3 DL 270.248 301.3 265.248 301.3 DL 271.246 301.3 266.246 301.3 DL +276.246 301.3 271.246 301.3 DL 281.246 301.3 276.246 301.3 DL 281.246 +290.3 281.246 300.3 DL 270.248 290.3 265.248 290.3 DL 271.246 290.3 +266.246 290.3 DL 276.246 290.3 271.246 290.3 DL 281.246 290.3 276.246 +290.3 DL 282.912 291.3 282.912 301.3 DL 282.912 290.3 282.912 300.3 DL +298.91 291.3 298.91 301.3 DL 287.912 301.3 282.912 301.3 DL 288.91 301.3 +283.91 301.3 DL 293.91 301.3 288.91 301.3 DL 298.91 301.3 293.91 301.3 +DL 298.91 290.3 298.91 300.3 DL 287.912 290.3 282.912 290.3 DL 288.91 +290.3 283.91 290.3 DL 293.91 290.3 288.91 290.3 DL 298.91 290.3 293.91 +290.3 DL 300.576 291.3 300.576 301.3 DL 300.576 290.3 300.576 300.3 DL +316.574 291.3 316.574 301.3 DL 305.576 301.3 300.576 301.3 DL 306.574 +301.3 301.574 301.3 DL 311.574 301.3 306.574 301.3 DL 316.574 301.3 +311.574 301.3 DL 316.574 290.3 316.574 300.3 DL 305.576 290.3 300.576 +290.3 DL 306.574 290.3 301.574 290.3 DL 311.574 290.3 306.574 290.3 DL +316.574 290.3 311.574 290.3 DL 318.24 291.3 318.24 301.3 DL 318.24 290.3 +318.24 300.3 DL F0 -14.054 12.664(15 ; 2)253.083 298.8 T 334.238 291.3 +334.238 301.3 DL 323.24 301.3 318.24 301.3 DL 324.238 301.3 319.238 +301.3 DL 329.238 301.3 324.238 301.3 DL 334.238 301.3 329.238 301.3 DL +334.238 290.3 334.238 300.3 DL 323.24 290.3 318.24 290.3 DL 324.238 +290.3 319.238 290.3 DL 329.238 290.3 324.238 290.3 DL 334.238 290.3 +329.238 290.3 DL(~)324.574 298.8 Q(If the)72 322.8 Q F3(alwaysUseMods) +2.5 E F0(resource is set, the Meta modi\214er also is recognized, makin\ +g parameters 9 through 16.)2.5 E F3(VT220-Style Function K)72 346.8 Q +(eys)-.25 E F0(Ho)72 363.6 Q(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G F2 +(xterm)3.071 E F0 .171(is most useful as a DEC VT102 or VT220 emulator) +2.671 F 5.171(.S)-.55 G .171(et the)-5.171 F F3(sunK)2.671 E(eyboard) +-.25 E F0 .171(resource to true to force)2.671 F 2.5(aS)72 375.6 S +(un/PC k)-2.5 E -.15(ey)-.1 G(board to act lik).15 E 2.5(eaV)-.1 G +(T220 k)-2.5 E -.15(ey)-.1 G(board.).15 E 1.025 +(The VT102/VT220 application k)72 392.4 R -.15(ey)-.1 G 1.025(pad trans\ +mits unique escape sequences in application mode, which are distinct).15 +F(from the cursor and scrolling k)72 404.4 Q -.15(ey)-.1 G(pad:).15 E +1.84(center; cf3)72 422.4 R 9.73(cf3 cf3)12.23 F 13.07 +(lf3w\(2c\) lf3w\(2c\) lf3w\(2c\))4.34 F 6.84(.K)4.34 G 6.54 -.15(ey N) +-7.09 H 12.51(umeric Application).15 F 4.341(_S)4.341 G 504.672 414.9 +504.672 424.9 DL 504.672 413.9 504.672 423.9 DL -1.38(pace Space)460.232 +422.4 R 520.67 414.9 520.67 424.9 DL 509.672 424.9 504.672 424.9 DL +510.67 424.9 505.67 424.9 DL 515.67 424.9 510.67 424.9 DL 520.67 424.9 +515.67 424.9 DL 520.67 413.9 520.67 423.9 DL 509.672 413.9 504.672 413.9 +DL 510.67 413.9 505.67 413.9 DL 515.67 413.9 510.67 413.9 DL 520.67 +413.9 515.67 413.9 DL 522.336 414.9 522.336 424.9 DL 522.336 413.9 +522.336 423.9 DL 538.334 414.9 538.334 424.9 DL 527.336 424.9 522.336 +424.9 DL 528.334 424.9 523.334 424.9 DL 533.334 424.9 528.334 424.9 DL +538.334 424.9 533.334 424.9 DL 538.334 413.9 538.334 423.9 DL 527.336 +413.9 522.336 413.9 DL 528.334 413.9 523.334 413.9 DL 533.334 413.9 +528.334 413.9 DL 538.334 413.9 533.334 413.9 DL F1 7.992(SS3 SP)507.835 +421.4 R F0 -.8(Ta)72 434.4 S 10.25(bT).8 G 122 426.9 122 436.9 DL 122 +425.9 122 435.9 DL(ab)102.31 434.4 Q 137.998 426.9 137.998 436.9 DL 127 +436.9 122 436.9 DL 127.998 436.9 122.998 436.9 DL 132.998 436.9 127.998 +436.9 DL 137.998 436.9 132.998 436.9 DL 137.998 425.9 137.998 435.9 DL +127 425.9 122 425.9 DL 127.998 425.9 122.998 425.9 DL 132.998 425.9 +127.998 425.9 DL 137.998 425.9 132.998 425.9 DL 139.664 426.9 139.664 +436.9 DL 139.664 425.9 139.664 435.9 DL F1(SS3)125.163 433.4 Q 155.662 +426.9 155.662 436.9 DL 144.664 436.9 139.664 436.9 DL 145.662 436.9 +140.662 436.9 DL 150.662 436.9 145.662 436.9 DL 155.662 436.9 150.662 +436.9 DL 155.662 425.9 155.662 435.9 DL 144.664 425.9 139.664 425.9 DL +145.662 425.9 140.662 425.9 DL 150.662 425.9 145.662 425.9 DL 155.662 +425.9 150.662 425.9 DL F0 33.563(IE)145.998 434.4 S 232.891 426.9 +232.891 436.9 DL 232.891 425.9 232.891 435.9 DL .84(nter CR)189.001 +434.4 R 248.889 426.9 248.889 436.9 DL 237.891 436.9 232.891 436.9 DL +238.889 436.9 233.889 436.9 DL 243.889 436.9 238.889 436.9 DL 248.889 +436.9 243.889 436.9 DL 248.889 425.9 248.889 435.9 DL 237.891 425.9 +232.891 425.9 DL 238.889 425.9 233.889 425.9 DL 243.889 425.9 238.889 +425.9 DL 248.889 425.9 243.889 425.9 DL 250.555 426.9 250.555 436.9 DL +250.555 425.9 250.555 435.9 DL F1(SS3)236.054 433.4 Q 266.553 426.9 +266.553 436.9 DL 255.555 436.9 250.555 436.9 DL 256.553 436.9 251.553 +436.9 DL 261.553 436.9 256.553 436.9 DL 266.553 436.9 261.553 436.9 DL +266.553 425.9 266.553 435.9 DL 255.555 425.9 250.555 425.9 DL 256.553 +425.9 251.553 425.9 DL 261.553 425.9 256.553 425.9 DL 266.553 425.9 +261.553 425.9 DL F0 30.783(MP)254.109 434.4 S 318.782 426.9 318.782 +436.9 DL 318.782 425.9 318.782 435.9 DL(F1)299.342 434.4 Q 334.78 426.9 +334.78 436.9 DL 323.782 436.9 318.782 436.9 DL 324.78 436.9 319.78 436.9 +DL 329.78 436.9 324.78 436.9 DL 334.78 436.9 329.78 436.9 DL 334.78 +425.9 334.78 435.9 DL 323.782 425.9 318.782 425.9 DL 324.78 425.9 319.78 +425.9 DL 329.78 425.9 324.78 425.9 DL 334.78 425.9 329.78 425.9 DL +336.446 426.9 336.446 436.9 DL 336.446 425.9 336.446 435.9 DL F1(SS3) +321.945 433.4 Q 352.444 426.9 352.444 436.9 DL 341.446 436.9 336.446 +436.9 DL 342.444 436.9 337.444 436.9 DL 347.444 436.9 342.444 436.9 DL +352.444 436.9 347.444 436.9 DL 352.444 425.9 352.444 435.9 DL 341.446 +425.9 336.446 425.9 DL 342.444 425.9 337.444 425.9 DL 347.444 425.9 +342.444 425.9 DL 352.444 425.9 347.444 425.9 DL 368.782 426.9 368.782 +436.9 DL 368.782 425.9 368.782 435.9 DL F0(P)341.665 434.4 Q 384.78 +426.9 384.78 436.9 DL 373.782 436.9 368.782 436.9 DL 374.78 436.9 369.78 +436.9 DL 379.78 436.9 374.78 436.9 DL 384.78 436.9 379.78 436.9 DL +384.78 425.9 384.78 435.9 DL 373.782 425.9 368.782 425.9 DL 374.78 425.9 +369.78 425.9 DL 379.78 425.9 374.78 425.9 DL 384.78 425.9 379.78 425.9 +DL 386.446 426.9 386.446 436.9 DL 386.446 425.9 386.446 435.9 DL F1(SS3) +371.945 433.4 Q 402.444 426.9 402.444 436.9 DL 391.446 436.9 386.446 +436.9 DL 392.444 436.9 387.444 436.9 DL 397.444 436.9 392.444 436.9 DL +402.444 436.9 397.444 436.9 DL 402.444 425.9 402.444 435.9 DL 391.446 +425.9 386.446 425.9 DL 392.444 425.9 387.444 425.9 DL 397.444 425.9 +392.444 425.9 DL 402.444 425.9 397.444 425.9 DL F0 32.447(PP)391.665 +434.4 S 454.672 426.9 454.672 436.9 DL 454.672 425.9 454.672 435.9 DL +(F2)435.232 434.4 Q 470.67 426.9 470.67 436.9 DL 459.672 436.9 454.672 +436.9 DL 460.67 436.9 455.67 436.9 DL 465.67 436.9 460.67 436.9 DL +470.67 436.9 465.67 436.9 DL 470.67 425.9 470.67 435.9 DL 459.672 425.9 +454.672 425.9 DL 460.67 425.9 455.67 425.9 DL 465.67 425.9 460.67 425.9 +DL 470.67 425.9 465.67 425.9 DL 472.336 426.9 472.336 436.9 DL 472.336 +425.9 472.336 435.9 DL F1(SS3)457.835 433.4 Q 488.334 426.9 488.334 +436.9 DL 477.336 436.9 472.336 436.9 DL 478.334 436.9 473.334 436.9 DL +483.334 436.9 478.334 436.9 DL 488.334 436.9 483.334 436.9 DL 488.334 +425.9 488.334 435.9 DL 477.336 425.9 472.336 425.9 DL 478.334 425.9 +473.334 425.9 DL 483.334 425.9 478.334 425.9 DL 488.334 425.9 483.334 +425.9 DL 504.672 426.9 504.672 436.9 DL 504.672 425.9 504.672 435.9 DL +F0(Q)476.725 434.4 Q 520.67 426.9 520.67 436.9 DL 509.672 436.9 504.672 +436.9 DL 510.67 436.9 505.67 436.9 DL 515.67 436.9 510.67 436.9 DL +520.67 436.9 515.67 436.9 DL 520.67 425.9 520.67 435.9 DL 509.672 425.9 +504.672 425.9 DL 510.67 425.9 505.67 425.9 DL 515.67 425.9 510.67 425.9 +DL 520.67 425.9 515.67 425.9 DL 522.336 426.9 522.336 436.9 DL 522.336 +425.9 522.336 435.9 DL F1(SS3)507.835 433.4 Q 538.334 426.9 538.334 +436.9 DL 527.336 436.9 522.336 436.9 DL 528.334 436.9 523.334 436.9 DL +533.334 436.9 528.334 436.9 DL 538.334 436.9 533.334 436.9 DL 538.334 +425.9 538.334 435.9 DL 527.336 425.9 522.336 425.9 DL 528.334 425.9 +523.334 425.9 DL 533.334 425.9 528.334 425.9 DL 538.334 425.9 533.334 +425.9 DL F0(Q)526.725 434.4 Q 97 438.9 97 448.9 DL 97 437.9 97 447.9 DL +(PF3)72 446.4 Q 112.998 438.9 112.998 448.9 DL 102 448.9 97 448.9 DL +102.998 448.9 97.998 448.9 DL 107.998 448.9 102.998 448.9 DL 112.998 +448.9 107.998 448.9 DL 112.998 437.9 112.998 447.9 DL 102 437.9 97 437.9 +DL 102.998 437.9 97.998 437.9 DL 107.998 437.9 102.998 437.9 DL 112.998 +437.9 107.998 437.9 DL 114.664 438.9 114.664 448.9 DL 114.664 437.9 +114.664 447.9 DL F1(SS3)100.163 445.4 Q 130.662 438.9 130.662 448.9 DL +119.664 448.9 114.664 448.9 DL 120.662 448.9 115.662 448.9 DL 125.662 +448.9 120.662 448.9 DL 130.662 448.9 125.662 448.9 DL 130.662 437.9 +130.662 447.9 DL 119.664 437.9 114.664 437.9 DL 120.662 437.9 115.662 +437.9 DL 125.662 437.9 120.662 437.9 DL 130.662 437.9 125.662 437.9 DL +147 438.9 147 448.9 DL 147 437.9 147 447.9 DL F0(R)119.328 446.4 Q +162.998 438.9 162.998 448.9 DL 152 448.9 147 448.9 DL 152.998 448.9 +147.998 448.9 DL 157.998 448.9 152.998 448.9 DL 162.998 448.9 157.998 +448.9 DL 162.998 437.9 162.998 447.9 DL 152 437.9 147 437.9 DL 152.998 +437.9 147.998 437.9 DL 157.998 437.9 152.998 437.9 DL 162.998 437.9 +157.998 437.9 DL 164.664 438.9 164.664 448.9 DL 164.664 437.9 164.664 +447.9 DL F1(SS3)150.163 445.4 Q 180.662 438.9 180.662 448.9 DL 169.664 +448.9 164.664 448.9 DL 170.662 448.9 165.662 448.9 DL 175.662 448.9 +170.662 448.9 DL 180.662 448.9 175.662 448.9 DL 180.662 437.9 180.662 +447.9 DL 169.664 437.9 164.664 437.9 DL 170.662 437.9 165.662 437.9 DL +175.662 437.9 170.662 437.9 DL 180.662 437.9 175.662 437.9 DL F0 11.194 +(RP)169.328 446.4 S 212.192 438.9 212.192 448.9 DL 212.192 437.9 212.192 +447.9 DL(F4)192.752 446.4 Q 228.19 438.9 228.19 448.9 DL 217.192 448.9 +212.192 448.9 DL 218.19 448.9 213.19 448.9 DL 223.19 448.9 218.19 448.9 +DL 228.19 448.9 223.19 448.9 DL 228.19 437.9 228.19 447.9 DL 217.192 +437.9 212.192 437.9 DL 218.19 437.9 213.19 437.9 DL 223.19 437.9 218.19 +437.9 DL 228.19 437.9 223.19 437.9 DL 229.856 438.9 229.856 448.9 DL +229.856 437.9 229.856 447.9 DL F1(SS3)215.355 445.4 Q 245.854 438.9 +245.854 448.9 DL 234.856 448.9 229.856 448.9 DL 235.854 448.9 230.854 +448.9 DL 240.854 448.9 235.854 448.9 DL 245.854 448.9 240.854 448.9 DL +245.854 437.9 245.854 447.9 DL 234.856 437.9 229.856 437.9 DL 235.854 +437.9 230.854 437.9 DL 240.854 437.9 235.854 437.9 DL 245.854 437.9 +240.854 437.9 DL 262.192 438.9 262.192 448.9 DL 262.192 437.9 262.192 +447.9 DL F0(S)235.075 446.4 Q 278.19 438.9 278.19 448.9 DL 267.192 448.9 +262.192 448.9 DL 268.19 448.9 263.19 448.9 DL 273.19 448.9 268.19 448.9 +DL 278.19 448.9 273.19 448.9 DL 278.19 437.9 278.19 447.9 DL 267.192 +437.9 262.192 437.9 DL 268.19 437.9 263.19 437.9 DL 273.19 437.9 268.19 +437.9 DL 278.19 437.9 273.19 437.9 DL 279.856 438.9 279.856 448.9 DL +279.856 437.9 279.856 447.9 DL F1(SS3)265.355 445.4 Q 295.854 438.9 +295.854 448.9 DL 284.856 448.9 279.856 448.9 DL 285.854 448.9 280.854 +448.9 DL 290.854 448.9 285.854 448.9 DL 295.854 448.9 290.854 448.9 DL +295.854 437.9 295.854 447.9 DL 284.856 437.9 279.856 437.9 DL 285.854 +437.9 280.854 437.9 DL 290.854 437.9 285.854 437.9 DL 295.854 437.9 +290.854 437.9 DL F0 11.749(S*)285.075 446.4 S 379.749 438.9 379.749 +448.9 DL 379.749 437.9 379.749 447.9 DL -.56(\(multiply\) *)312.249 +446.4 R 395.747 438.9 395.747 448.9 DL 384.749 448.9 379.749 448.9 DL +385.747 448.9 380.747 448.9 DL 390.747 448.9 385.747 448.9 DL 395.747 +448.9 390.747 448.9 DL 395.747 437.9 395.747 447.9 DL 384.749 437.9 +379.749 437.9 DL 385.747 437.9 380.747 437.9 DL 390.747 437.9 385.747 +437.9 DL 395.747 437.9 390.747 437.9 DL 397.413 438.9 397.413 448.9 DL +397.413 437.9 397.413 447.9 DL F1(SS3)382.912 445.4 Q 413.411 438.9 +413.411 448.9 DL 402.413 448.9 397.413 448.9 DL 403.411 448.9 398.411 +448.9 DL 408.411 448.9 403.411 448.9 DL 413.411 448.9 408.411 448.9 DL +413.411 437.9 413.411 447.9 DL 402.413 437.9 397.413 437.9 DL 403.411 +437.9 398.411 437.9 DL 408.411 437.9 403.411 437.9 DL 413.411 437.9 +408.411 437.9 DL F0 13.14(j+)404.022 446.4 S 497.307 438.9 497.307 448.9 +DL 497.307 437.9 497.307 447.9 DL 18.26(\(add\) +)430.447 446.4 R +513.305 438.9 513.305 448.9 DL 502.307 448.9 497.307 448.9 DL 503.305 +448.9 498.305 448.9 DL 508.305 448.9 503.305 448.9 DL 513.305 448.9 +508.305 448.9 DL 513.305 437.9 513.305 447.9 DL 502.307 437.9 497.307 +437.9 DL 503.305 437.9 498.305 437.9 DL 508.305 437.9 503.305 437.9 DL +513.305 437.9 508.305 437.9 DL 514.971 438.9 514.971 448.9 DL 514.971 +437.9 514.971 447.9 DL F1(SS3)500.47 445.4 Q 530.969 438.9 530.969 448.9 +DL 519.971 448.9 514.971 448.9 DL 520.969 448.9 515.969 448.9 DL 525.969 +448.9 520.969 448.9 DL 530.969 448.9 525.969 448.9 DL 530.969 437.9 +530.969 447.9 DL 519.971 437.9 514.971 437.9 DL 520.969 437.9 515.969 +437.9 DL 525.969 437.9 520.969 437.9 DL 530.969 437.9 525.969 437.9 DL +F0 12.03(k,)520.47 446.4 S 142 450.9 142 460.9 DL 142 449.9 142 459.9 DL +6.4(\(comma\) ,)72 458.4 R 157.998 450.9 157.998 460.9 DL 147 460.9 142 +460.9 DL 147.998 460.9 142.998 460.9 DL 152.998 460.9 147.998 460.9 DL +157.998 460.9 152.998 460.9 DL 157.998 449.9 157.998 459.9 DL 147 449.9 +142 449.9 DL 147.998 449.9 142.998 449.9 DL 152.998 449.9 147.998 449.9 +DL 157.998 449.9 152.998 449.9 DL 159.664 450.9 159.664 460.9 DL 159.664 +449.9 159.664 459.9 DL F1(SS3)145.163 457.4 Q 175.662 450.9 175.662 +460.9 DL 164.664 460.9 159.664 460.9 DL 165.662 460.9 160.662 460.9 DL +170.662 460.9 165.662 460.9 DL 175.662 460.9 170.662 460.9 DL 175.662 +449.9 175.662 459.9 DL 164.664 449.9 159.664 449.9 DL 165.662 449.9 +160.662 449.9 DL 170.662 449.9 165.662 449.9 DL 175.662 449.9 170.662 +449.9 DL F0 20.613(l-)166.273 458.4 S 274.504 450.9 274.504 460.9 DL +274.504 449.9 274.504 459.9 DL 10.56(\(minus\) -)205.334 458.4 R 290.502 +450.9 290.502 460.9 DL 279.504 460.9 274.504 460.9 DL 280.502 460.9 +275.502 460.9 DL 285.502 460.9 280.502 460.9 DL 290.502 460.9 285.502 +460.9 DL 290.502 449.9 290.502 459.9 DL 279.504 449.9 274.504 449.9 DL +280.502 449.9 275.502 449.9 DL 285.502 449.9 280.502 449.9 DL 290.502 +449.9 285.502 449.9 DL 292.168 450.9 292.168 460.9 DL 292.168 449.9 +292.168 459.9 DL F1(SS3)277.667 457.4 Q 308.166 450.9 308.166 460.9 DL +297.168 460.9 292.168 460.9 DL 298.166 460.9 293.166 460.9 DL 303.166 +460.9 298.166 460.9 DL 308.166 460.9 303.166 460.9 DL 308.166 449.9 +308.166 459.9 DL 297.168 449.9 292.168 449.9 DL 298.166 449.9 293.166 +449.9 DL 303.166 449.9 298.166 449.9 DL 308.166 449.9 303.166 449.9 DL +F0 18.113(m/)296.277 458.4 S(\(di)-5.776 E 407.007 450.9 407.007 460.9 +DL 407.007 449.9 407.007 459.9 DL 10.81(vide\) /)348.147 458.4 R 423.005 +450.9 423.005 460.9 DL 412.007 460.9 407.007 460.9 DL 413.005 460.9 +408.005 460.9 DL 418.005 460.9 413.005 460.9 DL 423.005 460.9 418.005 +460.9 DL 423.005 449.9 423.005 459.9 DL 412.007 449.9 407.007 449.9 DL +413.005 449.9 408.005 449.9 DL 418.005 449.9 413.005 449.9 DL 423.005 +449.9 418.005 449.9 DL 424.671 450.9 424.671 460.9 DL 424.671 449.9 +424.671 459.9 DL F1(SS3)410.17 457.4 Q 440.669 450.9 440.669 460.9 DL +429.671 460.9 424.671 460.9 DL 430.669 460.9 425.669 460.9 DL 435.669 +460.9 430.669 460.9 DL 440.669 460.9 435.669 460.9 DL 440.669 449.9 +440.669 459.9 DL 429.671 449.9 424.671 449.9 DL 430.669 449.9 425.669 +449.9 DL 435.669 449.9 430.669 449.9 DL 440.669 449.9 435.669 449.9 DL +504.672 450.9 504.672 460.9 DL 504.672 449.9 504.672 459.9 DL F0 -21.504 +19.502(o0 0)430.17 458.4 T 520.67 450.9 520.67 460.9 DL 509.672 460.9 +504.672 460.9 DL 510.67 460.9 505.67 460.9 DL 515.67 460.9 510.67 460.9 +DL 520.67 460.9 515.67 460.9 DL 520.67 449.9 520.67 459.9 DL 509.672 +449.9 504.672 449.9 DL 510.67 449.9 505.67 449.9 DL 515.67 449.9 510.67 +449.9 DL 520.67 449.9 515.67 449.9 DL 522.336 450.9 522.336 460.9 DL +522.336 449.9 522.336 459.9 DL F1(SS3)507.835 457.4 Q 538.334 450.9 +538.334 460.9 DL 527.336 460.9 522.336 460.9 DL 528.334 460.9 523.334 +460.9 DL 533.334 460.9 528.334 460.9 DL 538.334 460.9 533.334 460.9 DL +538.334 449.9 538.334 459.9 DL 527.336 449.9 522.336 449.9 DL 528.334 +449.9 523.334 449.9 DL 533.334 449.9 528.334 449.9 DL 538.334 449.9 +533.334 449.9 DL F0(p)527.835 458.4 Q 122 462.9 122 472.9 DL 122 461.9 +122 471.9 DL 20(11)72 470.4 S 137.998 462.9 137.998 472.9 DL 127 472.9 +122 472.9 DL 127.998 472.9 122.998 472.9 DL 132.998 472.9 127.998 472.9 +DL 137.998 472.9 132.998 472.9 DL 137.998 461.9 137.998 471.9 DL 127 +461.9 122 461.9 DL 127.998 461.9 122.998 461.9 DL 132.998 461.9 127.998 +461.9 DL 137.998 461.9 132.998 461.9 DL 139.664 462.9 139.664 472.9 DL +139.664 461.9 139.664 471.9 DL F1(SS3)125.163 469.4 Q 155.662 462.9 +155.662 472.9 DL 144.664 472.9 139.664 472.9 DL 145.662 472.9 140.662 +472.9 DL 150.662 472.9 145.662 472.9 DL 155.662 472.9 150.662 472.9 DL +155.662 461.9 155.662 471.9 DL 144.664 461.9 139.664 461.9 DL 145.662 +461.9 140.662 461.9 DL 150.662 461.9 145.662 461.9 DL 155.662 461.9 +150.662 461.9 DL 217.668 462.9 217.668 472.9 DL 217.668 461.9 217.668 +471.9 DL F0 -17.51 17.505(q2 2)145.163 470.4 T 233.666 462.9 233.666 +472.9 DL 222.668 472.9 217.668 472.9 DL 223.666 472.9 218.666 472.9 DL +228.666 472.9 223.666 472.9 DL 233.666 472.9 228.666 472.9 DL 233.666 +461.9 233.666 471.9 DL 222.668 461.9 217.668 461.9 DL 223.666 461.9 +218.666 461.9 DL 228.666 461.9 223.666 461.9 DL 233.666 461.9 228.666 +461.9 DL 235.332 462.9 235.332 472.9 DL 235.332 461.9 235.332 471.9 DL +F1(SS3)220.831 469.4 Q 251.33 462.9 251.33 472.9 DL 240.332 472.9 +235.332 472.9 DL 241.33 472.9 236.33 472.9 DL 246.33 472.9 241.33 472.9 +DL 251.33 472.9 246.33 472.9 DL 251.33 461.9 251.33 471.9 DL 240.332 +461.9 235.332 461.9 DL 241.33 461.9 236.33 461.9 DL 246.33 461.9 241.33 +461.9 DL 251.33 461.9 246.33 461.9 DL 313.336 462.9 313.336 472.9 DL +313.336 461.9 313.336 471.9 DL F0 -19.18 18.34(r3 3)241.666 470.4 T +329.334 462.9 329.334 472.9 DL 318.336 472.9 313.336 472.9 DL 319.334 +472.9 314.334 472.9 DL 324.334 472.9 319.334 472.9 DL 329.334 472.9 +324.334 472.9 DL 329.334 461.9 329.334 471.9 DL 318.336 461.9 313.336 +461.9 DL 319.334 461.9 314.334 461.9 DL 324.334 461.9 319.334 461.9 DL +329.334 461.9 324.334 461.9 DL 331 462.9 331 472.9 DL 331 461.9 331 +471.9 DL F1(SS3)316.499 469.4 Q 346.998 462.9 346.998 472.9 DL 336 472.9 +331 472.9 DL 336.998 472.9 331.998 472.9 DL 341.998 472.9 336.998 472.9 +DL 346.998 472.9 341.998 472.9 DL 346.998 461.9 346.998 471.9 DL 336 +461.9 331 461.9 DL 336.998 461.9 331.998 461.9 DL 341.998 461.9 336.998 +461.9 DL 346.998 461.9 341.998 461.9 DL 409.004 462.9 409.004 472.9 DL +409.004 461.9 409.004 471.9 DL F0 -18.62 18.06(s4 4)337.054 470.4 T +425.002 462.9 425.002 472.9 DL 414.004 472.9 409.004 472.9 DL 415.002 +472.9 410.002 472.9 DL 420.002 472.9 415.002 472.9 DL 425.002 472.9 +420.002 472.9 DL 425.002 461.9 425.002 471.9 DL 414.004 461.9 409.004 +461.9 DL 415.002 461.9 410.002 461.9 DL 420.002 461.9 415.002 461.9 DL +425.002 461.9 420.002 461.9 DL 426.668 462.9 426.668 472.9 DL 426.668 +461.9 426.668 471.9 DL F1(SS3)412.167 469.4 Q 442.666 462.9 442.666 +472.9 DL 431.668 472.9 426.668 472.9 DL 432.666 472.9 427.666 472.9 DL +437.666 472.9 432.666 472.9 DL 442.666 472.9 437.666 472.9 DL 442.666 +461.9 442.666 471.9 DL 431.668 461.9 426.668 461.9 DL 432.666 461.9 +427.666 461.9 DL 437.666 461.9 432.666 461.9 DL 442.666 461.9 437.666 +461.9 DL 504.672 462.9 504.672 472.9 DL 504.672 461.9 504.672 471.9 DL +F0 -19.73 18.615(t5 5)433.277 470.4 T 520.67 462.9 520.67 472.9 DL +509.672 472.9 504.672 472.9 DL 510.67 472.9 505.67 472.9 DL 515.67 472.9 +510.67 472.9 DL 520.67 472.9 515.67 472.9 DL 520.67 461.9 520.67 471.9 +DL 509.672 461.9 504.672 461.9 DL 510.67 461.9 505.67 461.9 DL 515.67 +461.9 510.67 461.9 DL 520.67 461.9 515.67 461.9 DL 522.336 462.9 522.336 +472.9 DL 522.336 461.9 522.336 471.9 DL F1(SS3)507.835 469.4 Q 538.334 +462.9 538.334 472.9 DL 527.336 472.9 522.336 472.9 DL 528.334 472.9 +523.334 472.9 DL 533.334 472.9 528.334 472.9 DL 538.334 472.9 533.334 +472.9 DL 538.334 461.9 538.334 471.9 DL 527.336 461.9 522.336 461.9 DL +528.334 461.9 523.334 461.9 DL 533.334 461.9 528.334 461.9 DL 538.334 +461.9 533.334 461.9 DL F0(u)527.835 470.4 Q 122 474.9 122 484.9 DL 122 +473.9 122 483.9 DL 20(66)72 482.4 S 137.998 474.9 137.998 484.9 DL 127 +484.9 122 484.9 DL 127.998 484.9 122.998 484.9 DL 132.998 484.9 127.998 +484.9 DL 137.998 484.9 132.998 484.9 DL 137.998 473.9 137.998 483.9 DL +127 473.9 122 473.9 DL 127.998 473.9 122.998 473.9 DL 132.998 473.9 +127.998 473.9 DL 137.998 473.9 132.998 473.9 DL 139.664 474.9 139.664 +484.9 DL 139.664 473.9 139.664 483.9 DL F1(SS3)125.163 481.4 Q 155.662 +474.9 155.662 484.9 DL 144.664 484.9 139.664 484.9 DL 145.662 484.9 +140.662 484.9 DL 150.662 484.9 145.662 484.9 DL 155.662 484.9 150.662 +484.9 DL 155.662 473.9 155.662 483.9 DL 144.664 473.9 139.664 473.9 DL +145.662 473.9 140.662 473.9 DL 150.662 473.9 145.662 473.9 DL 155.662 +473.9 150.662 473.9 DL 209.828 474.9 209.828 484.9 DL 209.828 473.9 +209.828 483.9 DL F0 -1.83 9.665(v7 7)145.163 482.4 T 225.826 474.9 +225.826 484.9 DL 214.828 484.9 209.828 484.9 DL 215.826 484.9 210.826 +484.9 DL 220.826 484.9 215.826 484.9 DL 225.826 484.9 220.826 484.9 DL +225.826 473.9 225.826 483.9 DL 214.828 473.9 209.828 473.9 DL 215.826 +473.9 210.826 473.9 DL 220.826 473.9 215.826 473.9 DL 225.826 473.9 +220.826 473.9 DL 227.492 474.9 227.492 484.9 DL 227.492 473.9 227.492 +483.9 DL F1(SS3)212.991 481.4 Q 243.49 474.9 243.49 484.9 DL 232.492 +484.9 227.492 484.9 DL 233.49 484.9 228.49 484.9 DL 238.49 484.9 233.49 +484.9 DL 243.49 484.9 238.49 484.9 DL 243.49 473.9 243.49 483.9 DL +232.492 473.9 227.492 473.9 DL 233.49 473.9 228.49 473.9 DL 238.49 473.9 +233.49 473.9 DL 243.49 473.9 238.49 473.9 DL 297.656 474.9 297.656 484.9 +DL 297.656 473.9 297.656 483.9 DL F0 .39 8.555(w8 8)231.881 482.4 T +313.654 474.9 313.654 484.9 DL 302.656 484.9 297.656 484.9 DL 303.654 +484.9 298.654 484.9 DL 308.654 484.9 303.654 484.9 DL 313.654 484.9 +308.654 484.9 DL 313.654 473.9 313.654 483.9 DL 302.656 473.9 297.656 +473.9 DL 303.654 473.9 298.654 473.9 DL 308.654 473.9 303.654 473.9 DL +313.654 473.9 308.654 473.9 DL 315.32 474.9 315.32 484.9 DL 315.32 473.9 +315.32 483.9 DL F1(SS3)300.819 481.4 Q 331.318 474.9 331.318 484.9 DL +320.32 484.9 315.32 484.9 DL 321.318 484.9 316.318 484.9 DL 326.318 +484.9 321.318 484.9 DL 331.318 484.9 326.318 484.9 DL 331.318 473.9 +331.318 483.9 DL 320.32 473.9 315.32 473.9 DL 321.318 473.9 316.318 +473.9 DL 326.318 473.9 321.318 473.9 DL 331.318 473.9 326.318 473.9 DL +385.484 474.9 385.484 484.9 DL 385.484 473.9 385.484 483.9 DL F0 -1.83 +9.665(x9 9)320.819 482.4 T 401.482 474.9 401.482 484.9 DL 390.484 484.9 +385.484 484.9 DL 391.482 484.9 386.482 484.9 DL 396.482 484.9 391.482 +484.9 DL 401.482 484.9 396.482 484.9 DL 401.482 473.9 401.482 483.9 DL +390.484 473.9 385.484 473.9 DL 391.482 473.9 386.482 473.9 DL 396.482 +473.9 391.482 473.9 DL 401.482 473.9 396.482 473.9 DL 403.148 474.9 +403.148 484.9 DL 403.148 473.9 403.148 483.9 DL F1(SS3)388.647 481.4 Q +419.146 474.9 419.146 484.9 DL 408.148 484.9 403.148 484.9 DL 409.146 +484.9 404.146 484.9 DL 414.146 484.9 409.146 484.9 DL 419.146 484.9 +414.146 484.9 DL 419.146 473.9 419.146 483.9 DL 408.148 473.9 403.148 +473.9 DL 409.146 473.9 404.146 473.9 DL 414.146 473.9 409.146 473.9 DL +419.146 473.9 414.146 473.9 DL F0 9.665(y=)408.647 482.4 S 498.312 474.9 +498.312 484.9 DL 498.312 473.9 498.312 483.9 DL 11.04(\(equal\) =) +431.452 482.4 R 514.31 474.9 514.31 484.9 DL 503.312 484.9 498.312 484.9 +DL 504.31 484.9 499.31 484.9 DL 509.31 484.9 504.31 484.9 DL 514.31 +484.9 509.31 484.9 DL 514.31 473.9 514.31 483.9 DL 503.312 473.9 498.312 +473.9 DL 504.31 473.9 499.31 473.9 DL 509.31 473.9 504.31 473.9 DL +514.31 473.9 509.31 473.9 DL 515.976 474.9 515.976 484.9 DL 515.976 +473.9 515.976 483.9 DL F1(SS3)501.475 481.4 Q 531.974 474.9 531.974 +484.9 DL 520.976 484.9 515.976 484.9 DL 521.974 484.9 516.974 484.9 DL +526.974 484.9 521.974 484.9 DL 531.974 484.9 526.974 484.9 DL 531.974 +473.9 531.974 483.9 DL 520.976 473.9 515.976 473.9 DL 521.974 473.9 +516.974 473.9 DL 526.974 473.9 521.974 473.9 DL 531.974 473.9 526.974 +473.9 DL F0(X)520.365 482.4 Q .239(The VT220 pro)72 505.2 R .239 +(vides 8 additional function k)-.15 F -.15(ey)-.1 G 2.739(s. W).15 F +.239(ith a Sun/PC k)-.4 F -.15(ey)-.1 G .239(board, access these k).15 F +-.15(ey)-.1 G 2.739(sb).15 G 2.738(yC)-2.739 G .238(ontrol/F1 for F13,) +-2.738 F(etc.)72 517.2 Q .704(center; cf3)72 535.2 R .704 +(cf3 lf3w\(2c\))12.23 F .705(lf3w\(2c\) .)15.57 F -2.15 -.25(Ke y)5.705 +H 370.483 527.7 370.483 537.7 DL 370.483 526.7 370.483 536.7 DL .705 +(Escape Sequence _ F13)264.228 535.2 R 386.481 527.7 386.481 537.7 DL +375.483 537.7 370.483 537.7 DL 376.481 537.7 371.481 537.7 DL 381.481 +537.7 376.481 537.7 DL 386.481 537.7 381.481 537.7 DL 386.481 526.7 +386.481 536.7 DL 375.483 526.7 370.483 526.7 DL 376.481 526.7 371.481 +526.7 DL 381.481 526.7 376.481 526.7 DL 386.481 526.7 381.481 526.7 DL +388.147 527.7 388.147 537.7 DL 388.147 526.7 388.147 536.7 DL F1(CSI) +373.814 534.2 Q 404.145 527.7 404.145 537.7 DL 393.147 537.7 388.147 +537.7 DL 394.145 537.7 389.145 537.7 DL 399.145 537.7 394.145 537.7 DL +404.145 537.7 399.145 537.7 DL 404.145 526.7 404.145 536.7 DL 393.147 +526.7 388.147 526.7 DL 394.145 526.7 389.145 526.7 DL 399.145 526.7 +394.145 526.7 DL 404.145 526.7 399.145 526.7 DL 405.811 527.7 405.811 +537.7 DL 405.811 526.7 405.811 536.7 DL 421.809 527.7 421.809 537.7 DL +410.811 537.7 405.811 537.7 DL 411.809 537.7 406.809 537.7 DL 416.809 +537.7 411.809 537.7 DL 421.809 537.7 416.809 537.7 DL 421.809 526.7 +421.809 536.7 DL 410.811 526.7 405.811 526.7 DL 411.809 526.7 406.809 +526.7 DL 416.809 526.7 411.809 526.7 DL 421.809 526.7 416.809 526.7 DL +423.475 527.7 423.475 537.7 DL 423.475 526.7 423.475 536.7 DL 439.473 +527.7 439.473 537.7 DL 428.475 537.7 423.475 537.7 DL 429.473 537.7 +424.473 537.7 DL 434.473 537.7 429.473 537.7 DL 439.473 537.7 434.473 +537.7 DL 439.473 526.7 439.473 536.7 DL 428.475 526.7 423.475 526.7 DL +429.473 526.7 424.473 526.7 DL 434.473 526.7 429.473 526.7 DL 439.473 +526.7 434.473 526.7 DL F0 -14.329 12.664(25 ~)393.646 535.2 T 469.344 +527.7 469.344 537.7 DL 469.344 526.7 469.344 536.7 DL(F14)444.344 535.2 +Q 485.342 527.7 485.342 537.7 DL 474.344 537.7 469.344 537.7 DL 475.342 +537.7 470.342 537.7 DL 480.342 537.7 475.342 537.7 DL 485.342 537.7 +480.342 537.7 DL 485.342 526.7 485.342 536.7 DL 474.344 526.7 469.344 +526.7 DL 475.342 526.7 470.342 526.7 DL 480.342 526.7 475.342 526.7 DL +485.342 526.7 480.342 526.7 DL 487.008 527.7 487.008 537.7 DL 487.008 +526.7 487.008 536.7 DL F1(CSI)472.675 534.2 Q 503.006 527.7 503.006 +537.7 DL 492.008 537.7 487.008 537.7 DL 493.006 537.7 488.006 537.7 DL +498.006 537.7 493.006 537.7 DL 503.006 537.7 498.006 537.7 DL 503.006 +526.7 503.006 536.7 DL 492.008 526.7 487.008 526.7 DL 493.006 526.7 +488.006 526.7 DL 498.006 526.7 493.006 526.7 DL 503.006 526.7 498.006 +526.7 DL 504.672 527.7 504.672 537.7 DL 504.672 526.7 504.672 536.7 DL +520.67 527.7 520.67 537.7 DL 509.672 537.7 504.672 537.7 DL 510.67 537.7 +505.67 537.7 DL 515.67 537.7 510.67 537.7 DL 520.67 537.7 515.67 537.7 +DL 520.67 526.7 520.67 536.7 DL 509.672 526.7 504.672 526.7 DL 510.67 +526.7 505.67 526.7 DL 515.67 526.7 510.67 526.7 DL 520.67 526.7 515.67 +526.7 DL 522.336 527.7 522.336 537.7 DL 522.336 526.7 522.336 536.7 DL +538.334 527.7 538.334 537.7 DL 527.336 537.7 522.336 537.7 DL 528.334 +537.7 523.334 537.7 DL 533.334 537.7 528.334 537.7 DL 538.334 537.7 +533.334 537.7 DL 538.334 526.7 538.334 536.7 DL 527.336 526.7 522.336 +526.7 DL 528.334 526.7 523.334 526.7 DL 533.334 526.7 528.334 526.7 DL +538.334 526.7 533.334 526.7 DL F0 -14.329 12.664(26 ~)492.507 535.2 T 97 +539.7 97 549.7 DL 97 538.7 97 548.7 DL(F15)72 547.2 Q 112.998 539.7 +112.998 549.7 DL 102 549.7 97 549.7 DL 102.998 549.7 97.998 549.7 DL +107.998 549.7 102.998 549.7 DL 112.998 549.7 107.998 549.7 DL 112.998 +538.7 112.998 548.7 DL 102 538.7 97 538.7 DL 102.998 538.7 97.998 538.7 +DL 107.998 538.7 102.998 538.7 DL 112.998 538.7 107.998 538.7 DL 114.664 +539.7 114.664 549.7 DL 114.664 538.7 114.664 548.7 DL F1(CSI)100.331 +546.2 Q 130.662 539.7 130.662 549.7 DL 119.664 549.7 114.664 549.7 DL +120.662 549.7 115.662 549.7 DL 125.662 549.7 120.662 549.7 DL 130.662 +549.7 125.662 549.7 DL 130.662 538.7 130.662 548.7 DL 119.664 538.7 +114.664 538.7 DL 120.662 538.7 115.662 538.7 DL 125.662 538.7 120.662 +538.7 DL 130.662 538.7 125.662 538.7 DL 132.328 539.7 132.328 549.7 DL +132.328 538.7 132.328 548.7 DL 148.326 539.7 148.326 549.7 DL 137.328 +549.7 132.328 549.7 DL 138.326 549.7 133.326 549.7 DL 143.326 549.7 +138.326 549.7 DL 148.326 549.7 143.326 549.7 DL 148.326 538.7 148.326 +548.7 DL 137.328 538.7 132.328 538.7 DL 138.326 538.7 133.326 538.7 DL +143.326 538.7 138.326 538.7 DL 148.326 538.7 143.326 538.7 DL 149.992 +539.7 149.992 549.7 DL 149.992 538.7 149.992 548.7 DL 165.99 539.7 +165.99 549.7 DL 154.992 549.7 149.992 549.7 DL 155.99 549.7 150.99 549.7 +DL 160.99 549.7 155.99 549.7 DL 165.99 549.7 160.99 549.7 DL 165.99 +538.7 165.99 548.7 DL 154.992 538.7 149.992 538.7 DL 155.99 538.7 150.99 +538.7 DL 160.99 538.7 155.99 538.7 DL 165.99 538.7 160.99 538.7 DL F0 +-14.329 12.664(28 ~)120.163 547.2 T 221.115 539.7 221.115 549.7 DL +221.115 538.7 221.115 548.7 DL(F16)196.115 547.2 Q 237.113 539.7 237.113 +549.7 DL 226.115 549.7 221.115 549.7 DL 227.113 549.7 222.113 549.7 DL +232.113 549.7 227.113 549.7 DL 237.113 549.7 232.113 549.7 DL 237.113 +538.7 237.113 548.7 DL 226.115 538.7 221.115 538.7 DL 227.113 538.7 +222.113 538.7 DL 232.113 538.7 227.113 538.7 DL 237.113 538.7 232.113 +538.7 DL 238.779 539.7 238.779 549.7 DL 238.779 538.7 238.779 548.7 DL +F1(CSI)224.446 546.2 Q 254.777 539.7 254.777 549.7 DL 243.779 549.7 +238.779 549.7 DL 244.777 549.7 239.777 549.7 DL 249.777 549.7 244.777 +549.7 DL 254.777 549.7 249.777 549.7 DL 254.777 538.7 254.777 548.7 DL +243.779 538.7 238.779 538.7 DL 244.777 538.7 239.777 538.7 DL 249.777 +538.7 244.777 538.7 DL 254.777 538.7 249.777 538.7 DL 256.443 539.7 +256.443 549.7 DL 256.443 538.7 256.443 548.7 DL 272.441 539.7 272.441 +549.7 DL 261.443 549.7 256.443 549.7 DL 262.441 549.7 257.441 549.7 DL +267.441 549.7 262.441 549.7 DL 272.441 549.7 267.441 549.7 DL 272.441 +538.7 272.441 548.7 DL 261.443 538.7 256.443 538.7 DL 262.441 538.7 +257.441 538.7 DL 267.441 538.7 262.441 538.7 DL 272.441 538.7 267.441 +538.7 DL 274.107 539.7 274.107 549.7 DL 274.107 538.7 274.107 548.7 DL +290.105 539.7 290.105 549.7 DL 279.107 549.7 274.107 549.7 DL 280.105 +549.7 275.105 549.7 DL 285.105 549.7 280.105 549.7 DL 290.105 549.7 +285.105 549.7 DL 290.105 538.7 290.105 548.7 DL 279.107 538.7 274.107 +538.7 DL 280.105 538.7 275.105 538.7 DL 285.105 538.7 280.105 538.7 DL +290.105 538.7 285.105 538.7 DL F0 -14.329 12.664(29 ~)244.278 547.2 T +345.23 539.7 345.23 549.7 DL 345.23 538.7 345.23 548.7 DL(F17)320.23 +547.2 Q 361.228 539.7 361.228 549.7 DL 350.23 549.7 345.23 549.7 DL +351.228 549.7 346.228 549.7 DL 356.228 549.7 351.228 549.7 DL 361.228 +549.7 356.228 549.7 DL 361.228 538.7 361.228 548.7 DL 350.23 538.7 +345.23 538.7 DL 351.228 538.7 346.228 538.7 DL 356.228 538.7 351.228 +538.7 DL 361.228 538.7 356.228 538.7 DL 362.894 539.7 362.894 549.7 DL +362.894 538.7 362.894 548.7 DL F1(CSI)348.561 546.2 Q 378.892 539.7 +378.892 549.7 DL 367.894 549.7 362.894 549.7 DL 368.892 549.7 363.892 +549.7 DL 373.892 549.7 368.892 549.7 DL 378.892 549.7 373.892 549.7 DL +378.892 538.7 378.892 548.7 DL 367.894 538.7 362.894 538.7 DL 368.892 +538.7 363.892 538.7 DL 373.892 538.7 368.892 538.7 DL 378.892 538.7 +373.892 538.7 DL 380.558 539.7 380.558 549.7 DL 380.558 538.7 380.558 +548.7 DL 396.556 539.7 396.556 549.7 DL 385.558 549.7 380.558 549.7 DL +386.556 549.7 381.556 549.7 DL 391.556 549.7 386.556 549.7 DL 396.556 +549.7 391.556 549.7 DL 396.556 538.7 396.556 548.7 DL 385.558 538.7 +380.558 538.7 DL 386.556 538.7 381.556 538.7 DL 391.556 538.7 386.556 +538.7 DL 396.556 538.7 391.556 538.7 DL 398.222 539.7 398.222 549.7 DL +398.222 538.7 398.222 548.7 DL 414.22 539.7 414.22 549.7 DL 403.222 +549.7 398.222 549.7 DL 404.22 549.7 399.22 549.7 DL 409.22 549.7 404.22 +549.7 DL 414.22 549.7 409.22 549.7 DL 414.22 538.7 414.22 548.7 DL +403.222 538.7 398.222 538.7 DL 404.22 538.7 399.22 538.7 DL 409.22 538.7 +404.22 538.7 DL 414.22 538.7 409.22 538.7 DL F0 -14.329 12.664(31 ~) +368.393 547.2 T 469.344 539.7 469.344 549.7 DL 469.344 538.7 469.344 +548.7 DL(F18)444.344 547.2 Q 485.342 539.7 485.342 549.7 DL 474.344 +549.7 469.344 549.7 DL 475.342 549.7 470.342 549.7 DL 480.342 549.7 +475.342 549.7 DL 485.342 549.7 480.342 549.7 DL 485.342 538.7 485.342 +548.7 DL 474.344 538.7 469.344 538.7 DL 475.342 538.7 470.342 538.7 DL +480.342 538.7 475.342 538.7 DL 485.342 538.7 480.342 538.7 DL 487.008 +539.7 487.008 549.7 DL 487.008 538.7 487.008 548.7 DL F1(CSI)472.675 +546.2 Q 503.006 539.7 503.006 549.7 DL 492.008 549.7 487.008 549.7 DL +493.006 549.7 488.006 549.7 DL 498.006 549.7 493.006 549.7 DL 503.006 +549.7 498.006 549.7 DL 503.006 538.7 503.006 548.7 DL 492.008 538.7 +487.008 538.7 DL 493.006 538.7 488.006 538.7 DL 498.006 538.7 493.006 +538.7 DL 503.006 538.7 498.006 538.7 DL 504.672 539.7 504.672 549.7 DL +504.672 538.7 504.672 548.7 DL 520.67 539.7 520.67 549.7 DL 509.672 +549.7 504.672 549.7 DL 510.67 549.7 505.67 549.7 DL 515.67 549.7 510.67 +549.7 DL 520.67 549.7 515.67 549.7 DL 520.67 538.7 520.67 548.7 DL +509.672 538.7 504.672 538.7 DL 510.67 538.7 505.67 538.7 DL 515.67 538.7 +510.67 538.7 DL 520.67 538.7 515.67 538.7 DL 522.336 539.7 522.336 549.7 +DL 522.336 538.7 522.336 548.7 DL 538.334 539.7 538.334 549.7 DL 527.336 +549.7 522.336 549.7 DL 528.334 549.7 523.334 549.7 DL 533.334 549.7 +528.334 549.7 DL 538.334 549.7 533.334 549.7 DL 538.334 538.7 538.334 +548.7 DL 527.336 538.7 522.336 538.7 DL 528.334 538.7 523.334 538.7 DL +533.334 538.7 528.334 538.7 DL 538.334 538.7 533.334 538.7 DL F0 -14.329 +12.664(32 ~)492.507 547.2 T 97 551.7 97 561.7 DL 97 550.7 97 560.7 DL +(F19)72 559.2 Q 112.998 551.7 112.998 561.7 DL 102 561.7 97 561.7 DL +102.998 561.7 97.998 561.7 DL 107.998 561.7 102.998 561.7 DL 112.998 +561.7 107.998 561.7 DL 112.998 550.7 112.998 560.7 DL 102 550.7 97 550.7 +DL 102.998 550.7 97.998 550.7 DL 107.998 550.7 102.998 550.7 DL 112.998 +550.7 107.998 550.7 DL 114.664 551.7 114.664 561.7 DL 114.664 550.7 +114.664 560.7 DL F1(CSI)100.331 558.2 Q 130.662 551.7 130.662 561.7 DL +119.664 561.7 114.664 561.7 DL 120.662 561.7 115.662 561.7 DL 125.662 +561.7 120.662 561.7 DL 130.662 561.7 125.662 561.7 DL 130.662 550.7 +130.662 560.7 DL 119.664 550.7 114.664 550.7 DL 120.662 550.7 115.662 +550.7 DL 125.662 550.7 120.662 550.7 DL 130.662 550.7 125.662 550.7 DL +132.328 551.7 132.328 561.7 DL 132.328 550.7 132.328 560.7 DL 148.326 +551.7 148.326 561.7 DL 137.328 561.7 132.328 561.7 DL 138.326 561.7 +133.326 561.7 DL 143.326 561.7 138.326 561.7 DL 148.326 561.7 143.326 +561.7 DL 148.326 550.7 148.326 560.7 DL 137.328 550.7 132.328 550.7 DL +138.326 550.7 133.326 550.7 DL 143.326 550.7 138.326 550.7 DL 148.326 +550.7 143.326 550.7 DL 149.992 551.7 149.992 561.7 DL 149.992 550.7 +149.992 560.7 DL 165.99 551.7 165.99 561.7 DL 154.992 561.7 149.992 +561.7 DL 155.99 561.7 150.99 561.7 DL 160.99 561.7 155.99 561.7 DL +165.99 561.7 160.99 561.7 DL 165.99 550.7 165.99 560.7 DL 154.992 550.7 +149.992 550.7 DL 155.99 550.7 150.99 550.7 DL 160.99 550.7 155.99 550.7 +DL 165.99 550.7 160.99 550.7 DL F0 -14.329 12.664(33 ~)120.163 559.2 T +195.156 551.7 195.156 561.7 DL 195.156 550.7 195.156 560.7 DL(F20) +170.156 559.2 Q 211.154 551.7 211.154 561.7 DL 200.156 561.7 195.156 +561.7 DL 201.154 561.7 196.154 561.7 DL 206.154 561.7 201.154 561.7 DL +211.154 561.7 206.154 561.7 DL 211.154 550.7 211.154 560.7 DL 200.156 +550.7 195.156 550.7 DL 201.154 550.7 196.154 550.7 DL 206.154 550.7 +201.154 550.7 DL 211.154 550.7 206.154 550.7 DL 212.82 551.7 212.82 +561.7 DL 212.82 550.7 212.82 560.7 DL F1(CSI)198.487 558.2 Q 228.818 +551.7 228.818 561.7 DL 217.82 561.7 212.82 561.7 DL 218.818 561.7 +213.818 561.7 DL 223.818 561.7 218.818 561.7 DL 228.818 561.7 223.818 +561.7 DL 228.818 550.7 228.818 560.7 DL 217.82 550.7 212.82 550.7 DL +218.818 550.7 213.818 550.7 DL 223.818 550.7 218.818 550.7 DL 228.818 +550.7 223.818 550.7 DL 230.484 551.7 230.484 561.7 DL 230.484 550.7 +230.484 560.7 DL 246.482 551.7 246.482 561.7 DL 235.484 561.7 230.484 +561.7 DL 236.482 561.7 231.482 561.7 DL 241.482 561.7 236.482 561.7 DL +246.482 561.7 241.482 561.7 DL 246.482 550.7 246.482 560.7 DL 235.484 +550.7 230.484 550.7 DL 236.482 550.7 231.482 550.7 DL 241.482 550.7 +236.482 550.7 DL 246.482 550.7 241.482 550.7 DL 248.148 551.7 248.148 +561.7 DL 248.148 550.7 248.148 560.7 DL 264.146 551.7 264.146 561.7 DL +253.148 561.7 248.148 561.7 DL 254.146 561.7 249.146 561.7 DL 259.146 +561.7 254.146 561.7 DL 264.146 561.7 259.146 561.7 DL 264.146 550.7 +264.146 560.7 DL 253.148 550.7 248.148 550.7 DL 254.146 550.7 249.146 +550.7 DL 259.146 550.7 254.146 550.7 DL 264.146 550.7 259.146 550.7 DL +F0 -14.329 12.664(34 ~)218.319 559.2 T F3(VT52-Style Function K)72 589.2 +Q(eys)-.25 E F0 2.665(AV)72 606 S .165(T52 does not ha)-2.665 F .465 +-.15(ve f)-.2 H .165(unction k).15 F -.15(ey)-.1 G .166(s, b).15 F .166 +(ut it does ha)-.2 F .466 -.15(ve a n)-.2 H .166(umeric k).15 F -.15(ey) +-.1 G .166(pad and cursor k).15 F -.15(ey)-.1 G 2.666(s. The).15 F 2.666 +(yd)-.15 G(if)-2.666 E .166(fer from the other)-.25 F +(emulations by the pre\214x.)72 618 Q(Also, the cursor k)5 E -.15(ey)-.1 +G 2.5(sd).15 G 2.5(on)-2.5 G(ot change:)-2.5 E 9.124(center; cf3)72 636 +R 9.124(cf3 lf3w\(2c\))12.23 F 9.124(lf3w\(2c\) .)15.57 F -2.15 -.25 +(Ke y)14.124 H 465.828 628.5 465.828 638.5 DL 465.828 627.5 465.828 +637.5 DL 9.124(Normal/Application _ Cursor Up)297.906 636 R 481.826 +628.5 481.826 638.5 DL 470.828 638.5 465.828 638.5 DL 471.826 638.5 +466.826 638.5 DL 476.826 638.5 471.826 638.5 DL 481.826 638.5 476.826 +638.5 DL 481.826 627.5 481.826 637.5 DL 470.828 627.5 465.828 627.5 DL +471.826 627.5 466.826 627.5 DL 476.826 627.5 471.826 627.5 DL 481.826 +627.5 476.826 627.5 DL 483.492 628.5 483.492 638.5 DL 483.492 627.5 +483.492 637.5 DL F1(ESC)468.325 635 Q 499.49 628.5 499.49 638.5 DL +488.492 638.5 483.492 638.5 DL 489.49 638.5 484.49 638.5 DL 494.49 638.5 +489.49 638.5 DL 499.49 638.5 494.49 638.5 DL 499.49 627.5 499.49 637.5 +DL 488.492 627.5 483.492 627.5 DL 489.49 627.5 484.49 627.5 DL 494.49 +627.5 489.49 627.5 DL 499.49 627.5 494.49 627.5 DL F0 17.679(AC)487.881 +636 S(ursor)-17.679 E(Do)72 648 Q 117.28 640.5 117.28 650.5 DL 117.28 +639.5 117.28 649.5 DL(wn)83.97 648 Q 133.278 640.5 133.278 650.5 DL +122.28 650.5 117.28 650.5 DL 123.278 650.5 118.278 650.5 DL 128.278 +650.5 123.278 650.5 DL 133.278 650.5 128.278 650.5 DL 133.278 639.5 +133.278 649.5 DL 122.28 639.5 117.28 639.5 DL 123.278 639.5 118.278 +639.5 DL 128.278 639.5 123.278 639.5 DL 133.278 639.5 128.278 639.5 DL +134.944 640.5 134.944 650.5 DL 134.944 639.5 134.944 649.5 DL F1(ESC) +119.777 647 Q 150.942 640.5 150.942 650.5 DL 139.944 650.5 134.944 650.5 +DL 140.942 650.5 135.942 650.5 DL 145.942 650.5 140.942 650.5 DL 150.942 +650.5 145.942 650.5 DL 150.942 639.5 150.942 649.5 DL 139.944 639.5 +134.944 639.5 DL 140.942 639.5 135.942 639.5 DL 145.942 639.5 140.942 +639.5 DL 150.942 639.5 145.942 639.5 DL F0 8.83(BC)139.608 648 S 230.108 +640.5 230.108 650.5 DL 230.108 639.5 230.108 649.5 DL(ursor Right) +161.778 648 Q 246.106 640.5 246.106 650.5 DL 235.108 650.5 230.108 650.5 +DL 236.106 650.5 231.106 650.5 DL 241.106 650.5 236.106 650.5 DL 246.106 +650.5 241.106 650.5 DL 246.106 639.5 246.106 649.5 DL 235.108 639.5 +230.108 639.5 DL 236.106 639.5 231.106 639.5 DL 241.106 639.5 236.106 +639.5 DL 246.106 639.5 241.106 639.5 DL 247.772 640.5 247.772 650.5 DL +247.772 639.5 247.772 649.5 DL F1(ESC)232.605 647 Q 263.77 640.5 263.77 +650.5 DL 252.772 650.5 247.772 650.5 DL 253.77 650.5 248.77 650.5 DL +258.77 650.5 253.77 650.5 DL 263.77 650.5 258.77 650.5 DL 263.77 639.5 +263.77 649.5 DL 252.772 639.5 247.772 639.5 DL 253.77 639.5 248.77 639.5 +DL 258.77 639.5 253.77 639.5 DL 263.77 639.5 258.77 639.5 DL F0 8.83(CC) +252.436 648 S 317.936 640.5 317.936 650.5 DL 317.936 639.5 317.936 649.5 +DL(ursor Left)274.606 648 Q 333.934 640.5 333.934 650.5 DL 322.936 650.5 +317.936 650.5 DL 323.934 650.5 318.934 650.5 DL 328.934 650.5 323.934 +650.5 DL 333.934 650.5 328.934 650.5 DL 333.934 639.5 333.934 649.5 DL +322.936 639.5 317.936 639.5 DL 323.934 639.5 318.934 639.5 DL 328.934 +639.5 323.934 639.5 DL 333.934 639.5 328.934 639.5 DL 335.6 640.5 335.6 +650.5 DL 335.6 639.5 335.6 649.5 DL F1(ESC)320.433 647 Q 351.598 640.5 +351.598 650.5 DL 340.6 650.5 335.6 650.5 DL 341.598 650.5 336.598 650.5 +DL 346.598 650.5 341.598 650.5 DL 351.598 650.5 346.598 650.5 DL 351.598 +639.5 351.598 649.5 DL 340.6 639.5 335.6 639.5 DL 341.598 639.5 336.598 +639.5 DL 346.598 639.5 341.598 639.5 DL 351.598 639.5 346.598 639.5 DL +F0(D)339.989 648 Q(The k)72 666 Q -.15(ey)-.1 G(pad is similar:).15 E +19.774(center; cf3)72 684 R 9.73(cf3 cf3)12.23 F 13.07 +(lf3w\(2c\) lf3w\(2c\) lf3w\(2c\))22.274 F 24.774(.K)22.274 G 6.54 -.15 +(ey N)-25.024 H 12.51(umeric Application).15 F(_)22.274 E 122 688.5 122 +698.5 DL 122 687.5 122 697.5 DL -1.38(Space Space)72 696 R 137.998 688.5 +137.998 698.5 DL 127 698.5 122 698.5 DL 127.998 698.5 122.998 698.5 DL +132.998 698.5 127.998 698.5 DL 137.998 698.5 132.998 698.5 DL 137.998 +687.5 137.998 697.5 DL 127 687.5 122 687.5 DL 127.998 687.5 122.998 +687.5 DL 132.998 687.5 127.998 687.5 DL 137.998 687.5 132.998 687.5 DL +139.664 688.5 139.664 698.5 DL 139.664 687.5 139.664 697.5 DL F1(ESC) +124.497 695 Q 155.662 688.5 155.662 698.5 DL 144.664 698.5 139.664 698.5 +DL 145.662 698.5 140.662 698.5 DL 150.662 698.5 145.662 698.5 DL 155.662 +698.5 150.662 698.5 DL 155.662 687.5 155.662 697.5 DL 144.664 687.5 +139.664 687.5 DL 145.662 687.5 140.662 687.5 DL 150.662 687.5 145.662 +687.5 DL 155.662 687.5 150.662 687.5 DL 157.328 688.5 157.328 698.5 DL +157.328 687.5 157.328 697.5 DL F0(?)145.443 696 Q 173.326 688.5 173.326 +698.5 DL 162.328 698.5 157.328 698.5 DL 163.326 698.5 158.326 698.5 DL +168.326 698.5 163.326 698.5 DL 173.326 698.5 168.326 698.5 DL 173.326 +687.5 173.326 697.5 DL 162.328 687.5 157.328 687.5 DL 163.326 687.5 +158.326 687.5 DL 168.326 687.5 163.326 687.5 DL 173.326 687.5 168.326 +687.5 DL F1(SP)161.991 695 Q F0 -.8(Ta)22.561 1 O 10.25(bT).8 G 241.224 +688.5 241.224 698.5 DL 241.224 687.5 241.224 697.5 DL(ab)221.534 696 Q +257.222 688.5 257.222 698.5 DL 246.224 698.5 241.224 698.5 DL 247.222 +698.5 242.222 698.5 DL 252.222 698.5 247.222 698.5 DL 257.222 698.5 +252.222 698.5 DL 257.222 687.5 257.222 697.5 DL 246.224 687.5 241.224 +687.5 DL 247.222 687.5 242.222 687.5 DL 252.222 687.5 247.222 687.5 DL +257.222 687.5 252.222 687.5 DL 258.888 688.5 258.888 698.5 DL 258.888 +687.5 258.888 697.5 DL F1(ESC)243.721 695 Q 274.886 688.5 274.886 698.5 +DL 263.888 698.5 258.888 698.5 DL 264.886 698.5 259.886 698.5 DL 269.886 +698.5 264.886 698.5 DL 274.886 698.5 269.886 698.5 DL 274.886 687.5 +274.886 697.5 DL 263.888 687.5 258.888 687.5 DL 264.886 687.5 259.886 +687.5 DL 269.886 687.5 264.886 687.5 DL 274.886 687.5 269.886 687.5 DL +276.552 688.5 276.552 698.5 DL 276.552 687.5 276.552 697.5 DL 292.55 +688.5 292.55 698.5 DL 281.552 698.5 276.552 698.5 DL 282.55 698.5 277.55 +698.5 DL 287.55 698.5 282.55 698.5 DL 292.55 698.5 287.55 698.5 DL +292.55 687.5 292.55 697.5 DL 281.552 687.5 276.552 687.5 DL 282.55 687.5 +277.55 687.5 DL 287.55 687.5 282.55 687.5 DL 292.55 687.5 287.55 687.5 +DL F0 -5.826 13.779(?I E)264.667 696 T 360.448 688.5 360.448 698.5 DL +360.448 687.5 360.448 697.5 DL .84(nter CR)316.558 696 R 376.446 688.5 +376.446 698.5 DL 365.448 698.5 360.448 698.5 DL 366.446 698.5 361.446 +698.5 DL 371.446 698.5 366.446 698.5 DL 376.446 698.5 371.446 698.5 DL +376.446 687.5 376.446 697.5 DL 365.448 687.5 360.448 687.5 DL 366.446 +687.5 361.446 687.5 DL 371.446 687.5 366.446 687.5 DL 376.446 687.5 +371.446 687.5 DL 378.112 688.5 378.112 698.5 DL 378.112 687.5 378.112 +697.5 DL F1(ESC)362.945 695 Q 394.11 688.5 394.11 698.5 DL 383.112 698.5 +378.112 698.5 DL 384.11 698.5 379.11 698.5 DL 389.11 698.5 384.11 698.5 +DL 394.11 698.5 389.11 698.5 DL 394.11 687.5 394.11 697.5 DL 383.112 +687.5 378.112 687.5 DL 384.11 687.5 379.11 687.5 DL 389.11 687.5 384.11 +687.5 DL 394.11 687.5 389.11 687.5 DL 395.776 688.5 395.776 698.5 DL +395.776 687.5 395.776 697.5 DL 411.774 688.5 411.774 698.5 DL 400.776 +698.5 395.776 698.5 DL 401.774 698.5 396.774 698.5 DL 406.774 698.5 +401.774 698.5 DL 411.774 698.5 406.774 698.5 DL 411.774 687.5 411.774 +697.5 DL 400.776 687.5 395.776 687.5 DL 401.774 687.5 396.774 687.5 DL +406.774 687.5 401.774 687.5 DL 411.774 687.5 406.774 687.5 DL F0 -3.046 +10.999(?M P)383.891 696 T 454.672 688.5 454.672 698.5 DL 454.672 687.5 +454.672 697.5 DL(F1)435.232 696 Q 470.67 688.5 470.67 698.5 DL 459.672 +698.5 454.672 698.5 DL 460.67 698.5 455.67 698.5 DL 465.67 698.5 460.67 +698.5 DL 470.67 698.5 465.67 698.5 DL 470.67 687.5 470.67 697.5 DL +459.672 687.5 454.672 687.5 DL 460.67 687.5 455.67 687.5 DL 465.67 687.5 +460.67 687.5 DL 470.67 687.5 465.67 687.5 DL 472.336 688.5 472.336 698.5 +DL 472.336 687.5 472.336 697.5 DL F1(ESC)457.169 695 Q 488.334 688.5 +488.334 698.5 DL 477.336 698.5 472.336 698.5 DL 478.334 698.5 473.334 +698.5 DL 483.334 698.5 478.334 698.5 DL 488.334 698.5 483.334 698.5 DL +488.334 687.5 488.334 697.5 DL 477.336 687.5 472.336 687.5 DL 478.334 +687.5 473.334 687.5 DL 483.334 687.5 478.334 687.5 DL 488.334 687.5 +483.334 687.5 DL 504.672 688.5 504.672 698.5 DL 504.672 687.5 504.672 +697.5 DL F0(P)477.555 696 Q 520.67 688.5 520.67 698.5 DL 509.672 698.5 +504.672 698.5 DL 510.67 698.5 505.67 698.5 DL 515.67 698.5 510.67 698.5 +DL 520.67 698.5 515.67 698.5 DL 520.67 687.5 520.67 697.5 DL 509.672 +687.5 504.672 687.5 DL 510.67 687.5 505.67 687.5 DL 515.67 687.5 510.67 +687.5 DL 520.67 687.5 515.67 687.5 DL 522.336 688.5 522.336 698.5 DL +522.336 687.5 522.336 697.5 DL F1(ESC)507.169 695 Q 538.334 688.5 +538.334 698.5 DL 527.336 698.5 522.336 698.5 DL 528.334 698.5 523.334 +698.5 DL 533.334 698.5 528.334 698.5 DL 538.334 698.5 533.334 698.5 DL +538.334 687.5 538.334 697.5 DL 527.336 687.5 522.336 687.5 DL 528.334 +687.5 523.334 687.5 DL 533.334 687.5 528.334 687.5 DL 538.334 687.5 +533.334 687.5 DL F0(P)527.555 696 Q 97 700.5 97 710.5 DL 97 699.5 97 +709.5 DL(PF2)72 708 Q 112.998 700.5 112.998 710.5 DL 102 710.5 97 710.5 +DL 102.998 710.5 97.998 710.5 DL 107.998 710.5 102.998 710.5 DL 112.998 +710.5 107.998 710.5 DL 112.998 699.5 112.998 709.5 DL 102 699.5 97 699.5 +DL 102.998 699.5 97.998 699.5 DL 107.998 699.5 102.998 699.5 DL 112.998 +699.5 107.998 699.5 DL 114.664 700.5 114.664 710.5 DL 114.664 699.5 +114.664 709.5 DL F1(ESC)99.497 707 Q 130.662 700.5 130.662 710.5 DL +119.664 710.5 114.664 710.5 DL 120.662 710.5 115.662 710.5 DL 125.662 +710.5 120.662 710.5 DL 130.662 710.5 125.662 710.5 DL 130.662 699.5 +130.662 709.5 DL 119.664 699.5 114.664 699.5 DL 120.662 699.5 115.662 +699.5 DL 125.662 699.5 120.662 699.5 DL 130.662 699.5 125.662 699.5 DL +133.304 700.5 133.304 710.5 DL 133.304 699.5 133.304 709.5 DL F0(Q) +119.053 708 Q 149.302 700.5 149.302 710.5 DL 138.304 710.5 133.304 710.5 +DL 139.302 710.5 134.302 710.5 DL 144.302 710.5 139.302 710.5 DL 149.302 +710.5 144.302 710.5 DL 149.302 699.5 149.302 709.5 DL 138.304 699.5 +133.304 699.5 DL 139.302 699.5 134.302 699.5 DL 144.302 699.5 139.302 +699.5 DL 149.302 699.5 144.302 699.5 DL 150.968 700.5 150.968 710.5 DL +150.968 699.5 150.968 709.5 DL F1(ESC)135.801 707 Q 166.966 700.5 +166.966 710.5 DL 155.968 710.5 150.968 710.5 DL 156.966 710.5 151.966 +710.5 DL 161.966 710.5 156.966 710.5 DL 166.966 710.5 161.966 710.5 DL +166.966 699.5 166.966 709.5 DL 155.968 699.5 150.968 699.5 DL 156.966 +699.5 151.966 699.5 DL 161.966 699.5 156.966 699.5 DL 166.966 699.5 +161.966 699.5 DL F0 9.971(QP)155.357 708 S 197.548 700.5 197.548 710.5 +DL 197.548 699.5 197.548 709.5 DL(F3)178.108 708 Q 213.546 700.5 213.546 +710.5 DL 202.548 710.5 197.548 710.5 DL 203.546 710.5 198.546 710.5 DL +208.546 710.5 203.546 710.5 DL 213.546 710.5 208.546 710.5 DL 213.546 +699.5 213.546 709.5 DL 202.548 699.5 197.548 699.5 DL 203.546 699.5 +198.546 699.5 DL 208.546 699.5 203.546 699.5 DL 213.546 699.5 208.546 +699.5 DL 215.212 700.5 215.212 710.5 DL 215.212 699.5 215.212 709.5 DL +F1(ESC)200.045 707 Q 231.21 700.5 231.21 710.5 DL 220.212 710.5 215.212 +710.5 DL 221.21 710.5 216.21 710.5 DL 226.21 710.5 221.21 710.5 DL +231.21 710.5 226.21 710.5 DL 231.21 699.5 231.21 709.5 DL 220.212 699.5 +215.212 699.5 DL 221.21 699.5 216.21 699.5 DL 226.21 699.5 221.21 699.5 +DL 231.21 699.5 226.21 699.5 DL 247.548 700.5 247.548 710.5 DL 247.548 +699.5 247.548 709.5 DL F0(R)219.876 708 Q 263.546 700.5 263.546 710.5 DL +252.548 710.5 247.548 710.5 DL 253.546 710.5 248.546 710.5 DL 258.546 +710.5 253.546 710.5 DL 263.546 710.5 258.546 710.5 DL 263.546 699.5 +263.546 709.5 DL 252.548 699.5 247.548 699.5 DL 253.546 699.5 248.546 +699.5 DL 258.546 699.5 253.546 699.5 DL 263.546 699.5 258.546 699.5 DL +265.212 700.5 265.212 710.5 DL 265.212 699.5 265.212 709.5 DL F1(ESC) +250.045 707 Q 281.21 700.5 281.21 710.5 DL 270.212 710.5 265.212 710.5 +DL 271.21 710.5 266.21 710.5 DL 276.21 710.5 271.21 710.5 DL 281.21 +710.5 276.21 710.5 DL 281.21 699.5 281.21 709.5 DL 270.212 699.5 265.212 +699.5 DL 271.21 699.5 266.21 699.5 DL 276.21 699.5 271.21 699.5 DL +281.21 699.5 276.21 699.5 DL F0 10.246(RP)269.876 708 S 311.792 700.5 +311.792 710.5 DL 311.792 699.5 311.792 709.5 DL(F4)292.352 708 Q 327.79 +700.5 327.79 710.5 DL 316.792 710.5 311.792 710.5 DL 317.79 710.5 312.79 +710.5 DL 322.79 710.5 317.79 710.5 DL 327.79 710.5 322.79 710.5 DL +327.79 699.5 327.79 709.5 DL 316.792 699.5 311.792 699.5 DL 317.79 699.5 +312.79 699.5 DL 322.79 699.5 317.79 699.5 DL 327.79 699.5 322.79 699.5 +DL 329.456 700.5 329.456 710.5 DL 329.456 699.5 329.456 709.5 DL F1(ESC) +314.289 707 Q 345.454 700.5 345.454 710.5 DL 334.456 710.5 329.456 710.5 +DL 335.454 710.5 330.454 710.5 DL 340.454 710.5 335.454 710.5 DL 345.454 +710.5 340.454 710.5 DL 345.454 699.5 345.454 709.5 DL 334.456 699.5 +329.456 699.5 DL 335.454 699.5 330.454 699.5 DL 340.454 699.5 335.454 +699.5 DL 345.454 699.5 340.454 699.5 DL 361.792 700.5 361.792 710.5 DL +361.792 699.5 361.792 709.5 DL F0(S)334.675 708 Q 377.79 700.5 377.79 +710.5 DL 366.792 710.5 361.792 710.5 DL 367.79 710.5 362.79 710.5 DL +372.79 710.5 367.79 710.5 DL 377.79 710.5 372.79 710.5 DL 377.79 699.5 +377.79 709.5 DL 366.792 699.5 361.792 699.5 DL 367.79 699.5 362.79 699.5 +DL 372.79 699.5 367.79 699.5 DL 377.79 699.5 372.79 699.5 DL 379.456 +700.5 379.456 710.5 DL 379.456 699.5 379.456 709.5 DL F1(ESC)364.289 707 +Q 395.454 700.5 395.454 710.5 DL 384.456 710.5 379.456 710.5 DL 385.454 +710.5 380.454 710.5 DL 390.454 710.5 385.454 710.5 DL 395.454 710.5 +390.454 710.5 DL 395.454 699.5 395.454 709.5 DL 384.456 699.5 379.456 +699.5 DL 385.454 699.5 380.454 699.5 DL 390.454 699.5 385.454 699.5 DL +395.454 699.5 390.454 699.5 DL F0 10.801(S*)384.675 708 S 477.452 700.5 +477.452 710.5 DL 477.452 699.5 477.452 709.5 DL -.56(\(multiply\) *) +409.952 708 R 493.45 700.5 493.45 710.5 DL 482.452 710.5 477.452 710.5 +DL 483.45 710.5 478.45 710.5 DL 488.45 710.5 483.45 710.5 DL 493.45 +710.5 488.45 710.5 DL 493.45 699.5 493.45 709.5 DL 482.452 699.5 477.452 +699.5 DL 483.45 699.5 478.45 699.5 DL 488.45 699.5 483.45 699.5 DL +493.45 699.5 488.45 699.5 DL 495.116 700.5 495.116 710.5 DL 495.116 +699.5 495.116 709.5 DL F1(ESC)479.949 707 Q 511.114 700.5 511.114 710.5 +DL 500.116 710.5 495.116 710.5 DL 501.114 710.5 496.114 710.5 DL 506.114 +710.5 501.114 710.5 DL 511.114 710.5 506.114 710.5 DL 511.114 699.5 +511.114 709.5 DL 500.116 699.5 495.116 699.5 DL 501.114 699.5 496.114 +699.5 DL 506.114 699.5 501.114 699.5 DL 511.114 699.5 506.114 699.5 DL +512.78 700.5 512.78 710.5 DL 512.78 699.5 512.78 709.5 DL 528.778 700.5 +528.778 710.5 DL 517.78 710.5 512.78 710.5 DL 518.778 710.5 513.778 +710.5 DL 523.778 710.5 518.778 710.5 DL 528.778 710.5 523.778 710.5 DL +528.778 699.5 528.778 709.5 DL 517.78 699.5 512.78 699.5 DL 518.778 +699.5 513.778 699.5 DL 523.778 699.5 518.778 699.5 DL 528.778 699.5 +523.778 699.5 DL F0 14.054(?j)500.895 708 S(+)-1.863 E 138.86 712.5 +138.86 722.5 DL 138.86 711.5 138.86 721.5 DL 18.26(\(add\) +)72 720 R +154.858 712.5 154.858 722.5 DL 143.86 722.5 138.86 722.5 DL 144.858 +722.5 139.858 722.5 DL 149.858 722.5 144.858 722.5 DL 154.858 722.5 +149.858 722.5 DL 154.858 711.5 154.858 721.5 DL 143.86 711.5 138.86 +711.5 DL 144.858 711.5 139.858 711.5 DL 149.858 711.5 144.858 711.5 DL +154.858 711.5 149.858 711.5 DL 156.524 712.5 156.524 722.5 DL 156.524 +711.5 156.524 721.5 DL F1(ESC)141.357 719 Q 172.522 712.5 172.522 722.5 +DL 161.524 722.5 156.524 722.5 DL 162.522 722.5 157.522 722.5 DL 167.522 +722.5 162.522 722.5 DL 172.522 722.5 167.522 722.5 DL 172.522 711.5 +172.522 721.5 DL 161.524 711.5 156.524 711.5 DL 162.522 711.5 157.522 +711.5 DL 167.522 711.5 162.522 711.5 DL 172.522 711.5 167.522 711.5 DL +174.188 712.5 174.188 722.5 DL 174.188 711.5 174.188 721.5 DL 190.186 +712.5 190.186 722.5 DL 179.188 722.5 174.188 722.5 DL 180.186 722.5 +175.186 722.5 DL 185.186 722.5 180.186 722.5 DL 190.186 722.5 185.186 +722.5 DL 190.186 711.5 190.186 721.5 DL 179.188 711.5 174.188 711.5 DL +180.186 711.5 175.186 711.5 DL 185.186 711.5 180.186 711.5 DL 190.186 +711.5 185.186 711.5 DL F0 -2.346 12.944(?k ,)162.303 720 T 302.106 712.5 +302.106 722.5 DL 302.106 711.5 302.106 721.5 DL 6.4(\(comma\) ,)232.106 +720 R 318.104 712.5 318.104 722.5 DL 307.106 722.5 302.106 722.5 DL +308.104 722.5 303.104 722.5 DL 313.104 722.5 308.104 722.5 DL 318.104 +722.5 313.104 722.5 DL 318.104 711.5 318.104 721.5 DL 307.106 711.5 +302.106 711.5 DL 308.104 711.5 303.104 711.5 DL 313.104 711.5 308.104 +711.5 DL 318.104 711.5 313.104 711.5 DL 319.77 712.5 319.77 722.5 DL +319.77 711.5 319.77 721.5 DL F1(ESC)304.603 719 Q 335.768 712.5 335.768 +722.5 DL 324.77 722.5 319.77 722.5 DL 325.768 722.5 320.768 722.5 DL +330.768 722.5 325.768 722.5 DL 335.768 722.5 330.768 722.5 DL 335.768 +711.5 335.768 721.5 DL 324.77 711.5 319.77 711.5 DL 325.768 711.5 +320.768 711.5 DL 330.768 711.5 325.768 711.5 DL 335.768 711.5 330.768 +711.5 DL 337.434 712.5 337.434 722.5 DL 337.434 711.5 337.434 721.5 DL +353.432 712.5 353.432 722.5 DL 342.434 722.5 337.434 722.5 DL 343.432 +722.5 338.432 722.5 DL 348.432 722.5 343.432 722.5 DL 353.432 722.5 +348.432 722.5 DL 353.432 711.5 353.432 721.5 DL 342.434 711.5 337.434 +711.5 DL 343.432 711.5 338.432 711.5 DL 348.432 711.5 343.432 711.5 DL +353.432 711.5 348.432 711.5 DL F0 -3.456 14.054(?l -)325.549 720 T +465.352 712.5 465.352 722.5 DL 465.352 711.5 465.352 721.5 DL 10.56 +(\(minus\) -)396.182 720 R 481.35 712.5 481.35 722.5 DL 470.352 722.5 +465.352 722.5 DL 471.35 722.5 466.35 722.5 DL 476.35 722.5 471.35 722.5 +DL 481.35 722.5 476.35 722.5 DL 481.35 711.5 481.35 721.5 DL 470.352 +711.5 465.352 711.5 DL 471.35 711.5 466.35 711.5 DL 476.35 711.5 471.35 +711.5 DL 481.35 711.5 476.35 711.5 DL 483.016 712.5 483.016 722.5 DL +483.016 711.5 483.016 721.5 DL F1(ESC)467.849 719 Q 499.014 712.5 +499.014 722.5 DL 488.016 722.5 483.016 722.5 DL 489.014 722.5 484.014 +722.5 DL 494.014 722.5 489.014 722.5 DL 499.014 722.5 494.014 722.5 DL +499.014 711.5 499.014 721.5 DL 488.016 711.5 483.016 711.5 DL 489.014 +711.5 484.014 711.5 DL 494.014 711.5 489.014 711.5 DL 499.014 711.5 +494.014 711.5 DL 500.68 712.5 500.68 722.5 DL 500.68 711.5 500.68 721.5 +DL 516.678 712.5 516.678 722.5 DL 505.68 722.5 500.68 722.5 DL 506.678 +722.5 501.678 722.5 DL 511.678 722.5 506.678 722.5 DL 516.678 722.5 +511.678 722.5 DL 516.678 711.5 516.678 721.5 DL 505.68 711.5 500.68 +711.5 DL 506.678 711.5 501.678 711.5 DL 511.678 711.5 506.678 711.5 DL +516.678 711.5 511.678 711.5 DL F0 -.957 11.554(?m /)488.795 720 T(15)301 +768 Q EP +%%Page: 16 16 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 48 Q(Function K) +306.47 E -.15(ey)-.25 G(s).15 E(\(di)72 84 Q .4 LW 141.72 76.5 141.72 +86.5 DL 141.72 75.5 141.72 85.5 DL 10.81(vide\) /)82.86 84 R 157.718 +76.5 157.718 86.5 DL 146.72 86.5 141.72 86.5 DL 147.718 86.5 142.718 +86.5 DL 152.718 86.5 147.718 86.5 DL 157.718 86.5 152.718 86.5 DL +157.718 75.5 157.718 85.5 DL 146.72 75.5 141.72 75.5 DL 147.718 75.5 +142.718 75.5 DL 152.718 75.5 147.718 75.5 DL 157.718 75.5 152.718 75.5 +DL 159.384 76.5 159.384 86.5 DL 159.384 75.5 159.384 85.5 DL/F1 6 +/Times-Roman@0 SF(ESC)144.217 83 Q 175.382 76.5 175.382 86.5 DL 164.384 +86.5 159.384 86.5 DL 165.382 86.5 160.382 86.5 DL 170.382 86.5 165.382 +86.5 DL 175.382 86.5 170.382 86.5 DL 175.382 75.5 175.382 85.5 DL +164.384 75.5 159.384 75.5 DL 165.382 75.5 160.382 75.5 DL 170.382 75.5 +165.382 75.5 DL 175.382 75.5 170.382 75.5 DL 177.048 76.5 177.048 86.5 +DL 177.048 75.5 177.048 85.5 DL 193.046 76.5 193.046 86.5 DL 182.048 +86.5 177.048 86.5 DL 183.046 86.5 178.046 86.5 DL 188.046 86.5 183.046 +86.5 DL 193.046 86.5 188.046 86.5 DL 193.046 75.5 193.046 85.5 DL +182.048 75.5 177.048 75.5 DL 183.046 75.5 178.046 75.5 DL 188.046 75.5 +183.046 75.5 DL 193.046 75.5 188.046 75.5 DL F0 -9.119 12.944(?o 0) +165.163 84 T 256.816 76.5 256.816 86.5 DL 256.816 75.5 256.816 85.5 DL +(0)231.816 84 Q 272.814 76.5 272.814 86.5 DL 261.816 86.5 256.816 86.5 +DL 262.814 86.5 257.814 86.5 DL 267.814 86.5 262.814 86.5 DL 272.814 +86.5 267.814 86.5 DL 272.814 75.5 272.814 85.5 DL 261.816 75.5 256.816 +75.5 DL 262.814 75.5 257.814 75.5 DL 267.814 75.5 262.814 75.5 DL +272.814 75.5 267.814 75.5 DL 274.48 76.5 274.48 86.5 DL 274.48 75.5 +274.48 85.5 DL F1(ESC)259.313 83 Q 290.478 76.5 290.478 86.5 DL 279.48 +86.5 274.48 86.5 DL 280.478 86.5 275.478 86.5 DL 285.478 86.5 280.478 +86.5 DL 290.478 86.5 285.478 86.5 DL 290.478 75.5 290.478 85.5 DL 279.48 +75.5 274.48 75.5 DL 280.478 75.5 275.478 75.5 DL 285.478 75.5 280.478 +75.5 DL 290.478 75.5 285.478 75.5 DL 292.144 76.5 292.144 86.5 DL +292.144 75.5 292.144 85.5 DL 308.142 76.5 308.142 86.5 DL 297.144 86.5 +292.144 86.5 DL 298.142 86.5 293.142 86.5 DL 303.142 86.5 298.142 86.5 +DL 308.142 86.5 303.142 86.5 DL 308.142 75.5 308.142 85.5 DL 297.144 +75.5 292.144 75.5 DL 298.142 75.5 293.142 75.5 DL 303.142 75.5 298.142 +75.5 DL 308.142 75.5 303.142 75.5 DL F0 -9.119 12.944(?p 1)280.259 84 T +371.912 76.5 371.912 86.5 DL 371.912 75.5 371.912 85.5 DL(1)346.912 84 Q +387.91 76.5 387.91 86.5 DL 376.912 86.5 371.912 86.5 DL 377.91 86.5 +372.91 86.5 DL 382.91 86.5 377.91 86.5 DL 387.91 86.5 382.91 86.5 DL +387.91 75.5 387.91 85.5 DL 376.912 75.5 371.912 75.5 DL 377.91 75.5 +372.91 75.5 DL 382.91 75.5 377.91 75.5 DL 387.91 75.5 382.91 75.5 DL +389.576 76.5 389.576 86.5 DL 389.576 75.5 389.576 85.5 DL F1(ESC)374.409 +83 Q 405.574 76.5 405.574 86.5 DL 394.576 86.5 389.576 86.5 DL 395.574 +86.5 390.574 86.5 DL 400.574 86.5 395.574 86.5 DL 405.574 86.5 400.574 +86.5 DL 405.574 75.5 405.574 85.5 DL 394.576 75.5 389.576 75.5 DL +395.574 75.5 390.574 75.5 DL 400.574 75.5 395.574 75.5 DL 405.574 75.5 +400.574 75.5 DL 407.24 76.5 407.24 86.5 DL 407.24 75.5 407.24 85.5 DL +423.238 76.5 423.238 86.5 DL 412.24 86.5 407.24 86.5 DL 413.238 86.5 +408.238 86.5 DL 418.238 86.5 413.238 86.5 DL 423.238 86.5 418.238 86.5 +DL 423.238 75.5 423.238 85.5 DL 412.24 75.5 407.24 75.5 DL 413.238 75.5 +408.238 75.5 DL 418.238 75.5 413.238 75.5 DL 423.238 75.5 418.238 75.5 +DL F0 -9.119 12.944(?q 2)395.355 84 T 487.008 76.5 487.008 86.5 DL +487.008 75.5 487.008 85.5 DL(2)462.008 84 Q 503.006 76.5 503.006 86.5 DL +492.008 86.5 487.008 86.5 DL 493.006 86.5 488.006 86.5 DL 498.006 86.5 +493.006 86.5 DL 503.006 86.5 498.006 86.5 DL 503.006 75.5 503.006 85.5 +DL 492.008 75.5 487.008 75.5 DL 493.006 75.5 488.006 75.5 DL 498.006 +75.5 493.006 75.5 DL 503.006 75.5 498.006 75.5 DL 504.672 76.5 504.672 +86.5 DL 504.672 75.5 504.672 85.5 DL F1(ESC)489.505 83 Q 520.67 76.5 +520.67 86.5 DL 509.672 86.5 504.672 86.5 DL 510.67 86.5 505.67 86.5 DL +515.67 86.5 510.67 86.5 DL 520.67 86.5 515.67 86.5 DL 520.67 75.5 520.67 +85.5 DL 509.672 75.5 504.672 75.5 DL 510.67 75.5 505.67 75.5 DL 515.67 +75.5 510.67 75.5 DL 520.67 75.5 515.67 75.5 DL 522.336 76.5 522.336 86.5 +DL 522.336 75.5 522.336 85.5 DL 538.334 76.5 538.334 86.5 DL 527.336 +86.5 522.336 86.5 DL 528.334 86.5 523.334 86.5 DL 533.334 86.5 528.334 +86.5 DL 538.334 86.5 533.334 86.5 DL 538.334 75.5 538.334 85.5 DL +527.336 75.5 522.336 75.5 DL 528.334 75.5 523.334 75.5 DL 533.334 75.5 +528.334 75.5 DL 538.334 75.5 533.334 75.5 DL F0 13.779(?r)510.451 84 S +122 88.5 122 98.5 DL 122 87.5 122 97.5 DL 20(33)72 96 S 137.998 88.5 +137.998 98.5 DL 127 98.5 122 98.5 DL 127.998 98.5 122.998 98.5 DL +132.998 98.5 127.998 98.5 DL 137.998 98.5 132.998 98.5 DL 137.998 87.5 +137.998 97.5 DL 127 87.5 122 87.5 DL 127.998 87.5 122.998 87.5 DL +132.998 87.5 127.998 87.5 DL 137.998 87.5 132.998 87.5 DL 139.664 88.5 +139.664 98.5 DL 139.664 87.5 139.664 97.5 DL F1(ESC)124.497 95 Q 155.662 +88.5 155.662 98.5 DL 144.664 98.5 139.664 98.5 DL 145.662 98.5 140.662 +98.5 DL 150.662 98.5 145.662 98.5 DL 155.662 98.5 150.662 98.5 DL +155.662 87.5 155.662 97.5 DL 144.664 87.5 139.664 87.5 DL 145.662 87.5 +140.662 87.5 DL 150.662 87.5 145.662 87.5 DL 155.662 87.5 150.662 87.5 +DL 157.328 88.5 157.328 98.5 DL 157.328 87.5 157.328 97.5 DL 173.326 +88.5 173.326 98.5 DL 162.328 98.5 157.328 98.5 DL 163.326 98.5 158.326 +98.5 DL 168.326 98.5 163.326 98.5 DL 173.326 98.5 168.326 98.5 DL +173.326 87.5 173.326 97.5 DL 162.328 87.5 157.328 87.5 DL 163.326 87.5 +158.326 87.5 DL 168.326 87.5 163.326 87.5 DL 173.326 87.5 168.326 87.5 +DL F0 -3.1 13.499(?s 4)145.443 96 T 243.67 88.5 243.67 98.5 DL 243.67 +87.5 243.67 97.5 DL(4)218.67 96 Q 259.668 88.5 259.668 98.5 DL 248.67 +98.5 243.67 98.5 DL 249.668 98.5 244.668 98.5 DL 254.668 98.5 249.668 +98.5 DL 259.668 98.5 254.668 98.5 DL 259.668 87.5 259.668 97.5 DL 248.67 +87.5 243.67 87.5 DL 249.668 87.5 244.668 87.5 DL 254.668 87.5 249.668 +87.5 DL 259.668 87.5 254.668 87.5 DL 261.334 88.5 261.334 98.5 DL +261.334 87.5 261.334 97.5 DL F1(ESC)246.167 95 Q 277.332 88.5 277.332 +98.5 DL 266.334 98.5 261.334 98.5 DL 267.332 98.5 262.332 98.5 DL +272.332 98.5 267.332 98.5 DL 277.332 98.5 272.332 98.5 DL 277.332 87.5 +277.332 97.5 DL 266.334 87.5 261.334 87.5 DL 267.332 87.5 262.332 87.5 +DL 272.332 87.5 267.332 87.5 DL 277.332 87.5 272.332 87.5 DL 278.998 +88.5 278.998 98.5 DL 278.998 87.5 278.998 97.5 DL 294.996 88.5 294.996 +98.5 DL 283.998 98.5 278.998 98.5 DL 284.996 98.5 279.996 98.5 DL +289.996 98.5 284.996 98.5 DL 294.996 98.5 289.996 98.5 DL 294.996 87.5 +294.996 97.5 DL 283.998 87.5 278.998 87.5 DL 284.996 87.5 279.996 87.5 +DL 289.996 87.5 284.996 87.5 DL 294.996 87.5 289.996 87.5 DL F0 -3.656 +14.054(?t 5)267.113 96 T 365.339 88.5 365.339 98.5 DL 365.339 87.5 +365.339 97.5 DL(5)340.339 96 Q 381.337 88.5 381.337 98.5 DL 370.339 98.5 +365.339 98.5 DL 371.337 98.5 366.337 98.5 DL 376.337 98.5 371.337 98.5 +DL 381.337 98.5 376.337 98.5 DL 381.337 87.5 381.337 97.5 DL 370.339 +87.5 365.339 87.5 DL 371.337 87.5 366.337 87.5 DL 376.337 87.5 371.337 +87.5 DL 381.337 87.5 376.337 87.5 DL 383.003 88.5 383.003 98.5 DL +383.003 87.5 383.003 97.5 DL F1(ESC)367.836 95 Q 399.001 88.5 399.001 +98.5 DL 388.003 98.5 383.003 98.5 DL 389.001 98.5 384.001 98.5 DL +394.001 98.5 389.001 98.5 DL 399.001 98.5 394.001 98.5 DL 399.001 87.5 +399.001 97.5 DL 388.003 87.5 383.003 87.5 DL 389.001 87.5 384.001 87.5 +DL 394.001 87.5 389.001 87.5 DL 399.001 87.5 394.001 87.5 DL 400.667 +88.5 400.667 98.5 DL 400.667 87.5 400.667 97.5 DL 416.665 88.5 416.665 +98.5 DL 405.667 98.5 400.667 98.5 DL 406.665 98.5 401.665 98.5 DL +411.665 98.5 406.665 98.5 DL 416.665 98.5 411.665 98.5 DL 416.665 87.5 +416.665 97.5 DL 405.667 87.5 400.667 87.5 DL 406.665 87.5 401.665 87.5 +DL 411.665 87.5 406.665 87.5 DL 416.665 87.5 411.665 87.5 DL F0 -2.546 +12.944(?u 6)388.782 96 T 487.008 88.5 487.008 98.5 DL 487.008 87.5 +487.008 97.5 DL(6)462.008 96 Q 503.006 88.5 503.006 98.5 DL 492.008 98.5 +487.008 98.5 DL 493.006 98.5 488.006 98.5 DL 498.006 98.5 493.006 98.5 +DL 503.006 98.5 498.006 98.5 DL 503.006 87.5 503.006 97.5 DL 492.008 +87.5 487.008 87.5 DL 493.006 87.5 488.006 87.5 DL 498.006 87.5 493.006 +87.5 DL 503.006 87.5 498.006 87.5 DL 504.672 88.5 504.672 98.5 DL +504.672 87.5 504.672 97.5 DL F1(ESC)489.505 95 Q 520.67 88.5 520.67 98.5 +DL 509.672 98.5 504.672 98.5 DL 510.67 98.5 505.67 98.5 DL 515.67 98.5 +510.67 98.5 DL 520.67 98.5 515.67 98.5 DL 520.67 87.5 520.67 97.5 DL +509.672 87.5 504.672 87.5 DL 510.67 87.5 505.67 87.5 DL 515.67 87.5 +510.67 87.5 DL 520.67 87.5 515.67 87.5 DL 522.336 88.5 522.336 98.5 DL +522.336 87.5 522.336 97.5 DL 538.334 88.5 538.334 98.5 DL 527.336 98.5 +522.336 98.5 DL 528.334 98.5 523.334 98.5 DL 533.334 98.5 528.334 98.5 +DL 538.334 98.5 533.334 98.5 DL 538.334 87.5 538.334 97.5 DL 527.336 +87.5 522.336 87.5 DL 528.334 87.5 523.334 87.5 DL 533.334 87.5 528.334 +87.5 DL 538.334 87.5 533.334 87.5 DL F0 12.944(?v)510.451 96 S 122 100.5 +122 110.5 DL 122 99.5 122 109.5 DL 20(77)72 108 S 137.998 100.5 137.998 +110.5 DL 127 110.5 122 110.5 DL 127.998 110.5 122.998 110.5 DL 132.998 +110.5 127.998 110.5 DL 137.998 110.5 132.998 110.5 DL 137.998 99.5 +137.998 109.5 DL 127 99.5 122 99.5 DL 127.998 99.5 122.998 99.5 DL +132.998 99.5 127.998 99.5 DL 137.998 99.5 132.998 99.5 DL 139.664 100.5 +139.664 110.5 DL 139.664 99.5 139.664 109.5 DL F1(ESC)124.497 107 Q +155.662 100.5 155.662 110.5 DL 144.664 110.5 139.664 110.5 DL 145.662 +110.5 140.662 110.5 DL 150.662 110.5 145.662 110.5 DL 155.662 110.5 +150.662 110.5 DL 155.662 99.5 155.662 109.5 DL 144.664 99.5 139.664 99.5 +DL 145.662 99.5 140.662 99.5 DL 150.662 99.5 145.662 99.5 DL 155.662 +99.5 150.662 99.5 DL 157.328 100.5 157.328 110.5 DL 157.328 99.5 157.328 +109.5 DL 173.326 100.5 173.326 110.5 DL 162.328 110.5 157.328 110.5 DL +163.326 110.5 158.326 110.5 DL 168.326 110.5 163.326 110.5 DL 173.326 +110.5 168.326 110.5 DL 173.326 99.5 173.326 109.5 DL 162.328 99.5 +157.328 99.5 DL 163.326 99.5 158.326 99.5 DL 168.326 99.5 163.326 99.5 +DL 173.326 99.5 168.326 99.5 DL F0 11.834(?w)145.443 108 S 227.492 100.5 +227.492 110.5 DL 227.492 99.5 227.492 109.5 DL 20(88)177.492 108 S +243.49 100.5 243.49 110.5 DL 232.492 110.5 227.492 110.5 DL 233.49 110.5 +228.49 110.5 DL 238.49 110.5 233.49 110.5 DL 243.49 110.5 238.49 110.5 +DL 243.49 99.5 243.49 109.5 DL 232.492 99.5 227.492 99.5 DL 233.49 99.5 +228.49 99.5 DL 238.49 99.5 233.49 99.5 DL 243.49 99.5 238.49 99.5 DL +245.156 100.5 245.156 110.5 DL 245.156 99.5 245.156 109.5 DL F1(ESC) +229.989 107 Q 261.154 100.5 261.154 110.5 DL 250.156 110.5 245.156 110.5 +DL 251.154 110.5 246.154 110.5 DL 256.154 110.5 251.154 110.5 DL 261.154 +110.5 256.154 110.5 DL 261.154 99.5 261.154 109.5 DL 250.156 99.5 +245.156 99.5 DL 251.154 99.5 246.154 99.5 DL 256.154 99.5 251.154 99.5 +DL 261.154 99.5 256.154 99.5 DL 262.82 100.5 262.82 110.5 DL 262.82 99.5 +262.82 109.5 DL 278.818 100.5 278.818 110.5 DL 267.82 110.5 262.82 110.5 +DL 268.818 110.5 263.818 110.5 DL 273.818 110.5 268.818 110.5 DL 278.818 +110.5 273.818 110.5 DL 278.818 99.5 278.818 109.5 DL 267.82 99.5 262.82 +99.5 DL 268.818 99.5 263.818 99.5 DL 273.818 99.5 268.818 99.5 DL +278.818 99.5 273.818 99.5 DL F0 12.944(?x)250.935 108 S 332.984 100.5 +332.984 110.5 DL 332.984 99.5 332.984 109.5 DL 20(99)282.984 108 S +348.982 100.5 348.982 110.5 DL 337.984 110.5 332.984 110.5 DL 338.982 +110.5 333.982 110.5 DL 343.982 110.5 338.982 110.5 DL 348.982 110.5 +343.982 110.5 DL 348.982 99.5 348.982 109.5 DL 337.984 99.5 332.984 99.5 +DL 338.982 99.5 333.982 99.5 DL 343.982 99.5 338.982 99.5 DL 348.982 +99.5 343.982 99.5 DL 350.648 100.5 350.648 110.5 DL 350.648 99.5 350.648 +109.5 DL F1(ESC)335.481 107 Q 366.646 100.5 366.646 110.5 DL 355.648 +110.5 350.648 110.5 DL 356.646 110.5 351.646 110.5 DL 361.646 110.5 +356.646 110.5 DL 366.646 110.5 361.646 110.5 DL 366.646 99.5 366.646 +109.5 DL 355.648 99.5 350.648 99.5 DL 356.646 99.5 351.646 99.5 DL +361.646 99.5 356.646 99.5 DL 366.646 99.5 361.646 99.5 DL 368.312 100.5 +368.312 110.5 DL 368.312 99.5 368.312 109.5 DL 384.31 100.5 384.31 110.5 +DL 373.312 110.5 368.312 110.5 DL 374.31 110.5 369.31 110.5 DL 379.31 +110.5 374.31 110.5 DL 384.31 110.5 379.31 110.5 DL 384.31 99.5 384.31 +109.5 DL 373.312 99.5 368.312 99.5 DL 374.31 99.5 369.31 99.5 DL 379.31 +99.5 374.31 99.5 DL 384.31 99.5 379.31 99.5 DL F0 12.944(?y)356.427 108 +S 2.5(=\()-3.279 G 463.476 100.5 463.476 110.5 DL 463.476 99.5 463.476 +109.5 DL 11.04(equal\) =)399.946 108 R 479.474 100.5 479.474 110.5 DL +468.476 110.5 463.476 110.5 DL 469.474 110.5 464.474 110.5 DL 474.474 +110.5 469.474 110.5 DL 479.474 110.5 474.474 110.5 DL 479.474 99.5 +479.474 109.5 DL 468.476 99.5 463.476 99.5 DL 469.474 99.5 464.474 99.5 +DL 474.474 99.5 469.474 99.5 DL 479.474 99.5 474.474 99.5 DL 481.14 +100.5 481.14 110.5 DL 481.14 99.5 481.14 109.5 DL F1(ESC)465.973 107 Q +497.138 100.5 497.138 110.5 DL 486.14 110.5 481.14 110.5 DL 487.138 +110.5 482.138 110.5 DL 492.138 110.5 487.138 110.5 DL 497.138 110.5 +492.138 110.5 DL 497.138 99.5 497.138 109.5 DL 486.14 99.5 481.14 99.5 +DL 487.138 99.5 482.138 99.5 DL 492.138 99.5 487.138 99.5 DL 497.138 +99.5 492.138 99.5 DL 498.804 100.5 498.804 110.5 DL 498.804 99.5 498.804 +109.5 DL 514.802 100.5 514.802 110.5 DL 503.804 110.5 498.804 110.5 DL +504.802 110.5 499.802 110.5 DL 509.802 110.5 504.802 110.5 DL 514.802 +110.5 509.802 110.5 DL 514.802 99.5 514.802 109.5 DL 503.804 99.5 +498.804 99.5 DL 504.802 99.5 499.802 99.5 DL 509.802 99.5 504.802 99.5 +DL 514.802 99.5 509.802 99.5 DL F0 11.834(?X)486.919 108 S/F2 10 +/Times-Bold@0 SF(Sun-Style Function K)72 138 Q(eys)-.25 E F0(The)72 +154.8 Q/F3 10/Times-Italic@0 SF(xterm)3.008 E F0 .509(program pro)3.009 +F .509(vides support for Sun k)-.15 F -.15(ey)-.1 G .509 +(boards more directly).15 F 3.009(,b)-.65 G 3.009(yam)-3.009 G .509 +(enu toggle that causes it to send Sun-)-3.009 F .676(style function k) +72 166.8 R .976 -.15(ey c)-.1 H .676(odes rather than VT220.).15 F .676 +(Note, ho)5.676 F(we)-.25 E -.15(ve)-.25 G 1.476 -.4(r, t).15 H .676 +(hat the).4 F F3(sun)3.175 E F0(and)3.175 E F3(vt100)3.175 E F0 .675 +(emulations are not really com-)3.175 F 2.5(patible. F)72 178.8 R(or e) +-.15 E(xample, their wrap-mar)-.15 E(gin beha)-.18 E(vior dif)-.2 E +(fers.)-.25 E .672(Only function k)72 195.6 R -.15(ey)-.1 G 3.173(sa).15 +G .673(re altered; k)-3.173 F -.15(ey)-.1 G .673(pad and cursor k).15 F +-.15(ey)-.1 G 3.173(sa).15 G .673(re the same.)-3.173 F .673 +(The emulation responds identically)5.673 F 5.673(.S)-.65 G .673(ee the) +-5.673 F(xterm-sun terminfo entry for details.)72 207.6 Q F2 +(HP-Style Function K)72 231.6 Q(eys)-.25 E F0(Similarly)72 248.4 Q(,) +-.65 E F3(xterm)2.5 E F0(can be compiled to support HP k)2.5 E -.15(ey) +-.1 G 2.5(boards. See).15 F(the xterm-hp terminfo entry for details.)2.5 +E F2(Mouse T)72 272.4 Q(racking)-.74 E F0 .052(The VT widget can be set\ + to send the mouse position and other information on b)72 289.2 R .052 +(utton presses.)-.2 F .052(These modes are typ-)5.052 F +(ically used by editors and other full-screen applications that w)72 +301.2 Q(ant to mak)-.1 E 2.5(eu)-.1 G(se of the mouse.)-2.5 E .93 +(There are six mutually e)72 325.2 R(xclusi)-.15 E 1.23 -.15(ve m)-.25 H +3.43(odes. One).15 F 465.9 317.7 465.9 327.7 DL 465.9 316.7 465.9 326.7 +DL .93(is DEC Locator mode, enabled by the DECELR)263.76 325.2 R 481.898 +317.7 481.898 327.7 DL 470.9 327.7 465.9 327.7 DL 471.898 327.7 466.898 +327.7 DL 476.898 327.7 471.898 327.7 DL 481.898 327.7 476.898 327.7 DL +481.898 316.7 481.898 326.7 DL 470.9 316.7 465.9 316.7 DL 471.898 316.7 +466.898 316.7 DL 476.898 316.7 471.898 316.7 DL 481.898 316.7 476.898 +316.7 DL F1(CSI)469.231 324.2 Q F3(P)4.997 1 M 492.452 317.7 492.452 +327.7 DL 492.452 316.7 492.452 326.7 DL/F4 8/Times-Italic@0 SF(s)487.674 +328.2 Q 508.45 317.7 508.45 327.7 DL 497.452 327.7 492.452 327.7 DL +498.45 327.7 493.45 327.7 DL 503.45 327.7 498.45 327.7 DL 508.45 327.7 +503.45 327.7 DL 508.45 316.7 508.45 326.7 DL 497.452 316.7 492.452 316.7 +DL 498.45 316.7 493.45 316.7 DL 503.45 316.7 498.45 316.7 DL 508.45 +316.7 503.45 316.7 DL F0(;)499.061 325.2 Q F3(P)8.275 E F4(s)-2 3 M +522.336 317.7 522.336 327.7 DL 522.336 316.7 522.336 326.7 DL 538.334 +317.7 538.334 327.7 DL 527.336 327.7 522.336 327.7 DL 528.334 327.7 +523.334 327.7 DL 533.334 327.7 528.334 327.7 DL 538.334 327.7 533.334 +327.7 DL 538.334 316.7 538.334 326.7 DL 527.336 316.7 522.336 316.7 DL +528.334 316.7 523.334 316.7 DL 533.334 316.7 528.334 316.7 DL 538.334 +316.7 533.334 316.7 DL F0 3.28<b47a>521.505 325.2 S .304 +(control sequence, and is not described here.)72 337.2 R .304 +(The remaining \214v)5.304 F 2.804(em)-.15 G .304 +(odes are each enabled \(or disabled\) by a dif)-2.804 F(ferent)-.25 E +165.04 341.7 165.04 351.7 DL 165.04 340.7 165.04 350.7 DL +(parameter in DECSET)72 349.2 Q 181.038 341.7 181.038 351.7 DL 170.04 +351.7 165.04 351.7 DL 171.038 351.7 166.038 351.7 DL 176.038 351.7 +171.038 351.7 DL 181.038 351.7 176.038 351.7 DL 181.038 340.7 181.038 +350.7 DL 170.04 340.7 165.04 340.7 DL 171.038 340.7 166.038 340.7 DL +176.038 340.7 171.038 340.7 DL 181.038 340.7 176.038 340.7 DL 182.704 +341.7 182.704 351.7 DL 182.704 340.7 182.704 350.7 DL F1(CSI)168.371 +348.2 Q 198.702 341.7 198.702 351.7 DL 187.704 351.7 182.704 351.7 DL +188.702 351.7 183.702 351.7 DL 193.702 351.7 188.702 351.7 DL 198.702 +351.7 193.702 351.7 DL 198.702 340.7 198.702 350.7 DL 187.704 340.7 +182.704 340.7 DL 188.702 340.7 183.702 340.7 DL 193.702 340.7 188.702 +340.7 DL 198.702 340.7 193.702 340.7 DL F0(?)188.483 349.2 Q F3(P)7.445 +E 211.92 341.7 211.92 351.7 DL 211.92 340.7 211.92 350.7 DL F4(m)204.478 +352.2 Q 227.918 341.7 227.918 351.7 DL 216.92 351.7 211.92 351.7 DL +217.918 351.7 212.918 351.7 DL 222.918 351.7 217.918 351.7 DL 227.918 +351.7 222.918 351.7 DL 227.918 340.7 227.918 350.7 DL 216.92 340.7 +211.92 340.7 DL 217.918 340.7 212.918 340.7 DL 222.918 340.7 217.918 +340.7 DL 227.918 340.7 222.918 340.7 DL F0 9.665(ho)217.419 349.2 S 2.5 +(rD)-9.665 G 283.754 341.7 283.754 351.7 DL 283.754 340.7 283.754 350.7 +DL(ECRST)250.134 349.2 Q 299.752 341.7 299.752 351.7 DL 288.754 351.7 +283.754 351.7 DL 289.752 351.7 284.752 351.7 DL 294.752 351.7 289.752 +351.7 DL 299.752 351.7 294.752 351.7 DL 299.752 340.7 299.752 350.7 DL +288.754 340.7 283.754 340.7 DL 289.752 340.7 284.752 340.7 DL 294.752 +340.7 289.752 340.7 DL 299.752 340.7 294.752 340.7 DL 301.418 341.7 +301.418 351.7 DL 301.418 340.7 301.418 350.7 DL F1(CSI)287.085 348.2 Q +317.416 341.7 317.416 351.7 DL 306.418 351.7 301.418 351.7 DL 307.416 +351.7 302.416 351.7 DL 312.416 351.7 307.416 351.7 DL 317.416 351.7 +312.416 351.7 DL 317.416 340.7 317.416 350.7 DL 306.418 340.7 301.418 +340.7 DL 307.416 340.7 302.416 340.7 DL 312.416 340.7 307.416 340.7 DL +317.416 340.7 312.416 340.7 DL F0(?)307.197 349.2 Q F3(P)7.445 E 330.634 +341.7 330.634 351.7 DL 330.634 340.7 330.634 350.7 DL F4(m)323.192 352.2 +Q 346.632 341.7 346.632 351.7 DL 335.634 351.7 330.634 351.7 DL 336.632 +351.7 331.632 351.7 DL 341.632 351.7 336.632 351.7 DL 346.632 351.7 +341.632 351.7 DL 346.632 340.7 346.632 350.7 DL 335.634 340.7 330.634 +340.7 DL 336.632 340.7 331.632 340.7 DL 341.632 340.7 336.632 340.7 DL +346.632 340.7 341.632 340.7 DL F0 10.775(lc)337.243 349.2 S +(ontrol sequence.)-10.775 E(Manifest constants for the parameter v)72 +373.2 Q(alues are de\214ned in)-.25 E F2(xcharmouse.h)2.5 E F0(as follo) +2.5 E(ws:)-.25 E(#de\214ne SET_X10_MOUSE)200.735 391.2 Q(9)37.5 E +(#de\214ne SET_VT200_MOUSE)200.735 403.2 Q(1000)32.5 E +(#de\214ne SET_VT200_HIGHLIGHT_MOUSE)200.735 415.2 Q(1001)7.5 E +(#de\214ne SET_BTN_EVENT_MOUSE)200.735 427.2 Q(1002)22.5 E +(#de\214ne SET_ANY_EVENT_MOUSE)200.735 439.2 Q(1003)22.5 E .721 +(The motion reporting modes are strictly)72 462 R F3(xterm)3.221 E F0 +-.15(ex)3.221 G .721(tensions, and are not part of an).15 F 3.221(ys) +-.15 G .721(tandard, though the)-3.221 F 3.222(ya)-.15 G .722(re analo-) +-3.222 F(gous to the DEC VT200 DECELR locator reports.)72 474 Q -.15(Pa) +72 498 S .008(rameters \(such as pointer position and b).15 F .007 +(utton number\) for all mouse tracking escape sequences generated by)-.2 +F F3(xterm)2.507 E F0 .772 +(encode numeric parameters in a single character as)72 510 R F3(value) +3.273 E F0 3.273(+32. F)B .773(or e)-.15 F 386.308 502.5 386.308 512.5 +DL 386.308 501.5 386.308 511.5 DL 402.306 502.5 402.306 512.5 DL 391.308 +512.5 386.308 512.5 DL 392.306 512.5 387.306 512.5 DL 397.306 512.5 +392.306 512.5 DL 402.306 512.5 397.306 512.5 DL 402.306 501.5 402.306 +511.5 DL 391.308 501.5 386.308 501.5 DL 392.306 501.5 387.306 501.5 DL +397.306 501.5 392.306 501.5 DL 402.306 501.5 397.306 501.5 DL 7.107 +(xample, !)351.095 510 R .773(speci\214es the v)11.273 F .773(alue 1.) +-.25 F .773(The upper)5.773 F +(left character position on the terminal is denoted as 1,1.)72 522 Q +.138(X10 compatibility mode sends an escape sequence only on b)72 546 R +.137(utton press, encoding the location and the mouse b)-.2 F(utton)-.2 +E 2.819(pressed. It)72 558 R .32 +(is enabled by specifying parameter 9 to DECSET)2.819 F 5.32(.O)-.74 G +2.82(nb)-5.32 G .32(utton press,)-3.02 F F3(xterm)2.82 E 445.248 550.5 +445.248 560.5 DL 445.248 549.5 445.248 559.5 DL F0(sends)420.208 558 Q +461.246 550.5 461.246 560.5 DL 450.248 560.5 445.248 560.5 DL 451.246 +560.5 446.246 560.5 DL 456.246 560.5 451.246 560.5 DL 461.246 560.5 +456.246 560.5 DL 461.246 549.5 461.246 559.5 DL 450.248 549.5 445.248 +549.5 DL 451.246 549.5 446.246 549.5 DL 456.246 549.5 451.246 549.5 DL +461.246 549.5 456.246 549.5 DL 462.912 550.5 462.912 560.5 DL 462.912 +549.5 462.912 559.5 DL F1(CSI)448.579 557 Q 478.91 550.5 478.91 560.5 DL +467.912 560.5 462.912 560.5 DL 468.91 560.5 463.91 560.5 DL 473.91 560.5 +468.91 560.5 DL 478.91 560.5 473.91 560.5 DL 478.91 549.5 478.91 559.5 +DL 467.912 549.5 462.912 549.5 DL 468.91 549.5 463.91 549.5 DL 473.91 +549.5 468.91 549.5 DL 478.91 549.5 473.91 549.5 DL F0(M)466.466 558 Q F3 +(C)5.22 E F4(b)-2 3 M F3(C)-3 I F4(x)-2 3 M F3(C)-3 I F4(y)-2 3 M F0 .32 +(\(6 char)2.82 -3 N(-)-.2 E(acters\).)72 570 Q F3(C)5 E F4(b)-2 3 M F0 +(is b)2.5 -3 M(utton\2551.)-.2 E F3(C)5 E F4(x)-2 3 M F0(and)2.5 -3 M F3 +(C)2.5 E F4(y)-2 3 M F0 +(are the x and y coordinates of the mouse when the b)2.5 -3 M(utton w) +-.2 E(as pressed.)-.1 E .748 +(Normal tracking mode sends an escape sequence on both b)72 594 R .748 +(utton press and release.)-.2 F .747(Modi\214er k)5.747 F 1.047 -.15 +(ey \()-.1 H .747(shift, ctrl, meta\)).15 F .392 +(information is also sent.)72 606 R .392 +(It is enabled by specifying parameter 1000 to DECSET)5.392 F 5.392(.O) +-.74 G 2.892(nb)-5.392 G .393(utton press or release,)-3.092 F F3(xterm) +2.893 E 96.982 610.5 96.982 620.5 DL 96.982 609.5 96.982 619.5 DL F0 +(sends)72 618 Q 112.98 610.5 112.98 620.5 DL 101.982 620.5 96.982 620.5 +DL 102.98 620.5 97.98 620.5 DL 107.98 620.5 102.98 620.5 DL 112.98 620.5 +107.98 620.5 DL 112.98 609.5 112.98 619.5 DL 101.982 609.5 96.982 609.5 +DL 102.98 609.5 97.98 609.5 DL 107.98 609.5 102.98 609.5 DL 112.98 609.5 +107.98 609.5 DL 114.646 610.5 114.646 620.5 DL 114.646 609.5 114.646 +619.5 DL F1(CSI)100.313 617 Q 130.644 610.5 130.644 620.5 DL 119.646 +620.5 114.646 620.5 DL 120.644 620.5 115.644 620.5 DL 125.644 620.5 +120.644 620.5 DL 130.644 620.5 125.644 620.5 DL 130.644 609.5 130.644 +619.5 DL 119.646 609.5 114.646 609.5 DL 120.644 609.5 115.644 609.5 DL +125.644 609.5 120.644 609.5 DL 130.644 609.5 125.644 609.5 DL F0(M)118.2 +618 Q F3(C)5.22 E F4(b)-2 3 M F3(C)-3 I F4(x)-2 3 M F3(C)-3 I F4(y)-2 3 +M F0 5.262(.T)-3 K .262(he lo)-5.262 F 2.762(wt)-.25 G .462 -.1(wo b) +-2.762 H .262(its of).1 F F3(C)2.762 E F4(b)-2 3 M F0 .262(encode b) +2.762 -3 N .262(utton information: 0=MB1 pressed, 1=MB2 pressed, 2=MB3) +-.2 F .253(pressed, 3=release.)72 630 R .253(The ne)5.253 F .253 +(xt three bits encode the modi\214ers which were do)-.15 F .254 +(wn when the b)-.25 F .254(utton w)-.2 F .254(as pressed and are)-.1 F +.112(added together:)72 642 R .112(4=Shift, 8=Meta, 16=Control.)5.112 F +.112(Note ho)5.112 F(we)-.25 E -.15(ve)-.25 G 2.612(rt).15 G .112 +(hat the shift and control bits are normally una)-2.612 F -.25(va)-.2 G +(ilable).25 E(because)72 654 Q F3(xterm)3.25 E F0 .751(uses the control\ + modi\214er with mouse for popup menus, and the shift modi\214er is use\ +d in the def)3.25 F(ault)-.1 E .435(translations for b)72 666 R .435 +(utton e)-.2 F -.15(ve)-.25 G 2.935(nts. The).15 F F3(Meta)2.935 E F0 +.435(modi\214er recognized by)2.935 F F3(xterm)2.935 E F0 .435(is the) +2.935 F F3(mod1)2.935 E F0 .435(mask, and is not necessarily the)2.935 F +("Meta" k)72 678 Q .3 -.15(ey \()-.1 H(see).15 E F3(xmodmap)2.5 E F0 +(\).)A F3(C)5 E F4(x)-2 3 M F0(and)2.5 -3 M F3(C)2.5 E F4(y)-2 3 M F0 +(are the x and y coordinates of the mouse e)2.5 -3 M -.15(ve)-.25 G +(nt, encoded as in X10 mode.).15 E(Wheel mice may return b)72 702 Q +(uttons 4 and 5.)-.2 E(Those b)5 E +(uttons are represented by adding 64 to the e)-.2 E -.15(ve)-.25 G +(nt code.).15 E .237(Mouse hilite tracking noti\214es a program of a b) +72 726 R .237(utton press, recei)-.2 F -.15(ve)-.25 G 2.737(sar).15 G +.237(ange of lines from the program, highlights the)-2.737 F(16)301 768 +Q EP +%%Page: 17 17 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 48 Q(Mouse T)299.21 E +(racking)-.35 E(re)72 84 Q .687(gion co)-.15 F -.15(ve)-.15 G .686 +(red by the mouse within that range until b).15 F .686 +(utton release, and then sends the program the release coordi-)-.2 F +2.799(nates. It)72 96 R .299 +(is enabled by specifying parameter 1001 to DECSET)2.799 F 5.299(.H)-.74 +G .3(ighlighting is performed only for b)-5.299 F .3(utton 1, though)-.2 +F 1.352(other b)72 108 R 1.352(utton e)-.2 F -.15(ve)-.25 G 1.351 +(nts can be recei).15 F -.15(ve)-.25 G(d.).15 E/F1 10/Times-Bold@0 SF +-.65(Wa)6.351 G -.15(rn).65 G(ing:).15 E F0 1.351 +(use of this mode requires a cooperating program or it will hang)3.851 F +/F2 10/Times-Italic@0 SF(xterm.)72 120 Q F0 .357(On b)5.357 F .358 +(utton press, the same information as for normal tracking is generated;) +-.2 F F2(xterm)2.858 E F0 .358(then w)2.858 F .358(aits for the program) +-.1 F .414(to send mouse tracking information.)72 132 R F2 .414(All X e) +5.414 F .414(vents ar)-.15 F 2.914(ei)-.37 G(gnor)-2.914 E .414 +(ed until the pr)-.37 F .414(oper escape sequence is r)-.45 F .413 +(eceived fr)-.37 F .413(om the)-.45 F .4 LW 90.077 136.5 90.077 146.5 DL +90.077 135.5 90.077 145.5 DL(pty:)72 144 Q 106.075 136.5 106.075 146.5 +DL 95.077 146.5 90.077 146.5 DL 96.075 146.5 91.075 146.5 DL 101.075 +146.5 96.075 146.5 DL 106.075 146.5 101.075 146.5 DL 106.075 135.5 +106.075 145.5 DL 95.077 135.5 90.077 135.5 DL 96.075 135.5 91.075 135.5 +DL 101.075 135.5 96.075 135.5 DL 106.075 135.5 101.075 135.5 DL/F3 6 +/Times-Roman@0 SF(CSI)93.408 143 Q F2(P)4.997 1 M 116.629 136.5 116.629 +146.5 DL 116.629 135.5 116.629 145.5 DL/F4 8/Times-Italic@0 SF(s)111.851 +147 Q 132.627 136.5 132.627 146.5 DL 121.629 146.5 116.629 146.5 DL +122.627 146.5 117.627 146.5 DL 127.627 146.5 122.627 146.5 DL 132.627 +146.5 127.627 146.5 DL 132.627 135.5 132.627 145.5 DL 121.629 135.5 +116.629 135.5 DL 122.627 135.5 117.627 135.5 DL 127.627 135.5 122.627 +135.5 DL 132.627 135.5 127.627 135.5 DL F0(;)123.238 144 Q F2(P)8.275 E +143.181 136.5 143.181 146.5 DL 143.181 135.5 143.181 145.5 DL F4(s) +138.403 147 Q 159.179 136.5 159.179 146.5 DL 148.181 146.5 143.181 146.5 +DL 149.179 146.5 144.179 146.5 DL 154.179 146.5 149.179 146.5 DL 159.179 +146.5 154.179 146.5 DL 159.179 135.5 159.179 145.5 DL 148.181 135.5 +143.181 135.5 DL 149.179 135.5 144.179 135.5 DL 154.179 135.5 149.179 +135.5 DL 159.179 135.5 154.179 135.5 DL F0(;)149.79 144 Q F2(P)8.275 E +169.733 136.5 169.733 146.5 DL 169.733 135.5 169.733 145.5 DL F4(s) +164.955 147 Q 185.731 136.5 185.731 146.5 DL 174.733 146.5 169.733 146.5 +DL 175.731 146.5 170.731 146.5 DL 180.731 146.5 175.731 146.5 DL 185.731 +146.5 180.731 146.5 DL 185.731 135.5 185.731 145.5 DL 174.733 135.5 +169.733 135.5 DL 175.731 135.5 170.731 135.5 DL 180.731 135.5 175.731 +135.5 DL 185.731 135.5 180.731 135.5 DL F0(;)176.342 144 Q F2(P)8.275 E +196.285 136.5 196.285 146.5 DL 196.285 135.5 196.285 145.5 DL F4(s) +191.507 147 Q 212.283 136.5 212.283 146.5 DL 201.285 146.5 196.285 146.5 +DL 202.283 146.5 197.283 146.5 DL 207.283 146.5 202.283 146.5 DL 212.283 +146.5 207.283 146.5 DL 212.283 135.5 212.283 145.5 DL 201.285 135.5 +196.285 135.5 DL 202.283 135.5 197.283 135.5 DL 207.283 135.5 202.283 +135.5 DL 212.283 135.5 207.283 135.5 DL F0(;)202.894 144 Q F2(P)8.275 E +222.837 136.5 222.837 146.5 DL 222.837 135.5 222.837 145.5 DL F4(s) +218.059 147 Q 238.835 136.5 238.835 146.5 DL 227.837 146.5 222.837 146.5 +DL 228.835 146.5 223.835 146.5 DL 233.835 146.5 228.835 146.5 DL 238.835 +146.5 233.835 146.5 DL 238.835 135.5 238.835 145.5 DL 227.837 135.5 +222.837 135.5 DL 228.835 135.5 223.835 135.5 DL 233.835 135.5 228.835 +135.5 DL 238.835 135.5 233.835 135.5 DL F0 6.61(T.)227.781 144 S .027 +(The parameters are)-1.583 F F2 .027(func, startx, starty)2.527 F 2.527 +<2c8c>-.55 G -.1(rs)-2.527 G(tr).1 E(ow)-.45 E(,)-.74 E F0(and)2.528 E +F2(lastr)2.528 E(ow)-.45 E 5.028(.f)-.74 G(unc)-5.028 E F0 .028(is non-) +2.528 F 1.13(zero to initiate hilite tracking and zero to abort.)72 156 +R F2(startx)6.13 E F0(and)3.63 E F2(starty)3.63 E F0(gi)3.63 E 1.43 -.15 +(ve t)-.25 H 1.13(he starting x and y location for the high-).15 F .167 +(lighted re)72 168 R 2.667(gion. The)-.15 F .168 +(ending location tracks the mouse, b)2.668 F .168(ut will ne)-.2 F -.15 +(ve)-.25 G 2.668(rb).15 G 2.668(ea)-2.668 G(bo)-2.668 E .468 -.15(ve r) +-.15 H -.25(ow).15 G F2<8c72>2.918 E(str)-.1 E(ow)-.45 E F0 .168 +(and will al)2.668 F -.1(wa)-.1 G .168(ys be abo).1 F -.15(ve)-.15 G(ro) +72 180 Q(w)-.25 E F2(lastr)2.737 E(ow)-.45 E(.)-.74 E F0 .236 +(\(The top of the screen is ro)5.237 F 2.736(w1)-.25 G 2.736(.\) When) +-2.736 F .236(the b)2.736 F .236(utton is released,)-.2 F F2(xterm)2.736 +E F0 .236(reports the ending position one of)2.736 F(tw)72 192 Q 2.936 +(ow)-.1 G .436(ays: if the start and end coordinates are v)-3.036 F .436 +(alid te)-.25 F 341.592 184.5 341.592 194.5 DL 341.592 183.5 341.592 +193.5 DL .436(xt locations:)289.05 192 R 357.59 184.5 357.59 194.5 DL +346.592 194.5 341.592 194.5 DL 347.59 194.5 342.59 194.5 DL 352.59 194.5 +347.59 194.5 DL 357.59 194.5 352.59 194.5 DL 357.59 183.5 357.59 193.5 +DL 346.592 183.5 341.592 183.5 DL 347.59 183.5 342.59 183.5 DL 352.59 +183.5 347.59 183.5 DL 357.59 183.5 352.59 183.5 DL 359.256 184.5 359.256 +194.5 DL 359.256 183.5 359.256 193.5 DL F3(CSI)344.923 191 Q 375.254 +184.5 375.254 194.5 DL 364.256 194.5 359.256 194.5 DL 365.254 194.5 +360.254 194.5 DL 370.254 194.5 365.254 194.5 DL 375.254 194.5 370.254 +194.5 DL 375.254 183.5 375.254 193.5 DL 364.256 183.5 359.256 183.5 DL +365.254 183.5 360.254 183.5 DL 370.254 183.5 365.254 183.5 DL 375.254 +183.5 370.254 183.5 DL F0(t)365.865 192 Q F2(C)8.275 E F4(x)-2 3 M F2(C) +-3 I F4(y)-2 3 M F0 5.436(.I)-3 K 2.936(fe)-5.436 G .437 +(ither coordinate is past the end)-2.936 F 119.387 196.5 119.387 206.5 +DL 119.387 195.5 119.387 205.5 DL .519(of the line:)72 204 R 135.385 +196.5 135.385 206.5 DL 124.387 206.5 119.387 206.5 DL 125.385 206.5 +120.385 206.5 DL 130.385 206.5 125.385 206.5 DL 135.385 206.5 130.385 +206.5 DL 135.385 195.5 135.385 205.5 DL 124.387 195.5 119.387 195.5 DL +125.385 195.5 120.385 195.5 DL 130.385 195.5 125.385 195.5 DL 135.385 +195.5 130.385 195.5 DL 137.051 196.5 137.051 206.5 DL 137.051 195.5 +137.051 205.5 DL F3(CSI)122.718 203 Q 153.049 196.5 153.049 206.5 DL +142.051 206.5 137.051 206.5 DL 143.049 206.5 138.049 206.5 DL 148.049 +206.5 143.049 206.5 DL 153.049 206.5 148.049 206.5 DL 153.049 195.5 +153.049 205.5 DL 142.051 195.5 137.051 195.5 DL 143.049 195.5 138.049 +195.5 DL 148.049 195.5 143.049 195.5 DL 153.049 195.5 148.049 195.5 DL +F0(T)141.995 204 Q F2(C)6.61 E F4(x)-2 3 M F2(C)-3 I F4(y)-2 3 M F2(C)-3 +I F4(x)-2 3 M F2(C)-3 I F4(y)-2 3 M F2(C)-3 I F4(x)-2 3 M F2(C)-3 I F4 +(y)-2 3 M F0 5.519(.T)-3 K .519(he parameters are)-5.519 F F2 .519 +(startx, starty)3.019 F 3.019(,e)-.55 G .519(ndx, endy)-3.019 F 3.018 +(,m)-.55 G(ouse)-3.018 E(x,)-.2 E F0(and)3.018 E F2(mouse)3.018 E 4.118 +-.55(y. s)-.3 H .518(tartx, starty).55 F(,)-.55 E(endx,)72 216 Q F0(and) +2.983 E F2(endy)2.983 E F0(gi)2.984 E .784 -.15(ve t)-.25 H .484 +(he starting and ending character positions of the re).15 F(gion.)-.15 E +F2(mouse)5.484 E(x)-.2 E F0(and)2.984 E F2(mouse)2.984 E(y)-.3 E F0(gi) +2.984 E .784 -.15(ve t)-.25 H .484(he location).15 F(of the mouse at b) +72 228 Q(utton up, which may not be o)-.2 E -.15(ve)-.15 G 2.5(rac).15 G +(haracter)-2.5 E(.)-.55 E(Button-e)72 252 Q -.15(ve)-.25 G 2.208 +(nt tracking is essentially the same as normal tracking, b).15 F(ut)-.2 +E F2(xterm)4.708 E F0 2.208(also reports b)4.708 F 2.207(utton-motion e) +-.2 F -.15(ve)-.25 G(nts.).15 E .341(Motion e)72 264 R -.15(ve)-.25 G +.341(nts are reported only if the mouse pointer has mo).15 F -.15(ve) +-.15 G 2.842(dt).15 G 2.842(oad)-2.842 G(if)-2.842 E .342 +(ferent character cell.)-.25 F .342(It is enabled by speci-)5.342 F .301 +(fying parameter 1002 to DECSET)72 276 R 5.301(.O)-.74 G 2.801(nb)-5.301 +G .301(utton press or release,)-3.001 F F2(xterm)2.801 E F0 .3 +(sends the same codes used by normal tracking)2.8 F 2.505(mode. On)72 +288 R -.2(bu)2.505 G .005(tton-motion e).2 F -.15(ve)-.25 G(nts,).15 E +F2(xterm)2.505 E F0 .005(adds 32 to the e)2.505 F -.15(ve)-.25 G .005 +(nt code \(the third character).15 F(,)-.4 E F2(C)2.505 E F4(b)-2 3 M F0 +2.505(\). The)-3 J .005(other bits of the e)2.505 F -.15(ve)-.25 G(nt) +.15 E .461(code specify b)72 300 R .461(utton and modi\214er k)-.2 F +-.15(ey)-.1 G 2.961(sa).15 G 2.961(si)-2.961 G 2.961(nn)-2.961 G .461 +(ormal mode.)-2.961 F -.15(Fo)5.461 G 2.961(re).15 G .461 +(xample, motion into cell x,y with b)-3.111 F .461(utton 1 do)-.2 F .461 +(wn is)-.25 F 119.404 304.5 119.404 314.5 DL 119.404 303.5 119.404 313.5 +DL .377(reported as)72 312 R 135.402 304.5 135.402 314.5 DL 124.404 +314.5 119.404 314.5 DL 125.402 314.5 120.402 314.5 DL 130.402 314.5 +125.402 314.5 DL 135.402 314.5 130.402 314.5 DL 135.402 303.5 135.402 +313.5 DL 124.404 303.5 119.404 303.5 DL 125.402 303.5 120.402 303.5 DL +130.402 303.5 125.402 303.5 DL 135.402 303.5 130.402 303.5 DL 137.068 +304.5 137.068 314.5 DL 137.068 303.5 137.068 313.5 DL F3(CSI)122.735 311 +Q 153.066 304.5 153.066 314.5 DL 142.068 314.5 137.068 314.5 DL 143.066 +314.5 138.066 314.5 DL 148.066 314.5 143.066 314.5 DL 153.066 314.5 +148.066 314.5 DL 153.066 303.5 153.066 313.5 DL 142.068 303.5 137.068 +303.5 DL 143.066 303.5 138.066 303.5 DL 148.066 303.5 143.066 303.5 DL +153.066 303.5 148.066 303.5 DL 154.732 304.5 154.732 314.5 DL 154.732 +303.5 154.732 313.5 DL 170.73 304.5 170.73 314.5 DL 159.732 314.5 +154.732 314.5 DL 160.73 314.5 155.73 314.5 DL 165.73 314.5 160.73 314.5 +DL 170.73 314.5 165.73 314.5 DL 170.73 303.5 170.73 313.5 DL 159.732 +303.5 154.732 303.5 DL 160.73 303.5 155.73 303.5 DL 165.73 303.5 160.73 +303.5 DL 170.73 303.5 165.73 303.5 DL F0 8.614(M@)140.622 312 S F2(C) +-3.554 E F4(x)-2 3 M F2(C)-3 I F4(y)-2 3 M 202.924 304.5 202.924 314.5 +DL 202.924 303.5 202.924 313.5 DL 218.922 304.5 218.922 314.5 DL 207.924 +314.5 202.924 314.5 DL 208.922 314.5 203.922 314.5 DL 213.922 314.5 +208.922 314.5 DL 218.922 314.5 213.922 314.5 DL 218.922 303.5 218.922 +313.5 DL 207.924 303.5 202.924 303.5 DL 208.922 303.5 203.922 303.5 DL +213.922 303.5 208.922 303.5 DL 218.922 303.5 213.922 303.5 DL F0 -6.983 +5.377(.\( @)188.84 312 T 2.877(=3)2.56 G 2.877(2+0\()-2.877 G -.2(bu) +-2.877 G .377(tton 1\) + 32 \(motion indicator\) \).).2 F(Similarly) +5.377 E 2.877(,m)-.65 G .377(otion with b)-2.877 F .377(utton 3)-.2 F +(do)72 324 Q 152.29 316.5 152.29 326.5 DL 152.29 315.5 152.29 325.5 DL +(wn is reported as)81.75 324 Q 168.288 316.5 168.288 326.5 DL 157.29 +326.5 152.29 326.5 DL 158.288 326.5 153.288 326.5 DL 163.288 326.5 +158.288 326.5 DL 168.288 326.5 163.288 326.5 DL 168.288 315.5 168.288 +325.5 DL 157.29 315.5 152.29 315.5 DL 158.288 315.5 153.288 315.5 DL +163.288 315.5 158.288 315.5 DL 168.288 315.5 163.288 315.5 DL 169.954 +316.5 169.954 326.5 DL 169.954 315.5 169.954 325.5 DL F3(CSI)155.621 323 +Q 185.952 316.5 185.952 326.5 DL 174.954 326.5 169.954 326.5 DL 175.952 +326.5 170.952 326.5 DL 180.952 326.5 175.952 326.5 DL 185.952 326.5 +180.952 326.5 DL 185.952 315.5 185.952 325.5 DL 174.954 315.5 169.954 +315.5 DL 175.952 315.5 170.952 315.5 DL 180.952 315.5 175.952 315.5 DL +185.952 315.5 180.952 315.5 DL 187.618 316.5 187.618 326.5 DL 187.618 +315.5 187.618 325.5 DL 203.616 316.5 203.616 326.5 DL 192.618 326.5 +187.618 326.5 DL 193.616 326.5 188.616 326.5 DL 198.616 326.5 193.616 +326.5 DL 203.616 326.5 198.616 326.5 DL 203.616 315.5 203.616 325.5 DL +192.618 315.5 187.618 315.5 DL 193.616 315.5 188.616 315.5 DL 198.616 +315.5 193.616 315.5 DL 203.616 315.5 198.616 315.5 DL F0 9.884(MB) +173.508 324 S F2(C)-3.554 E F4(x)-2 3 M F2(C)-3 I F4(y)-2 3 M 235.056 +316.5 235.056 326.5 DL 235.056 315.5 235.056 325.5 DL 251.054 316.5 +251.054 326.5 DL 240.056 326.5 235.056 326.5 DL 241.054 326.5 236.054 +326.5 DL 246.054 326.5 241.054 326.5 DL 251.054 326.5 246.054 326.5 DL +251.054 315.5 251.054 325.5 DL 240.056 315.5 235.056 315.5 DL 241.054 +315.5 236.054 315.5 DL 246.054 315.5 241.054 315.5 DL 251.054 315.5 +246.054 315.5 DL F0 -5.336 5(.\( B)221.726 324 T 2.5(=3)3.83 G 2.5 +(2+2\()-2.5 G -.2(bu)-2.5 G(tton 3\) + 32 \(motion indicator\) \).).2 E +(An)72 348 Q(y-e)-.15 E -.15(ve)-.25 G .805(nt mode is the same as b).15 +F(utton-e)-.2 E -.15(ve)-.25 G .805(nt mode, e).15 F .805 +(xcept that all motion e)-.15 F -.15(ve)-.25 G .805 +(nts are reported instead of just those).15 F(that enter a ne)72 360 Q +2.5(wc)-.25 G(haracter cell.)-2.5 E +(It is enabled by specifying 1003 to DECSET)5 E(.)-.74 E F1 -.92(Te)72 +384 S(ktr).92 E(onix 4014 Mode)-.18 E F0 .122 +(Most of these sequences are standard T)72 400.8 R .123 +(ektronix 4014 control sequences.)-.7 F .123 +(Graph mode supports the 12-bit addressing)5.123 F .063(of the T)72 +412.8 R .063(ektronix 4014.)-.7 F .062 +(The major features missing are the write-through and defocused modes.) +5.063 F .062(This document does)5.062 F .393 +(not describe the commands used in the v)72 424.8 R .393(arious T)-.25 F +.394(ektronix plotting modes b)-.7 F .394 +(ut does describe the commands to switch)-.2 F(modes.)72 436.8 Q 72 +457.3 72 467.3 DL 72 456.3 72 466.3 DL 87.998 457.3 87.998 467.3 DL 77 +467.3 72 467.3 DL 77.998 467.3 72.998 467.3 DL 82.998 467.3 77.998 467.3 +DL 87.998 467.3 82.998 467.3 DL 87.998 456.3 87.998 466.3 DL 77 456.3 72 +456.3 DL 77.998 456.3 72.998 456.3 DL 82.998 456.3 77.998 456.3 DL +87.998 456.3 82.998 456.3 DL F3(BEL)74.332 463.8 Q F0(Bell \(Ctrl-G\)) +94.334 1 M 72 473.3 72 483.3 DL 72 472.3 72 482.3 DL 87.998 473.3 87.998 +483.3 DL 77 483.3 72 483.3 DL 77.998 483.3 72.998 483.3 DL 82.998 483.3 +77.998 483.3 DL 87.998 483.3 82.998 483.3 DL 87.998 472.3 87.998 482.3 +DL 77 472.3 72 472.3 DL 77.998 472.3 72.998 472.3 DL 82.998 472.3 77.998 +472.3 DL 87.998 472.3 82.998 472.3 DL F3(BS)76.33 479.8 Q F0 +(Backspace \(Ctrl-H\))96.332 1 M 72 489.3 72 499.3 DL 72 488.3 72 498.3 +DL F3 -.558(TA)74.278 495.8 S 87.998 489.3 87.998 499.3 DL 77 499.3 72 +499.3 DL 77.998 499.3 72.998 499.3 DL 82.998 499.3 77.998 499.3 DL +87.998 499.3 82.998 499.3 DL 87.998 488.3 87.998 498.3 DL 77 488.3 72 +488.3 DL 77.998 488.3 72.998 488.3 DL 82.998 488.3 77.998 488.3 DL +87.998 488.3 82.998 488.3 DL(B)81.718 495.8 Q F0(Horizontal T)94.28 1 M +(ab \(Ctrl-I\))-.8 E 72 505.3 72 515.3 DL 72 504.3 72 514.3 DL 87.998 +505.3 87.998 515.3 DL 77 515.3 72 515.3 DL 77.998 515.3 72.998 515.3 DL +82.998 515.3 77.998 515.3 DL 87.998 515.3 82.998 515.3 DL 87.998 504.3 +87.998 514.3 DL 77 504.3 72 504.3 DL 77.998 504.3 72.998 504.3 DL 82.998 +504.3 77.998 504.3 DL 87.998 504.3 82.998 504.3 DL F3(LF)76.498 511.8 Q +F0(Line Feed or Ne)96.5 1 M 2.5(wL)-.25 G(ine \(Ctrl-J\))-2.5 E 72 521.3 +72 531.3 DL 72 520.3 72 530.3 DL 87.998 521.3 87.998 531.3 DL 77 531.3 +72 531.3 DL 77.998 531.3 72.998 531.3 DL 82.998 531.3 77.998 531.3 DL +87.998 531.3 82.998 531.3 DL 87.998 520.3 87.998 530.3 DL 77 520.3 72 +520.3 DL 77.998 520.3 72.998 520.3 DL 82.998 520.3 77.998 520.3 DL +87.998 520.3 82.998 520.3 DL F3(VT)76 527.8 Q F0(Cursor up \(Ctrl-K\)) +96.002 1 M 72 537.3 72 547.3 DL 72 536.3 72 546.3 DL 87.998 537.3 87.998 +547.3 DL 77 547.3 72 547.3 DL 77.998 547.3 72.998 547.3 DL 82.998 547.3 +77.998 547.3 DL 87.998 547.3 82.998 547.3 DL 87.998 536.3 87.998 546.3 +DL 77 536.3 72 536.3 DL 77.998 536.3 72.998 536.3 DL 82.998 536.3 77.998 +536.3 DL 87.998 536.3 82.998 536.3 DL F3(FF)76.663 543.8 Q F0 -.15(Fo) +96.665 1 O(rm Feed or Ne).15 E 2.5(wP)-.25 G(age \(Ctrl-L\))-2.65 E 72 +553.3 72 563.3 DL 72 552.3 72 562.3 DL 87.998 553.3 87.998 563.3 DL 77 +563.3 72 563.3 DL 77.998 563.3 72.998 563.3 DL 82.998 563.3 77.998 563.3 +DL 87.998 563.3 82.998 563.3 DL 87.998 552.3 87.998 562.3 DL 77 552.3 72 +552.3 DL 77.998 552.3 72.998 552.3 DL 82.998 552.3 77.998 552.3 DL +87.998 552.3 82.998 552.3 DL F3(CR)75.997 559.8 Q F0 +(Carriage Return \(Ctrl-M\))95.999 1 M 72 569.3 72 579.3 DL 72 568.3 72 +578.3 DL 87.998 569.3 87.998 579.3 DL 77 579.3 72 579.3 DL 77.998 579.3 +72.998 579.3 DL 82.998 579.3 77.998 579.3 DL 87.998 579.3 82.998 579.3 +DL 87.998 568.3 87.998 578.3 DL 77 568.3 72 568.3 DL 77.998 568.3 72.998 +568.3 DL 82.998 568.3 77.998 568.3 DL 87.998 568.3 82.998 568.3 DL +89.664 569.3 89.664 579.3 DL 89.664 568.3 89.664 578.3 DL 105.662 569.3 +105.662 579.3 DL 94.664 579.3 89.664 579.3 DL 95.662 579.3 90.662 579.3 +DL 100.662 579.3 95.662 579.3 DL 105.662 579.3 100.662 579.3 DL 105.662 +568.3 105.662 578.3 DL 94.664 568.3 89.664 568.3 DL 95.662 568.3 90.662 +568.3 DL 100.662 568.3 95.662 568.3 DL 105.662 568.3 100.662 568.3 DL F3 +4.83(ESC ETX)74.497 575.8 R F0(Switch to VT100 Mode \(ESC Ctrl-C\)) +76.505 1 M 72 585.3 72 595.3 DL 72 584.3 72 594.3 DL 87.998 585.3 87.998 +595.3 DL 77 595.3 72 595.3 DL 77.998 595.3 72.998 595.3 DL 82.998 595.3 +77.998 595.3 DL 87.998 595.3 82.998 595.3 DL 87.998 584.3 87.998 594.3 +DL 77 584.3 72 584.3 DL 77.998 584.3 72.998 584.3 DL 82.998 584.3 77.998 +584.3 DL 87.998 584.3 82.998 584.3 DL 89.664 585.3 89.664 595.3 DL +89.664 584.3 89.664 594.3 DL 105.662 585.3 105.662 595.3 DL 94.664 595.3 +89.664 595.3 DL 95.662 595.3 90.662 595.3 DL 100.662 595.3 95.662 595.3 +DL 105.662 595.3 100.662 595.3 DL 105.662 584.3 105.662 594.3 DL 94.664 +584.3 89.664 584.3 DL 95.662 584.3 90.662 584.3 DL 100.662 584.3 95.662 +584.3 DL 105.662 584.3 100.662 584.3 DL F3 4.497(ESC ENQ)74.497 591.8 R +F0(Return T)76.172 1 M(erminal Status \(ESC Ctrl-E\))-.7 E 72 601.3 72 +611.3 DL 72 600.3 72 610.3 DL 87.998 601.3 87.998 611.3 DL 77 611.3 72 +611.3 DL 77.998 611.3 72.998 611.3 DL 82.998 611.3 77.998 611.3 DL +87.998 611.3 82.998 611.3 DL 87.998 600.3 87.998 610.3 DL 77 600.3 72 +600.3 DL 77.998 600.3 72.998 600.3 DL 82.998 600.3 77.998 600.3 DL +87.998 600.3 82.998 600.3 DL 89.664 601.3 89.664 611.3 DL 89.664 600.3 +89.664 610.3 DL 105.662 601.3 105.662 611.3 DL 94.664 611.3 89.664 611.3 +DL 95.662 611.3 90.662 611.3 DL 100.662 611.3 95.662 611.3 DL 105.662 +611.3 100.662 611.3 DL 105.662 600.3 105.662 610.3 DL 94.664 600.3 +89.664 600.3 DL 95.662 600.3 90.662 600.3 DL 100.662 600.3 95.662 600.3 +DL 105.662 600.3 100.662 600.3 DL F3 7.326(ESC FF)74.497 607.8 R F0 +-1.06 -.92(PA G)79.001 1 P 2.5(E\().92 G(Clear Screen\) \(ESC Ctrl-L\)) +-2.5 E 72 617.3 72 627.3 DL 72 616.3 72 626.3 DL 87.998 617.3 87.998 +627.3 DL 77 627.3 72 627.3 DL 77.998 627.3 72.998 627.3 DL 82.998 627.3 +77.998 627.3 DL 87.998 627.3 82.998 627.3 DL 87.998 616.3 87.998 626.3 +DL 77 616.3 72 616.3 DL 77.998 616.3 72.998 616.3 DL 82.998 616.3 77.998 +616.3 DL 87.998 616.3 82.998 616.3 DL 89.664 617.3 89.664 627.3 DL +89.664 616.3 89.664 626.3 DL 105.662 617.3 105.662 627.3 DL 94.664 627.3 +89.664 627.3 DL 95.662 627.3 90.662 627.3 DL 100.662 627.3 95.662 627.3 +DL 105.662 627.3 100.662 627.3 DL 105.662 616.3 105.662 626.3 DL 94.664 +616.3 89.664 616.3 DL 95.662 616.3 90.662 616.3 DL 100.662 616.3 95.662 +616.3 DL 105.662 616.3 100.662 616.3 DL F3 6.828(ESC SO)74.497 623.8 R +F0(Be)78.503 1 M(gin 4015 APL mode \(ignored by)-.15 E F2(xterm)2.5 E F0 +2.5(\)\()C(ESC Ctrl-N\))-2.5 E 72 633.3 72 643.3 DL 72 632.3 72 642.3 DL +87.998 633.3 87.998 643.3 DL 77 643.3 72 643.3 DL 77.998 643.3 72.998 +643.3 DL 82.998 643.3 77.998 643.3 DL 87.998 643.3 82.998 643.3 DL +87.998 632.3 87.998 642.3 DL 77 632.3 72 632.3 DL 77.998 632.3 72.998 +632.3 DL 82.998 632.3 77.998 632.3 DL 87.998 632.3 82.998 632.3 DL +89.664 633.3 89.664 643.3 DL 89.664 632.3 89.664 642.3 DL 105.662 633.3 +105.662 643.3 DL 94.664 643.3 89.664 643.3 DL 95.662 643.3 90.662 643.3 +DL 100.662 643.3 95.662 643.3 DL 105.662 643.3 100.662 643.3 DL 105.662 +632.3 105.662 642.3 DL 94.664 632.3 89.664 632.3 DL 95.662 632.3 90.662 +632.3 DL 100.662 632.3 95.662 632.3 DL 105.662 632.3 100.662 632.3 DL F3 +7.995(ESC SI)74.497 639.8 R F0(End 4015 APL mode \(ignored by)79.67 1 M +F2(xterm)2.5 E F0 2.5(\)\()C(ESC Ctrl-O\))-2.5 E 72 649.3 72 659.3 DL 72 +648.3 72 658.3 DL 87.998 649.3 87.998 659.3 DL 77 659.3 72 659.3 DL +77.998 659.3 72.998 659.3 DL 82.998 659.3 77.998 659.3 DL 87.998 659.3 +82.998 659.3 DL 87.998 648.3 87.998 658.3 DL 77 648.3 72 648.3 DL 77.998 +648.3 72.998 648.3 DL 82.998 648.3 77.998 648.3 DL 87.998 648.3 82.998 +648.3 DL 89.664 649.3 89.664 659.3 DL 89.664 648.3 89.664 658.3 DL +105.662 649.3 105.662 659.3 DL 94.664 659.3 89.664 659.3 DL 95.662 659.3 +90.662 659.3 DL 100.662 659.3 95.662 659.3 DL 105.662 659.3 100.662 +659.3 DL 105.662 648.3 105.662 658.3 DL 94.664 648.3 89.664 648.3 DL +95.662 648.3 90.662 648.3 DL 100.662 648.3 95.662 648.3 DL 105.662 648.3 +100.662 648.3 DL F3 4.995(ESC ETB)74.497 655.8 R F0(COPY \(Sa)76.67 1 M +.3 -.15(ve T)-.2 H +(ektronix Codes to \214le COPYyyyy-mm-dd.hh:mm:ss\) \(ESC Ctrl-W\))-.55 +E 72 665.3 72 675.3 DL 72 664.3 72 674.3 DL 87.998 665.3 87.998 675.3 DL +77 675.3 72 675.3 DL 77.998 675.3 72.998 675.3 DL 82.998 675.3 77.998 +675.3 DL 87.998 675.3 82.998 675.3 DL 87.998 664.3 87.998 674.3 DL 77 +664.3 72 664.3 DL 77.998 664.3 72.998 664.3 DL 82.998 664.3 77.998 664.3 +DL 87.998 664.3 82.998 664.3 DL 89.664 665.3 89.664 675.3 DL 89.664 +664.3 89.664 674.3 DL 105.662 665.3 105.662 675.3 DL 94.664 675.3 89.664 +675.3 DL 95.662 675.3 90.662 675.3 DL 100.662 675.3 95.662 675.3 DL +105.662 675.3 100.662 675.3 DL 105.662 664.3 105.662 674.3 DL 94.664 +664.3 89.664 664.3 DL 95.662 664.3 90.662 664.3 DL 100.662 664.3 95.662 +664.3 DL 105.662 664.3 100.662 664.3 DL F3 4.329(ESC CAN)74.497 671.8 R +F0(Bypass Condition \(ESC Ctrl-X\))76.004 1 M 72 681.3 72 691.3 DL 72 +680.3 72 690.3 DL 87.998 681.3 87.998 691.3 DL 77 691.3 72 691.3 DL +77.998 691.3 72.998 691.3 DL 82.998 691.3 77.998 691.3 DL 87.998 691.3 +82.998 691.3 DL 87.998 680.3 87.998 690.3 DL 77 680.3 72 680.3 DL 77.998 +680.3 72.998 680.3 DL 82.998 680.3 77.998 680.3 DL 87.998 680.3 82.998 +680.3 DL 89.664 681.3 89.664 691.3 DL 89.664 680.3 89.664 690.3 DL +105.662 681.3 105.662 691.3 DL 94.664 691.3 89.664 691.3 DL 95.662 691.3 +90.662 691.3 DL 100.662 691.3 95.662 691.3 DL 105.662 691.3 100.662 +691.3 DL 105.662 680.3 105.662 690.3 DL 94.664 680.3 89.664 680.3 DL +95.662 680.3 90.662 680.3 DL 100.662 680.3 95.662 680.3 DL 105.662 680.3 +100.662 680.3 DL F3 4.827(ESC SUB)74.497 687.8 R F0 +(GIN mode \(ESC Ctrl-Z\))76.502 1 M 72 697.3 72 707.3 DL 72 696.3 72 +706.3 DL 87.998 697.3 87.998 707.3 DL 77 707.3 72 707.3 DL 77.998 707.3 +72.998 707.3 DL 82.998 707.3 77.998 707.3 DL 87.998 707.3 82.998 707.3 +DL 87.998 696.3 87.998 706.3 DL 77 696.3 72 696.3 DL 77.998 696.3 72.998 +696.3 DL 82.998 696.3 77.998 696.3 DL 87.998 696.3 82.998 696.3 DL +89.664 697.3 89.664 707.3 DL 89.664 696.3 89.664 706.3 DL 105.662 697.3 +105.662 707.3 DL 94.664 707.3 89.664 707.3 DL 95.662 707.3 90.662 707.3 +DL 100.662 707.3 95.662 707.3 DL 105.662 707.3 100.662 707.3 DL 105.662 +696.3 105.662 706.3 DL 94.664 696.3 89.664 696.3 DL 95.662 696.3 90.662 +696.3 DL 100.662 696.3 95.662 696.3 DL 105.662 696.3 100.662 696.3 DL F3 +7.326(ESC FS)74.497 703.8 R F0(Special Point Plot Mode \(ESC Ctrl-\\\)) +79.001 1 M(17)301 772 Q EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q -.7(Te)277.61 G +(ktronix 4014 Mode).7 E .4 LW 72 80.5 72 90.5 DL 72 79.5 72 89.5 DL +87.998 80.5 87.998 90.5 DL 77 90.5 72 90.5 DL 77.998 90.5 72.998 90.5 DL +82.998 90.5 77.998 90.5 DL 87.998 90.5 82.998 90.5 DL 87.998 79.5 87.998 +89.5 DL 77 79.5 72 79.5 DL 77.998 79.5 72.998 79.5 DL 82.998 79.5 77.998 +79.5 DL 87.998 79.5 82.998 79.5 DL 89.664 80.5 89.664 90.5 DL 89.664 +79.5 89.664 89.5 DL/F1 6/Times-Roman@0 SF(ESC)74.497 87 Q 105.662 80.5 +105.662 90.5 DL 94.664 90.5 89.664 90.5 DL 95.662 90.5 90.662 90.5 DL +100.662 90.5 95.662 90.5 DL 105.662 90.5 100.662 90.5 DL 105.662 79.5 +105.662 89.5 DL 94.664 79.5 89.664 79.5 DL 95.662 79.5 90.662 79.5 DL +100.662 79.5 95.662 79.5 DL 105.662 79.5 100.662 79.5 DL F0 79.837(8S) +95.163 88 S(elect Lar)-79.837 E(ge Character Set)-.18 E 72 96.5 72 106.5 +DL 72 95.5 72 105.5 DL 87.998 96.5 87.998 106.5 DL 77 106.5 72 106.5 DL +77.998 106.5 72.998 106.5 DL 82.998 106.5 77.998 106.5 DL 87.998 106.5 +82.998 106.5 DL 87.998 95.5 87.998 105.5 DL 77 95.5 72 95.5 DL 77.998 +95.5 72.998 95.5 DL 82.998 95.5 77.998 95.5 DL 87.998 95.5 82.998 95.5 +DL 89.664 96.5 89.664 106.5 DL 89.664 95.5 89.664 105.5 DL F1(ESC)74.497 +103 Q 105.662 96.5 105.662 106.5 DL 94.664 106.5 89.664 106.5 DL 95.662 +106.5 90.662 106.5 DL 100.662 106.5 95.662 106.5 DL 105.662 106.5 +100.662 106.5 DL 105.662 95.5 105.662 105.5 DL 94.664 95.5 89.664 95.5 +DL 95.662 95.5 90.662 95.5 DL 100.662 95.5 95.662 95.5 DL 105.662 95.5 +100.662 95.5 DL F0 79.837(9S)95.163 104 S(elect #2 Character Set)-79.837 +E 72 112.5 72 122.5 DL 72 111.5 72 121.5 DL 87.998 112.5 87.998 122.5 DL +77 122.5 72 122.5 DL 77.998 122.5 72.998 122.5 DL 82.998 122.5 77.998 +122.5 DL 87.998 122.5 82.998 122.5 DL 87.998 111.5 87.998 121.5 DL 77 +111.5 72 111.5 DL 77.998 111.5 72.998 111.5 DL 82.998 111.5 77.998 111.5 +DL 87.998 111.5 82.998 111.5 DL 89.664 112.5 89.664 122.5 DL 89.664 +111.5 89.664 121.5 DL F1(ESC)74.497 119 Q 105.662 112.5 105.662 122.5 DL +94.664 122.5 89.664 122.5 DL 95.662 122.5 90.662 122.5 DL 100.662 122.5 +95.662 122.5 DL 105.662 122.5 100.662 122.5 DL 105.662 111.5 105.662 +121.5 DL 94.664 111.5 89.664 111.5 DL 95.662 111.5 90.662 111.5 DL +100.662 111.5 95.662 111.5 DL 105.662 111.5 100.662 111.5 DL F0 80.947 +(:S)96.273 120 S(elect #3 Character Set)-80.947 E 72 128.5 72 138.5 DL +72 127.5 72 137.5 DL 87.998 128.5 87.998 138.5 DL 77 138.5 72 138.5 DL +77.998 138.5 72.998 138.5 DL 82.998 138.5 77.998 138.5 DL 87.998 138.5 +82.998 138.5 DL 87.998 127.5 87.998 137.5 DL 77 127.5 72 127.5 DL 77.998 +127.5 72.998 127.5 DL 82.998 127.5 77.998 127.5 DL 87.998 127.5 82.998 +127.5 DL 89.664 128.5 89.664 138.5 DL 89.664 127.5 89.664 137.5 DL F1 +(ESC)74.497 135 Q 105.662 128.5 105.662 138.5 DL 94.664 138.5 89.664 +138.5 DL 95.662 138.5 90.662 138.5 DL 100.662 138.5 95.662 138.5 DL +105.662 138.5 100.662 138.5 DL 105.662 127.5 105.662 137.5 DL 94.664 +127.5 89.664 127.5 DL 95.662 127.5 90.662 127.5 DL 100.662 127.5 95.662 +127.5 DL 105.662 127.5 100.662 127.5 DL F0 80.947(;S)96.273 136 S +(elect Small Character Set)-80.947 E 72 144.5 72 154.5 DL 72 143.5 72 +153.5 DL 87.998 144.5 87.998 154.5 DL 77 154.5 72 154.5 DL 77.998 154.5 +72.998 154.5 DL 82.998 154.5 77.998 154.5 DL 87.998 154.5 82.998 154.5 +DL 87.998 143.5 87.998 153.5 DL 77 143.5 72 143.5 DL 77.998 143.5 72.998 +143.5 DL 82.998 143.5 77.998 143.5 DL 87.998 143.5 82.998 143.5 DL F1 +(OSC)74.164 151 Q/F2 10/Times-Italic@0 SF(P)3.83 1 M 98.552 144.5 98.552 +154.5 DL 98.552 143.5 98.552 153.5 DL/F3 8/Times-Italic@0 SF(s)93.774 +155 Q 114.55 144.5 114.55 154.5 DL 103.552 154.5 98.552 154.5 DL 104.55 +154.5 99.55 154.5 DL 109.55 154.5 104.55 154.5 DL 114.55 154.5 109.55 +154.5 DL 114.55 143.5 114.55 153.5 DL 103.552 143.5 98.552 143.5 DL +104.55 143.5 99.55 143.5 DL 109.55 143.5 104.55 143.5 DL 114.55 143.5 +109.55 143.5 DL F0(;)105.161 152 Q F2(P)8.275 E 124.216 144.5 124.216 +154.5 DL 124.216 143.5 124.216 153.5 DL F3(t)120.326 155 Q 140.214 144.5 +140.214 154.5 DL 129.216 154.5 124.216 154.5 DL 130.214 154.5 125.214 +154.5 DL 135.214 154.5 130.214 154.5 DL 140.214 154.5 135.214 154.5 DL +140.214 143.5 140.214 153.5 DL 129.216 143.5 124.216 143.5 DL 130.214 +143.5 125.214 143.5 DL 135.214 143.5 130.214 143.5 DL 140.214 143.5 +135.214 143.5 DL F1(BEL)126.548 151 Q F0(Set T)42.118 1 M -.15(ex)-.7 G +2.5(tP).15 G(arameters of VT windo)-2.65 E(w)-.25 E F2(P)185 168 Q F3(s) +-2 3 M 202.862 160.5 202.862 170.5 DL 202.862 159.5 202.862 169.5 DL +218.86 160.5 218.86 170.5 DL 207.862 170.5 202.862 170.5 DL 208.86 170.5 +203.86 170.5 DL 213.86 170.5 208.86 170.5 DL 218.86 170.5 213.86 170.5 +DL 218.86 159.5 218.86 169.5 DL 207.862 159.5 202.862 159.5 DL 208.86 +159.5 203.86 159.5 DL 213.86 159.5 208.86 159.5 DL 218.86 159.5 213.86 +159.5 DL F0 7.999(=0)194.722 168 S/F4 10/Symbol SF<ae>1.666 E F0 +(Change Icon Name and W)2.5 E(indo)-.4 E 2.5(wT)-.25 G(itle to)-2.85 E +F2(P)2.5 E F3(t)-2 3 M F2(P)185 184 Q F3(s)-2 3 M 202.862 176.5 202.862 +186.5 DL 202.862 175.5 202.862 185.5 DL 218.86 176.5 218.86 186.5 DL +207.862 186.5 202.862 186.5 DL 208.86 186.5 203.86 186.5 DL 213.86 186.5 +208.86 186.5 DL 218.86 186.5 213.86 186.5 DL 218.86 175.5 218.86 185.5 +DL 207.862 175.5 202.862 175.5 DL 208.86 175.5 203.86 175.5 DL 213.86 +175.5 208.86 175.5 DL 218.86 175.5 213.86 175.5 DL F0 7.999(=1)194.722 +184 S F4<ae>1.666 E F0(Change Icon Name to)2.5 E F2(P)2.5 E F3(t)-2 3 M +F2(P)185 200 Q F3(s)-2 3 M 202.862 192.5 202.862 202.5 DL 202.862 191.5 +202.862 201.5 DL 218.86 192.5 218.86 202.5 DL 207.862 202.5 202.862 +202.5 DL 208.86 202.5 203.86 202.5 DL 213.86 202.5 208.86 202.5 DL +218.86 202.5 213.86 202.5 DL 218.86 191.5 218.86 201.5 DL 207.862 191.5 +202.862 191.5 DL 208.86 191.5 203.86 191.5 DL 213.86 191.5 208.86 191.5 +DL 218.86 191.5 213.86 191.5 DL F0 7.999(=2)194.722 200 S F4<ae>1.666 E +F0(Change W)2.5 E(indo)-.4 E 2.5(wT)-.25 G(itle to)-2.85 E F2(P)2.5 E F3 +(t)-2 3 M F2(P)185 216 Q F3(s)-2 3 M 202.862 208.5 202.862 218.5 DL +202.862 207.5 202.862 217.5 DL 218.86 208.5 218.86 218.5 DL 207.862 +218.5 202.862 218.5 DL 208.86 218.5 203.86 218.5 DL 213.86 218.5 208.86 +218.5 DL 218.86 218.5 213.86 218.5 DL 218.86 207.5 218.86 217.5 DL +207.862 207.5 202.862 207.5 DL 208.86 207.5 203.86 207.5 DL 213.86 207.5 +208.86 207.5 DL 218.86 207.5 213.86 207.5 DL 220.526 208.5 220.526 218.5 +DL 220.526 207.5 220.526 217.5 DL 236.524 208.5 236.524 218.5 DL 225.526 +218.5 220.526 218.5 DL 226.524 218.5 221.524 218.5 DL 231.524 218.5 +226.524 218.5 DL 236.524 218.5 231.524 218.5 DL 236.524 207.5 236.524 +217.5 DL 225.526 207.5 220.526 207.5 DL 226.524 207.5 221.524 207.5 DL +231.524 207.5 226.524 207.5 DL 236.524 207.5 231.524 207.5 DL F0 -5.834 +7.999(=4 6)194.722 216 T F4<ae>1.666 E F0(Change Log File to)2.5 E F2(P) +2.5 E F3(t)-2 3 M F0(\(normally disabled by a compile-time option\))2.5 +-3 M 72 224.5 72 234.5 DL 72 223.5 72 233.5 DL 87.998 224.5 87.998 234.5 +DL 77 234.5 72 234.5 DL 77.998 234.5 72.998 234.5 DL 82.998 234.5 77.998 +234.5 DL 87.998 234.5 82.998 234.5 DL 87.998 223.5 87.998 233.5 DL 77 +223.5 72 223.5 DL 77.998 223.5 72.998 223.5 DL 82.998 223.5 77.998 223.5 +DL 87.998 223.5 82.998 223.5 DL 89.664 224.5 89.664 234.5 DL 89.664 +223.5 89.664 233.5 DL F1(ESC)74.497 231 Q 105.662 224.5 105.662 234.5 DL +94.664 234.5 89.664 234.5 DL 95.662 234.5 90.662 234.5 DL 100.662 234.5 +95.662 234.5 DL 105.662 234.5 100.662 234.5 DL 105.662 223.5 105.662 +233.5 DL 94.664 223.5 89.664 223.5 DL 95.662 223.5 90.662 223.5 DL +100.662 223.5 95.662 223.5 DL 105.662 223.5 100.662 223.5 DL F0 80.672 +<924e>95.998 232 S(ormal Z Axis and Normal \(solid\) V)-80.672 E(ectors) +-1.11 E 72 240.5 72 250.5 DL 72 239.5 72 249.5 DL 87.998 240.5 87.998 +250.5 DL 77 250.5 72 250.5 DL 77.998 250.5 72.998 250.5 DL 82.998 250.5 +77.998 250.5 DL 87.998 250.5 82.998 250.5 DL 87.998 239.5 87.998 249.5 +DL 77 239.5 72 239.5 DL 77.998 239.5 72.998 239.5 DL 82.998 239.5 77.998 +239.5 DL 87.998 239.5 82.998 239.5 DL 89.664 240.5 89.664 250.5 DL +89.664 239.5 89.664 249.5 DL F1(ESC)74.497 247 Q 105.662 240.5 105.662 +250.5 DL 94.664 250.5 89.664 250.5 DL 95.662 250.5 90.662 250.5 DL +100.662 250.5 95.662 250.5 DL 105.662 250.5 100.662 250.5 DL 105.662 +239.5 105.662 249.5 DL 94.664 239.5 89.664 239.5 DL 95.662 239.5 90.662 +239.5 DL 100.662 239.5 95.662 239.5 DL 105.662 239.5 100.662 239.5 DL F0 +80.117(aN)95.443 248 S(ormal Z Axis and Dotted Line V)-80.117 E(ectors) +-1.11 E 72 256.5 72 266.5 DL 72 255.5 72 265.5 DL 87.998 256.5 87.998 +266.5 DL 77 266.5 72 266.5 DL 77.998 266.5 72.998 266.5 DL 82.998 266.5 +77.998 266.5 DL 87.998 266.5 82.998 266.5 DL 87.998 255.5 87.998 265.5 +DL 77 255.5 72 255.5 DL 77.998 255.5 72.998 255.5 DL 82.998 255.5 77.998 +255.5 DL 87.998 255.5 82.998 255.5 DL 89.664 256.5 89.664 266.5 DL +89.664 255.5 89.664 265.5 DL F1(ESC)74.497 263 Q 105.662 256.5 105.662 +266.5 DL 94.664 266.5 89.664 266.5 DL 95.662 266.5 90.662 266.5 DL +100.662 266.5 95.662 266.5 DL 105.662 266.5 100.662 266.5 DL 105.662 +255.5 105.662 265.5 DL 94.664 255.5 89.664 255.5 DL 95.662 255.5 90.662 +255.5 DL 100.662 255.5 95.662 255.5 DL 105.662 255.5 100.662 255.5 DL F0 +79.837(bN)95.163 264 S(ormal Z Axis and Dot-Dashed V)-79.837 E(ectors) +-1.11 E 72 272.5 72 282.5 DL 72 271.5 72 281.5 DL 87.998 272.5 87.998 +282.5 DL 77 282.5 72 282.5 DL 77.998 282.5 72.998 282.5 DL 82.998 282.5 +77.998 282.5 DL 87.998 282.5 82.998 282.5 DL 87.998 271.5 87.998 281.5 +DL 77 271.5 72 271.5 DL 77.998 271.5 72.998 271.5 DL 82.998 271.5 77.998 +271.5 DL 87.998 271.5 82.998 271.5 DL 89.664 272.5 89.664 282.5 DL +89.664 271.5 89.664 281.5 DL F1(ESC)74.497 279 Q 105.662 272.5 105.662 +282.5 DL 94.664 282.5 89.664 282.5 DL 95.662 282.5 90.662 282.5 DL +100.662 282.5 95.662 282.5 DL 105.662 282.5 100.662 282.5 DL 105.662 +271.5 105.662 281.5 DL 94.664 271.5 89.664 271.5 DL 95.662 271.5 90.662 +271.5 DL 100.662 271.5 95.662 271.5 DL 105.662 271.5 100.662 271.5 DL F0 +80.117(cN)95.443 280 S(ormal Z Axis and Short-Dashed V)-80.117 E(ectors) +-1.11 E 72 288.5 72 298.5 DL 72 287.5 72 297.5 DL 87.998 288.5 87.998 +298.5 DL 77 298.5 72 298.5 DL 77.998 298.5 72.998 298.5 DL 82.998 298.5 +77.998 298.5 DL 87.998 298.5 82.998 298.5 DL 87.998 287.5 87.998 297.5 +DL 77 287.5 72 287.5 DL 77.998 287.5 72.998 287.5 DL 82.998 287.5 77.998 +287.5 DL 87.998 287.5 82.998 287.5 DL 89.664 288.5 89.664 298.5 DL +89.664 287.5 89.664 297.5 DL F1(ESC)74.497 295 Q 105.662 288.5 105.662 +298.5 DL 94.664 298.5 89.664 298.5 DL 95.662 298.5 90.662 298.5 DL +100.662 298.5 95.662 298.5 DL 105.662 298.5 100.662 298.5 DL 105.662 +287.5 105.662 297.5 DL 94.664 287.5 89.664 287.5 DL 95.662 287.5 90.662 +287.5 DL 100.662 287.5 95.662 287.5 DL 105.662 287.5 100.662 287.5 DL F0 +79.837(dN)95.163 296 S(ormal Z Axis and Long-Dashed V)-79.837 E(ectors) +-1.11 E 72 304.5 72 314.5 DL 72 303.5 72 313.5 DL 87.998 304.5 87.998 +314.5 DL 77 314.5 72 314.5 DL 77.998 314.5 72.998 314.5 DL 82.998 314.5 +77.998 314.5 DL 87.998 314.5 82.998 314.5 DL 87.998 303.5 87.998 313.5 +DL 77 303.5 72 303.5 DL 77.998 303.5 72.998 303.5 DL 82.998 303.5 77.998 +303.5 DL 87.998 303.5 82.998 303.5 DL 89.664 304.5 89.664 314.5 DL +89.664 303.5 89.664 313.5 DL F1(ESC)74.497 311 Q 105.662 304.5 105.662 +314.5 DL 94.664 314.5 89.664 314.5 DL 95.662 314.5 90.662 314.5 DL +100.662 314.5 95.662 314.5 DL 105.662 314.5 100.662 314.5 DL 105.662 +303.5 105.662 313.5 DL 94.664 303.5 89.664 303.5 DL 95.662 303.5 90.662 +303.5 DL 100.662 303.5 95.662 303.5 DL 105.662 303.5 100.662 303.5 DL F0 +79.837(hD)95.163 312 S(efocused Z Axis and Normal \(solid\) V)-79.837 E +(ectors)-1.11 E 72 320.5 72 330.5 DL 72 319.5 72 329.5 DL 87.998 320.5 +87.998 330.5 DL 77 330.5 72 330.5 DL 77.998 330.5 72.998 330.5 DL 82.998 +330.5 77.998 330.5 DL 87.998 330.5 82.998 330.5 DL 87.998 319.5 87.998 +329.5 DL 77 319.5 72 319.5 DL 77.998 319.5 72.998 319.5 DL 82.998 319.5 +77.998 319.5 DL 87.998 319.5 82.998 319.5 DL 89.664 320.5 89.664 330.5 +DL 89.664 319.5 89.664 329.5 DL F1(ESC)74.497 327 Q 105.662 320.5 +105.662 330.5 DL 94.664 330.5 89.664 330.5 DL 95.662 330.5 90.662 330.5 +DL 100.662 330.5 95.662 330.5 DL 105.662 330.5 100.662 330.5 DL 105.662 +319.5 105.662 329.5 DL 94.664 319.5 89.664 319.5 DL 95.662 319.5 90.662 +319.5 DL 100.662 319.5 95.662 319.5 DL 105.662 319.5 100.662 319.5 DL F0 +80.947(iD)96.273 328 S(efocused Z Axis and Dotted Line V)-80.947 E +(ectors)-1.11 E 72 336.5 72 346.5 DL 72 335.5 72 345.5 DL 87.998 336.5 +87.998 346.5 DL 77 346.5 72 346.5 DL 77.998 346.5 72.998 346.5 DL 82.998 +346.5 77.998 346.5 DL 87.998 346.5 82.998 346.5 DL 87.998 335.5 87.998 +345.5 DL 77 335.5 72 335.5 DL 77.998 335.5 72.998 335.5 DL 82.998 335.5 +77.998 335.5 DL 87.998 335.5 82.998 335.5 DL 89.664 336.5 89.664 346.5 +DL 89.664 335.5 89.664 345.5 DL F1(ESC)74.497 343 Q 105.662 336.5 +105.662 346.5 DL 94.664 346.5 89.664 346.5 DL 95.662 346.5 90.662 346.5 +DL 100.662 346.5 95.662 346.5 DL 105.662 346.5 100.662 346.5 DL 105.662 +335.5 105.662 345.5 DL 94.664 335.5 89.664 335.5 DL 95.662 335.5 90.662 +335.5 DL 100.662 335.5 95.662 335.5 DL 105.662 335.5 100.662 335.5 DL F0 +80.947(jD)96.273 344 S(efocused Z Axis and Dot-Dashed V)-80.947 E +(ectors)-1.11 E 72 352.5 72 362.5 DL 72 351.5 72 361.5 DL 87.998 352.5 +87.998 362.5 DL 77 362.5 72 362.5 DL 77.998 362.5 72.998 362.5 DL 82.998 +362.5 77.998 362.5 DL 87.998 362.5 82.998 362.5 DL 87.998 351.5 87.998 +361.5 DL 77 351.5 72 351.5 DL 77.998 351.5 72.998 351.5 DL 82.998 351.5 +77.998 351.5 DL 87.998 351.5 82.998 351.5 DL 89.664 352.5 89.664 362.5 +DL 89.664 351.5 89.664 361.5 DL F1(ESC)74.497 359 Q 105.662 352.5 +105.662 362.5 DL 94.664 362.5 89.664 362.5 DL 95.662 362.5 90.662 362.5 +DL 100.662 362.5 95.662 362.5 DL 105.662 362.5 100.662 362.5 DL 105.662 +351.5 105.662 361.5 DL 94.664 351.5 89.664 351.5 DL 95.662 351.5 90.662 +351.5 DL 100.662 351.5 95.662 351.5 DL 105.662 351.5 100.662 351.5 DL F0 +79.837(kD)95.163 360 S(efocused Z Axis and Short-Dashed V)-79.837 E +(ectors)-1.11 E 72 368.5 72 378.5 DL 72 367.5 72 377.5 DL 87.998 368.5 +87.998 378.5 DL 77 378.5 72 378.5 DL 77.998 378.5 72.998 378.5 DL 82.998 +378.5 77.998 378.5 DL 87.998 378.5 82.998 378.5 DL 87.998 367.5 87.998 +377.5 DL 77 367.5 72 367.5 DL 77.998 367.5 72.998 367.5 DL 82.998 367.5 +77.998 367.5 DL 87.998 367.5 82.998 367.5 DL 89.664 368.5 89.664 378.5 +DL 89.664 367.5 89.664 377.5 DL F1(ESC)74.497 375 Q 105.662 368.5 +105.662 378.5 DL 94.664 378.5 89.664 378.5 DL 95.662 378.5 90.662 378.5 +DL 100.662 378.5 95.662 378.5 DL 105.662 378.5 100.662 378.5 DL 105.662 +367.5 105.662 377.5 DL 94.664 367.5 89.664 367.5 DL 95.662 367.5 90.662 +367.5 DL 100.662 367.5 95.662 367.5 DL 105.662 367.5 100.662 367.5 DL F0 +80.947(lD)96.273 376 S(efocused Z Axis and Long-Dashed V)-80.947 E +(ectors)-1.11 E 72 384.5 72 394.5 DL 72 383.5 72 393.5 DL 87.998 384.5 +87.998 394.5 DL 77 394.5 72 394.5 DL 77.998 394.5 72.998 394.5 DL 82.998 +394.5 77.998 394.5 DL 87.998 394.5 82.998 394.5 DL 87.998 383.5 87.998 +393.5 DL 77 383.5 72 383.5 DL 77.998 383.5 72.998 383.5 DL 82.998 383.5 +77.998 383.5 DL 87.998 383.5 82.998 383.5 DL 89.664 384.5 89.664 394.5 +DL 89.664 383.5 89.664 393.5 DL F1(ESC)74.497 391 Q 105.662 384.5 +105.662 394.5 DL 94.664 394.5 89.664 394.5 DL 95.662 394.5 90.662 394.5 +DL 100.662 394.5 95.662 394.5 DL 105.662 394.5 100.662 394.5 DL 105.662 +383.5 105.662 393.5 DL 94.664 383.5 89.664 383.5 DL 95.662 383.5 90.662 +383.5 DL 100.662 383.5 95.662 383.5 DL 105.662 383.5 100.662 383.5 DL F0 +79.837(pW)95.163 392 S(rite-Thru Mode and Normal \(solid\) V)-79.837 E +(ectors)-1.11 E 72 400.5 72 410.5 DL 72 399.5 72 409.5 DL 87.998 400.5 +87.998 410.5 DL 77 410.5 72 410.5 DL 77.998 410.5 72.998 410.5 DL 82.998 +410.5 77.998 410.5 DL 87.998 410.5 82.998 410.5 DL 87.998 399.5 87.998 +409.5 DL 77 399.5 72 399.5 DL 77.998 399.5 72.998 399.5 DL 82.998 399.5 +77.998 399.5 DL 87.998 399.5 82.998 399.5 DL 89.664 400.5 89.664 410.5 +DL 89.664 399.5 89.664 409.5 DL F1(ESC)74.497 407 Q 105.662 400.5 +105.662 410.5 DL 94.664 410.5 89.664 410.5 DL 95.662 410.5 90.662 410.5 +DL 100.662 410.5 95.662 410.5 DL 105.662 410.5 100.662 410.5 DL 105.662 +399.5 105.662 409.5 DL 94.664 399.5 89.664 399.5 DL 95.662 399.5 90.662 +399.5 DL 100.662 399.5 95.662 399.5 DL 105.662 399.5 100.662 399.5 DL F0 +79.837(qW)95.163 408 S(rite-Thru Mode and Dotted Line V)-79.837 E +(ectors)-1.11 E 72 416.5 72 426.5 DL 72 415.5 72 425.5 DL 87.998 416.5 +87.998 426.5 DL 77 426.5 72 426.5 DL 77.998 426.5 72.998 426.5 DL 82.998 +426.5 77.998 426.5 DL 87.998 426.5 82.998 426.5 DL 87.998 415.5 87.998 +425.5 DL 77 415.5 72 415.5 DL 77.998 415.5 72.998 415.5 DL 82.998 415.5 +77.998 415.5 DL 87.998 415.5 82.998 415.5 DL 89.664 416.5 89.664 426.5 +DL 89.664 415.5 89.664 425.5 DL F1(ESC)74.497 423 Q 105.662 416.5 +105.662 426.5 DL 94.664 426.5 89.664 426.5 DL 95.662 426.5 90.662 426.5 +DL 100.662 426.5 95.662 426.5 DL 105.662 426.5 100.662 426.5 DL 105.662 +415.5 105.662 425.5 DL 94.664 415.5 89.664 415.5 DL 95.662 415.5 90.662 +415.5 DL 100.662 415.5 95.662 415.5 DL 105.662 415.5 100.662 415.5 DL F0 +80.672(rW)95.998 424 S(rite-Thru Mode and Dot-Dashed V)-80.672 E(ectors) +-1.11 E 72 432.5 72 442.5 DL 72 431.5 72 441.5 DL 87.998 432.5 87.998 +442.5 DL 77 442.5 72 442.5 DL 77.998 442.5 72.998 442.5 DL 82.998 442.5 +77.998 442.5 DL 87.998 442.5 82.998 442.5 DL 87.998 431.5 87.998 441.5 +DL 77 431.5 72 431.5 DL 77.998 431.5 72.998 431.5 DL 82.998 431.5 77.998 +431.5 DL 87.998 431.5 82.998 431.5 DL 89.664 432.5 89.664 442.5 DL +89.664 431.5 89.664 441.5 DL F1(ESC)74.497 439 Q 105.662 432.5 105.662 +442.5 DL 94.664 442.5 89.664 442.5 DL 95.662 442.5 90.662 442.5 DL +100.662 442.5 95.662 442.5 DL 105.662 442.5 100.662 442.5 DL 105.662 +431.5 105.662 441.5 DL 94.664 431.5 89.664 431.5 DL 95.662 431.5 90.662 +431.5 DL 100.662 431.5 95.662 431.5 DL 105.662 431.5 100.662 431.5 DL F0 +80.392(sW)95.718 440 S(rite-Thru Mode and Short-Dashed V)-80.392 E +(ectors)-1.11 E 72 448.5 72 458.5 DL 72 447.5 72 457.5 DL 87.998 448.5 +87.998 458.5 DL 77 458.5 72 458.5 DL 77.998 458.5 72.998 458.5 DL 82.998 +458.5 77.998 458.5 DL 87.998 458.5 82.998 458.5 DL 87.998 447.5 87.998 +457.5 DL 77 447.5 72 447.5 DL 77.998 447.5 72.998 447.5 DL 82.998 447.5 +77.998 447.5 DL 87.998 447.5 82.998 447.5 DL 89.664 448.5 89.664 458.5 +DL 89.664 447.5 89.664 457.5 DL F1(ESC)74.497 455 Q 105.662 448.5 +105.662 458.5 DL 94.664 458.5 89.664 458.5 DL 95.662 458.5 90.662 458.5 +DL 100.662 458.5 95.662 458.5 DL 105.662 458.5 100.662 458.5 DL 105.662 +447.5 105.662 457.5 DL 94.664 447.5 89.664 447.5 DL 95.662 447.5 90.662 +447.5 DL 100.662 447.5 95.662 447.5 DL 105.662 447.5 100.662 447.5 DL F0 +80.947(tW)96.273 456 S(rite-Thru Mode and Long-Dashed V)-80.947 E +(ectors)-1.11 E 72 464.5 72 474.5 DL 72 463.5 72 473.5 DL 87.998 464.5 +87.998 474.5 DL 77 474.5 72 474.5 DL 77.998 474.5 72.998 474.5 DL 82.998 +474.5 77.998 474.5 DL 87.998 474.5 82.998 474.5 DL 87.998 463.5 87.998 +473.5 DL 77 463.5 72 463.5 DL 77.998 463.5 72.998 463.5 DL 82.998 463.5 +77.998 463.5 DL 87.998 463.5 82.998 463.5 DL F1(FS)76.663 471 Q F0 +(Point Plot Mode \(Ctrl-\\\))96.665 1 M 72 480.5 72 490.5 DL 72 479.5 72 +489.5 DL 87.998 480.5 87.998 490.5 DL 77 490.5 72 490.5 DL 77.998 490.5 +72.998 490.5 DL 82.998 490.5 77.998 490.5 DL 87.998 490.5 82.998 490.5 +DL 87.998 479.5 87.998 489.5 DL 77 479.5 72 479.5 DL 77.998 479.5 72.998 +479.5 DL 82.998 479.5 77.998 479.5 DL 87.998 479.5 82.998 479.5 DL F1 +(GS)76.165 487 Q F0(Graph Mode \(Ctrl-]\))96.167 1 M 72 496.5 72 506.5 +DL 72 495.5 72 505.5 DL 87.998 496.5 87.998 506.5 DL 77 506.5 72 506.5 +DL 77.998 506.5 72.998 506.5 DL 82.998 506.5 77.998 506.5 DL 87.998 +506.5 82.998 506.5 DL 87.998 495.5 87.998 505.5 DL 77 495.5 72 495.5 DL +77.998 495.5 72.998 495.5 DL 82.998 495.5 77.998 495.5 DL 87.998 495.5 +82.998 495.5 DL F1(RS)76.33 503 Q F0(Incremental Plot Mode \(Ctrl-^\)) +96.332 1 M 72 512.5 72 522.5 DL 72 511.5 72 521.5 DL 87.998 512.5 87.998 +522.5 DL 77 522.5 72 522.5 DL 77.998 522.5 72.998 522.5 DL 82.998 522.5 +77.998 522.5 DL 87.998 522.5 82.998 522.5 DL 87.998 511.5 87.998 521.5 +DL 77 511.5 72 511.5 DL 77.998 511.5 72.998 511.5 DL 82.998 511.5 77.998 +511.5 DL 87.998 511.5 82.998 511.5 DL F1(US)76.165 519 Q F0 +(Alpha Mode \(Ctrl-_\))96.167 1 M/F5 10/Times-Bold@0 SF(VT52 Mode)72 544 +Q F0 -.15(Pa)72 560.8 S .391(rameters for cursor mo).15 F -.15(ve)-.15 G +290.392 553.3 290.392 563.3 DL 290.392 552.3 290.392 562.3 DL .39 +(ment are at the end of the)183.522 560.8 R 306.39 553.3 306.39 563.3 DL +295.392 563.3 290.392 563.3 DL 296.39 563.3 291.39 563.3 DL 301.39 563.3 +296.39 563.3 DL 306.39 563.3 301.39 563.3 DL 306.39 552.3 306.39 562.3 +DL 295.392 552.3 290.392 552.3 DL 296.39 552.3 291.39 552.3 DL 301.39 +552.3 296.39 552.3 DL 306.39 552.3 301.39 552.3 DL 308.056 553.3 308.056 +563.3 DL 308.056 552.3 308.056 562.3 DL F1(ESC)292.889 559.8 Q 324.054 +553.3 324.054 563.3 DL 313.056 563.3 308.056 563.3 DL 314.054 563.3 +309.054 563.3 DL 319.054 563.3 314.054 563.3 DL 324.054 563.3 319.054 +563.3 DL 324.054 552.3 324.054 562.3 DL 313.056 552.3 308.056 552.3 DL +314.054 552.3 309.054 552.3 DL 319.054 552.3 314.054 552.3 DL 324.054 +552.3 319.054 552.3 DL F0 8.945(Ye)312.445 560.8 S .39(scape sequence.) +-8.945 F .39(Each ordinate is encoded in a sin-)5.39 F(gle character as) +72 572.8 Q F2(value)2.5 E F0 2.5(+32. F)B(or e)-.15 E 236.46 565.3 +236.46 575.3 DL 236.46 564.3 236.46 574.3 DL 252.458 565.3 252.458 575.3 +DL 241.46 575.3 236.46 575.3 DL 242.458 575.3 237.458 575.3 DL 247.458 +575.3 242.458 575.3 DL 252.458 575.3 247.458 575.3 DL 252.458 564.3 +252.458 574.3 DL 241.46 564.3 236.46 564.3 DL 242.458 564.3 237.458 +564.3 DL 247.458 564.3 242.458 564.3 DL 252.458 564.3 247.458 564.3 DL +6.334(xample, !)202.02 572.8 R(is 1.)10.5 E +(The screen coodinate system is 0-based.)5 E 72 593.3 72 603.3 DL 72 +592.3 72 602.3 DL 87.998 593.3 87.998 603.3 DL 77 603.3 72 603.3 DL +77.998 603.3 72.998 603.3 DL 82.998 603.3 77.998 603.3 DL 87.998 603.3 +82.998 603.3 DL 87.998 592.3 87.998 602.3 DL 77 592.3 72 592.3 DL 77.998 +592.3 72.998 592.3 DL 82.998 592.3 77.998 592.3 DL 87.998 592.3 82.998 +592.3 DL 89.664 593.3 89.664 603.3 DL 89.664 592.3 89.664 602.3 DL F1 +(ESC)74.497 599.8 Q 105.662 593.3 105.662 603.3 DL 94.664 603.3 89.664 +603.3 DL 95.662 603.3 90.662 603.3 DL 100.662 603.3 95.662 603.3 DL +105.662 603.3 100.662 603.3 DL 105.662 592.3 105.662 602.3 DL 94.664 +592.3 89.664 592.3 DL 95.662 592.3 90.662 592.3 DL 100.662 592.3 95.662 +592.3 DL 105.662 592.3 100.662 592.3 DL F0 78.727(AC)94.053 600.8 S +(ursor up.)-78.727 E 72 609.3 72 619.3 DL 72 608.3 72 618.3 DL 87.998 +609.3 87.998 619.3 DL 77 619.3 72 619.3 DL 77.998 619.3 72.998 619.3 DL +82.998 619.3 77.998 619.3 DL 87.998 619.3 82.998 619.3 DL 87.998 608.3 +87.998 618.3 DL 77 608.3 72 608.3 DL 77.998 608.3 72.998 608.3 DL 82.998 +608.3 77.998 608.3 DL 87.998 608.3 82.998 608.3 DL 89.664 609.3 89.664 +619.3 DL 89.664 608.3 89.664 618.3 DL F1(ESC)74.497 615.8 Q 105.662 +609.3 105.662 619.3 DL 94.664 619.3 89.664 619.3 DL 95.662 619.3 90.662 +619.3 DL 100.662 619.3 95.662 619.3 DL 105.662 619.3 100.662 619.3 DL +105.662 608.3 105.662 618.3 DL 94.664 608.3 89.664 608.3 DL 95.662 608.3 +90.662 608.3 DL 100.662 608.3 95.662 608.3 DL 105.662 608.3 100.662 +608.3 DL F0 79.002(BC)94.328 616.8 S(ursor do)-79.002 E(wn.)-.25 E 72 +625.3 72 635.3 DL 72 624.3 72 634.3 DL 87.998 625.3 87.998 635.3 DL 77 +635.3 72 635.3 DL 77.998 635.3 72.998 635.3 DL 82.998 635.3 77.998 635.3 +DL 87.998 635.3 82.998 635.3 DL 87.998 624.3 87.998 634.3 DL 77 624.3 72 +624.3 DL 77.998 624.3 72.998 624.3 DL 82.998 624.3 77.998 624.3 DL +87.998 624.3 82.998 624.3 DL 89.664 625.3 89.664 635.3 DL 89.664 624.3 +89.664 634.3 DL F1(ESC)74.497 631.8 Q 105.662 625.3 105.662 635.3 DL +94.664 635.3 89.664 635.3 DL 95.662 635.3 90.662 635.3 DL 100.662 635.3 +95.662 635.3 DL 105.662 635.3 100.662 635.3 DL 105.662 624.3 105.662 +634.3 DL 94.664 624.3 89.664 624.3 DL 95.662 624.3 90.662 624.3 DL +100.662 624.3 95.662 624.3 DL 105.662 624.3 100.662 624.3 DL F0 79.002 +(CC)94.328 632.8 S(ursor right.)-79.002 E 72 641.3 72 651.3 DL 72 640.3 +72 650.3 DL 87.998 641.3 87.998 651.3 DL 77 651.3 72 651.3 DL 77.998 +651.3 72.998 651.3 DL 82.998 651.3 77.998 651.3 DL 87.998 651.3 82.998 +651.3 DL 87.998 640.3 87.998 650.3 DL 77 640.3 72 640.3 DL 77.998 640.3 +72.998 640.3 DL 82.998 640.3 77.998 640.3 DL 87.998 640.3 82.998 640.3 +DL 89.664 641.3 89.664 651.3 DL 89.664 640.3 89.664 650.3 DL F1(ESC) +74.497 647.8 Q 105.662 641.3 105.662 651.3 DL 94.664 651.3 89.664 651.3 +DL 95.662 651.3 90.662 651.3 DL 100.662 651.3 95.662 651.3 DL 105.662 +651.3 100.662 651.3 DL 105.662 640.3 105.662 650.3 DL 94.664 640.3 +89.664 640.3 DL 95.662 640.3 90.662 640.3 DL 100.662 640.3 95.662 640.3 +DL 105.662 640.3 100.662 640.3 DL F0 78.727(DC)94.053 648.8 S +(ursor left.)-78.727 E 72 657.3 72 667.3 DL 72 656.3 72 666.3 DL 87.998 +657.3 87.998 667.3 DL 77 667.3 72 667.3 DL 77.998 667.3 72.998 667.3 DL +82.998 667.3 77.998 667.3 DL 87.998 667.3 82.998 667.3 DL 87.998 656.3 +87.998 666.3 DL 77 656.3 72 656.3 DL 77.998 656.3 72.998 656.3 DL 82.998 +656.3 77.998 656.3 DL 87.998 656.3 82.998 656.3 DL 89.664 657.3 89.664 +667.3 DL 89.664 656.3 89.664 666.3 DL F1(ESC)74.497 663.8 Q 105.662 +657.3 105.662 667.3 DL 94.664 667.3 89.664 667.3 DL 95.662 667.3 90.662 +667.3 DL 100.662 667.3 95.662 667.3 DL 105.662 667.3 100.662 667.3 DL +105.662 656.3 105.662 666.3 DL 94.664 656.3 89.664 656.3 DL 95.662 656.3 +90.662 656.3 DL 100.662 656.3 95.662 656.3 DL 105.662 656.3 100.662 +656.3 DL F0 79.557(FE)94.883 664.8 S(nter graphics mode.)-79.557 E 72 +673.3 72 683.3 DL 72 672.3 72 682.3 DL 87.998 673.3 87.998 683.3 DL 77 +683.3 72 683.3 DL 77.998 683.3 72.998 683.3 DL 82.998 683.3 77.998 683.3 +DL 87.998 683.3 82.998 683.3 DL 87.998 672.3 87.998 682.3 DL 77 672.3 72 +672.3 DL 77.998 672.3 72.998 672.3 DL 82.998 672.3 77.998 672.3 DL +87.998 672.3 82.998 672.3 DL 89.664 673.3 89.664 683.3 DL 89.664 672.3 +89.664 682.3 DL F1(ESC)74.497 679.8 Q 105.662 673.3 105.662 683.3 DL +94.664 683.3 89.664 683.3 DL 95.662 683.3 90.662 683.3 DL 100.662 683.3 +95.662 683.3 DL 105.662 683.3 100.662 683.3 DL 105.662 672.3 105.662 +682.3 DL 94.664 672.3 89.664 672.3 DL 95.662 672.3 90.662 672.3 DL +100.662 672.3 95.662 672.3 DL 105.662 672.3 100.662 672.3 DL F0 78.727 +(GE)94.053 680.8 S(xit graphics mode.)-78.727 E 72 689.3 72 699.3 DL 72 +688.3 72 698.3 DL 87.998 689.3 87.998 699.3 DL 77 699.3 72 699.3 DL +77.998 699.3 72.998 699.3 DL 82.998 699.3 77.998 699.3 DL 87.998 699.3 +82.998 699.3 DL 87.998 688.3 87.998 698.3 DL 77 688.3 72 688.3 DL 77.998 +688.3 72.998 688.3 DL 82.998 688.3 77.998 688.3 DL 87.998 688.3 82.998 +688.3 DL 89.664 689.3 89.664 699.3 DL 89.664 688.3 89.664 698.3 DL F1 +(ESC)74.497 695.8 Q 105.662 689.3 105.662 699.3 DL 94.664 699.3 89.664 +699.3 DL 95.662 699.3 90.662 699.3 DL 100.662 699.3 95.662 699.3 DL +105.662 699.3 100.662 699.3 DL 105.662 688.3 105.662 698.3 DL 94.664 +688.3 89.664 688.3 DL 95.662 688.3 90.662 688.3 DL 100.662 688.3 95.662 +688.3 DL 105.662 688.3 100.662 688.3 DL F0 78.727(HM)94.053 696.8 S .3 +-.15(ove t)-78.727 H(he cursor to the home position.).15 E 72 705.3 72 +715.3 DL 72 704.3 72 714.3 DL 87.998 705.3 87.998 715.3 DL 77 715.3 72 +715.3 DL 77.998 715.3 72.998 715.3 DL 82.998 715.3 77.998 715.3 DL +87.998 715.3 82.998 715.3 DL 87.998 704.3 87.998 714.3 DL 77 704.3 72 +704.3 DL 77.998 704.3 72.998 704.3 DL 82.998 704.3 77.998 704.3 DL +87.998 704.3 82.998 704.3 DL 89.664 705.3 89.664 715.3 DL 89.664 704.3 +89.664 714.3 DL F1(ESC)74.497 711.8 Q 105.662 705.3 105.662 715.3 DL +94.664 715.3 89.664 715.3 DL 95.662 715.3 90.662 715.3 DL 100.662 715.3 +95.662 715.3 DL 105.662 715.3 100.662 715.3 DL 105.662 704.3 105.662 +714.3 DL 94.664 704.3 89.664 704.3 DL 95.662 704.3 90.662 704.3 DL +100.662 704.3 95.662 704.3 DL 105.662 704.3 100.662 704.3 DL F0 80.672 +(IR)95.998 712.8 S -2.15 -.25(ev e)-80.672 H(rse line feed.).25 E(18)301 +772 Q EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF(Xterm Control Sequences)72 52 Q(VT52 Mode)315.52 +E .4 LW 72 80.5 72 90.5 DL 72 79.5 72 89.5 DL 87.998 80.5 87.998 90.5 DL +77 90.5 72 90.5 DL 77.998 90.5 72.998 90.5 DL 82.998 90.5 77.998 90.5 DL +87.998 90.5 82.998 90.5 DL 87.998 79.5 87.998 89.5 DL 77 79.5 72 79.5 DL +77.998 79.5 72.998 79.5 DL 82.998 79.5 77.998 79.5 DL 87.998 79.5 82.998 +79.5 DL 89.664 80.5 89.664 90.5 DL 89.664 79.5 89.664 89.5 DL/F1 6 +/Times-Roman@0 SF(ESC)74.497 87 Q 105.662 80.5 105.662 90.5 DL 94.664 +90.5 89.664 90.5 DL 95.662 90.5 90.662 90.5 DL 100.662 90.5 95.662 90.5 +DL 105.662 90.5 100.662 90.5 DL 105.662 79.5 105.662 89.5 DL 94.664 79.5 +89.664 79.5 DL 95.662 79.5 90.662 79.5 DL 100.662 79.5 95.662 79.5 DL +105.662 79.5 100.662 79.5 DL F0 80.392(JE)95.718 88 S +(rase from the cursor to the end of the screen.)-80.392 E 72 96.5 72 +106.5 DL 72 95.5 72 105.5 DL 87.998 96.5 87.998 106.5 DL 77 106.5 72 +106.5 DL 77.998 106.5 72.998 106.5 DL 82.998 106.5 77.998 106.5 DL +87.998 106.5 82.998 106.5 DL 87.998 95.5 87.998 105.5 DL 77 95.5 72 95.5 +DL 77.998 95.5 72.998 95.5 DL 82.998 95.5 77.998 95.5 DL 87.998 95.5 +82.998 95.5 DL 89.664 96.5 89.664 106.5 DL 89.664 95.5 89.664 105.5 DL +F1(ESC)74.497 103 Q 105.662 96.5 105.662 106.5 DL 94.664 106.5 89.664 +106.5 DL 95.662 106.5 90.662 106.5 DL 100.662 106.5 95.662 106.5 DL +105.662 106.5 100.662 106.5 DL 105.662 95.5 105.662 105.5 DL 94.664 95.5 +89.664 95.5 DL 95.662 95.5 90.662 95.5 DL 100.662 95.5 95.662 95.5 DL +105.662 95.5 100.662 95.5 DL F0 78.727(KE)94.053 104 S +(rase from the cursor to the end of the line.)-78.727 E 72 112.5 72 +122.5 DL 72 111.5 72 121.5 DL 87.998 112.5 87.998 122.5 DL 77 122.5 72 +122.5 DL 77.998 122.5 72.998 122.5 DL 82.998 122.5 77.998 122.5 DL +87.998 122.5 82.998 122.5 DL 87.998 111.5 87.998 121.5 DL 77 111.5 72 +111.5 DL 77.998 111.5 72.998 111.5 DL 82.998 111.5 77.998 111.5 DL +87.998 111.5 82.998 111.5 DL 89.664 112.5 89.664 122.5 DL 89.664 111.5 +89.664 121.5 DL F1(ESC)74.497 119 Q 105.662 112.5 105.662 122.5 DL +94.664 122.5 89.664 122.5 DL 95.662 122.5 90.662 122.5 DL 100.662 122.5 +95.662 122.5 DL 105.662 122.5 100.662 122.5 DL 105.662 111.5 105.662 +121.5 DL 94.664 111.5 89.664 111.5 DL 95.662 111.5 90.662 111.5 DL +100.662 111.5 95.662 111.5 DL 105.662 111.5 100.662 111.5 DL F0(Y)94.053 +120 Q/F2 10/Times-Italic@0 SF(P)6.055 E/F3 8/Times-Italic@0 SF(s)-2 3 M +F2(P)1.666 -3 M F3(s)-2 3 M F0(Mo)56.562 -3 M .3 -.15(ve t)-.15 H +(he cursor to gi).15 E -.15(ve)-.25 G 2.5(nr).15 G .5 -.25(ow a)-2.5 H +(nd column.).25 E 72 128.5 72 138.5 DL 72 127.5 72 137.5 DL 87.998 128.5 +87.998 138.5 DL 77 138.5 72 138.5 DL 77.998 138.5 72.998 138.5 DL 82.998 +138.5 77.998 138.5 DL 87.998 138.5 82.998 138.5 DL 87.998 127.5 87.998 +137.5 DL 77 127.5 72 127.5 DL 77.998 127.5 72.998 127.5 DL 82.998 127.5 +77.998 127.5 DL 87.998 127.5 82.998 127.5 DL 89.664 128.5 89.664 138.5 +DL 89.664 127.5 89.664 137.5 DL F1(ESC)74.497 135 Q 105.662 128.5 +105.662 138.5 DL 94.664 138.5 89.664 138.5 DL 95.662 138.5 90.662 138.5 +DL 100.662 138.5 95.662 138.5 DL 105.662 138.5 100.662 138.5 DL 105.662 +127.5 105.662 137.5 DL 94.664 127.5 89.664 127.5 DL 95.662 127.5 90.662 +127.5 DL 100.662 127.5 95.662 127.5 DL 105.662 127.5 100.662 127.5 DL F0 +79.282(ZI)94.608 136 S(dentify)-79.282 E 197.37 144.5 197.37 154.5 DL +197.37 143.5 197.37 153.5 DL/F4 10/Symbol SF<ae>185 152 Q 213.368 144.5 +213.368 154.5 DL 202.37 154.5 197.37 154.5 DL 203.368 154.5 198.368 +154.5 DL 208.368 154.5 203.368 154.5 DL 213.368 154.5 208.368 154.5 DL +213.368 143.5 213.368 153.5 DL 202.37 143.5 197.37 143.5 DL 203.368 +143.5 198.368 143.5 DL 208.368 143.5 203.368 143.5 DL 213.368 143.5 +208.368 143.5 DL 216.7 144.5 216.7 154.5 DL 216.7 143.5 216.7 153.5 DL +F1(ESC)199.867 151 Q 232.698 144.5 232.698 154.5 DL 221.7 154.5 216.7 +154.5 DL 222.698 154.5 217.698 154.5 DL 227.698 154.5 222.698 154.5 DL +232.698 154.5 227.698 154.5 DL 232.698 143.5 232.698 153.5 DL 221.7 +143.5 216.7 143.5 DL 222.698 143.5 217.698 143.5 DL 227.698 143.5 +222.698 143.5 DL 232.698 143.5 227.698 143.5 DL 236.03 144.5 236.03 +154.5 DL 236.03 143.5 236.03 153.5 DL 252.028 144.5 252.028 154.5 DL +241.03 154.5 236.03 154.5 DL 242.028 154.5 237.028 154.5 DL 247.028 +154.5 242.028 154.5 DL 252.028 154.5 247.028 154.5 DL 252.028 143.5 +252.028 153.5 DL 241.03 143.5 236.03 143.5 DL 242.028 143.5 237.028 +143.5 DL 247.028 143.5 242.028 143.5 DL 252.028 143.5 247.028 143.5 DL +F0 14.885(/Z)223.309 152 S(\(`)-5.775 E(`I am a VT52.)-.74 E -.74('')-.7 +G(\)).74 E 72 160.5 72 170.5 DL 72 159.5 72 169.5 DL 87.998 160.5 87.998 +170.5 DL 77 170.5 72 170.5 DL 77.998 170.5 72.998 170.5 DL 82.998 170.5 +77.998 170.5 DL 87.998 170.5 82.998 170.5 DL 87.998 159.5 87.998 169.5 +DL 77 159.5 72 159.5 DL 77.998 159.5 72.998 159.5 DL 82.998 159.5 77.998 +159.5 DL 87.998 159.5 82.998 159.5 DL 89.664 160.5 89.664 170.5 DL +89.664 159.5 89.664 169.5 DL F1(ESC)74.497 167 Q 105.662 160.5 105.662 +170.5 DL 94.664 170.5 89.664 170.5 DL 95.662 170.5 90.662 170.5 DL +100.662 170.5 95.662 170.5 DL 105.662 170.5 100.662 170.5 DL 105.662 +159.5 105.662 169.5 DL 94.664 159.5 89.664 159.5 DL 95.662 159.5 90.662 +159.5 DL 100.662 159.5 95.662 159.5 DL 105.662 159.5 100.662 159.5 DL F0 +79.517(=E)94.843 168 S(nter alternate k)-79.517 E -.15(ey)-.1 G +(pad mode.).15 E 72 176.5 72 186.5 DL 72 175.5 72 185.5 DL 87.998 176.5 +87.998 186.5 DL 77 186.5 72 186.5 DL 77.998 186.5 72.998 186.5 DL 82.998 +186.5 77.998 186.5 DL 87.998 186.5 82.998 186.5 DL 87.998 175.5 87.998 +185.5 DL 77 175.5 72 175.5 DL 77.998 175.5 72.998 175.5 DL 82.998 175.5 +77.998 175.5 DL 87.998 175.5 82.998 175.5 DL 89.664 176.5 89.664 186.5 +DL 89.664 175.5 89.664 185.5 DL F1(ESC)74.497 183 Q 105.662 176.5 +105.662 186.5 DL 94.664 186.5 89.664 186.5 DL 95.662 186.5 90.662 186.5 +DL 100.662 186.5 95.662 186.5 DL 105.662 186.5 100.662 186.5 DL 105.662 +175.5 105.662 185.5 DL 94.664 175.5 89.664 175.5 DL 95.662 175.5 90.662 +175.5 DL 100.662 175.5 95.662 175.5 DL 105.662 175.5 100.662 175.5 DL F0 +79.517(>E)94.843 184 S(xit alternate k)-79.517 E -.15(ey)-.1 G +(pad mode.).15 E 72 192.5 72 202.5 DL 72 191.5 72 201.5 DL 87.998 192.5 +87.998 202.5 DL 77 202.5 72 202.5 DL 77.998 202.5 72.998 202.5 DL 82.998 +202.5 77.998 202.5 DL 87.998 202.5 82.998 202.5 DL 87.998 191.5 87.998 +201.5 DL 77 191.5 72 191.5 DL 77.998 191.5 72.998 191.5 DL 82.998 191.5 +77.998 191.5 DL 87.998 191.5 82.998 191.5 DL 89.664 192.5 89.664 202.5 +DL 89.664 191.5 89.664 201.5 DL F1(ESC)74.497 199 Q 105.662 192.5 +105.662 202.5 DL 94.664 202.5 89.664 202.5 DL 95.662 202.5 90.662 202.5 +DL 100.662 202.5 95.662 202.5 DL 105.662 202.5 100.662 202.5 DL 105.662 +191.5 105.662 201.5 DL 94.664 191.5 89.664 191.5 DL 95.662 191.5 90.662 +191.5 DL 100.662 191.5 95.662 191.5 DL 105.662 191.5 100.662 191.5 DL F0 +79.517(<E)94.843 200 S(xit VT52 mode \(Enter VT100 mode\).)-79.517 E(19) +301 768 Q EP +%%Trailer +end +%%EOF diff --git a/doc/readme.txt b/doc/readme.txt new file mode 100644 index 0000000..3e9913a --- /dev/null +++ b/doc/readme.txt @@ -0,0 +1,4 @@ +Most of the documents in this directory come from Thomas E. Dickey's xterm pages +at http://www.invisible-island.net/xterm/. +ctlseqs.ms From the xterm source tree. +vttest.tar.gz From http://invisible-island.net/vttest/vttest.html diff --git a/doc/vttest-20011130/BUGS b/doc/vttest-20011130/BUGS new file mode 100644 index 0000000..43f2826 --- /dev/null +++ b/doc/vttest-20011130/BUGS @@ -0,0 +1,19 @@ +-- $Id$ + +Please report bugs to tom@invisible-island.net + +This is a list of known problems with VTTEST: + + + SD and SU tests pass with dtterm, but not with VT420, which uses a + different scrolling model. + + + the skip_csi/skip_dcs functions are too permissive (they're allowing + either 8-bit or 7-bit responses). + + + when I test the DECRQSS responses on a VT420, they usually come back + with a code '1' (according to my manual, that's invalid), though the + data looks correct otherwise. + + + testing on a VT420 (console on VMS), there's a problem with the VT52 test: + I see highlighted glitches at the positions where erase line (ESC K) + controls are printed. Increasing the padding doesn't change this behavior. diff --git a/doc/vttest-20011130/CHANGES b/doc/vttest-20011130/CHANGES new file mode 100644 index 0000000..dc54aaf --- /dev/null +++ b/doc/vttest-20011130/CHANGES @@ -0,0 +1,344 @@ +$Id$ +------------------------------------------------------------------------------- + +20011130 + add tests for xterm alternate screen + + split-out xterm mouse tests into mouse.c menu. + +20000208 + change coding of wheel-mouse events, XFree86 xterm patch #126. + +991228 + modify to report wheel-mouse events for XFree86 xterm (patch #122). + +991025 + clarify top-level reports menu, which mixes tests that apply to various + models (VT100-VT420). + + show decoded modifiers for the xterm mouse tests + +991014 + modify position of cursor for printer tests, so autoprint tests work + as expected. + + correct escape sequence for mc_print_page(). + +991007 + implement tests for Media Copy, e.g., transparent printing. + + add examples for DEC locator events and DSR responses. + + add DA responses for VT50 and VT55 (I'd forgotten that I once bought a + DECscope booklet). + +990712 + modify menu 3.12 (non-VT100 "Test Keyboard Layout with G0 Selection") + to show numeric codes as well as the actual character. + + remove spurious test for SD which indicated that ISO's coding differed + from DEC's. The difference was a typographical error in ECMA-48 + (reported by Paul Williams <paul@celigne.co.uk>). + +990120 + correct initialization of G0, for character-set shift-in/shift-out test. + + change keyboard layout screen so that, when invoked from the character + set menu, it will display NRC characters properly. + + correct logic of reset_charset() function, which used the wrong index + for do_scs() (reported by Jeffrey Altman). + + set/restore character set for keyboard layout test in character-set + menu. + +990119 + add menu entry for enabling NRC mode, and (for VT220 & up) a menu + entry to allow testing keyboard layout with NRC mode enabled. + + remove logic that sets NRC mode from setup for character-set tests, + since that interferes with new menu entry. + + change delimiting characters for single-shift test screen from "{" and + "}" to "(" and ")" to avoid confusion (the DECterm program which I have + tested with maps the curly braces even in an unshifted state according + to the state of the NRC mode). + + reset character-set of G0 after tst_vt100_charsets + + restore terminal modes after answerback test. + +980719 + add tests to illustrate any-event and button-event tracking in XFree86 + xterm. + +980328 + add logic to ensure we pick up the proper choice (e.g., in Norwegian) + where the choice depends on the terminal id (e.g., VT220 vs VT320). + + minor correction for VT220 vs VT320 logic in do_scs for Latin-1 vs + British character set. + +980327 + implement test for single-shift (SS2 and SS3). + +980326 + implement shift-in/shift-out character-set tests oriented toward VT220. + + several corrections to VT220 character-set tests, from reports by + Kenneth R. Robinette <zkrr01@mailbox.neosoft.com>: + + + move SCS strings to immediately before/after the tests to + avoid conflict with menu selection, and to keep the tests + distinct. + + + use 96-character control sequences only for character sets + (Latin 1), and 94-character control sequences for the + National Replacement character sets. + + + add ISO Latin-1 as a font option + + + add Swiss as a font option + +980310 + decode known values for secondary DA response. + + make mouse-highlight test a little clearer by putting '+' marks at the + corners of the highlight-region. + +970524 + eliminate 'gets()' calls, which can overflow buffer. + +970520 + implement CF_FCNTL_VS_IOCTL check to make this build on SCO 3.x and + CLIX, which are both non-POSIX systems. + +970518 + add CF_POSIX_VDISABLE test to work around gcc 2.6.2 bug. + +970419 + correct sign-extension in xterm mouse-position + +961215 + correct err introduced between d960905 and v2_5 that broke test for IRM + mode by using decsclm (reported by Jeffrey Altman). + +961125 + add VT220 character-set tests for locking-shifts + +VERSION 2.7 + +961113 + corrected early return from test for DECRPM when badly-formatted + reply is received. + + add DA1 codes from VT500 manual (from Jeffrey Altman). + + refined test to restore ANSI mode based on VT420 testing. + +961029 + extend VT52 test to check operating level when restoring ANSI mode. + +961028 + implemented tests for VT220/VT420 function keys, editing keypad. + +961027 + change suggested by Jeffrey Altman: set the terminal's default + operating level to the maximum rather than VT100 (this is slightly + incompatible with VTTEST 1.7). + +960930 + amended reset_colors() to do SGR 0 at the end. + +960928 + allow 8-bit input for keyboard (function keys, cursor keys) tests. + + correct I/O modes on timeout + + added padding, corrected some states on return from VT52 tests. + + increase buffer size for DECTSR. + +960927 + modified scan_chr (used in DECCIR test) to properly diagnose Pericom's + 3.2 emulator. + + check in setup-menu for VT52. + + modify inputline to retain whitespace + + modify 'reset_colors()' to accommodate grossly-nonstandard emulators + that don't reset colors with SGR 0. + + added test for SGR 0 + +960921 + implement REP test + + corrected highlighting refresh in function-key test + + use raw-mode for VT52 DECID test. + +VERSION 2.6 + +960911 + corrected DECBI, DECFI (documentation from Jeffrey Altman), SRM (on + VT420) tests. + +960908 + implement DECDLD tests. Tested with fonts from "The VT200 TOOLKIT" by + Tabik & DiGiantomasso, Professional Software (available via DECUS). + +960905 + implement DECCARA, DECRARA, DECSACE, DECSERA tests. + +960901 + implement DECBKM, DECCRA, DECERA, DECFRA, DECKBUM, DECKPM, DECNKM, + SRM tests + +960830 + implement 2nd, 3rd DA, DECFI, DECBI, DECSNLS, DECRQTSR tests. + +960828 + provide analysis of DECCIR + + implement tests for DECSASD, DECSSDT + +960825 + corrected error (I) introduced in tst_movements (main.c 1.6) that broke + test of cursor-control characters inside ESC sequences (reported by + Albert D. Cahalan). + + implement DECDC, DECIC tests. + +960825 + added -l (logging) option. + + added -p (padding) option. + + port to VAX/VMS, for testing VT420 + +960821 + Corrected test for DECUDK, omitted lock-parameter caused keys to be + locked, so that only the first key definition was used (reported by + Jeffrey Altman). + + Corrected test for DECRPM, missing '?' (reported by Jeffrey Altman + <jaltman@watsun.cc.columbia.edu>). + +VERSION 2.5 + +960818 + implements most VT420 report-tests. + + make menu-skeleton for VT420 tests (some are needed for xterm tests), + marking the non-implemented entries with an '*'. + +960817 + add tests/examples for xterm mouse controls + +960816 + remove obsolete support for Sargasso C (TOPS-20) + +960813 + use usleep() if the system has it, to make responses faster. + + add menu-entry for toggling 7/8-bit input/output controls + + split-out keyboard.c, organized by a set of submenus. + + split-out reports.c, parameterized to allow testing 8-bit controls. + make submenu for individual reports. + + modified menu decoding to accept '*' to step through all submenus. + +VERSION 2.4 + +960807 + Implement test for VT5xx C7C1T and S8C1T + + Remove check for scrolling-behavior in CPL and CNL (no one but kermit + seems to consider doing this). + + Modified tst_reports() to use raw mode (the original sgtty logic + doesn't do this) so that termios works. Modified termios settings for + crmod so it doesn't touch INLCR and IGNCR, and for raw mode to leave + c_oflag alone - this works on Linux. + + corrected some typos in DECSCA test. + +960806 + Testing by Albert D. Cahalan <acahalan@cs.uml.edu> with VT510, + suggested initializing with the 80/132 mode enabled. Says real + terminals need padding... + +960804 + Implement tests for: SL, SD, SU, SR + + Modified "Test of screen features with ISO 6429 SGR 22-27 codes" + to test concealed text. + +VERSION 2.3 + +960803 + Implement tests for the following ISO 6429 controls: CBT, CHA, CHT, + CNL, CPL, ECH, HPA, SL, SPA, SR, VPA. + + Implement tests for DEC VT220 controls: DECSCA, DECTCEM + +960802 + Restructure non-VT100 menus, making them separate from the base VT100 + tests. + +VERSION 2.2 + +960721 + Initialize terminal with 80/132 switching enabled + + Casper Dik <casper@holland.Sun.COM> explained why tests fail on Solaris + 2.5 (can workaround with lots of fflush calls ;-) + +960716 + Add tests for CDE-compatible xterm + +VERSION 2.1 + +960708 + Change background color to blue for tests (some yellows and greens + are too close together). + +960702 + Added extended graphic-rendition tests (ISO 6429) + +VERSION 2.0 + +960624 + Added color/graphic-rendition, and color-scrolling tests. + +960623 + Implemented color tests (test-pattern, bce-test, insert/delete lines) + +960621 + Implemented auto-config for termios (tested on SunOS 4.1.1, IRIX 5.2, + Solaris 5.4). + +960618 + Modified to support nonstandard screen geometry. For example, you can + test Linux console (which has 25 lines) by typing 'vttest 25'. + + Implemented auto-config for termio (tested on SunOS 4.1.1). + +960617 + Corrected broken write-to-string-constant in tst_keyboard(). + + Split-out logic for ttymodes.c + + Converted to ANSI C (it's a lot easier to avoid breaking code when all + of the interfaces are fully specified). + + Split-out sargasso.h from header.h, to avoid nested-comment syntax. (I + don't think anyone will be using that again, anyway). + + from original version (I've found nothing more recent ;-), marked 1.7b + 1985-04-19, begin making changes to support testing for ANSI color + features. diff --git a/doc/vttest-20011130/COPYING b/doc/vttest-20011130/COPYING new file mode 100644 index 0000000..408e66b --- /dev/null +++ b/doc/vttest-20011130/COPYING @@ -0,0 +1,23 @@ +$Id$ +----------------------------------------------------------------------------- + +Copyright 1996 by Thomas E. Dickey <dickey@clark.net> + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of the above listed +copyright holder(s) not be used in advertising or publicity pertaining +to distribution of the software without specific, written prior +permission. + +THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/doc/vttest-20011130/MANIFEST b/doc/vttest-20011130/MANIFEST new file mode 100644 index 0000000..d947f5f --- /dev/null +++ b/doc/vttest-20011130/MANIFEST @@ -0,0 +1,43 @@ +MANIFEST for vttest, version d20011130 +-------------------------------------------------------------------------------- +MANIFEST this file +aclocal.m4 local macros for autoconf script +BUGS current bug-list +CHANGES record of changes I've made to vttest +charsets.c character-set tests +color.c color tests +config.hin template for config.h +configure.in template for configure script +configure Configuration script for UNIX +COPYING copyright notice +descrip.mms VAX MMS script for VTTEST +esc.c escape-sequence formatting & I/O +esc.h interface of esc.c +install.sh install script, needed for configure +keyboard.c test keyboard functions +main.c main-program & most tests, for VTTEST +makefile.in template for makefile +mkdirs.sh mkinstalldirs script, from X11 +mouse.c mouse tests for xterm +nonvt100.c non-VT100 tests +patchlev.h patch-level of VTTEST +printer.c test printer functions +README original version of vttest posted to comp.sources.unix, volume 7 +reports.c test device-reports +reset.c test-functions for terminal-reset +setup.c modify test-parameters +sixel.c tests for soft characters (sixel) +status.c status-line tests +tech.set DEC technical set font definition from VT220 toolkit +ttymodes.c module for changing tty modes +ttymodes.h interface of ttymodes.c +unix_io.c UNIX-specific I/O support +vmsbuild.com VMS DCL script for building VTTEST +vms_io.c VMS I/O routines +vt220.c vt220 tests +vt420.c vt420 tests +vt52.c tests for VT52 +vttest.1 manual-page for VTTEST +vttest.h renamed from header.h, common definitions of VTTEST +vttest.lsm Linux Software Map description of VTTEST +xterm.c tests for xterm and clones diff --git a/doc/vttest-20011130/README b/doc/vttest-20011130/README new file mode 100644 index 0000000..e650086 --- /dev/null +++ b/doc/vttest-20011130/README @@ -0,0 +1,67 @@ +$Id$ + +I extended the original vttest program (I've found no modifications) with +several new features listed in CHANGES + +- Thomas E. Dickey <tom@invisible-island.net> + +-------------------------------------------------------------------------------- +The remainder of this file is the original README: +-------------------------------------------------------------------------------- +NOTES FROM THE MOD.SOURCES MODERATOR: +I split the source up into the three separate pieces it now is. +In doing this, I put lines like "int reading;" in a header file +that both C modules include. If your Unix requires one of these +to be "extern int reading;" then you will have some editing to do. +Also note that this program uses FIONREAD, which must be implemented +differently in SystemV, etc., and check out the setjmp() call... + /Rich $alz +Oh, yeah: I also wrote the Makefile and manpage, such as they are. +------------------------------------------------------------------- + +This is a program to test the compatibility (or to demonstrate the +non-compatibility) of so-called "VT100-compatible" terminals. In +conformance of the good old hacker traditions, the only documentation +of this program is the source code itself. To understand it, you also +need a copy of the original VT100 manual from DEC. + +Comments and bug reports: Since this is a release (via USENET) to the +whole world, a lot of people are going to have opinions and fresh +ideas about it. (What -- bugs in MY program? Aww...) I can't deal +with everyone sending me a hacked version, but if you have found a +serious bug, or ported it to VMS, do tell me. I can't promise any new +version release, though. From this version on (1.7b) VTTEST will have +to live its own life without its father holding its hand. + +My address is: + +Network-mail address: (mcvax,seismo)!enea!suadb!lindberg + +Real-world-mail address: Per Lindberg + QZ, Stockholm University Computing Center + Box 27322 + S - 102 54 Stockholm + SWEDEN + +The original version of this program is written for the Sargasso C +compiler for the DECsystem-10. Many thanks to all sales persons with +quote VT100-compatible unquote terminals, who prompted me to write +this program, and also to: + +-- Bo Kleve, LIDAC, Linkoping University, Sweden + for the portation to DECSYSTEM-20 with the Sargasso C compiler + +-- Johan Widen, TTDS, Royal Institute of Technology, Stockholm, Sweden + for the portation to various UNIX systems (incl. System III and Xenix) + +-- Russ Herman, AES Data Inc., Missisauga, Ont. Canada + for fixes and code for the VT102 test + +Thanx also to JMR "Gremlin" at KTH, and Goran Wallberg at QZ +for suggestions, bug fixes, etc. + +This program does not have support for all the different variations +of VT100, like VT125, VT131 nor the new VT200 series. Feel free to +add that yourself. Happy Hacking! + + /TMP diff --git a/doc/vttest-20011130/aclocal.m4 b/doc/vttest-20011130/aclocal.m4 new file mode 100644 index 0000000..69fcdcb --- /dev/null +++ b/doc/vttest-20011130/aclocal.m4 @@ -0,0 +1,59 @@ +dnl $Id$ +dnl --------------------------------------------------------------------------- +dnl Test if we have a usable ioctl with FIONREAD, or if fcntl.h is preferred. +AC_DEFUN([CF_FCNTL_VS_IOCTL], +[ +AC_MSG_CHECKING(if we may use FIONREAD) +AC_CACHE_VAL(cf_cv_use_fionread,[ + AC_TRY_COMPILE([ +#if HAVE_SYS_FILIO_H +# include <sys/filio.h> /* FIONREAD */ +#endif + ],[ +long l1; +ioctl (0, FIONREAD, &l1); + ], + [cf_cv_use_fionread=yes], + [cf_cv_use_fionread=no]) +]) +AC_MSG_RESULT($cf_cv_use_fionread) +test $cf_cv_use_fionread = yes && AC_DEFINE(USE_FIONREAD) +])dnl +dnl --------------------------------------------------------------------------- +dnl Special test to workaround gcc 2.6.2, which cannot parse C-preprocessor +dnl conditionals. +AC_DEFUN([CF_POSIX_VDISABLE], +[ +AC_MSG_CHECKING(if POSIX VDISABLE symbol should be used) +AC_CACHE_VAL(cf_cv_posix_vdisable,[ + AC_TRY_RUN([ +#if HAVE_TERMIOS_H && HAVE_TCGETATTR +#include <termios.h> +#endif +#if HAVE_UNISTD_H +#include <unistd.h> +#endif +#if defined(_POSIX_VDISABLE) +int main() { exit(_POSIX_VDISABLE == -1); } +#endif], + [cf_cv_posix_vdisable=yes], + [cf_cv_posix_vdisable=no], + [AC_TRY_COMPILE([ +#if HAVE_TERMIOS_H && HAVE_TCGETATTR +#include <termios.h> +#endif +#if HAVE_UNISTD_H +#include <unistd.h> +#endif],[ +#if defined(_POSIX_VDISABLE) && (_POSIX_VDISABLE != -1) +int temp = _POSIX_VDISABLE; +#else +this did not work +#endif], + [cf_cv_posix_vdisable=yes], + [cf_cv_posix_vdisable=no], + )]) +]) +AC_MSG_RESULT($cf_cv_posix_vdisable) +test $cf_cv_posix_vdisable = yes && AC_DEFINE(HAVE_POSIX_VDISABLE) +])dnl diff --git a/doc/vttest-20011130/charsets.c b/doc/vttest-20011130/charsets.c new file mode 100644 index 0000000..7bcbbbf --- /dev/null +++ b/doc/vttest-20011130/charsets.c @@ -0,0 +1,478 @@ +/* $Id$ */ + +/* + * Test character-sets (e.g., SCS control, DECNRCM mode) + */ +#include <vttest.h> +#include <esc.h> + +/* the values, where specified, correspond to the keyboard-language codes */ +typedef enum { + ASCII = 1, + British = 2, + Flemish = 3, + French_Canadian = 4, + Danish = 5, + Finnish = 6, + German = 7, + Dutch = 8, + Italian = 9, + Swiss_French = 10, + Swiss_German = 11, + Swiss, + Swedish = 12, + Norwegian_Danish = 13, + French = 14, + Spanish = 15, + Portugese = 16, + Hebrew = 17, + DEC_Spec_Graphic, + DEC_Supp, + DEC_Supp_Graphic, + DEC_Tech, + British_Latin_1, + Unknown +} National; + +static const struct { + National code; /* internal name (chosen to sort properly!) */ + int allow96; /* flag for 96-character sets (e.g., GR mapping) */ + int order; /* check-column so we can mechanically-sort this table */ + int model; /* 0=base, 2=vt220, 3=vt320, etc. */ + char *final; /* end of SCS string */ + char *name; /* the string we'll show the user */ +} KnownCharsets[] = { + { ASCII, 0, 0, 0, "B", "US ASCII" }, + { British, 0, 0, 0, "A", "British" }, + { British_Latin_1, 1, 0, 3, "A", "Latin-1" }, + { DEC_Spec_Graphic, 0, 0, 0, "0", "DEC Special Graphics" }, + { DEC_Supp, 0, 0, 2, "<", "DEC Supplemental" }, + { DEC_Supp_Graphic, 0, 0, 3, "%5", "DEC Supplemental Graphic" }, + { DEC_Tech, 0, 0, 3, ">", "DEC Technical" }, + { Danish, 0, 0, 0, "?", "Danish" }, + { Dutch, 0, 0, 2, "4", "Dutch" }, + { Finnish, 0, 0, 2, "5", "Finnish" }, + { Finnish, 0, 1, 2, "C", "Finnish" }, + { Flemish, 0, 0, 0, "?", "Flemish" }, + { French, 0, 0, 2, "R", "French" }, + { French_Canadian, 0, 0, 2, "Q", "French Canadian" }, + { German, 0, 0, 2, "K", "German" }, + { Hebrew, 0, 0, 3, "%=", "Hebrew" }, + { Italian, 0, 0, 2, "Y", "Italian" }, + { Norwegian_Danish, 0, 0, 3, "`", "Norwegian/Danish" }, + { Norwegian_Danish, 0, 1, 2, "E", "Norwegian/Danish" }, + { Norwegian_Danish, 0, 2, 2, "6", "Norwegian/Danish" }, + { Portugese, 0, 0, 3, "%6", "Portugese" }, + { Spanish, 0, 0, 2, "Z", "Spanish" }, + { Swedish, 0, 0, 2, "7", "Swedish" }, /* or "H" */ + { Swiss, 0, 0, 2, "=", "Swiss" }, + { Swiss_French, 0, 0, 0, "?", "Swiss (French)" }, + { Swiss_German, 0, 0, 0, "?", "Swiss (German)" }, + { Unknown, 0, 0, 0, "?", "Unknown" } +}; + +static int national; + +static int current_Gx[4]; + +static char * +scs_params(char *dst, int g) +{ + int n = current_Gx[g]; + + sprintf(dst, "%c%s", + (KnownCharsets[n].allow96 && get_level() > 2) + ? "?-./"[g] + : "()*+"[g], + KnownCharsets[n].final); + return dst; +} + +static void +do_scs(int g) +{ + char buffer[80]; + + esc(scs_params(buffer, g)); +} + +static int +lookupCode(National code) +{ + int n; + for (n = 0; n < TABLESIZE(KnownCharsets); n++) { + if (KnownCharsets[n].code == code) + return n; + } + return lookupCode(ASCII); +} + +/* reset given Gg back to sane setting */ +static int +sane_cs(int g) +{ + return lookupCode((g == 0) + ? ASCII + : (get_level() > 1) + ? British_Latin_1 /* ...to get 8-bit codes 128-255 */ + : DEC_Supp_Graphic); +} + +/* reset given Gg back to sane setting */ +static int +reset_scs(int g) +{ + int n = sane_cs(g); + do_scs(n); + return n; +} + +/* reset all of the Gn to sane settings */ +static int +reset_charset(MENU_ARGS) +{ + int n, m; + + decnrcm(national = FALSE); + for (n = 0; n < 4; n++) { + m = sane_cs(n); + if (m != current_Gx[n]) { + current_Gx[n] = m; + do_scs(n); + } + } + return MENU_NOHOLD; +} + +static int the_code; +static int the_list[TABLESIZE(KnownCharsets)+2]; + +static int +lookup_Gx(MENU_ARGS) +{ + int n; + the_code = -1; + for (n = 0; n < TABLESIZE(KnownCharsets); n++) { + if (the_list[n] + && !strcmp(the_title, KnownCharsets[n].name)) { + the_code = n; + break; + } + } + return MENU_NOHOLD; +} + +static void +specify_any_Gx(int g) +{ + MENU my_menu[TABLESIZE(KnownCharsets)+2]; + int n, m; + + /* + * Build up a menu of the character sets we will allow the user to specify. + * There are a couple of tentative table entries (the "?" ones), which we + * won't show in any event. Beyond that, we limit some of the character sets + * based on the emulation level (vt220 implements national replacement + * character sets, for example, but not the 96-character ISO Latin-1). + */ + for (n = m = 0; n < TABLESIZE(KnownCharsets); n++) { + the_list[n] = 0; + if (!strcmp(KnownCharsets[n].final, "?")) + continue; + if (get_level() < KnownCharsets[n].model) + continue; + if ((g == 0) && KnownCharsets[n].allow96) + continue; + if (m && !strcmp(my_menu[m-1].description, KnownCharsets[n].name)) + continue; + my_menu[m].description = KnownCharsets[n].name; + my_menu[m].dispatch = lookup_Gx; + the_list[n] = 1; + m++; + } + my_menu[m].description = ""; + my_menu[m].dispatch = 0; + + do { + vt_clear(2); + title(0); println("Choose character-set:"); + } while (menu(my_menu) && the_code < 0); + + current_Gx[g] = the_code; +} + +static int +toggle_nrc(MENU_ARGS) +{ + national = !national; + decnrcm(national); + return MENU_NOHOLD; +} + +static int +specify_G0(MENU_ARGS) +{ + specify_any_Gx(0); + return MENU_NOHOLD; +} + +static int +specify_G1(MENU_ARGS) +{ + specify_any_Gx(1); + return MENU_NOHOLD; +} + +static int +specify_G2(MENU_ARGS) +{ + specify_any_Gx(2); + return MENU_NOHOLD; +} + +static int +specify_G3(MENU_ARGS) +{ + specify_any_Gx(3); + return MENU_NOHOLD; +} + +static int +tst_layout(MENU_ARGS) +{ + char buffer[80]; + return tst_keyboard_layout(scs_params(buffer, 0)); +} + +static int +tst_vt100_charsets(MENU_ARGS) +{ + /* Test of: + SCS (Select character Set) + */ + static const struct { char code; char *msg; } table[] = { + { 'A', "UK / national" }, + { 'B', "US ASCII" }, + { '0', "Special graphics and line drawing" }, + { '1', "Alternate character ROM standard characters" }, + { '2', "Alternate character ROM special graphics" }, + }; + + int i, j, g, cset; + + cup(1,10); printf("Selected as G0 (with SI)"); + cup(1,48); printf("Selected as G1 (with SO)"); + for (cset = 0; cset < TABLESIZE(table); cset++) { + int row = 3 + (4 * cset); + + scs(1,'B'); + cup(row, 1); + sgr("1"); + printf("Character set %c (%s)", table[cset].code, table[cset].msg); + sgr("0"); + for (g = 0; g <= 1; g++) { + int set_nrc = (get_level() >= 2 && table[cset].code == 'A'); + if (set_nrc) + decnrcm(TRUE); + scs(g, table[cset].code); + for (i = 1; i <= 3; i++) { + cup(row + i, 10 + 38 * g); + for (j = 0; j <= 31; j++) { + printf("%c", i * 32 + j); + } + } + if (set_nrc != national) + decnrcm(national); + } + } + scs(0,'B'); + scs(1,'B'); + cup(max_lines,1); printf("These are the installed character sets. "); + return MENU_HOLD; +} + +static int +tst_shift_in_out(MENU_ARGS) +{ + /* Test of: + SCS (Select character Set) + */ + static char *label[] = { + "Selected as G0 (with SI)", + "Selected as G1 (with SO)" + }; + int i, j, cset; + char buffer[80]; + + cup(1,10); printf("These are the G0 and G1 character sets."); + for (cset = 0; cset < 2; cset++) { + int row = 3 + (4 * cset); + + scs(cset,'B'); + cup(row, 1); + sgr("1"); + printf("Character set %s (%s)", + KnownCharsets[current_Gx[cset]].final, + KnownCharsets[current_Gx[cset]].name); + sgr("0"); + + cup(row, 48); + printf("%s", label[cset]); + + esc(scs_params(buffer, cset)); + for (i = 1; i <= 3; i++) { + cup(row + i, 10); + for (j = 0; j <= 31; j++) { + printf("%c", i * 32 + j); + } + } + scs(cset,'B'); + } + cup(max_lines,1); + return MENU_HOLD; +} + +static int +tst_vt220_locking(MENU_ARGS) +{ + /* Test of: + SCS (Select character Set) + */ + static const struct { + int upper; + int mapped; + char *code; + char *msg; + } table[] = { + { 1, 1, "~", "G1 into GR (LS1R)" }, + { 0, 2, "n", "G2 into GL (LS2)" }, /* "{" vi */ + { 1, 2, "}", "G2 into GR (LS2R)" }, + { 0, 3, "o", "G3 into GL (LS3)" }, + { 1, 3, "|", "G3 into GR (LS3R)" }, + }; + + int i, j, cset; + + cup(1,10); printf("Locking shifts, with NRC %s:", + national ? "enabled" : "disabled"); + for (cset = 0; cset < TABLESIZE(table); cset++) { + int row = 3 + (4 * cset); + int map = table[cset].mapped; + + scs(1,'B'); + cup(row, 1); + sgr("1"); + printf("Character set %s (%s)", + KnownCharsets[current_Gx[map]].final, + KnownCharsets[current_Gx[map]].name); + sgr("0"); + + cup(row, 48); + printf("Maps %s", table[cset].msg); + + do_scs(map); + esc(table[cset].code); + for (i = 1; i <= 3; i++) { + cup(row + i, 10); + for (j = 0; j <= 31; j++) { + printf("%c", table[cset].upper * 128 + i * 32 + j); + } + } + reset_scs(cset); + } + scs(1,'B'); + cup(max_lines,1); + return MENU_HOLD; +} + +static int +tst_vt220_single(MENU_ARGS) +{ + int pass, x, y; + + for (pass = 0; pass < 2; pass++) { + int g = pass + 2; + + vt_clear(2); + cup(1,1); + printf("Testing single-shift G%d into GL (SS%d) with NRC %s\n", + g, g, national ? "enabled" : "disabled"); + printf("G%d is %s", g, KnownCharsets[current_Gx[g]].name); + + do_scs(g); + for (y = 0; y < 16; y++) { + for (x = 0; x < 6; x++) { + int ch = y + (x * 16) + 32; + cup(y+5, (x * 12) + 5); + printf("%3d: (", ch); + esc(pass ? "O" : "N"); /* SS3 or SS2 */ + printf("%c", ch); + printf(")"); + } + } + + cup(max_lines,1); + holdit(); + } + + return MENU_NOHOLD; +} + +/******************************************************************************/ + +/* Reset G0 to ASCII */ +void +scs_normal(void) +{ + scs(0,'B'); +} + +/* Set G0 to Line Graphics */ +void +scs_graphics(void) +{ + scs(0,'0'); +} + +int +tst_characters(MENU_ARGS) +{ + static char whatis_Gx[4][80]; + static char nrc_mesg[80]; + + static MENU my_menu[] = { + { "Exit", 0 }, + { "Reset (ASCII for G0, G1, no NRC mode)", reset_charset }, + { nrc_mesg, toggle_nrc }, + { whatis_Gx[0], specify_G0 }, + { whatis_Gx[1], specify_G1 }, + { whatis_Gx[2], specify_G2 }, + { whatis_Gx[3], specify_G3 }, + { "Test VT100 Character Sets", tst_vt100_charsets }, + { "Test Shift In/Shift Out (SI/SO)", tst_shift_in_out }, + { "Test VT220 Locking Shifts", tst_vt220_locking }, + { "Test VT220 Single Shifts", tst_vt220_single }, + { "Test Soft Character Sets", not_impl }, + { "Test Keyboard Layout with G0 Selection", tst_layout }, + { "", 0 } + }; + int n; + + reset_charset(PASS_ARGS); /* make the menu consistent */ + if (get_level() > 1 || input_8bits || output_8bits) { + do { + vt_clear(2); + title(0); printf("Character-Set Tests"); + title(2); println("Choose test type:"); + sprintf(nrc_mesg, "%s National Replacement Character (NRC) mode", + national ? "Disable" : "Enable"); + for (n = 0; n < 4; n++) { + sprintf(whatis_Gx[n], "Specify G%d (now %s)", + n, KnownCharsets[current_Gx[n]].name); + } + } while (menu(my_menu)); + return reset_charset(PASS_ARGS); + } else { + return tst_vt100_charsets(PASS_ARGS); + } +} diff --git a/doc/vttest-20011130/color.c b/doc/vttest-20011130/color.c new file mode 100644 index 0000000..0c9679a --- /dev/null +++ b/doc/vttest-20011130/color.c @@ -0,0 +1,600 @@ +/* $Id$ */ + +#include <vttest.h> +#include <esc.h> + +#define MAX_COLORS 8 + +#define COLOR_BLACK 0 +#define COLOR_RED 1 +#define COLOR_GREEN 2 +#define COLOR_YELLOW 3 +#define COLOR_BLUE 4 +#define COLOR_MAGENTA 5 +#define COLOR_CYAN 6 +#define COLOR_WHITE 7 + +static char *colors[MAX_COLORS] = +{ + "black", /* 30, 40 */ + "red", /* 31, 41 */ + "green", /* 32, 42 */ + "yellow", /* 33, 43 */ + "blue", /* 34, 44 */ + "magenta", /* 35, 45 */ + "cyan", /* 36, 46 */ + "white" /* 37, 47 */ +}; + +static int do_colors = TRUE; + +static int next_word(char *s); +static void draw_box_caption(int x0, int y0, int x1, int y1, char **c); +static void draw_box_outline(int x0, int y0, int x1, int y1, int c); +static void draw_hline(int x0, int y0, int x1, int c); +static void draw_vline(int x0, int y0, int y1, int c); + +/* + * Pick an unusual color combination for testing, just in case the user's + * got the background set to something different. + */ +static void +c_sgr(char *s) +{ + char temp[80]; + char *t = strchr(strcpy(temp, s), '0'); + int reset = FALSE; + + if (*temp == ';' || *temp == 0) { + reset = TRUE; + } else { + for (t = temp; *t != 0; t++) { + if (((t[0] == '0') + && (t == temp || t[-1] == ';') + && (t[1] == 0 || t[1] == ';')) + || ((t[0] == ';') + && (t[1] == ';'))) { + reset = TRUE; + break; + } + } + } + + if (reset && do_colors) { + sprintf(temp + strlen(temp), ";%d;%d", COLOR_YELLOW + 30, COLOR_BLUE + 40); + } + sgr(temp); +} + +static void +draw_box_caption(int x0, int y0, int x1, int y1, char ** c) +{ + int x = x0, y = y0; + int t; + char *s; + + while ((s = *c++) != 0) { + while ((t = *s++) != 0) { + if (x == x0) { + if (t == ' ') + continue; + cup(y, x); + putchar(' '); x++; + } + putchar(t); x++; + if ((t == ' ') && (next_word(s) > (x1-x-2))) { + while (x < x1) { + putchar(' '); x++; + } + } + if (x >= x1) { + putchar(' '); + x = x0; + y++; + } + } + } + while (y <= y1) { + if (x == x0) { + cup(y, x); + } + putchar(' '); + if (++x >= x1) { + putchar(' '); + x = x0; + y++; + } + } +} + +static void +draw_box_outline(int x0, int y0, int x1, int y1, int c) +{ + draw_hline(x0, y0, x1, c); + draw_hline(x0, y1, x1, c); + draw_vline(x0, y0, y1, c); + draw_vline(x1, y0, y1, c); +} + +static void +draw_hline(int x0, int y0, int x1, int c) +{ + int n; + + cup(y0, x0); + for (n = x0; n <= x1; n++) + putchar(c); +} + +static void +draw_vline(int x0, int y0, int y1, int c) +{ + int n; + + for (n = y0; n <= y1; n++) { + cup(n, x0); + putchar(c); + } +} + +static int +next_word(char *s) +{ + char *base; + while (*s == ' ') + s++; + base = s; + while (*s && *s != ' ') + s++; + return (s - base); +} + +/* + * Some terminals will reset colors with SGR-0; I've added the 39, 49 codes for + * those that are ISO compliant. (The black/white codes are for emulators + * written by people who don't bother reading standards). + */ +static void +reset_colors(void) +{ + sgr("0;40;37;39;49"); + sgr("0"); +} + +static void +set_background(int bg) +{ + if (do_colors) { + char temp[80]; + (void)sprintf(temp, "4%d", bg); + sgr(temp); + } +} + +static void +set_color_pair(int fg, int bg) +{ + if (do_colors) { + char temp[80]; + (void)sprintf(temp, "3%d;4%d", fg, bg); + sgr(temp); + } +} + +static void +set_foreground(int fg) +{ + if (do_colors) { + char temp[80]; + (void)sprintf(temp, "3%d", fg); + sgr(temp); + } +} + +static void +set_test_colors(void) +{ + c_sgr("0"); +} + +/* Graphic rendition requires special handling with color, since SGR-0 + * is supposed to reset the colors as well. + */ +static void +show_graphic_rendition(void) +{ + ed(2); + cup( 1,20); printf("Color/Graphic rendition test pattern:"); + cup( 4, 1); c_sgr("0"); printf("vanilla"); + cup( 4,40); c_sgr("0;1"); printf("bold"); + cup( 6, 6); c_sgr(";4"); printf("underline"); + cup( 6,45); c_sgr(";1");c_sgr("4");printf("bold underline"); + cup( 8, 1); c_sgr("0;5"); printf("blink"); + cup( 8,40); c_sgr("0;5;1"); printf("bold blink"); + cup(10, 6); c_sgr("0;4;5"); printf("underline blink"); + cup(10,45); c_sgr("0;1;4;5"); printf("bold underline blink"); + cup(12, 1); c_sgr("1;4;5;0;7"); printf("negative"); + cup(12,40); c_sgr("0;1;7"); printf("bold negative"); + cup(14, 6); c_sgr("0;4;7"); printf("underline negative"); + cup(14,45); c_sgr("0;1;4;7"); printf("bold underline negative"); + cup(16, 1); c_sgr("1;4;;5;7"); printf("blink negative"); + cup(16,40); c_sgr("0;1;5;7"); printf("bold blink negative"); + cup(18, 6); c_sgr("0;4;5;7"); printf("underline blink negative"); + cup(18,45); c_sgr("0;1;4;5;7"); printf("bold underline blink negative"); + cup(20, 6); c_sgr(""); set_foreground(9); printf("original foreground"); + cup(20,45); c_sgr(""); set_background(9); printf("original background"); + c_sgr(""); /* same as c_sgr("0") */ + + decscnm(FALSE); /* Inverse video off */ + cup(max_lines-1,1); el(0); printf("Dark background. "); holdit(); + + decscnm(TRUE); /* Inverse video */ + cup(max_lines-1,1); el(0); printf("Light background. "); holdit(); + decscnm(FALSE); +} + +static void +show_line_deletions(void) +{ + int row; + + ed(2); + cup(1,1); + printf("This test deletes every third line from a list, marking cursor with '*'.\n"); + printf("The foreground and background should be yellow(orange) and blue, respectively.\n"); + + for (row = 5; row <= max_lines; row++) { + cup(row,1); + printf(" row %3d: this is some text", row); + } + for (row = 7; row <= max_lines; row += 2 /* 3 - deletion */) { + cup(row,1); + dl(1); + putchar('*'); /* cursor should be in column 1 */ + } + cup(3,1); + holdit(); +} + +static void +show_line_insertions(void) +{ + int row; + + ed(2); + cup(1,1); + printf("This test inserts after every second line in a list, marking cursor with '*'.\n"); + printf("The foreground and background should be yellow(orange) and blue, respectively.\n"); + + for (row = 5; row <= max_lines; row++) { + cup(row,1); + printf(" row %3d: this is some text", row); + } + for (row = 7; row <= max_lines; row += 3 /* 2 + insertion */) { + cup(row,1); + il(1); + putchar('*'); /* cursor should be in column 1 */ + } + cup(3,1); + holdit(); +} + +static int +show_test_pattern(MENU_ARGS) +/* generate a color test pattern */ +{ + int i, j, k; + + reset_colors(); + ed(2); + cup(1,1); + printf("There are %d color combinations", MAX_COLORS * MAX_COLORS); + + for (k = 0; k <= 11; k += 11) { + cup(k + 2, 1); + printf("%dx%d matrix of foreground/background colors, bright *", + MAX_COLORS, MAX_COLORS); + + if (k) { + sgr("1"); + printf("on"); + sgr("0"); + } else { + printf("off"); + } + printf("*"); + + for (i = 0; i < MAX_COLORS; i++) { + cup(k + 3, (i+1) * 8 + 1); + printf("%s", colors[i]); + } + + for (i = 0; i < MAX_COLORS; i++) { + cup(k + i + 4, 1); + printf("%s", colors[i]); + } + + for (i = 0; i < MAX_COLORS; i++) { + for (j = 0; j < MAX_COLORS; j++) { + if (k) + sgr("1"); + set_color_pair(j, i); + cup(k + 4 + i, (j+1) * 8 + 1); + printf("Hello"); + reset_colors(); + } + } + } + reset_colors(); + cup(max_lines-1, 1); + return MENU_HOLD; +} + +/* + * "Real" color terminals support bce (background color erase). + * + * Set the foreground and background colors to something that's unusual. + * Then clear the screen (the background should stick) and draw some nested + * boxes (because that's simple). Use the ED, EL controls to clear away the + * outer box, so we can exercise the various parameter combinations of each + * of these. + */ +static int +simple_bce_test(MENU_ARGS) +{ + int i, j; + static int top = 3, top2 = 7; /* box margins */ + static int left = 10, left2 = 18; + static char *text1[] = { + "The screen background should be blue, with a box made of asterisks", + " and this caption, in orange (non-bold yellow). ", + " There should be no cells with the default foreground or background.", + 0 + }; + static char *text2[] = { + "The screen background should be black, with a box made of asterisks", + " and this caption, in white (actually gray - it is not bold). ", + " Only the asterisk box should be in color.", + 0 + }; + + set_test_colors(); + ed(2); + + for (i = top; i < max_lines-top; i++) { + cup(i, left); + for (j = left; j < min_cols-left; j++) { + putchar('X'); + } + } + + draw_box_outline(left2, top2, min_cols-left2, max_lines-top2, '*'); + + cup(top2-1, min_cols/2); + ed(1); /* clear from home to cursor */ + cuf(1); + el(0); /* clear from cursor to end of line */ + + cup(max_lines - (top2-1), min_cols/2); + ed(0); /* clear from cursor to end */ + cub(1); + el(1); /* clear to beginning of line */ + + for (i = top2; i <= max_lines-top2; i++) { + cup(i, left2-1); + el(1); + cup(i, min_cols - (left2-1)); + el(0); + } + + draw_box_caption(left2+1, top2+1, min_cols-left2-1, max_lines-top2-1, text1); + + cup(max_lines-1, 1); + holdit(); + + /* Now, set the background again just in case there's a glitch */ + set_foreground(COLOR_WHITE); + set_background(COLOR_BLACK); + + cup(top2-1, min_cols/2); + ed(1); /* clear from home to cursor */ + cuf(1); + el(0); /* clear from cursor to end of line */ + + cup(max_lines - (top2-1), min_cols/2); + ed(0); /* clear from cursor to end */ + cub(1); + el(1); /* clear to beginning of line */ + + for (i = top2; i <= max_lines-top2; i++) { + cup(i, left2-1); + el(1); + cup(i, min_cols - (left2-1)); + el(0); + } + + draw_box_caption(left2+1, top2+1, min_cols-left2-1, max_lines-top2-1, text2); + + cup(max_lines-1, 1); + holdit(); + + reset_colors(); + return MENU_NOHOLD; +} + +/* + * Test the insert/delete line/character operations for color (bce) terminals + * We'll test insert/delete line operations specially, because it is very hard + * to see what is happening with the accordion test when it does not work. + */ +static int +test_color_insdel(MENU_ARGS) +{ + set_test_colors(); + + show_line_insertions(); + show_line_deletions(); + + /* The rest of the test can be done nicely with the standard vt100 test + * for insert/delete, since it doesn't modify SGR. + */ + tst_insdel(PASS_ARGS); + reset_colors(); + return MENU_NOHOLD; +} + +static int +test_color_screen(MENU_ARGS) +{ + set_test_colors(); + + do_scrolling(); + show_graphic_rendition(); + reset_colors(); + return MENU_NOHOLD; +} + +/* + * VT220 and higher implement the 22, 24, 25 and 27 codes. + * VT510 implements concealed text. + * + * ISO 6429 specifies additional SGR codes so that one needn't use SGR 0 + * to reset everything before switching, e.g., set/clear pairs are + * bold 1/22 + * faint 2/22 + * italics 3/23 + * underline 4/24 + * blink 5/25 + * inverse 7/27 + * concealed 8/28 + */ +static int +test_iso_6429_sgr(MENU_ARGS) +{ + set_test_colors(); + ed(2); + cup( 1,20); printf("Extended/Graphic rendition test pattern:"); + cup( 4, 1); c_sgr("0"); printf("vanilla"); + cup( 4,40); c_sgr("0;1"); printf("bold"); + cup( 6, 6); c_sgr("22;4"); printf("underline"); + cup( 6,45); c_sgr("24;1;4"); printf("bold underline"); + cup( 8, 1); c_sgr("22;24;5"); printf("blink"); + cup( 8,40); c_sgr("25;5;1"); printf("bold blink"); + cup(10, 6); c_sgr("22;4;5"); printf("underline blink"); + cup(10,45); c_sgr("24;25;1;4;5"); printf("bold underline blink"); + cup(12, 1); c_sgr("22;24;25;7"); printf("negative"); + cup(12,40); c_sgr("1"); printf("bold negative"); + cup(14, 6); c_sgr("22;4;7"); printf("underline negative"); + cup(14,45); c_sgr("1;4;7"); printf("bold underline negative"); + cup(16, 1); c_sgr("22;24;5;7"); printf("blink negative"); + cup(16,40); c_sgr("1"); printf("bold blink negative"); + cup(18, 6); c_sgr("22;4"); printf("underline blink negative"); + cup(18,45); c_sgr("1"); printf("bold underline blink negative"); + cup(20, 6); c_sgr(""); set_foreground(9); printf("original foreground"); + cup(20,45); c_sgr(""); set_background(9); printf("original background"); + cup(22, 1); c_sgr(";8"); printf("concealed"); + cup(22,40); c_sgr("8;7"); printf("concealed negative"); + c_sgr(""); /* same as c_sgr("0") */ + printf(" <- concealed text"); + + decscnm(FALSE); /* Inverse video off */ + cup(max_lines-1,1); el(0); printf("Dark background. "); holdit(); + + decscnm(TRUE); /* Inverse video */ + cup(max_lines-1,1); el(0); printf("Light background. "); holdit(); + + decscnm(FALSE); + cup(max_lines-1,1); el(0); printf("Dark background. "); holdit(); + + reset_colors(); + return MENU_NOHOLD; +} + +/* + */ +static int +test_SGR_0(MENU_ARGS) +{ + vt_move(1,1); + println(the_title); + println(""); + println("ECMA-48 states that SGR 0 \"cancels the effect of any preceding occurrence"); + println("of SGR in the data stream regardless of the setting of the graphic rendition"); + println("combination mode (GRCM)\"."); + println(""); + println(""); + + reset_colors(); + printf("You should see only black:"); + sgr("30;40"); + printf("SGR 30 and SGR 40 don't work"); + reset_colors(); + println(":up to here"); + + reset_colors(); + printf("You should see only white:"); + sgr("37;47"); + printf("SGR 37 and SGR 47 don't work"); + reset_colors(); + println(":up to here"); + + reset_colors(); + printf("You should see text here: "); + sgr("30;40"); + sgr("0"); + printf("SGR 0 reset works (explicit 0)"); + println(""); + + reset_colors(); + printf("................and here: "); + sgr("37;47"); + sgr(""); + printf("SGR 0 reset works (default param)"); + println(""); + + reset_colors(); + holdit(); + return MENU_NOHOLD; +} + +/* + * Allow user to test the same screens w/o colors. + */ +static int +toggle_color_mode(MENU_ARGS) +{ + do_colors = !do_colors; + return MENU_NOHOLD; +} + +/* + * For terminals that support ANSI/ISO colors, work through a graduated + * set of tests that first display colors (if the terminal does indeed + * support them), then exercise the associated reset, clear operations. + */ +int +tst_colors(MENU_ARGS) +{ + static char txt_override_color[80]; + + static MENU colormenu[] = { + { "Return to main menu", 0 }, + { txt_override_color, toggle_color_mode, }, + { "Display color test-pattern", show_test_pattern, }, + { "Test SGR-0 color reset", test_SGR_0, }, + { "Test BCE-style clear line/display", simple_bce_test, }, + { "Test of VT102-style features with BCE (Insert/Delete Char/Line)", test_color_insdel, }, + { "Test of screen features with BCE", test_color_screen, }, + { "Test of screen features with ISO 6429 SGR 22-27 codes", test_iso_6429_sgr, }, + { "", 0 } + }; + + do { + vt_clear(2); + sprintf(txt_override_color, "%sable color-switching", + do_colors ? "Dis" : "En"); + title(0); println("ISO 6429 colors"); + title(2); println("Choose test type:"); + } while (menu(colormenu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/config.cache b/doc/vttest-20011130/config.cache new file mode 100644 index 0000000..1c374ae --- /dev/null +++ b/doc/vttest-20011130/config.cache @@ -0,0 +1,40 @@ +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +ac_cv_func_alarm=${ac_cv_func_alarm=yes} +ac_cv_func_rdchk=${ac_cv_func_rdchk=no} +ac_cv_func_tcgetattr=${ac_cv_func_tcgetattr=yes} +ac_cv_func_usleep=${ac_cv_func_usleep=yes} +ac_cv_header_fcntl_h=${ac_cv_header_fcntl_h=yes} +ac_cv_header_ioctl_h=${ac_cv_header_ioctl_h=no} +ac_cv_header_sgtty_h=${ac_cv_header_sgtty_h=yes} +ac_cv_header_stdc=${ac_cv_header_stdc=yes} +ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h=yes} +ac_cv_header_string_h=${ac_cv_header_string_h=yes} +ac_cv_header_sys_filio_h=${ac_cv_header_sys_filio_h=no} +ac_cv_header_sys_ioctl_h=${ac_cv_header_sys_ioctl_h=yes} +ac_cv_header_termio_h=${ac_cv_header_termio_h=yes} +ac_cv_header_termios_h=${ac_cv_header_termios_h=yes} +ac_cv_header_unistd_h=${ac_cv_header_unistd_h=yes} +ac_cv_path_install=${ac_cv_path_install='/usr/bin/install -c'} +ac_cv_prog_CC=${ac_cv_prog_CC=gcc} +ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'} +ac_cv_prog_cc_cross=${ac_cv_prog_cc_cross=no} +ac_cv_prog_cc_g=${ac_cv_prog_cc_g=yes} +ac_cv_prog_cc_works=${ac_cv_prog_cc_works=yes} +ac_cv_prog_gcc=${ac_cv_prog_gcc=yes} +ac_cv_prog_gcc_traditional=${ac_cv_prog_gcc_traditional=no} +ac_cv_type_signal=${ac_cv_type_signal=void} +cf_cv_posix_vdisable=${cf_cv_posix_vdisable=yes} +cf_cv_use_fionread=${cf_cv_use_fionread=no} diff --git a/doc/vttest-20011130/config.h b/doc/vttest-20011130/config.h new file mode 100644 index 0000000..9cf92f2 --- /dev/null +++ b/doc/vttest-20011130/config.h @@ -0,0 +1,53 @@ +/* config.h. Generated automatically by configure. */ +/* $Id$ */ + +/* define this if you have the alarm() function */ +#define HAVE_ALARM 1 + +/* define this if you have <fcntl.h> */ +#define HAVE_FCNTL_H 1 + +/* define this if you have <ioctl.h> */ +/* #undef HAVE_IOCTL_H */ + +/* define this if you have the Xenix rdchk() function */ +/* #undef HAVE_RDCHK */ + +/* define this if the POSIX VDISABLE symbol is defined, not equal to -1 */ +#define HAVE_POSIX_VDISABLE 1 + +/* define this if you have <sgtty.h> */ +#define HAVE_SGTTY_H 1 + +/* define this if you have <stdlib.h> */ +#define HAVE_STDLIB_H 1 + +/* define this if you have <string.h> */ +#define HAVE_STRING_H 1 + +/* define this if you have <sys/filio.h> */ +/* #undef HAVE_SYS_FILIO_H */ + +/* define this if you have <sys/ioctl.h> */ +#define HAVE_SYS_IOCTL_H 1 + +/* define this if you have the tcgetattr() function */ +#define HAVE_TCGETATTR 1 + +/* define this if you have <termio.h> */ +#define HAVE_TERMIO_H 1 + +/* define this if you have <termios.h> */ +#define HAVE_TERMIOS_H 1 + +/* define this if you have <unistd.h> */ +#define HAVE_UNISTD_H 1 + +/* define this if you have the usleep() function */ +#define HAVE_USLEEP 1 + +/* define this to be the return-type of functions manipulated by 'signal()' */ +#define RETSIGTYPE void + +/* define this if we can use ioctl(,FIONREAD,) */ +/* #undef USE_FIONREAD */ diff --git a/doc/vttest-20011130/config.hin b/doc/vttest-20011130/config.hin new file mode 100644 index 0000000..0253e97 --- /dev/null +++ b/doc/vttest-20011130/config.hin @@ -0,0 +1,52 @@ +/* $Id$ */ + +/* define this if you have the alarm() function */ +#undef HAVE_ALARM + +/* define this if you have <fcntl.h> */ +#undef HAVE_FCNTL_H + +/* define this if you have <ioctl.h> */ +#undef HAVE_IOCTL_H + +/* define this if you have the Xenix rdchk() function */ +#undef HAVE_RDCHK + +/* define this if the POSIX VDISABLE symbol is defined, not equal to -1 */ +#undef HAVE_POSIX_VDISABLE + +/* define this if you have <sgtty.h> */ +#undef HAVE_SGTTY_H + +/* define this if you have <stdlib.h> */ +#undef HAVE_STDLIB_H + +/* define this if you have <string.h> */ +#undef HAVE_STRING_H + +/* define this if you have <sys/filio.h> */ +#undef HAVE_SYS_FILIO_H + +/* define this if you have <sys/ioctl.h> */ +#undef HAVE_SYS_IOCTL_H + +/* define this if you have the tcgetattr() function */ +#undef HAVE_TCGETATTR + +/* define this if you have <termio.h> */ +#undef HAVE_TERMIO_H + +/* define this if you have <termios.h> */ +#undef HAVE_TERMIOS_H + +/* define this if you have <unistd.h> */ +#undef HAVE_UNISTD_H + +/* define this if you have the usleep() function */ +#undef HAVE_USLEEP + +/* define this to be the return-type of functions manipulated by 'signal()' */ +#define RETSIGTYPE void + +/* define this if we can use ioctl(,FIONREAD,) */ +#undef USE_FIONREAD diff --git a/doc/vttest-20011130/config.log b/doc/vttest-20011130/config.log new file mode 100644 index 0000000..cf44b9d --- /dev/null +++ b/doc/vttest-20011130/config.log @@ -0,0 +1,105 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +configure:529: checking for gcc +configure:606: checking whether the C compiler (gcc ) works +configure:620: gcc -o conftest conftest.c 1>&5 +configure:640: checking whether the C compiler (gcc ) is a cross-compiler +configure:645: checking whether we are using GNU C +configure:654: gcc -E conftest.c +configure:669: checking whether gcc accepts -g +configure:726: checking for a BSD compatible install +configure:776: checking how to run the C preprocessor +configure:797: gcc -E conftest.c >/dev/null 2>conftest.out +configure:838: checking whether gcc needs -traditional +configure:897: checking return type of signal handlers +configure:919: gcc -c -g -O2 conftest.c 1>&5 +configure:938: checking for ANSI C header files +configure:951: gcc -E conftest.c >/dev/null 2>conftest.out +configure:1018: gcc -o conftest -g -O2 conftest.c 1>&5 +configure:1056: checking for fcntl.h +configure:1066: gcc -E conftest.c >/dev/null 2>conftest.out +configure:1056: checking for ioctl.h +configure:1066: gcc -E conftest.c >/dev/null 2>conftest.out +configure:1062:19: ioctl.h: No such file or directory +configure: failed program was: +#line 1061 "configure" +#include "confdefs.h" +#include <ioctl.h> +configure:1056: checking for sgtty.h +configure:1066: gcc -E conftest.c >/dev/null 2>conftest.out +configure:1056: checking for stdlib.h +configure:1066: gcc -E conftest.c >/dev/null 2>conftest.out +configure:1056: checking for string.h +configure:1066: gcc -E conftest.c >/dev/null 2>conftest.out +configure:1056: checking for sys/filio.h +configure:1066: gcc -E conftest.c >/dev/null 2>conftest.out +configure:1062:23: sys/filio.h: No such file or directory +configure: failed program was: +#line 1061 "configure" +#include "confdefs.h" +#include <sys/filio.h> +configure:1056: checking for sys/ioctl.h +configure:1066: gcc -E conftest.c >/dev/null 2>conftest.out +configure:1056: checking for termio.h +configure:1066: gcc -E conftest.c >/dev/null 2>conftest.out +configure:1056: checking for termios.h +configure:1066: gcc -E conftest.c >/dev/null 2>conftest.out +configure:1056: checking for unistd.h +configure:1066: gcc -E conftest.c >/dev/null 2>conftest.out +configure:1101: checking for alarm +configure:1129: gcc -o conftest -g -O2 conftest.c 1>&5 +configure:1101: checking for rdchk +configure:1129: gcc -o conftest -g -O2 conftest.c 1>&5 +/tmp/nalin/ccmjFt1w.o: In function `main': +/home/devel/nalin/projects/vte/doc/vttest-20011130/configure:1123: undefined reference to `rdchk' +collect2: ld returned 1 exit status +configure: failed program was: +#line 1106 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char rdchk(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char rdchk(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_rdchk) || defined (__stub___rdchk) +choke me +#else +rdchk(); +#endif + +; return 0; } +configure:1101: checking for tcgetattr +configure:1129: gcc -o conftest -g -O2 conftest.c 1>&5 +configure:1101: checking for usleep +configure:1129: gcc -o conftest -g -O2 conftest.c 1>&5 +configure:1157: checking if POSIX VDISABLE symbol should be used +configure:1207: gcc -o conftest -g -O2 conftest.c 1>&5 +configure:1230: checking if we may use FIONREAD +configure:1250: gcc -c -g -O2 conftest.c 1>&5 +configure: In function `main': +configure:1245: `FIONREAD' undeclared (first use in this function) +configure:1245: (Each undeclared identifier is reported only once +configure:1245: for each function it appears in.) +configure: failed program was: +#line 1236 "configure" +#include "confdefs.h" + +#if HAVE_SYS_FILIO_H +# include <sys/filio.h> /* FIONREAD */ +#endif + +int main() { + +long l1; +ioctl (0, FIONREAD, &l1); + +; return 0; } diff --git a/doc/vttest-20011130/config.status b/doc/vttest-20011130/config.status new file mode 100755 index 0000000..a976b16 --- /dev/null +++ b/doc/vttest-20011130/config.status @@ -0,0 +1,279 @@ +#! /bin/sh +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# This directory was configured as follows, +# on host blade.devel.redhat.com: +# +# ./configure +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]" +for ac_option +do + case "$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion" + exec ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "./config.status generated by autoconf version 2.12.970309" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "$ac_cs_usage"; exit 0 ;; + *) echo "$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=. +ac_given_INSTALL="/usr/bin/install -c" + +trap 'rm -fr makefile config.h conftest*; exit 1' 1 2 15 + +# Protect against being on the right side of a sed subst in config.status. +sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\&%]/\\&/g; + s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF +/^[ ]*VPATH[ ]*=[^:]*$/d + +s%@CFLAGS@%-g -O2%g +s%@CPPFLAGS@%%g +s%@CXXFLAGS@%%g +s%@DEFS@%-DHAVE_CONFIG_H%g +s%@LDFLAGS@%%g +s%@LIBS@%%g +s%@exec_prefix@%${prefix}%g +s%@prefix@%/usr/local%g +s%@program_transform_name@%s,x,x,%g +s%@bindir@%${exec_prefix}/bin%g +s%@sbindir@%${exec_prefix}/sbin%g +s%@libexecdir@%${exec_prefix}/libexec%g +s%@datadir@%${prefix}/share%g +s%@sysconfdir@%${prefix}/etc%g +s%@sharedstatedir@%${prefix}/com%g +s%@localstatedir@%${prefix}/var%g +s%@libdir@%${exec_prefix}/lib%g +s%@includedir@%${prefix}/include%g +s%@oldincludedir@%/usr/include%g +s%@infodir@%${prefix}/info%g +s%@mandir@%${prefix}/man%g +s%@CC@%gcc%g +s%@INSTALL_PROGRAM@%${INSTALL}%g +s%@INSTALL_DATA@%${INSTALL} -m 644%g +s%@CPP@%gcc -E%g + +CEOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi + +CONFIG_FILES=${CONFIG_FILES-"makefile"} +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then + CONFIG_HEADERS="config.h:config.hin" +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + + cat > conftest.frag <<CEOF +${ac_dA}RETSIGTYPE${ac_dB}RETSIGTYPE${ac_dC}void${ac_dD} +${ac_uA}RETSIGTYPE${ac_uB}RETSIGTYPE${ac_uC}void${ac_uD} +${ac_eA}RETSIGTYPE${ac_eB}RETSIGTYPE${ac_eC}void${ac_eD} +${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD} +${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD} +${ac_eA}STDC_HEADERS${ac_eB}STDC_HEADERS${ac_eC}1${ac_eD} +${ac_dA}HAVE_FCNTL_H${ac_dB}HAVE_FCNTL_H${ac_dC}1${ac_dD} +${ac_uA}HAVE_FCNTL_H${ac_uB}HAVE_FCNTL_H${ac_uC}1${ac_uD} +${ac_eA}HAVE_FCNTL_H${ac_eB}HAVE_FCNTL_H${ac_eC}1${ac_eD} +${ac_dA}HAVE_SGTTY_H${ac_dB}HAVE_SGTTY_H${ac_dC}1${ac_dD} +${ac_uA}HAVE_SGTTY_H${ac_uB}HAVE_SGTTY_H${ac_uC}1${ac_uD} +${ac_eA}HAVE_SGTTY_H${ac_eB}HAVE_SGTTY_H${ac_eC}1${ac_eD} +CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag <<CEOF +${ac_dA}HAVE_STDLIB_H${ac_dB}HAVE_STDLIB_H${ac_dC}1${ac_dD} +${ac_uA}HAVE_STDLIB_H${ac_uB}HAVE_STDLIB_H${ac_uC}1${ac_uD} +${ac_eA}HAVE_STDLIB_H${ac_eB}HAVE_STDLIB_H${ac_eC}1${ac_eD} +${ac_dA}HAVE_STRING_H${ac_dB}HAVE_STRING_H${ac_dC}1${ac_dD} +${ac_uA}HAVE_STRING_H${ac_uB}HAVE_STRING_H${ac_uC}1${ac_uD} +${ac_eA}HAVE_STRING_H${ac_eB}HAVE_STRING_H${ac_eC}1${ac_eD} +${ac_dA}HAVE_SYS_IOCTL_H${ac_dB}HAVE_SYS_IOCTL_H${ac_dC}1${ac_dD} +${ac_uA}HAVE_SYS_IOCTL_H${ac_uB}HAVE_SYS_IOCTL_H${ac_uC}1${ac_uD} +${ac_eA}HAVE_SYS_IOCTL_H${ac_eB}HAVE_SYS_IOCTL_H${ac_eC}1${ac_eD} +${ac_dA}HAVE_TERMIO_H${ac_dB}HAVE_TERMIO_H${ac_dC}1${ac_dD} +${ac_uA}HAVE_TERMIO_H${ac_uB}HAVE_TERMIO_H${ac_uC}1${ac_uD} +${ac_eA}HAVE_TERMIO_H${ac_eB}HAVE_TERMIO_H${ac_eC}1${ac_eD} +CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag <<CEOF +${ac_dA}HAVE_TERMIOS_H${ac_dB}HAVE_TERMIOS_H${ac_dC}1${ac_dD} +${ac_uA}HAVE_TERMIOS_H${ac_uB}HAVE_TERMIOS_H${ac_uC}1${ac_uD} +${ac_eA}HAVE_TERMIOS_H${ac_eB}HAVE_TERMIOS_H${ac_eC}1${ac_eD} +${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD} +${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD} +${ac_eA}HAVE_UNISTD_H${ac_eB}HAVE_UNISTD_H${ac_eC}1${ac_eD} +${ac_dA}HAVE_ALARM${ac_dB}HAVE_ALARM${ac_dC}1${ac_dD} +${ac_uA}HAVE_ALARM${ac_uB}HAVE_ALARM${ac_uC}1${ac_uD} +${ac_eA}HAVE_ALARM${ac_eB}HAVE_ALARM${ac_eC}1${ac_eD} +${ac_dA}HAVE_TCGETATTR${ac_dB}HAVE_TCGETATTR${ac_dC}1${ac_dD} +${ac_uA}HAVE_TCGETATTR${ac_uB}HAVE_TCGETATTR${ac_uC}1${ac_uD} +${ac_eA}HAVE_TCGETATTR${ac_eB}HAVE_TCGETATTR${ac_eC}1${ac_eD} +CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + cat > conftest.frag <<CEOF +${ac_dA}HAVE_USLEEP${ac_dB}HAVE_USLEEP${ac_dC}1${ac_dD} +${ac_uA}HAVE_USLEEP${ac_uB}HAVE_USLEEP${ac_uC}1${ac_uD} +${ac_eA}HAVE_USLEEP${ac_eB}HAVE_USLEEP${ac_eC}1${ac_eD} +${ac_dA}HAVE_POSIX_VDISABLE${ac_dB}HAVE_POSIX_VDISABLE${ac_dC}1${ac_dD} +${ac_uA}HAVE_POSIX_VDISABLE${ac_uB}HAVE_POSIX_VDISABLE${ac_uC}1${ac_uD} +${ac_eA}HAVE_POSIX_VDISABLE${ac_eB}HAVE_POSIX_VDISABLE${ac_eC}1${ac_eD} +s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% +CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in + + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + + + +exit 0 diff --git a/doc/vttest-20011130/configure b/doc/vttest-20011130/configure new file mode 100755 index 0000000..7c565e2 --- /dev/null +++ b/doc/vttest-20011130/configure @@ -0,0 +1,1625 @@ +#! /bin/sh + +# From configure.in Revision: 1.10 + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.12.970309 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_help="$ac_help + --with-warnings use gcc warnings (used for developing this tool)" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.12.970309" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=esc.c + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:529: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:558: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + ac_prog_rejected=no + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:606: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext <<EOF +#line 616 "configure" +#include "confdefs.h" +main(){return(0);} +EOF +if { (eval echo configure:620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:640: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:645: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <<EOF +#ifdef __GNUC__ + yes; +#endif +EOF +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:654: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes + ac_test_CFLAGS="${CFLAGS+set}" + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:669: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 + if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" + elif test $ac_cv_prog_cc_g = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-O2" + fi +else + GCC= + test "${CFLAGS+set}" = set || CFLAGS="-g" +fi + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:726: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + for ac_prog in ginstall installbsd scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + # OSF/1 installbsd also uses dspmsg, but is usable. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:776: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext <<EOF +#line 791 "configure" +#include "confdefs.h" +#include <assert.h> +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:797: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext <<EOF +#line 808 "configure" +#include "confdefs.h" +#include <assert.h> +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:814: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 +echo "configure:838: checking whether ${CC-cc} needs -traditional" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_pattern="Autoconf.*'x'" + cat > conftest.$ac_ext <<EOF +#line 844 "configure" +#include "confdefs.h" +#include <sgtty.h> +Autoconf TIOCGETP +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "$ac_pattern" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_prog_gcc_traditional=yes +else + rm -rf conftest* + ac_cv_prog_gcc_traditional=no +fi +rm -f conftest* + + + if test $ac_cv_prog_gcc_traditional = no; then + cat > conftest.$ac_ext <<EOF +#line 862 "configure" +#include "confdefs.h" +#include <termio.h> +Autoconf TCGETA +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "$ac_pattern" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_prog_gcc_traditional=yes +fi +rm -f conftest* + + fi +fi + +echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6 + if test $ac_cv_prog_gcc_traditional = yes; then + CC="$CC -traditional" + fi +fi + + +### use option -with-warnings to turn on all gcc warnings +if test -n "$GCC" +then +# Check whether --with-warnings or --without-warnings was given. +if test "${with_warnings+set}" = set; then + withval="$with_warnings" + CFLAGS="$CFLAGS -Wall -Wshadow -Wconversion -Wstrict-prototypes -Wmissing-prototypes" +fi + +fi + +### extra things that we'll substitute in the makefile +echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 +echo "configure:897: checking return type of signal handlers" >&5 +if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 902 "configure" +#include "confdefs.h" +#include <sys/types.h> +#include <signal.h> +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +int main() { +int i; +; return 0; } +EOF +if { (eval echo configure:919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_type_signal=void +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_type_signal=int +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_type_signal" 1>&6 +cat >> confdefs.h <<EOF +#define RETSIGTYPE $ac_cv_type_signal +EOF + + +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:938: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 943 "configure" +#include "confdefs.h" +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:951: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + ac_cv_header_stdc=yes +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext <<EOF +#line 968 "configure" +#include "confdefs.h" +#include <string.h> +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext <<EOF +#line 986 "configure" +#include "confdefs.h" +#include <stdlib.h> +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : +else + cat > conftest.$ac_ext <<EOF +#line 1007 "configure" +#include "confdefs.h" +#include <ctype.h> +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } + +EOF +if { (eval echo configure:1018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_stdc=no +fi +rm -fr conftest* +fi + +fi +fi + +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +for ac_hdr in \ +fcntl.h \ +ioctl.h \ +sgtty.h \ +stdlib.h \ +string.h \ +sys/filio.h \ +sys/ioctl.h \ +termio.h \ +termios.h \ +unistd.h \ + +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:1056: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1061 "configure" +#include "confdefs.h" +#include <$ac_hdr> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1066: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <<EOF +#define $ac_tr_hdr 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi +done + + +for ac_func in \ +alarm \ +rdchk \ +tcgetattr \ +usleep \ + +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1101: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1106 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <<EOF +#define $ac_tr_func 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi +done + + +### special configuration tests + +echo $ac_n "checking if POSIX VDISABLE symbol should be used""... $ac_c" 1>&6 +echo "configure:1157: checking if POSIX VDISABLE symbol should be used" >&5 +if eval "test \"`echo '$''{'cf_cv_posix_vdisable'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + if test "$cross_compiling" = yes; then + cat > conftest.$ac_ext <<EOF +#line 1164 "configure" +#include "confdefs.h" + +#if HAVE_TERMIOS_H && HAVE_TCGETATTR +#include <termios.h> +#endif +#if HAVE_UNISTD_H +#include <unistd.h> +#endif +int main() { + +#if defined(_POSIX_VDISABLE) && (_POSIX_VDISABLE != -1) +int temp = _POSIX_VDISABLE; +#else +this did not work +#endif +; return 0; } +EOF +if { (eval echo configure:1182: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_posix_vdisable=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_posix_vdisable=no +fi +rm -f conftest* +else + cat > conftest.$ac_ext <<EOF +#line 1194 "configure" +#include "confdefs.h" + +#if HAVE_TERMIOS_H && HAVE_TCGETATTR +#include <termios.h> +#endif +#if HAVE_UNISTD_H +#include <unistd.h> +#endif +#if defined(_POSIX_VDISABLE) +int main() { exit(_POSIX_VDISABLE == -1); } +#endif +EOF +if { (eval echo configure:1207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + cf_cv_posix_vdisable=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + cf_cv_posix_vdisable=no +fi +rm -fr conftest* +fi + + +fi + +echo "$ac_t""$cf_cv_posix_vdisable" 1>&6 +test $cf_cv_posix_vdisable = yes && cat >> confdefs.h <<\EOF +#define HAVE_POSIX_VDISABLE 1 +EOF + + + +echo $ac_n "checking if we may use FIONREAD""... $ac_c" 1>&6 +echo "configure:1230: checking if we may use FIONREAD" >&5 +if eval "test \"`echo '$''{'cf_cv_use_fionread'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 1236 "configure" +#include "confdefs.h" + +#if HAVE_SYS_FILIO_H +# include <sys/filio.h> /* FIONREAD */ +#endif + +int main() { + +long l1; +ioctl (0, FIONREAD, &l1); + +; return 0; } +EOF +if { (eval echo configure:1250: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_use_fionread=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_use_fionread=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$cf_cv_use_fionread" 1>&6 +test $cf_cv_use_fionread = yes && cat >> confdefs.h <<\EOF +#define USE_FIONREAD 1 +EOF + + + +### debugging/testing + +### output makefile and config.h +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set) 2>&1 | grep '^ac_space='` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +DEFS=-DHAVE_CONFIG_H + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS <<EOF +#! /bin/sh +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# This directory was configured as follows, +# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.12.970309" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo "makefile config.h:config.hin" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS <<EOF + +# Protect against being on the right side of a sed subst in config.status. +sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; + s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@CC@%$CC%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@CPP@%$CPP%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <<EOF + +CONFIG_FILES=\${CONFIG_FILES-"makefile"} +EOF +cat >> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then +EOF +cat >> $CONFIG_STATUS <<EOF + CONFIG_HEADERS="config.h:config.hin" +EOF +cat >> $CONFIG_STATUS <<\EOF +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + +EOF + +# Transform confdefs.h into a sed script conftest.vals that substitutes +# the proper values into config.h.in to produce config.h. And first: +# Protect against being on the right side of a sed subst in config.status. +# Protect against being in an unquoted here document in config.status. +rm -f conftest.vals +cat > conftest.hdr <<\EOF +s/[\\&%]/\\&/g +s%[\\$`]%\\&%g +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp +s%ac_d%ac_u%gp +s%ac_u%ac_e%gp +EOF +sed -n -f conftest.hdr confdefs.h > conftest.vals +rm -f conftest.hdr + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >> conftest.vals <<\EOF +s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% +EOF + +# Break up conftest.vals because some shells have a limit on +# the size of here documents, and old seds have small limits too. + +rm -f conftest.tail +while : +do + ac_lines=`grep -c . conftest.vals` + # grep -c gives empty output for an empty file on some AIX systems. + if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi + # Write a limited-size here document to conftest.frag. + echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS + echo 'CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in +' >> $CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals +done +rm -f conftest.vals + +cat >> $CONFIG_STATUS <<\EOF + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + +EOF +cat >> $CONFIG_STATUS <<EOF + +EOF +cat >> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + diff --git a/doc/vttest-20011130/configure.in b/doc/vttest-20011130/configure.in new file mode 100644 index 0000000..b20093e --- /dev/null +++ b/doc/vttest-20011130/configure.in @@ -0,0 +1,48 @@ +dnl Process this file with 'autoconf' to produce a 'configure' script +dnl $Id$ +AC_REVISION($Revision$) +AC_CONFIG_HEADER(config.h:config.hin) +AC_INIT(esc.c) +AC_PROG_CC +AC_PROG_INSTALL +AC_GCC_TRADITIONAL + +### use option -with-warnings to turn on all gcc warnings +if test -n "$GCC" +then +AC_ARG_WITH(warnings, +[ --with-warnings use gcc warnings (used for developing this tool)], +[CFLAGS="$CFLAGS -Wall -Wshadow -Wconversion -Wstrict-prototypes -Wmissing-prototypes"]) +fi + +### extra things that we'll substitute in the makefile +AC_TYPE_SIGNAL +AC_STDC_HEADERS +AC_HAVE_HEADERS( \ +fcntl.h \ +ioctl.h \ +sgtty.h \ +stdlib.h \ +string.h \ +sys/filio.h \ +sys/ioctl.h \ +termio.h \ +termios.h \ +unistd.h \ +) + +AC_HAVE_FUNCS( \ +alarm \ +rdchk \ +tcgetattr \ +usleep \ +) + +### special configuration tests +CF_POSIX_VDISABLE +CF_FCNTL_VS_IOCTL + +### debugging/testing + +### output makefile and config.h +AC_OUTPUT(makefile) diff --git a/doc/vttest-20011130/descrip.mms b/doc/vttest-20011130/descrip.mms new file mode 100644 index 0000000..64e1b1e --- /dev/null +++ b/doc/vttest-20011130/descrip.mms @@ -0,0 +1,94 @@ +# $Id$ +# VAX/VMS "mms" script for VTTEST + +THIS = vttest + +#### Start of system configuration section. #### + +DEFINES = /Define=(STDC_HEADERS,RELEASE=2) +CFLAGS = /Listing /Include=([]) $(DEFINES) + +#### End of system configuration section. #### + +C_SRC = \ + charsets.c \ + color.c \ + esc.c \ + keyboard.c \ + main.c \ + mouse.c \ + nonvt100.c \ + printer.c \ + reports.c \ + reset.c \ + setup.c \ + sixel.c \ + status.c \ + ttymodes.c \ + vt220.c \ + vt420.c \ + vt52.c \ + unix_io.c \ + vms_io.c \ + xterm.c +H_SRC = \ + vttest.h \ + esc.h \ + ttymodes.h +OBJS = \ + charsets.obj, \ + color.obj, \ + esc.obj, \ + keyboard.obj, \ + main.obj, \ + mouse.obj, \ + nonvt100.obj, \ + printer.obj, \ + reports.obj, \ + reset.obj, \ + setup.obj, \ + sixel.obj, \ + status.obj, \ + vt220.obj, \ + vt420.obj, \ + vt52.obj, \ + vms_io.obj, \ + xterm.obj + +SRC = patchlev.h \ + CHANGES COPYING README BUGS \ + $(THIS).lsm $(THIS).1 \ + $(C_SRC) $(H_SRC) \ + config.hin install.sh mkdirs.sh makefile.in configure.in + +all : $(THIS).exe + @ write sys$output "** produced $?" + +$(THIS).exe : $(OBJS) + $(LINK)/exec=$(THIS) $(OBJS),sys$library:vaxcrtl/lib + +$(THIS).com : + if "''f$search("vttest.com")'" .nes. "" then delete vttest.com;* + copy nl: vttest.com + open/append test_script vttest.com + write test_script "$ temp = f$environment(""procedure"")" + write test_script "$ temp = temp -" + write test_script " - f$parse(temp,,,""version"",""syntax_only"") -" + write test_script " - f$parse(temp,,,""type"",""syntax_only"")" + write test_script "$ vttest :== $ 'temp'.exe" + write test_script "$ define/user_mode sys$input sys$command" + write test_script "$ define/user_mode sys$output sys$command" + write test_script "$ vttest 'p1 'p2 'p3 'p4 'p5 'p6 'p7 'p8" + close test_script + write sys$output "** made vttest.com" + +clean : + - if f$search("*.obj").nes."" then dele/nolog *.obj;* + - if f$search("*.lis").nes."" then dele/nolog *.lis;* + - if f$search("*.log").nes."" then dele/nolog *.log;* + - if f$search("*.map").nes."" then dele/nolog *.map;* + +clobber : clean + - if f$search("$(THIS).exe").nes."" then dele/nolog $(THIS).exe;* + +$(OBJS) : vttest.h diff --git a/doc/vttest-20011130/esc.c b/doc/vttest-20011130/esc.c new file mode 100644 index 0000000..c8c2eeb --- /dev/null +++ b/doc/vttest-20011130/esc.c @@ -0,0 +1,968 @@ +/* $Id$ */ + +#include <vttest.h> +#include <esc.h> + +/* FIXME: for Solaris 2.5, which is broken */ +#define FLUSH fflush(stdout) + +static int soft_scroll; + +/******************************************************************************/ + +static char csi_7[] = { ESC, '[', 0 }; +static unsigned char csi_8[] = { 0x9b, 0 }; + +char * +csi_input(void) +{ + return input_8bits ? (char *)csi_8 : csi_7; +} + +char * +csi_output(void) +{ + return output_8bits ? (char *)csi_8 : csi_7; +} + +/******************************************************************************/ + +static char dcs_7[] = { ESC, 'P', 0 }; +static unsigned char dcs_8[] = { 0x90, 0 }; + +char * +dcs_input(void) +{ + return input_8bits ? (char *)dcs_8 : dcs_7; +} + +char * +dcs_output(void) +{ + return output_8bits ? (char *)dcs_8 : dcs_7; +} + +/******************************************************************************/ + +static char osc_7[] = { ESC, ']', 0 }; +static unsigned char osc_8[] = { 0x9d, 0 }; + +char * +osc_input(void) +{ + return input_8bits ? (char *)osc_8 : osc_7; +} + +char * +osc_output(void) +{ + return output_8bits ? (char *)osc_8 : osc_7; +} + +/******************************************************************************/ + +static char ss3_7[] = { ESC, 'O', 0 }; +static unsigned char ss3_8[] = { 0x8f, 0 }; + +char * +ss3_input(void) +{ + return input_8bits ? (char *)ss3_8 : ss3_7; +} + +char * +ss3_output(void) +{ + return output_8bits ? (char *)ss3_8 : ss3_7; +} + +/******************************************************************************/ + +static char st_7[] = { ESC, '\\', 0 }; +static unsigned char st_8[] = { 0x9c, 0 }; + +char * +st_input(void) +{ + return input_8bits ? (char *)st_8 : st_7; +} + +char * +st_output(void) +{ + return output_8bits ? (char *)st_8 : st_7; +} + +/******************************************************************************/ + +/* + * The actual number of nulls for padding is an estimate; it's working at + * 9600bd. + */ +void +padding(int msecs) +{ + if (use_padding) { + int count = (3 * msecs * tty_speed + DEFAULT_SPEED - 1) / DEFAULT_SPEED; + while (count-- > 0) + putchar(0); + } +} + +void +extra_padding(int msecs) +{ + if (use_padding) + padding (soft_scroll ? (msecs * 4) : msecs); +} + +void +println(char *s) +{ + printf("%s\r\n", s); +} + +void +put_char(FILE *fp, int c) +{ + if (fp == stdout) + putchar(c); + else { + c &= 0xff; + if (c <= ' ' || c >= '\177') + fprintf(fp, "<%d> ", c); + else + fprintf(fp, "%c ", c); + } +} + +void +put_string(FILE *fp, char *s) +{ + while (*s != '\0') + put_char(fp, *s++); +} + +static void +va_out(FILE *fp, va_list ap, char *fmt) +{ + char temp[10]; + + while (*fmt != '\0') { + if (*fmt == '%') { + switch(*++fmt) { + case 'c': + put_char(fp, va_arg(ap, int)); + break; + case 'd': + sprintf(temp, "%d", va_arg(ap, int)); + put_string(fp, temp); + break; + case 's': + put_string(fp, va_arg(ap, char *)); + break; + } + } else { + put_char(fp, *fmt); + } + fmt++; + } +} + +/* CSI xxx */ +void +do_csi(char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fputs(csi_output(), stdout); + va_out(stdout, ap, fmt); + va_end(ap); + FLUSH; + + if (LOG_ENABLED) { + fputs("Send: ", log_fp); + put_string(log_fp, csi_output()); + va_start(ap, fmt); + va_out(log_fp, ap, fmt); + va_end(ap); + fputs("\n", log_fp); + } +} + +/* DCS xxx ST */ +void +do_dcs(char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fputs(dcs_output(), stdout); + va_out(stdout, ap, fmt); + va_end(ap); + fputs(st_output(), stdout); + FLUSH; + + if (LOG_ENABLED) { + va_start(ap, fmt); + fputs("Send: ", log_fp); + put_string(log_fp, dcs_output()); + va_out(log_fp, ap, fmt); + va_end(ap); + put_string(log_fp, st_output()); + fputs("\n", log_fp); + } +} + +/* DCS xxx ST */ +void +do_osc(char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fputs(osc_output(), stdout); + va_out(stdout, ap, fmt); + va_end(ap); + fputs(st_output(), stdout); + FLUSH; + + if (LOG_ENABLED) { + va_start(ap, fmt); + fputs("Send: ", log_fp); + put_string(log_fp, osc_output()); + va_out(log_fp, ap, fmt); + va_end(ap); + put_string(log_fp, st_output()); + fputs("\n", log_fp); + } +} + +void +esc(char *s) +{ + printf("%c%s", ESC, s); + + if (LOG_ENABLED) { + fprintf(log_fp, "Send: "); + put_char(log_fp, ESC); + put_string(log_fp, s); + fputs("\n", log_fp); + } +} + +void +brc(int pn, int c) +{ + do_csi("%d%c", pn, c); +} + +void +brc2(int pn1, int pn2, int c) +{ + do_csi("%d;%d%c", pn1, pn2, c); +} + +void +brc3(int pn1, int pn2, int pn3, int c) +{ + do_csi("%d;%d;%d%c", pn1, pn2, pn3, c); +} + +/******************************************************************************/ + +void +cbt(int pn) /* Cursor Back Tab */ +{ + brc(pn, 'Z'); +} + +void +cha(int pn) /* Cursor Character Absolute */ +{ + brc(pn, 'G'); +} + +void +cht(int pn) /* Cursor Forward Tabulation */ +{ + brc(pn, 'I'); +} + +void +cnl(int pn) /* Cursor Next Line */ +{ + brc(pn,'E'); +} + +void +cpl(int pn) /* Cursor Previous Line */ +{ + brc(pn,'F'); +} + +void +cub(int pn) /* Cursor Backward */ +{ + brc(pn,'D'); + padding(2); +} + +void +cud(int pn) /* Cursor Down */ +{ + brc(pn,'B'); + extra_padding(2); +} + +void +cuf(int pn) /* Cursor Forward */ +{ + brc(pn,'C'); + padding(2); +} + +void +cup(int pn1, int pn2) /* Cursor Position */ +{ + brc2(pn1, pn2, 'H'); + padding(5); /* 10 for vt220 */ +} + +void +cuu(int pn) /* Cursor Up */ +{ + brc(pn,'A'); + extra_padding(2); +} + +void +da(void) /* Device Attributes */ +{ + brc(0,'c'); +} + +void +decaln(void) /* Screen Alignment Display */ +{ + esc("#8"); +} + +void +decbi(void) /* VT400: Back Index */ +{ + esc("6"); + padding(40); +} + +void +decbkm(int flag) /* VT400: Backarrow key */ +{ + if (flag) + sm("?67"); /* backspace */ + else + rm("?67"); /* delete */ +} + +void +deccara(int top, int left, int bottom, int right, int attr) +{ + do_csi("%d;%d;%d;%d;%d$r", top, left, bottom, right, attr); +} + +void +deccolm(int flag) /* 80/132 Columns */ +{ + if (flag) + sm("?3"); /* 132 columns */ + else + rm("?3"); /* 80 columns */ +} + +void +deccra(int Pts, int Pl, int Pbs, int Prs, int Pps, int Ptd, int Pld, int Ppd) +{ + do_csi("%d;%d;%d;%d;%d;%d;%d;%d;$v", + Pts, /* top-line border */ + Pl, /* left-line border */ + Pbs, /* bottom-line border */ + Prs, /* right-line border */ + Pps, /* source page number */ + Ptd, /* destination top-line border */ + Pld, /* destination left-line border */ + Ppd); /* destination page number */ +} + +void +decdc(int pn) /* VT400 Delete Column */ +{ + do_csi("%d'~", pn); + padding(10 * pn); +} + +void +decefr(int top, int left, int bottom, int right) /* DECterm Enable filter rectangle */ +{ + do_csi("%d;%d;%d;%d'w", top, left, bottom, right); +} + +void +decelr(int all_or_one, int pixels_or_cells) /* DECterm Enable Locator Reporting */ +{ + do_csi("%d;%d'z", all_or_one, pixels_or_cells); +} + +void +decera(int top, int left, int bottom, int right) /* VT400 Erase Rectangular area */ +{ + do_csi("%d;%d;%d;%d$z", top, left, bottom, right); +} + +void +decdhl(int lower) /* Double Height Line (also double width) */ +{ + if (lower) esc("#4"); + else esc("#3"); +} + +void +decdwl(void) /* Double Wide Line */ +{ + esc("#6"); +} + +void +decfi(void) /* VT400: Forward Index */ +{ + esc("9"); + padding(40); +} + +void +decfra(int c, int top, int left, int bottom, int right) /* VT400 Fill Rectangular area */ +{ + do_csi("%d;%d;%d;%d;%d$x", c, top, left, bottom, right); +} + +void +decid(void) /* required for VT52, not recommended above VT100 */ +{ + esc("Z"); /* Identify */ +} + +void +decic(int pn) /* VT400 Insert Column */ +{ + do_csi("%d'}", pn); + padding(10 * pn); +} + +void +deckbum(int flag) /* VT400: Keyboard Usage */ +{ + if (flag) + sm("?68"); /* data processing */ + else + rm("?68"); /* typewriter */ +} + +void +deckpam(void) /* Keypad Application Mode */ +{ + esc("="); +} + +void +deckpm(int flag) /* VT400: Keyboard Position */ +{ + if (flag) + sm("?81"); /* position reports */ + else + rm("?81"); /* character codes */ +} + +void +deckpnm(void) /* Keypad Numeric Mode */ +{ + esc(">"); +} + +void +decll(char *ps) /* Load LEDs */ +{ + do_csi("%sq", ps); +} + +void +decnkm(int flag) /* VT400: Numeric Keypad */ +{ + if (flag) + sm("?66"); /* application */ + else + rm("?66"); /* numeric */ +} + +void +decpex(int flag) /* VT220: printer extent mode */ +{ + if (flag) + sm("?19"); /* full screen (page) */ + else + rm("?19"); /* scrolling region */ +} + +void +decpff(int flag) /* VT220: print form feed mode */ +{ + if (flag) + sm("?18"); /* form feed */ + else + rm("?18"); /* no form feed */ +} + +void +decnrcm(int flag) /* VT220: National replacement character set */ +{ + if (flag) + sm("?42"); /* national */ + else + rm("?42"); /* multinational */ +} + +void +decrara(int top, int left, int bottom, int right, int attr) +{ + do_csi("%d;%d;%d;%d;%d$t", top, left, bottom, right, attr); +} + +void +decrc(void) /* Restore Cursor */ +{ + esc("8"); +} + +void +decreqtparm(int pn) /* Request Terminal Parameters */ +{ + brc(pn,'x'); +} + +void +decrqlp(int mode) /* DECterm Request Locator Position */ +{ + do_csi("%d'|", mode); +} + +void +decrqss(char *pn) /* VT200 Request Status-String */ +{ + do_dcs("$q%s", pn); +} + +void +decsace(int flag) /* VT400 Select attribute change extent */ +{ + do_csi("%d*x", flag ? 2 : 0); +} + +void +decsasd(int pn) /* VT200 Select active status display */ +{ + do_csi("%d$}", pn); +} + +void +decsc(void) /* Save Cursor */ +{ + esc("7"); +} + +void +decsca(int pn1) /* VT200 select character attribute (protect) */ +{ + do_csi("%d\"q", pn1); +} + +void +decsclm(int flag) /* Scrolling mode (smooth/jump) */ +{ + if (flag) + sm("?4"); /* smooth scrolling */ + else + rm("?4"); /* jump-scrolling scrolling */ + soft_scroll = flag; +} + +void +decscnm(int flag) /* Screen mode (inverse-video) */ +{ + if (flag) + sm("?5"); /* inverse video */ + else + rm("?5"); /* normal video */ + padding(200); +} + +void +decsed(int pn1) /* VT200 selective erase in display */ +{ + do_csi("?%dJ", pn1); +} + +void +decsel(int pn1) /* VT200 selective erase in line */ +{ + do_csi("?%dK", pn1); +} + +void +decsera(int top, int left, int bottom, int right) /* VT400 Selective erase rectangular area */ +{ + do_csi("%d;%d;%d;%d${", top, left, bottom, right); +} + +void +decsle(int mode) /* DECterm Select Locator Events */ +{ + do_csi("%d'{", mode); +} + +void +decsnls(int pn) /* VT400 Select number of lines per screen */ +{ + do_csi("%d*|", pn); +} + +void +decssdt(int pn) /* VT200 Select status line type */ +{ + do_csi("%d$~", pn); +} + +void +decstbm(int pn1, int pn2) /* Set Top and Bottom Margins */ +{ + if (pn1 || pn2) brc2(pn1, pn2, 'r'); + else esc("[r"); + /* Good for >24-line terminals */ +} + +void +decstr(void) /* VT200 Soft terminal reset */ +{ + do_csi("!p"); +} + +void +decswl(void) /* Single Width Line */ +{ + esc("#5"); +} + +void +dectst(int pn) /* Invoke Confidence Test */ +{ + brc2(2, pn, 'y'); +#ifdef UNIX + fflush(stdout); +#endif +} + +void +dsr(int pn) /* Device Status Report */ +{ + brc(pn, 'n'); +} + +void +ed(int pn) /* Erase in Display */ +{ + brc(pn, 'J'); + padding(50); +} + +void +el(int pn) /* Erase in Line */ +{ + brc(pn,'K'); + padding(3); /* 4 for vt400 */ +} + +void +ech(int pn) /* Erase character(s) */ +{ + brc(pn,'X'); +} + +void +hpa(int pn) /* Character Position Absolute */ +{ + brc(pn, '`'); +} + +void +hts(void) /* Horizontal Tabulation Set */ +{ + esc("H"); +} + +void +hvp(int pn1, int pn2) /* Horizontal and Vertical Position */ +{ + brc2(pn1, pn2, 'f'); +} + +void +ind(void) /* Index */ +{ + esc("D"); + padding(20); /* vt220 */ +} + +/* The functions beginning "mc_" are variations of Media Copy (MC) */ + +void +mc_autoprint(int flag) /* VT220: auto print mode */ +{ + do_csi("?%di", flag ? 5 : 4); +} + +void +mc_printer_controller(int flag) /* VT220: printer controller mode */ +{ + do_csi("%di", flag ? 5 : 4); +} + +void +mc_print_page(void) /* VT220: print page */ +{ + do_csi("i"); +} + +void +mc_print_composed(void) /* VT300: print composed main display */ +{ + do_csi("?10i"); +} + +void +mc_print_all_pages(void) /* VT300: print composed all pages */ +{ + do_csi("?11i"); +} + +void +mc_print_cursor_line(void) /* VT220: print cursor line */ +{ + do_csi("?1i"); +} + +void +mc_printer_start(int flag) /* VT300: start/stop printer-to-host session */ +{ + do_csi("?%di", flag ? 9 : 8); +} + +void +mc_printer_assign(int flag) /* VT300: assign/release printer to active session */ +{ + do_csi("?%di", flag ? 18 : 19); +} + +void +nel(void) /* Next Line */ +{ + esc("E"); +} + +void +rep(int pn) /* Repeat */ +{ + do_csi("%db", pn); +} + +void +ri(void) /* Reverse Index */ +{ + esc("M"); + extra_padding(5); /* 14 on vt220 */ +} + +void +ris(void) /* Reset to Initial State */ +{ + esc("c"); +#ifdef UNIX + fflush(stdout); +#endif +} + +void +rm(char *ps) /* Reset Mode */ +{ + do_csi("%sl", ps); +} + +void s8c1t(int flag) /* Tell terminal to respond with 7-bit or 8-bit controls */ +{ + if ((input_8bits = flag) != FALSE) + esc(" G"); /* select 8-bit controls */ + else + esc(" F"); /* select 7-bit controls */ + fflush(stdout); + zleep(300); +} + +void +scs(int g, int c) /* Select character Set */ +{ + printf("%c%c%c%c%c%c%c", ESC, g ? ')' : '(', c, + ESC, g ? '(' : ')', 'B', + g ? 14 : 15); + padding(4); +} + +void +sd(int pn) /* Scroll Down */ +{ + brc(pn, 'T'); +} + +void +sgr(char *ps) /* Select Graphic Rendition */ +{ + do_csi("%sm", ps); + padding(2); +} + +void +sl(int pn) /* Scroll Left */ +{ + do_csi("%d @", pn); +} + +void +sm(char *ps) /* Set Mode */ +{ + do_csi("%sh", ps); +} + +void +sr(int pn) /* Scroll Right */ +{ + do_csi("%d A", pn); +} + +void +srm(int flag) /* VT400: Send/Receive mode */ +{ + if (flag) + sm("12"); /* local echo off */ + else + rm("12"); /* local echo on */ +} + +void +su(int pn) /* Scroll Up */ +{ + brc(pn, 'S'); + extra_padding(5); +} + +void +tbc(int pn) /* Tabulation Clear */ +{ + brc(pn, 'g'); +} + +void +dch(int pn) /* Delete character */ +{ + brc(pn, 'P'); +} + +void +ich(int pn) /* Insert character -- not in VT102 */ +{ + brc(pn, '@'); +} + +void +dl(int pn) /* Delete line */ +{ + brc(pn, 'M'); +} + +void +il(int pn) /* Insert line */ +{ + brc(pn, 'L'); +} + +void +vpa(int pn) /* Line Position Absolute */ +{ + brc(pn, 'd'); +} + +void +vt52cub1(void) /* cursor left */ +{ + esc("D"); + padding(5); +} + +void +vt52cud1(void) /* cursor down */ +{ + esc("B"); + padding(5); +} + +void +vt52cuf1(void) /* cursor right */ +{ + esc("C"); + padding(5); +} + +void +vt52cup(int l, int c) /* direct cursor address */ +{ + printf("%cY%c%c", ESC, l + 31, c + 31); + padding(5); +} + +void +vt52cuu1(void) /* cursor up */ +{ + esc("A"); + padding(5); +} + +void +vt52ed(void) /* erase to end of screen */ +{ + esc("J"); + padding(5); +} + +void +vt52el(void) /* erase to end of line */ +{ + esc("K"); + padding(5); +} + +void +vt52home(void) /* cursor to home */ +{ + esc("H"); + padding(5); +} + +void +vt52ri(void) /* reverse line feed */ +{ + esc("I"); + padding(5); +} + diff --git a/doc/vttest-20011130/esc.h b/doc/vttest-20011130/esc.h new file mode 100644 index 0000000..71ddfb1 --- /dev/null +++ b/doc/vttest-20011130/esc.h @@ -0,0 +1,190 @@ +/* $Id$ */ + +#ifndef ESC_H +#define ESC_H 1 + +#define BEL 0007 +#define ESC 0033 +#define CSI 0233 +#define SS3 0217 +#define DCS 0220 +#define ST 0234 + +/* ANSI modes for DECRQM, DECRPM, SM and RM */ +#define GATM 1 /* guarded area transfer (disabled) */ +#define AM 2 /* keyboard action */ +#define CRM 3 /* control representation */ +#define IRM 4 /* insert/replace */ +#define SRTM 5 /* status reporting transfer (disabled) */ +#define VEM 7 /* vertical editing (disabled) */ +#define HEM 10 /* horizontal editing (disabled) */ +#define PUM 11 /* positioning unit (disabled) */ +#define SRM 12 /* send/receive */ +#define FEAM 13 /* format effector action (disabled) */ +#define FETM 14 /* format effector transfer (disabled) */ +#define MATM 15 /* multiple area transfer (disabled) */ +#define TTM 16 /* transfer termination (disabled) */ +#define SATM 17 /* selected area transfer (disabled) */ +#define TSM 18 /* tabulation stop (disabled) */ +#define EBM 19 /* editing boundary (disabled) */ +#define LNM 20 /* line feed/new line */ + +/* DEC modes for DECRQM, DECRPM, SM and RM */ +#define DECCKM 1 /* cursor keys */ +#define DECANM 2 /* ANSI */ +#define DECCOLM 3 /* column */ +#define DECSCLM 4 /* scrolling */ +#define DECSCNM 5 /* screen */ +#define DECOM 6 /* origin */ +#define DECAWM 7 /* autowrap */ +#define DECARM 8 /* autorepeat */ +#define DECPFF 18 /* print form feed */ +#define DECPEX 19 /* printer extent */ +#define DECTCEM 25 /* text cursor enable */ +#define DECNRCM 42 /* national replacement character set */ +#define DECHCCM 60 /* horizontal cursor coupling */ +#define DECVCCM 61 /* vertical cursor coupling */ +#define DECPCCM 64 /* page cursor coupling */ +#define DECNKM 66 /* numeric keypad */ +#define DECBKM 67 /* backarrow key */ +#define DECKBUM 68 /* keyboard usage */ +#define DECVSSM 69 /* vertical split */ +#define DECXRLM 73 /* transmit rate linking */ +#define DECKPM 81 /* keyboard positioning */ + +/* esc.c */ +char *csi_input(void); +char *csi_output(void); +char *dcs_input(void); +char *dcs_output(void); +char *get_reply(void); +char *instr(void); +char *osc_input(void); +char *osc_output(void); +char *ss3_input(void); +char *ss3_output(void); +char *st_input(void); +char *st_output(void); +char inchar(void); +void brc(int pn, int c); +void brc2(int pn1, int pn2, int c); +void brc3(int pn1, int pn2, int pn3, int c); +void cbt(int pn); +void cha(int pn); +void cht(int pn); +void cnl(int pn); +void cpl(int pn); +void cub(int pn); +void cud(int pn); +void cuf(int pn); +void cup(int pn1, int pn2); +void cuu(int pn); +void da(void); +void dch(int pn); +void decaln(void); +void decbi(void); +void decbkm(int flag); +void deccara(int top, int left, int bottom, int right, int attr); +void deccolm(int flag); +void deccra(int Pts, int Pl, int Pbs, int Prs, int Pps, int Ptd, int Pld, int Ppd); +void decdc(int pn); +void decdhl(int lower); +void decdwl(void); +void decefr(int top, int left, int bottom, int right); +void decelr(int all_or_one, int pixels_or_cells); +void decera(int top, int left, int bottom, int right); +void decfi(void); +void decfra(int c, int top, int left, int bottom, int right); +void decic(int pn); +void decid(void); +void deckbum(int flag); +void deckpam(void); +void deckpm(int flag); +void deckpnm(void); +void decll(char *ps); +void decnkm(int flag); +void decnrcm(int flag); +void decpex(int flag); +void decpff(int flag); +void decrara(int top, int left, int bottom, int right, int attr); +void decrc(void); +void decreqtparm(int pn); +void decrqlp(int mode); +void decrqss(char *pn); +void decsace(int flag); +void decsasd(int pn); +void decsc(void); +void decsca(int pn1); +void decsclm(int flag); +void decscnm(int flag); +void decsed(int pn1); +void decsel(int pn1); +void decsera(int top, int left, int bottom, int right); +void decsle(int mode); +void decsnls(int pn); +void decssdt(int pn); +void decstbm(int pn1, int pn2); +void decstr(void); +void decswl(void); +void dectst(int pn); +void dl(int pn); +void do_csi(char *fmt, ...) GCC_PRINTFLIKE(1,2); +void do_dcs(char *fmt, ...) GCC_PRINTFLIKE(1,2); +void do_osc(char *fmt, ...) GCC_PRINTFLIKE(1,2); +void dsr(int pn); +void ech(int pn); +void ed(int pn); +void el(int pn); +void esc(char *s); +void extra_padding(int msecs); +void holdit(void); +void hpa(int pn); +void hts(void); +void hvp(int pn1, int pn2); +void ich(int pn); +void il(int pn); +void ind(void); +void inflush(void); +void inputline(char *s); +void mc_autoprint(int flag); +void mc_print_all_pages(void); +void mc_print_composed(void); +void mc_print_cursor_line(void); +void mc_print_page(void); +void mc_printer_assign(int flag); +void mc_printer_controller(int flag); +void mc_printer_start(int flag); +void nel(void); +void padding(int msecs); +void println(char *s); +void put_char(FILE *fp, int c); +void put_string(FILE *fp, char *s); +void readnl(void); +void rep(int pn); +void reset_inchar(void); +void ri(void); +void ris(void); +void rm(char *ps); +void s8c1t(int flag); +void scs(int g, int c); +void sd(int pn); +void sgr(char *ps); +void sl(int pn); +void sm(char *ps); +void sr(int pn); +void srm(int flag); +void su(int pn); +void tbc(int pn); +void vpa(int pn); +void vt52cub1(void); +void vt52cud1(void); +void vt52cuf1(void); +void vt52cup(int l, int c); +void vt52cuu1(void); +void vt52ed(void); +void vt52el(void); +void vt52home(void); +void vt52ri(void); +void zleep(int t); + +#endif /* ESC_H */ diff --git a/doc/vttest-20011130/install.sh b/doc/vttest-20011130/install.sh new file mode 100755 index 0000000..ab74c88 --- /dev/null +++ b/doc/vttest-20011130/install.sh @@ -0,0 +1,238 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. +# + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +tranformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/doc/vttest-20011130/keyboard.c b/doc/vttest-20011130/keyboard.c new file mode 100644 index 0000000..1f3c503 --- /dev/null +++ b/doc/vttest-20011130/keyboard.c @@ -0,0 +1,1080 @@ +/* $Id$ */ + +#include <vttest.h> +#include <ttymodes.h> +#include <esc.h> + +/* Test of: + - DECLL (Load LEDs) + - Keyboard return messages + - SM RM (Set/Reset Mode) - Cursor Keys + - Auto repeat + - DECKPAM (Keypad Application Mode) + - DECKPNM (Keypad Numeric Mode) + +The standard VT100 keyboard layout: + + UP DN LE RI + +ESC 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) -_ =+ `~ BS + +TAB* qQ wW eE rR tT yY uU iI oO pP [{ ]} DEL + +** ** aA sS dD fF gG hH jJ kK lL ;: ," RETN \| + +** **** zZ xX cC vV bB nN mM ,< .> /? **** LF + + ****************SPACE BAR**************** + + PF1 PF2 PF3 PF4 + + *7* *8* *9* *-* + + *4* *5* *6* *,* + + *1* *2* *3* + + ***0*** *.* ENT + +The standard LK401 (VT420) keyboard layout: + +F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 Help Do F17 F18 F19 F20 + + `~ 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 0) -_ =+ DEL + +TAB* qQ wW eE rR tT yY uU iI oO pP [{ ]} Return + +** ** aA sS dD fF gG hH jJ kK lL ;: ," \| + +***** <> zZ xX cC vV bB nN mM ,< .> /? ****** + +***** ***** ****************SPACE BAR**************** ****** ****** + + Find Insert Remove PF1 PF2 PF3 PF4 + + Select Prev Next *7* *8* *9* *-* + + Up *4* *5* *6* *,* + + Left Down Right *1* *2* *3* + + ***0*** *.* ENT +*/ + +static struct key { + char c; + int row; + int col; + char *symbol; +} VT100_keytab [] = { + { ESC, 1, 0, "ESC" }, + { '1', 1, 6, "1" }, { '!', 1, 7, "!" }, + { '2', 1, 11, "2" }, { '@', 1, 12, "@" }, + { '3', 1, 16, "3" }, { '#', 1, 17, "#" }, + { '4', 1, 21, "4" }, { '$', 1, 22, "$" }, + { '5', 1, 26, "5" }, { '%', 1, 27, "%" }, + { '6', 1, 31, "6" }, { '^', 1, 32, "^" }, + { '7', 1, 36, "7" }, { '&', 1, 37, "&" }, + { '8', 1, 41, "8" }, { '*', 1, 42, "*" }, + { '9', 1, 46, "9" }, { '(', 1, 47, "(" }, + { '0', 1, 51, "0" }, { ')', 1, 52, ")" }, + { '-', 1, 56, "-" }, { '_', 1, 57, "_" }, + { '=', 1, 61, "=" }, { '+', 1, 62, "+" }, + { '`', 1, 66, "`" }, { '~', 1, 67, "~" }, + { 8, 1, 70, "BS" }, + { 9, 2, 0, " TAB " }, + { 'q', 2, 8, "q" }, { 'Q', 2, 9, "Q" }, + { 'w', 2, 13, "w" }, { 'W', 2, 14, "W" }, + { 'e', 2, 18, "e" }, { 'E', 2, 19, "E" }, + { 'r', 2, 23, "r" }, { 'R', 2, 24, "R" }, + { 't', 2, 28, "t" }, { 'T', 2, 29, "T" }, + { 'y', 2, 33, "y" }, { 'Y', 2, 34, "Y" }, + { 'u', 2, 38, "u" }, { 'U', 2, 39, "U" }, + { 'i', 2, 43, "i" }, { 'I', 2, 44, "I" }, + { 'o', 2, 48, "o" }, { 'O', 2, 49, "O" }, + { 'p', 2, 53, "p" }, { 'P', 2, 54, "P" }, + { '[', 2, 58, "[" }, { '{', 2, 59, "{" }, + { ']', 2, 63, "]" }, { '}', 2, 64, "}" }, + { 127, 2, 71, "DEL" }, + { 'a', 3, 10, "a" }, { 'A', 3, 11, "A" }, + { 's', 3, 15, "s" }, { 'S', 3, 16, "S" }, + { 'd', 3, 20, "d" }, { 'D', 3, 21, "D" }, + { 'f', 3, 25, "f" }, { 'F', 3, 26, "F" }, + { 'g', 3, 30, "g" }, { 'G', 3, 31, "G" }, + { 'h', 3, 35, "h" }, { 'H', 3, 36, "H" }, + { 'j', 3, 40, "j" }, { 'J', 3, 41, "J" }, + { 'k', 3, 45, "k" }, { 'K', 3, 46, "K" }, + { 'l', 3, 50, "l" }, { 'L', 3, 51, "L" }, + { ';', 3, 55, ";" }, { ':', 3, 56, ":" }, + {'\'', 3, 60, "'" }, { '"', 3, 61,"\"" }, + { 13, 3, 65, "RETN"}, + {'\\', 3, 71,"\\" }, { '|', 3, 72, "|" }, + { 'z', 4, 12, "z" }, { 'Z', 4, 13, "Z" }, + { 'x', 4, 17, "x" }, { 'X', 4, 18, "X" }, + { 'c', 4, 22, "c" }, { 'C', 4, 23, "C" }, + { 'v', 4, 27, "v" }, { 'V', 4, 28, "V" }, + { 'b', 4, 32, "b" }, { 'B', 4, 33, "B" }, + { 'n', 4, 37, "n" }, { 'N', 4, 38, "N" }, + { 'm', 4, 42, "m" }, { 'M', 4, 43, "M" }, + { ',', 4, 47, "," }, { '<', 4, 48, "<" }, + { '.', 4, 52, "." }, { '>', 4, 53, ">" }, + { '/', 4, 57, "/" }, { '?', 4, 58, "?" }, + { 10, 4, 69, "LF" }, + { ' ', 5, 13, " SPACE BAR "}, + {'\0', 0, 0, "" } + }, + LK401_keytab [] = { + { '`', 1, 3, "`" }, { '~', 1, 4, "~" }, + { '1', 1, 7, "1" }, { '!', 1, 8, "!" }, + { '2', 1, 12, "2" }, { '@', 1, 13, "@" }, + { '3', 1, 17, "3" }, { '#', 1, 18, "#" }, + { '4', 1, 22, "4" }, { '$', 1, 23, "$" }, + { '5', 1, 27, "5" }, { '%', 1, 28, "%" }, + { '6', 1, 32, "6" }, { '^', 1, 33, "^" }, + { '7', 1, 37, "7" }, { '&', 1, 38, "&" }, + { '8', 1, 42, "8" }, { '*', 1, 43, "*" }, + { '9', 1, 47, "9" }, { '(', 1, 48, "(" }, + { '0', 1, 52, "0" }, { ')', 1, 53, ")" }, + { '-', 1, 57, "-" }, { '_', 1, 58, "_" }, + { '=', 1, 62, "=" }, { '+', 1, 63, "+" }, + { 127, 1, 67, "DEL" }, + { 9, 2, 0, "TAB " }, + { 'q', 2, 9, "q" }, { 'Q', 2, 10, "Q" }, + { 'w', 2, 14, "w" }, { 'W', 2, 15, "W" }, + { 'e', 2, 19, "e" }, { 'E', 2, 20, "E" }, + { 'r', 2, 24, "r" }, { 'R', 2, 25, "R" }, + { 't', 2, 29, "t" }, { 'T', 2, 30, "T" }, + { 'y', 2, 34, "y" }, { 'Y', 2, 35, "Y" }, + { 'u', 2, 39, "u" }, { 'U', 2, 40, "U" }, + { 'i', 2, 44, "i" }, { 'I', 2, 45, "I" }, + { 'o', 2, 49, "o" }, { 'O', 2, 50, "O" }, + { 'p', 2, 54, "p" }, { 'P', 2, 55, "P" }, + { '[', 2, 59, "[" }, { '{', 2, 60, "{" }, + { ']', 2, 64, "]" }, { '}', 2, 65, "}" }, + { 13, 2, 69, "Return" }, + { 'a', 3, 11, "a" }, { 'A', 3, 12, "A" }, + { 's', 3, 16, "s" }, { 'S', 3, 17, "S" }, + { 'd', 3, 21, "d" }, { 'D', 3, 22, "D" }, + { 'f', 3, 26, "f" }, { 'F', 3, 27, "F" }, + { 'g', 3, 31, "g" }, { 'G', 3, 32, "G" }, + { 'h', 3, 36, "h" }, { 'H', 3, 37, "H" }, + { 'j', 3, 41, "j" }, { 'J', 3, 42, "J" }, + { 'k', 3, 46, "k" }, { 'K', 3, 47, "K" }, + { 'l', 3, 51, "l" }, { 'L', 3, 52, "L" }, + { ';', 3, 56, ";" }, { ':', 3, 57, ":" }, + {'\'', 3, 61, "'" }, { '"', 3, 62,"\"" }, + {'\\', 3, 66,"\\" }, { '|', 3, 67, "|" }, + { '<', 4, 9, "<" }, { '>', 4, 10, ">" }, + { 'z', 4, 13, "z" }, { 'Z', 4, 14, "Z" }, + { 'x', 4, 18, "x" }, { 'X', 4, 19, "X" }, + { 'c', 4, 23, "c" }, { 'C', 4, 24, "C" }, + { 'v', 4, 28, "v" }, { 'V', 4, 29, "V" }, + { 'b', 4, 33, "b" }, { 'B', 4, 34, "B" }, + { 'n', 4, 38, "n" }, { 'N', 4, 39, "N" }, + { 'm', 4, 43, "m" }, { 'M', 4, 44, "M" }, + { ',', 4, 48, "," }, { '<', 4, 49, "<" }, + { '.', 4, 53, "." }, { '>', 4, 54, ">" }, + { '/', 4, 58, "/" }, { '?', 4, 59, "?" }, + { ' ', 5, 14, " SPACE BAR "}, + {'\0', 0, 0, "" } + }, + *keytab; + +typedef struct { + unsigned char prefix; + char *msg; +} CTLKEY; + +static struct curkey { + CTLKEY curkeymsg[3]; + int curkeyrow; + int curkeycol; + char *curkeysymbol; + char *curkeyname; +} VT100_curkeytab [] = { + + /* A Reset, A Set, VT52 */ + + {{{CSI,"A"}, {SS3,"A"}, {ESC,"A"}}, 0, 56, "UP", "Up arrow" }, + {{{CSI,"B"}, {SS3,"B"}, {ESC,"B"}}, 0, 61, "DN", "Down arrow" }, + {{{CSI,"D"}, {SS3,"D"}, {ESC,"D"}}, 0, 66, "LT", "Left arrow" }, + {{{CSI,"C"}, {SS3,"C"}, {ESC,"C"}}, 0, 71, "RT", "Right arrow"}, + {{{0, ""}, {0, ""}, {0, "" }}, 0, 0, "", "" } + }, + LK401_curkeytab [] = { + + /* A Reset, A Set, VT52 */ + + {{{CSI,"A"}, {SS3,"A"}, {ESC,"A"}}, 8, 32, "Up", "Up arrow" }, + {{{CSI,"B"}, {SS3,"B"}, {ESC,"B"}}, 9, 31, "Down", "Down arrow" }, + {{{CSI,"D"}, {SS3,"D"}, {ESC,"D"}}, 9, 24, "Left", "Left arrow" }, + {{{CSI,"C"}, {SS3,"C"}, {ESC,"C"}}, 9, 38, "Right", "Right arrow"}, + {{{0, ""}, {0, ""}, {0, "" }}, 0, 0, "", "" } + }, + *curkeytab; + +static struct fnckey { + CTLKEY fnkeymsg[2]; + int fnkeyrow; + int fnkeycol; + char *fnkeysymbol; + char *fnkeyname; +} fnkeytab [] = { + + /* Normal, VT100/VT52 */ + {{{CSI,"11~"}, {0,""}}, 0, 1, "F1", "F1 (xterm)" }, + {{{CSI,"12~"}, {0,""}}, 0, 4, "F2", "F2 (xterm)" }, + {{{CSI,"13~"}, {0,""}}, 0, 7, "F3", "F3 (xterm)" }, + {{{CSI,"14~"}, {0,""}}, 0, 10, "F4", "F4 (xterm)" }, + {{{CSI,"15~"}, {0,""}}, 0, 13, "F5", "F5 (xterm)" }, + + {{{CSI,"17~"}, {0,""}}, 0, 18, "F6", "F6" }, + {{{CSI,"18~"}, {0,""}}, 0, 21, "F7", "F7" }, + {{{CSI,"19~"}, {0,""}}, 0, 24, "F8", "F8" }, + {{{CSI,"20~"}, {0,""}}, 0, 27, "F9", "F9" }, + {{{CSI,"21~"}, {0,""}}, 0, 30, "F10", "F10" }, + {{{CSI,"23~"}, {0,""}}, 0, 36, "F11", "F11" }, + {{{CSI,"24~"}, {0,""}}, 0, 40, "F12", "F12" }, + {{{CSI,"25~"}, {0,""}}, 0, 44, "F13", "F13" }, + {{{CSI,"26~"}, {0,""}}, 0, 48, "F14", "F14" }, + {{{CSI,"28~"}, {0,""}}, 0, 54, "Help", "Help (F15)" }, + {{{CSI,"29~"}, {0,""}}, 0, 59, "Do", "Do (F16)" }, + {{{CSI,"31~"}, {0,""}}, 0, 64, "F17", "F17" }, + {{{CSI,"32~"}, {0,""}}, 0, 68, "F18", "F18" }, + {{{CSI,"33~"}, {0,""}}, 0, 72, "F19", "F19" }, + {{{CSI,"34~"}, {0,""}}, 0, 76, "F20", "F20" }, + {{{0, ""}, {0,"" }}, 0, 0, "", "" } + }, + edt_keypadtab[] = { + {{{CSI,"1~"}, {0,""}}, 6, 24, "Find" , "Find" }, + {{{CSI,"2~"}, {0,""}}, 6, 30, "Insert", "Insert Here" }, + {{{CSI,"3~"}, {0,""}}, 6, 37, "Remove", "Remove" }, + {{{CSI,"4~"}, {0,""}}, 7, 23, "Select", "Select" }, + {{{CSI,"5~"}, {0,""}}, 7, 31, "Prev", "Prev" }, + {{{CSI,"6~"}, {0,""}}, 7, 38, "Next", "Next" }, + {{{0, ""}, {0,""}}, 0, 0, "", "" } + }; + +static struct fnkey { + CTLKEY fnkeymsg[4]; + int fnkeyrow; + int fnkeycol; + char *fnkeysymbol; + char *fnkeyname; +} num_keypadtab [] = { + + /* ANSI-num, ANSI-app, VT52-nu, VT52-ap, r, c, symb name */ + + {{{SS3,"P"}, {SS3,"P"}, {ESC,"P"}, {ESC,"P" }}, 6, 59, "PF1", "PF1" }, + {{{SS3,"Q"}, {SS3,"Q"}, {ESC,"Q"}, {ESC,"Q" }}, 6, 63, "PF2", "PF2" }, + {{{SS3,"R"}, {SS3,"R"}, {ESC,"R"}, {ESC,"R" }}, 6, 67, "PF3", "PF3" }, + {{{SS3,"S"}, {SS3,"S"}, {ESC,"S"}, {ESC,"S" }}, 6, 71, "PF4", "PF4" }, + {{{0, "7"}, {SS3,"w"}, {0, "7"}, {ESC,"?w"}}, 7, 59, " 7 ", "Numeric 7" }, + {{{0, "8"}, {SS3,"x"}, {0, "8"}, {ESC,"?x"}}, 7, 63, " 8 ", "Numeric 8" }, + {{{0, "9"}, {SS3,"y"}, {0, "9"}, {ESC,"?y"}}, 7, 67, " 9 ", "Numeric 9" }, + {{{0, "-"}, {SS3,"m"}, {0, "-"}, {ESC,"?m"}}, 7, 71, " - ", "Minus" }, + {{{0, "4"}, {SS3,"t"}, {0, "4"}, {ESC,"?t"}}, 8, 59, " 4 ", "Numeric 4" }, + {{{0, "5"}, {SS3,"u"}, {0, "5"}, {ESC,"?u"}}, 8, 63, " 5 ", "Numeric 5" }, + {{{0, "6"}, {SS3,"v"}, {0, "6"}, {ESC,"?v"}}, 8, 67, " 6 ", "Numeric 6" }, + {{{0, ","}, {SS3,"l"}, {0, ","}, {ESC,"?l"}}, 8, 71, " , ", "Comma" }, + {{{0, "1"}, {SS3,"q"}, {0, "1"}, {ESC,"?q"}}, 9, 59, " 1 ", "Numeric 1" }, + {{{0, "2"}, {SS3,"r"}, {0, "2"}, {ESC,"?r"}}, 9, 63, " 2 ", "Numeric 2" }, + {{{0, "3"}, {SS3,"s"}, {0, "3"}, {ESC,"?s"}}, 9, 67, " 3 ", "Numeric 3" }, + {{{0, "0"}, {SS3,"p"}, {0, "0"}, {ESC,"?p"}},10, 59, " 0 ","Numeric 0"}, + {{{0, "."}, {SS3,"n"}, {0, "."}, {ESC,"?n"}},10, 67, " . ", "Point" }, + {{{0,"\015"},{SS3,"M"}, {0,"\015"},{ESC,"?M"}},10, 71, "ENT", "ENTER" }, + {{{0, ""}, {0, ""}, {0, ""}, {0, ""}}, 0, 0, "", "" } +}; + +struct natkey { + char natc; + int natrow; + int natcol; + char *natsymbol; +}; + +static int same_CTLKEY(char *response, CTLKEY *code); + +static int +find_cursor_key(char *curkeystr, int ckeymode) +{ + int i; + + for (i = 0; curkeytab[i].curkeysymbol[0] != '\0'; i++) { + if (same_CTLKEY(curkeystr, &curkeytab[i].curkeymsg[ckeymode])) { + return i; + } + } + return -1; +} + +static int +find_editing_key(char *keypadstr, int fkeymode) +{ + int i; + + for (i = 0; edt_keypadtab[i].fnkeysymbol[0] != '\0'; i++) { + if (same_CTLKEY(keypadstr, &edt_keypadtab[i].fnkeymsg[fkeymode])) { + return i; + } + } + return -1; +} + +static int +find_function_key(char *keypadstr, int fkeymode) +{ + int i; + + for (i = 0; fnkeytab[i].fnkeysymbol[0] != '\0'; i++) { + if (same_CTLKEY(keypadstr, &fnkeytab[i].fnkeymsg[fkeymode])) { + return i; + } + } + return -1; +} + +static int +find_num_keypad_key(char *keypadstr, int fkeymode) +{ + int i; + + for (i = 0; num_keypadtab[i].fnkeysymbol[0] != '\0'; i++) { + if (same_CTLKEY(keypadstr, &num_keypadtab[i].fnkeymsg[fkeymode])) { + return i; + } + } + return -1; +} + +static void +set_keyboard_layout(struct natkey *table) +{ + int i, j; + + for (j = 0; table[j].natc != '\0'; j++) { + for (i = 0; keytab[i].c != '\0'; i++) { + if (keytab[i].row == table[j].natrow && + keytab[i].col == table[j].natcol) { + keytab[i].c = table[j].natc; + keytab[i].symbol = table[j].natsymbol; + break; + } + } + } +} + +static int +default_layout(MENU_ARGS) +{ + /* FIXME: nothing resets the default keytab to original state */ + return MENU_NOHOLD; +} + +static int +same_CTLKEY(char *response, CTLKEY *code) +{ + switch (code->prefix) { + case CSI: + if ((response = skip_csi(response)) == 0) + return FALSE; + break; + case SS3: + if ((response = skip_ss3(response)) == 0) + return FALSE; + break; + case ESC: + if (*response++ != ESC) + return FALSE; + default: + break; + } + return !strcmp(response, code->msg); +} + +static int +set_D47_layout(MENU_ARGS) +{ + static struct natkey table[] = + { + { '"', 1, 12, "\""}, + { '&', 1, 32, "&" }, + { '/', 1, 37, "/" }, + { '(', 1, 42, "(" }, + { ')', 1, 47, ")" }, + { '=', 1, 52, "=" }, + { '+', 1, 56, "+" }, { '?', 1, 57, "?" }, + { '`', 1, 61, "`" }, { '@', 1, 62, "@" }, + { '<', 1, 66, "<" }, { '>', 1, 67, ">" }, + { '}', 2, 58, "}" }, { ']', 2, 59, "]" }, + { '^', 2, 63, "^" }, { '~', 2, 64, "~" }, + { '|', 3, 55, "|" }, {'\\', 3, 56,"\\" }, + { '{', 3, 60, "{" }, { '[', 3, 61, "[" }, + {'\'', 3, 71, "'" }, { '*', 3, 72, "*" }, + { ',', 4, 47, "," }, { ';', 4, 48, ";" }, + { '.', 4, 52, "." }, { ':', 4, 53, ":" }, + { '-', 4, 57, "-" }, { '_', 4, 58, "_" }, + {'\0', 0, 0, "" } + }; + + set_keyboard_layout(table); + return MENU_NOHOLD; +} + +static int +set_E47_layout(MENU_ARGS) +{ + static struct natkey table[] = + { + { '"', 1, 12, "\""}, + { '&', 1, 32, "&" }, + { '/', 1, 37, "/" }, + { '(', 1, 42, "(" }, + { ')', 1, 47, ")" }, + { '=', 1, 52, "=" }, + { '+', 1, 56, "+" }, { '?', 1, 57, "?" }, + { '`', 1, 61, "`" }, { '@', 1, 62, "@" }, + { '<', 1, 66, "<" }, { '>', 1, 67, ">" }, + { '}', 2, 58, "}" }, { ']', 2, 59, "]" }, + { '~', 2, 63, "~" }, { '^', 2, 64, "^" }, + { '|', 3, 55, "|" }, {'\\', 3, 56,"\\" }, + { '{', 3, 60, "{" }, { '[', 3, 61, "[" }, + {'\'', 3, 71, "'" }, { '*', 3, 72, "*" }, + { ',', 4, 47, "," }, { ';', 4, 48, ";" }, + { '.', 4, 52, "." }, { ':', 4, 53, ":" }, + { '-', 4, 57, "-" }, { '_', 4, 58, "_" }, + {'\0', 0, 0, "" } + }; + + set_keyboard_layout(table); + return MENU_NOHOLD; +} + +static void +show_character(int i, char *scs_params, int hilite) +{ + int special = ((scs_params != 0) && (strlen(keytab[i].symbol) == 1)); + + vt_move(1 + 2 * keytab[i].row, 1 + keytab[i].col); + if (hilite) vt_hilite(TRUE); + if (special) esc(scs_params); + printf("%s", keytab[i].symbol); + if (special) scs(0, 'B'); + if (hilite) vt_hilite(FALSE); +} + +static void +show_cursor_keys(int flag) +{ + int i; + + curkeytab = (terminal_id() < 200) ? VT100_curkeytab : LK401_curkeytab; + + for (i = 0; curkeytab[i].curkeysymbol[0] != '\0'; i++) { + vt_move(1 + 2 * curkeytab[i].curkeyrow, 1 + curkeytab[i].curkeycol); + if (flag) vt_hilite(TRUE); + printf("%s", curkeytab[i].curkeysymbol); + if (flag) vt_hilite(FALSE); + } +} + +static void +show_editing_keypad(int flag) +{ + if (terminal_id() >= 200) { + int i; + + for (i = 0; edt_keypadtab[i].fnkeysymbol[0] != '\0'; i++) { + vt_move(1 + 2 * edt_keypadtab[i].fnkeyrow, 1 + edt_keypadtab[i].fnkeycol); + if (flag) vt_hilite(TRUE); + printf("%s", edt_keypadtab[i].fnkeysymbol); + if (flag) vt_hilite(FALSE); + } + } +} + +static void +show_function_keys(int flag) +{ + if (terminal_id() >= 200) { + int i; + + for (i = 0; fnkeytab[i].fnkeysymbol[0] != '\0'; i++) { + vt_move(1 + 2 * fnkeytab[i].fnkeyrow, 1 + fnkeytab[i].fnkeycol); + if (flag) vt_hilite(TRUE); + printf("%s", fnkeytab[i].fnkeysymbol); + if (flag) vt_hilite(FALSE); + } + } +} + +static void +show_keyboard(int flag, char *scs_params) +{ + int i; + + if (terminal_id() >= 200) /* LK201 _looks_ the same as LK401 (to me) */ + keytab = LK401_keytab; + else + keytab = VT100_keytab; + + for (i = 0; keytab[i].c != '\0'; i++) { + show_character(i, scs_params, TRUE); + } +} + +static void +show_numeric_keypad(int flag) +{ + int i; + + for (i = 0; num_keypadtab[i].fnkeysymbol[0] != '\0'; i++) { + vt_move(1 + 2 * num_keypadtab[i].fnkeyrow, 1 + num_keypadtab[i].fnkeycol); + if (flag) vt_hilite(TRUE); + printf("%s", num_keypadtab[i].fnkeysymbol); + if (flag) vt_hilite(FALSE); + } +} + +/******************************************************************************/ + +static int +tst_AnswerBack(MENU_ARGS) +{ + char *abmstr; + + set_tty_crmod(TRUE); + vt_clear(2); + vt_move(5,1); + println("Finally, a check of the ANSWERBACK MESSAGE, which can be sent"); + println("by pressing CTRL-BREAK. The answerback message can be loaded"); + println("in SET-UP B by pressing SHIFT-A and typing e.g."); + println(""); + println(" \" H e l l o , w o r l d Return \""); + println(""); + println("(the double-quote characters included). Do that, and then try"); + println("to send an answerback message with CTRL-BREAK. If it works,"); + println("the answerback message should be displayed in reverse mode."); + println("Finish with a single RETURN."); + + set_tty_crmod(FALSE); + do { + vt_move(17,1); + inflush(); + abmstr = get_reply(); + vt_move(17,1); + vt_el(0); + chrprint(abmstr); + } while (strcmp(abmstr,"\r")); + restore_ttymodes(); + return MENU_NOHOLD; +} + +static int +tst_AutoRepeat(MENU_ARGS) +{ + char arptstring[BUFSIZ]; + + vt_clear(2); + vt_move(10,1); + println("Test of the AUTO REPEAT feature"); + + println(""); + println("Hold down an alphanumeric key for a while, then push RETURN."); + printf("%s", "Auto Repeat OFF: "); + rm("?8"); /* DECARM */ + inputline(arptstring); + if (LOG_ENABLED) + fprintf(log_fp, "Input: %s\n", arptstring); + if (strlen(arptstring) == 0) println("No characters read!??"); + else if (strlen(arptstring) == 1) println("OK."); + else println("Too many characters read."); + println(""); + + println("Hold down an alphanumeric key for a while, then push RETURN."); + printf("%s", "Auto Repeat ON: "); + sm("?8"); /* DECARM */ + inputline(arptstring); + if (LOG_ENABLED) + fprintf(log_fp, "Input: %s\n", arptstring); + if (strlen(arptstring) == 0) println("No characters read!??"); + else if (strlen(arptstring) == 1) println("Not enough characters read."); + else println("OK."); + println(""); + + return MENU_HOLD; +} + +static int +tst_ControlKeys(MENU_ARGS) +{ + int i, okflag; + int kbdc; + char temp[80]; + char *kbds = strcpy(temp, " "); + + static struct ckey { + int ccount; + char *csymbol; + } ckeytab [] = { + { 0, "NUL (CTRL-@ or CTRL-Space)" }, + { 0, "SOH (CTRL-A)" }, + { 0, "STX (CTRL-B)" }, + { 0, "ETX (CTRL-C)" }, + { 0, "EOT (CTRL-D)" }, + { 0, "ENQ (CTRL-E)" }, + { 0, "ACK (CTRL-F)" }, + { 0, "BEL (CTRL-G)" }, + { 0, "BS (CTRL-H) (BACK SPACE)" }, + { 0, "HT (CTRL-I) (TAB)" }, + { 0, "LF (CTRL-J) (LINE FEED)" }, + { 0, "VT (CTRL-K)" }, + { 0, "FF (CTRL-L)" }, + { 0, "CR (CTRL-M) (RETURN)" }, + { 0, "SO (CTRL-N)" }, + { 0, "SI (CTRL-O)" }, + { 0, "DLE (CTRL-P)" }, + { 0, "DC1 (CTRL-Q) (X-On)" }, + { 0, "DC2 (CTRL-R)" }, + { 0, "DC3 (CTRL-S) (X-Off)" }, + { 0, "DC4 (CTRL-T)" }, + { 0, "NAK (CTRL-U)" }, + { 0, "SYN (CTRL-V)" }, + { 0, "ETB (CTRL-W)" }, + { 0, "CAN (CTRL-X)" }, + { 0, "EM (CTRL-Y)" }, + { 0, "SUB (CTRL-Z)" }, + { 0, "ESC (CTRL-[) (ESCAPE)" }, + { 0, "FS (CTRL-\\ or CTRL-? or CTRL-_)" }, + { 0, "GS (CTRL-])" }, + { 0, "RS (CTRL-^ or CTRL-~ or CTRL-`)" }, + { 0, "US (CTRL-_ or CTRL-?)" } + }; + + vt_clear(2); + for (i = 0; i < 32; i++) { + vt_move(1 + (i % 16), 1 + 40 * (i / 16)); + vt_hilite(TRUE); + printf("%s", ckeytab[i].csymbol); + vt_hilite(FALSE); + } + vt_move(19,1); + set_tty_crmod(TRUE); + println( + "Push each CTRL-key TWICE. Note that you should be able to send *all*"); + println( + "CTRL-codes twice, including CTRL-S (X-Off) and CTRL-Q (X-Off)!"); + println( + "Finish with DEL (also called DELETE or RUB OUT), or wait 1 minute."); + set_tty_raw(TRUE); + do { + vt_move(max_lines-1,1); kbdc = inchar(); + vt_move(max_lines-1,1); vt_el(0); + if (kbdc < 32) { + printf(" %s", ckeytab[kbdc].csymbol); + if (LOG_ENABLED) + fprintf(log_fp, "Key: %s\n", ckeytab[kbdc].csymbol); + } else { + sprintf(kbds, "%c", kbdc); + chrprint(kbds); + printf("%s", " -- not a CTRL key"); + } + if (kbdc < 32) ckeytab[kbdc].ccount++; + if (ckeytab[kbdc].ccount == 2) { + vt_move(1 + (kbdc % 16), 1 + 40 * (kbdc / 16)); + printf("%s", ckeytab[kbdc].csymbol); + } + } while (kbdc != '\177'); + + restore_ttymodes(); + vt_move(max_lines,1); + okflag = 1; + for (i = 0; i < 32; i++) if (ckeytab[i].ccount < 2) okflag = 0; + if (okflag) printf("%s", "OK. "); + else printf("%s", "You have not been able to send all CTRL keys! "); + return MENU_HOLD; +} + +static int +tst_CursorKeys(MENU_ARGS) +{ + int i; + int ckeymode; + char *curkeystr; + VTLEVEL save; + + static char *curkeymodes[3] = { + "ANSI / Cursor key mode RESET", + "ANSI / Cursor key mode SET", + "VT52 Mode" + }; + + vt_clear(2); + save_level(&save); + show_keyboard(0, (char *)0); + show_function_keys(0); + show_editing_keypad(0); + show_numeric_keypad(0); + vt_move(max_lines-2,1); + + set_tty_crmod(FALSE); + set_tty_echo(FALSE); + + for (ckeymode = 0; ckeymode <= 2; ckeymode++) { + if (ckeymode) sm("?1"); /* DECCKM */ + else rm("?1"); + + show_cursor_keys(1); + vt_move(21,1); printf("<%s>%20s", curkeymodes[ckeymode], ""); + vt_move(max_lines-2,1); vt_el(0); + vt_move(max_lines-2,1); printf("%s", "Press each cursor key. Finish with TAB."); + for(;;) { + vt_move(max_lines-1,1); + if (ckeymode == 2) set_level(0); /* VT52 mode */ + curkeystr = instr(); + set_level(1); /* ANSI mode */ + + vt_move(max_lines-1,1); vt_el(0); + vt_move(max_lines-1,1); chrprint(curkeystr); + + if (!strcmp(curkeystr,"\t")) break; + if ((i = find_cursor_key(curkeystr, ckeymode)) >= 0) { + vt_hilite(TRUE); + show_result(" (%s key) ", curkeytab[i].curkeyname); + vt_hilite(FALSE); + vt_move(1 + 2 * curkeytab[i].curkeyrow, 1 + curkeytab[i].curkeycol); + printf("%s", curkeytab[i].curkeysymbol); + } else { + vt_hilite(TRUE); + show_result("%s", " (Unknown cursor key) "); + vt_hilite(FALSE); + } + } + } + + restore_level(&save); + vt_move(max_lines-1,1); vt_el(0); + restore_ttymodes(); + return MENU_MERGE; +} + +static int +tst_EditingKeypad(MENU_ARGS) +{ + int i; + int fkeymode; + char *fnkeystr; + VTLEVEL save; + + static char *fnkeymodes[] = { + "Normal mode", + "VT100/VT52 mode (none should be recognized)" + }; + + save_level(&save); + show_keyboard(0, (char *)0); + show_cursor_keys(0); + show_function_keys(0); + show_numeric_keypad(0); + vt_move(max_lines-2,1); + + if (terminal_id() < 200) { + printf("Sorry, a real VT%d terminal doesn't have an editing keypad\n", terminal_id()); + return MENU_HOLD; + } + + set_tty_crmod(FALSE); + set_tty_echo(FALSE); + + for (fkeymode = 0; fkeymode <= 1; fkeymode++) { + show_editing_keypad(1); + vt_move(21,1); printf("<%s>%20s", fnkeymodes[fkeymode], ""); + vt_move(max_lines-2,1); vt_el(0); + vt_move(max_lines-2,1); printf("%s", "Press each function key. Finish with TAB."); + + for(;;) { + vt_move(max_lines-1,1); + if (fkeymode == 0) default_level(); + if (fkeymode != 0) set_level(1); /* VT100 mode */ + + fnkeystr = instr(); + + vt_move(max_lines-1,1); vt_el(0); + vt_move(max_lines-1,1); chrprint(fnkeystr); + + if (!strcmp(fnkeystr,"\t")) break; + if ((i = find_editing_key(fnkeystr, fkeymode)) >= 0) { + vt_hilite(TRUE); + show_result(" (%s key) ", edt_keypadtab[i].fnkeyname); + vt_hilite(FALSE); + vt_move(1 + 2 * edt_keypadtab[i].fnkeyrow, 1 + edt_keypadtab[i].fnkeycol); + printf("%s", edt_keypadtab[i].fnkeysymbol); + } else { + vt_hilite(TRUE); + show_result("%s", " (Unknown function key) "); + vt_hilite(FALSE); + } + } + } + + vt_move(max_lines-1,1); vt_el(0); + restore_level(&save); + restore_ttymodes(); + return MENU_MERGE; +} + +static int +tst_FunctionKeys(MENU_ARGS) +{ + int i; + int fkeymode; + char *fnkeystr; + VTLEVEL save; + + static char *fnkeymodes[] = { + "Normal mode (F6-F20, except xterm also F1-F5)", + "VT100/VT52 mode (F11-F13 only)" + }; + + save_level(&save); + show_keyboard(0, (char *)0); + show_cursor_keys(0); + show_editing_keypad(0); + show_numeric_keypad(0); + vt_move(max_lines-2,1); + + if (terminal_id() < 200) { + printf("Sorry, a real VT%d terminal doesn't have function keys\n", terminal_id()); + return MENU_HOLD; + } + + set_tty_crmod(FALSE); + set_tty_echo(FALSE); + + for (fkeymode = 0; fkeymode <= 1; fkeymode++) { + show_function_keys(1); + vt_move(21,1); printf("<%s>%20s", fnkeymodes[fkeymode], ""); + vt_move(max_lines-2,1); vt_el(0); + vt_move(max_lines-2,1); printf("%s", "Press each function key. Finish with TAB."); + + for(;;) { + vt_move(max_lines-1,1); + if (fkeymode == 0) default_level(); + if (fkeymode != 0) set_level(1); /* VT100 mode */ + + fnkeystr = instr(); + + vt_move(max_lines-1,1); vt_el(0); + vt_move(max_lines-1,1); chrprint(fnkeystr); + + if (!strcmp(fnkeystr,"\t")) break; + if ((i = find_function_key(fnkeystr, fkeymode)) >= 0) { + vt_hilite(TRUE); + show_result(" (%s key) ", fnkeytab[i].fnkeyname); + vt_hilite(FALSE); + vt_move(1 + 2 * fnkeytab[i].fnkeyrow, 1 + fnkeytab[i].fnkeycol); + printf("%s", fnkeytab[i].fnkeysymbol); + } else { + vt_hilite(TRUE); + show_result("%s", " (Unknown function key) "); + vt_hilite(FALSE); + } + } + } + + vt_move(max_lines-1,1); vt_el(0); + restore_level(&save); + restore_ttymodes(); + return MENU_MERGE; +} + +static int +tst_NumericKeypad(MENU_ARGS) +{ + int i; + int fkeymode; + char *fnkeystr; + VTLEVEL save; + + static char *fnkeymodes[4] = { + "ANSI Numeric mode", + "ANSI Application mode", + "VT52 Numeric mode", + "VT52 Application mode" + }; + + vt_clear(2); + save_level(&save); + show_keyboard(0, (char *)0); + show_cursor_keys(0); + show_function_keys(0); + show_editing_keypad(0); + vt_move(max_lines-2,1); + + set_tty_crmod(FALSE); + set_tty_echo(FALSE); + + for (fkeymode = 0; fkeymode <= 3; fkeymode++) { + show_numeric_keypad(1); + vt_move(21,1); printf("<%s>%20s", fnkeymodes[fkeymode], ""); + vt_move(max_lines-2,1); vt_el(0); + vt_move(max_lines-2,1); printf("%s", "Press each function key. Finish with TAB."); + + for(;;) { + vt_move(max_lines-1,1); + if (fkeymode >= 2) set_level(0); /* VT52 mode */ + if (fkeymode % 2) deckpam(); /* Application mode */ + else deckpnm(); /* Numeric mode */ + fnkeystr = instr(); + set_level(1); /* ANSI mode */ + + vt_move(max_lines-1,1); vt_el(0); + vt_move(max_lines-1,1); chrprint(fnkeystr); + + if (!strcmp(fnkeystr,"\t")) break; + if ((i = find_num_keypad_key(fnkeystr, fkeymode)) >= 0) { + vt_hilite(TRUE); + show_result(" (%s key) ", num_keypadtab[i].fnkeyname); + vt_hilite(FALSE); + vt_move(1 + 2 * num_keypadtab[i].fnkeyrow, 1 + num_keypadtab[i].fnkeycol); + printf("%s", num_keypadtab[i].fnkeysymbol); + } else { + vt_hilite(TRUE); + show_result("%s", " (Unknown function key) "); + vt_hilite(FALSE); + } + } + } + + vt_move(max_lines-1,1); vt_el(0); + restore_level(&save); + restore_ttymodes(); + return MENU_MERGE; +} + +static int +tst_KeyboardLayout(MENU_ARGS) +{ + static MENU keyboardmenu[] = { + { "Standard American ASCII layout", default_layout }, + { "Swedish national layout D47", set_D47_layout }, + { "Swedish national layout E47", set_E47_layout }, + /* add new keyboard layouts here */ + { "", 0 } + }; + + if (terminal_id() < 200) { + vt_clear(2); + keytab = VT100_keytab; + title(0); println("Choose keyboard layout:"); + (void) menu(keyboardmenu); + } + + tst_keyboard_layout((char *)0); + + return MENU_MERGE; +} + +static int +tst_LED_Lights(MENU_ARGS) +{ + int i; + char *ledmsg[6], *ledseq[6]; + + ledmsg[0] = "L1 L2 L3 L4"; ledseq[0] = "1;2;3;4"; + ledmsg[1] = " L2 L3 L4"; ledseq[1] = "1;0;4;3;2"; + ledmsg[2] = " L2 L3"; ledseq[2] = "1;4;;2;3"; + ledmsg[3] = "L1 L2"; ledseq[3] = ";;2;1"; + ledmsg[4] = "L1"; ledseq[4] = "1"; + ledmsg[5] = ""; ledseq[5] = ""; + +#ifdef UNIX + fflush(stdout); +#endif + vt_clear(2); + vt_move(10,1); + println("These LEDs (\"lamps\") on the keyboard should be on:"); + for (i = 0; i <= 5; i++) { + vt_move(10,52); vt_el(0); printf("%s", ledmsg[i]); + decll("0"); + decll(ledseq[i]); + vt_move(12,1); holdit(); + } + return MENU_NOHOLD; +} + +/******************************************************************************/ +int +tst_keyboard_layout(char *scs_params) +{ + int i; + int kbdc; + char temp[80]; + char *kbds = strcpy(temp, " "); + + vt_clear(2); + show_keyboard(1, scs_params); + show_cursor_keys(0); + show_function_keys(0); + show_editing_keypad(0); + show_numeric_keypad(0); + vt_move(max_lines-2,1); + + set_tty_crmod(FALSE); + set_tty_echo(FALSE); + + inflush(); + printf("Press each key, both shifted and unshifted. Finish with RETURN:"); + do { /* while (kbdc != 13) */ + vt_move(max_lines-1,1); kbdc = inchar(); + vt_move(max_lines-1,1); vt_el(0); + if (scs_params != 0 && kbdc > ' ' && kbdc < '\177') { + vt_hilite(TRUE); + esc(scs_params); + printf(" %c ", kbdc); + scs(0, 'B'); + printf("= %d ", kbdc); + scs(0, 'B'); + vt_hilite(FALSE); + } else { + sprintf(kbds, "%c", kbdc); + chrprint(kbds); + } + for (i = 0; keytab[i].c != '\0'; i++) { + if (keytab[i].c == kbdc) { + show_character(i, scs_params, FALSE); + /* LK401 keyboard will have more than one hit for '<' and '>' */ + } + } + } while (kbdc != 13); + + vt_move(max_lines-1,1); vt_el(0); + restore_ttymodes(); + return MENU_MERGE; +} + +/******************************************************************************/ +int +tst_keyboard(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "LED Lights", tst_LED_Lights }, + { "Auto Repeat", tst_AutoRepeat }, + { "KeyBoard Layout", tst_KeyboardLayout }, + { "Cursor Keys", tst_CursorKeys }, + { "Numeric Keypad", tst_NumericKeypad }, + { "Editing Keypad", tst_EditingKeypad }, + { "Function Keys", tst_FunctionKeys }, + { "AnswerBack", tst_AnswerBack }, + { "Control Keys", tst_ControlKeys }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("Keyboard Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/main.c b/doc/vttest-20011130/main.c new file mode 100644 index 0000000..1ab3752 --- /dev/null +++ b/doc/vttest-20011130/main.c @@ -0,0 +1,1382 @@ +/* $Id$ */ + +/* + VTTEST.C + + Written November 1983 - July 1984 by Per Lindberg, + Stockholm University Computer Center (QZ), Sweden. + + THE MAD PROGRAMMER STRIKES AGAIN! + + This software is (c) 1984 by QZ + Non-commercial use and copying allowed. + +If you are developing a commercial product, and use this program to do +it, and that product is successful, please send a sum of money of your +choice to the address below. + +*/ + +#include <vttest.h> +#include <ttymodes.h> +#include <esc.h> + +FILE *log_fp = 0; +char *current_menu = ""; +int brkrd; +int reading; +int log_disabled = FALSE; +int max_lines = 24; +int max_cols = 132; +int min_cols = 80; +int input_8bits = FALSE; +int output_8bits = FALSE; +int tty_speed = DEFAULT_SPEED; /* nominal speed, for padding */ +int use_padding = FALSE; +jmp_buf intrenv; + +static void +usage(void) +{ + fprintf(stderr, "Usage: vttest [-l] [-p] [-8] [-f font] [24x80.132]\n"); + exit(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + static MENU mainmenu[] = { + { "Exit", 0 }, + { "Test of cursor movements", tst_movements }, + { "Test of screen features", tst_screen }, + { "Test of character sets", tst_characters }, + { "Test of double-sized characters", tst_doublesize }, + { "Test of keyboard", tst_keyboard }, + { "Test of terminal reports", tst_reports }, + { "Test of VT52 mode", tst_vt52 }, + { "Test of VT102 features (Insert/Delete Char/Line)", tst_insdel }, + { "Test of known bugs", tst_bugs }, + { "Test of reset and self-test", tst_rst }, + { "Test non-VT100 (e.g., VT220, XTERM) terminals", tst_nonvt100 }, + { "Modify test-parameters", tst_setup }, + { "", 0 } + }; + + while (argc-- > 1) { + char *opt = *++argv; + if (*opt == '-') { + while (*++opt != '\0') { + switch (*opt) { + case 'f': + if (!*++opt) { + if (argc-- < 1) + usage(); + opt = *++argv; + } + setup_softchars(opt); + opt = "?"; + break; + case 'l': + enable_logging(); + break; + case 'p': + use_padding = TRUE; + break; + case '8': + output_8bits = TRUE; + break; + default: + usage(); + } + } + } else { + /* + * Allow user to specify geometry of terminal to accommodate quasi-VT100 + * terminals such as Linux console and xterm. + */ + char *p = argv[0]; + char *q; + int values[3], n, m; + for (n = 0; n < 3; n++) { + if (!*p) + break; + if ((m = strtol(p, &q, 10)) > 0) { + values[n] = m; + p = q; + if (*p) + p++; + } else { + break; + } + } + switch (n) { + case 3: + max_cols = values[2]; + /* FALLTHRU */ + case 2: + min_cols = values[1]; + /* FALLTHRU */ + case 1: + max_lines = values[0]; + break; + } + if ((max_cols < min_cols) || (n == 0)) { + usage(); + } + } + } + +#ifdef UNIX + initterminal(setjmp(intrenv)); + signal(SIGINT, onbrk); + signal(SIGTERM, onterm); + reading = FALSE; +#else + initterminal(0); +#endif + do { + vt_clear(2); + title(0); printf("VT100 test program, version %d.%d", RELEASE, PATCHLEVEL); +#ifdef PATCH_DATE + if (PATCH_DATE) + printf(" (%d)", PATCH_DATE); +#endif + + title(1); + if (max_lines != 24 + || min_cols != 80 + || max_cols != 132) + printf("Screen size %dx%d (%d max) ", max_lines, min_cols, max_cols); + if (tty_speed != DEFAULT_SPEED) + printf("Line speed %dbd ", tty_speed); + if (use_padding) + printf(" (padded)"); + + title(2); println("Choose test type:"); + } while (menu(mainmenu)); + bye(); +} + +int +tst_movements(MENU_ARGS) +{ + /* Test of: + CUF (Cursor Forward) + CUB (Cursor Backward) + CUD (Cursor Down) IND (Index) NEL (Next Line) + CUU (Cursor Up) RI (Reverse Index) + CUP (Cursor Position) HVP (Horizontal and Vertical Position) + ED (Erase in Display) + EL (Erase in Line) + DECALN (Screen Alignment Display) + <CR> <BS> + Cursor control characters inside CSI sequences + */ + + int i, row, col, pass, width, hlfxtra; + char *ctext = "This is a correct sentence"; + + for (pass = 0; pass <= 1; pass++) { + int inner_l, inner_r; + + if (pass == 0) { deccolm(FALSE); width = min_cols; } + else { deccolm(TRUE); width = max_cols; } + + /* Compute left/right columns for a 60-column box centered in 'width' */ + inner_l = (width - 60) / 2; + inner_r = 61 + inner_l; + hlfxtra = (width - 80) / 2; + + decaln(); + cup( 9,inner_l); ed(1); + cup(18,60+hlfxtra); ed(0); el(1); + cup( 9,inner_r); el(0); + /* 132: 36..97 */ + /* 80: 10..71 */ + for (row = 10; row <= 16; row++) { + cup(row, inner_l); el(1); + cup(row, inner_r); el(0); + } + cup(17,30); el(2); + for (col = 1; col <= width; col++) { + hvp(max_lines, col); printf("*"); + hvp( 1, col); printf("*"); + } + cup(2,2); + for (row = 2; row <= max_lines-1; row++) { + printf("+"); + cub(1); + ind(); + } + cup(max_lines-1,width-1); + for (row = max_lines-1; row >=2; row--) { + printf("+"); + cub(1); ri(); + } + cup(2,1); + for (row = 2; row <= max_lines-1; row++) { + printf("*"); cup(row, width); + printf("*"); + cub(10); + if (row < 10) nel(); + else printf("\n"); + } + cup(2,10); + cub(42+hlfxtra); cuf(2); + for (col = 3; col <= width-2; col++) { + printf("+"); + cuf(0); cub(2); cuf(1); + } + cup(max_lines-1,inner_r-1); + cuf(42+hlfxtra); cub(2); + for (col = width-2; col >= 3; col--) { + printf("+"); + cub(1); cuf(1); cub(0); printf("%c", 8); + } + cup( 1, 1); cuu(10); cuu(1); cuu(0); + cup(max_lines,width); cud(10); cud(1); cud(0); + + cup(10,2+inner_l); + for (row = 10; row <= 15; row++) { + for (col = 2+inner_l; col <= inner_r-2; col++) printf(" "); + cud(1); cub(58); + } + cuu(5); cuf(1); + printf("The screen should be cleared, and have an unbroken bor-"); + cup(12,inner_l+3); + printf("der of *'s and +'s around the edge, and exactly in the"); + cup(13,inner_l+3); + printf("middle there should be a frame of E's around this text"); + cup(14,inner_l+3); + printf("with one (1) free position around it. "); + holdit(); + } + deccolm(FALSE); + + vt_clear(2); + vt_move(1,1); + println("Test of cursor-control characters inside ESC sequences."); + println("Below should be two identical lines:"); + println(""); + println("A B C D E F G H I J K L M N O P Q R S"); + for (i = 1; i < 20; i++) { + printf("%c", '@' + i); + do_csi("2\010C"); /* Two forward, one backspace */ + } + println(""); + println(""); + holdit(); + + vt_clear(2); + vt_move(1,1); + println("Test of leading zeros in ESC sequences."); + printf("Two lines below you should see the sentence \"%s\".",ctext); + for (col = 1; *ctext; col++) + printf("%s00000000004;00000000%dH%c", csi_output(), col, *ctext++); + cup(20,1); + return MENU_HOLD; +} + +/* Scrolling test (used also in color-testing) */ +void do_scrolling(void) +{ + int soft, row, down, i; + + ed(2); + sm("?6"); /* Origin mode (relative) */ + for (soft = -1; soft <= 0; soft++) { + if (soft) decsclm(TRUE); + else decsclm(FALSE); + for (row = 12; row >= 1; row -= 11) { + decstbm(row, max_lines-row+1); + ed(2); + for (down = 0; down >= -1; down--) { + if (down) cuu(max_lines); + else cud(max_lines); + for (i = 1; i <= 30; i++) { + printf("%s scroll %s region %d Line %d\n", + soft ? "Soft" : "Jump", + down ? "down" : "up", + 2*(13-row), i); + if (down) { ri(); ri(); } + else if (soft) extra_padding(10); + } + } + holdit(); + } + } +} + +int +tst_screen(MENU_ARGS) +{ + /* Test of: + - DECSTBM (Set Top and Bottom Margins) + - TBC (Tabulation Clear) + - HTS (Horizontal Tabulation Set) + - SM RM (Set/Reset mode): - 80/132 chars + - Origin: Realtive/absolute + - Scroll: Smooth/jump + - Wraparound + - SGR (Select Graphic Rendition) + - SM RM (Set/Reset Mode) - Inverse + - DECSC (Save Cursor) + - DECRC (Restore Cursor) + */ + + int i, j, cset, row, col, background; + + static char *tststr = "*qx`"; + static char *attr[5] = { ";0", ";1", ";4", ";5", ";7" }; + + cup(1,1); + sm("?7"); /* DECAWM: Wrap Around ON */ + for (col = 1; col <= min_cols*2; col++) printf("*"); + rm("?7"); /* DECAWM: Wrap Around OFF */ + cup(3,1); + for (col = 1; col <= min_cols*2; col++) printf("*"); + sm("?7"); /* DECAWM: Wrap Around ON */ + cup(5,1); + println("This should be three identical lines of *'s completely filling"); + println("the top of the screen without any empty lines between."); + println("(Test of WRAP AROUND mode setting.)"); + holdit(); + + ed(2); + tbc(3); + cup(1,1); + for (col = 1; col <= min_cols-2; col += 3) { + cuf(3); hts(); + } + cup(1,4); + for (col = 4; col <= min_cols-2; col += 6) { + tbc(0); cuf(6); + } + cup(1,7); tbc(1); tbc(2); /* no-op */ + cup(1,1); for (col = 1; col <= min_cols-2; col += 6) printf("\t*"); + cup(2,2); for (col = 2; col <= min_cols-2; col += 6) printf(" *"); + cup(4,1); + println("Test of TAB setting/resetting. These two lines"); + printf("should look the same. "); + holdit(); + for (background = 0; background <= 1; background++) { + if (background) decscnm(FALSE); + else decscnm(TRUE); + deccolm(TRUE); /* 132 cols */ + ed(2); /* VT100 clears screen on SM3/RM3, but not obviously, so... */ + cup(1,1); tbc(3); + for (col = 1; col <= max_cols; col += 8) { + cuf(8); hts(); + } + cup(1,1); + for (col = 1; col <= max_cols; col += 10) + printf("%.*s", (max_cols > col) ? (max_cols - col): 10, "1234567890"); + for (row = 3; row <= 20; row++) { + cup(row,row); + printf("This is %d column mode, %s background.", max_cols, + background ? "dark" : "light"); + } + holdit(); + deccolm(FALSE); /* 80 cols */ + ed(2); /* VT100 clears screen on SM3/RM3, but not obviously, so... */ + cup(1,1); + for (col = 1; col <= min_cols; col += 10) + printf("%.*s", (min_cols > col) ? (min_cols - col): 10, "1234567890"); + for (row = 3; row <= 20; row++) { + cup(row,row); + printf("This is %d column mode, %s background.", min_cols, + background ? "dark" : "light"); + } + holdit(); + } + do_scrolling(); + ed(2); + decstbm(max_lines-1,max_lines); + printf( + "\nOrigin mode test. This line should be at the bottom of the screen."); + cup(1,1); + printf("%s", + "This line should be the one above the bottom of the screen. "); + holdit(); + ed(2); + rm("?6"); /* Origin mode (absolute) */ + cup(max_lines,1); + printf( + "Origin mode test. This line should be at the bottom of the screen."); + cup(1,1); + printf("%s", "This line should be at the top of the screen. "); + holdit(); + decstbm(1,max_lines); + + ed(2); + cup( 1,20); printf("Graphic rendition test pattern:"); + cup( 4, 1); sgr("0"); printf("vanilla"); + cup( 4,40); sgr("0;1"); printf("bold"); + cup( 6, 6); sgr(";4"); printf("underline"); + cup( 6,45);sgr(";1");sgr("4");printf("bold underline"); + cup( 8, 1); sgr("0;5"); printf("blink"); + cup( 8,40); sgr("0;5;1"); printf("bold blink"); + cup(10, 6); sgr("0;4;5"); printf("underline blink"); + cup(10,45); sgr("0;1;4;5"); printf("bold underline blink"); + cup(12, 1); sgr("1;4;5;0;7"); printf("negative"); + cup(12,40); sgr("0;1;7"); printf("bold negative"); + cup(14, 6); sgr("0;4;7"); printf("underline negative"); + cup(14,45); sgr("0;1;4;7"); printf("bold underline negative"); + cup(16, 1); sgr("1;4;;5;7"); printf("blink negative"); + cup(16,40); sgr("0;1;5;7"); printf("bold blink negative"); + cup(18, 6); sgr("0;4;5;7"); printf("underline blink negative"); + cup(18,45); sgr("0;1;4;5;7"); printf("bold underline blink negative"); + sgr(""); + + decscnm(FALSE); /* Inverse video off */ + cup(max_lines-1,1); el(0); printf("Dark background. "); holdit(); + decscnm(TRUE); /* Inverse video */ + cup(max_lines-1,1); el(0); printf("Light background. "); holdit(); + decscnm(FALSE); + ed(2); + cup(8,12); printf("normal"); + cup(8,24); printf("bold"); + cup(8,36); printf("underscored"); + cup(8,48); printf("blinking"); + cup(8,60); printf("reversed"); + cup(10,1); printf("stars:"); + cup(12,1); printf("line:"); + cup(14,1); printf("x'es:"); + cup(16,1); printf("diamonds:"); + for (cset = 0; cset <= 3; cset++) { + for (i = 0; i <= 4; i++) { + cup(10 + 2 * cset, 12 + 12 * i); + sgr(attr[i]); + if (cset == 0 || cset == 2) scs_normal(); + else scs_graphics(); + for (j = 0; j <= 4; j++) { + printf("%c", tststr[cset]); + } + decsc(); + cup(cset + 1, i + 1); sgr(""); scs_normal(); printf("A"); + decrc(); + for (j = 0; j <= 4; j++) { + printf("%c", tststr[cset]); + } + } + } + sgr("0"); scs_normal(); cup(21,1); + println("Test of the SAVE/RESTORE CURSOR feature. There should"); + println("be ten characters of each flavour, and a rectangle"); + println("of 5 x 4 A's filling the top left of the screen."); + return MENU_HOLD; +} + +int +tst_doublesize(MENU_ARGS) +{ + /* Test of: + DECSWL (Single Width Line) + DECDWL (Double Width Line) + DECDHL (Double Height Line) (also implicit double width) + */ + + int col, i, w, w1; + + /* Print the test pattern in both 80 and 132 character width */ + + for(w = 0; w <= 1; w++) { + w1 = 13 * w; + + ed(2); + cup(1, 1); + if (w) { deccolm(TRUE); printf("%3d column mode", max_cols); } + else { deccolm(FALSE); printf("%3d column mode", min_cols); } + + cup( 5, 3 + 2 * w1); + printf("v------- left margin"); + + cup( 7, 3 + 2 * w1); + printf("This is a normal-sized line"); + decdhl(0); decdhl(1); decdwl(); decswl(); + + cup( 9, 2 + w1); + printf("This is a Double-width line"); + decswl(); decdhl(0); decdhl(1); decdwl(); + + cup(11, 2 + w1); + decdwl(); decswl(); decdhl(1); decdhl(0); + printf("This is a Double-width-and-height line"); + cup(12, 2 + w1); + decdwl(); decswl(); decdhl(0); decdhl(1); + printf("This is a Double-width-and-height line"); + + cup(14, 2 + w1); + decdwl(); decswl(); decdhl(1); decdhl(0); el(2); + printf("This is another such line"); + cup(15, 2 + w1); + decdwl(); decswl(); decdhl(0); decdhl(1); + printf("This is another such line"); + + cup(17, 3 + 2 * w1); + printf("^------- left margin"); + + cup(21, 1); + printf("This is not a double-width line"); + for (i = 0; i <= 1; i++) { + cup(21,6); + if (i) { printf("**is**"); decdwl(); } + else { printf("is not"); decswl(); } + cup(max_lines-1,1); holdit(); + } + } + /* Set vanilla tabs for next test */ + cup(1,1); tbc(3); for (col = 1; col <= max_cols; col += 8) { cuf(8); hts(); } + deccolm(FALSE); + ed(2); + scs_graphics(); + + cup( 8,1); decdhl(0); printf("lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk"); + cup( 9,1); decdhl(1); printf("lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk"); + cup(10,1); decdhl(0); printf("x%c%c%c%c%cx",9,9,9,9,9); + cup(11,1); decdhl(1); printf("x%c%c%c%c%cx",9,9,9,9,9); + cup(12,1); decdhl(0); printf("x%c%c%c%c%cx",9,9,9,9,9); + cup(13,1); decdhl(1); printf("x%c%c%c%c%cx",9,9,9,9,9); + cup(14,1); decdhl(0); printf("x x"); + cup(15,1); decdhl(1); printf("x x"); + cup(16,1); decdhl(0); printf("mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj"); + cup(17,1); decdhl(1); printf("mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj"); + scs_normal(); sgr("1;5"); + cup(12,3); + printf("* The mad programmer strikes again * "); + cup(13,3); printf("%c",9); cub(6); + printf("* The mad programmer strikes again *"); + sgr("0"); + cup(max_lines-2,1); + println("Another test pattern... a frame with blinking bold text,"); + printf("all in double-height double-width size. "); + holdit(); + + decstbm(8,max_lines); /* Absolute origin mode, so cursor is set at (1,1) */ + cup(8,1); + for (i = 1; i <= 12; i++) + ri(); + decstbm(0,0); /* No scroll region */ + cup(1,1); + printf("%s", "Exactly half of the box should remain. "); + return MENU_HOLD; +} + +int +tst_insdel(MENU_ARGS) +{ + /* Test of: + SM/RM(4) (= IRM (Insertion/replacement mode)) + ICH (Insert Character) + DCH (Delete character) + IL (Insert line) + DL (Delete line) + */ + + int i, row, col, sw, dblchr, scr132; + + for(scr132 = 0; scr132 <= 1; scr132++) { + if (scr132) { deccolm(TRUE); sw = max_cols; } + else { deccolm(FALSE); sw = min_cols; } + ed(2); + cup(1,1); + for (row=1; row<=max_lines; row++) { + cup(row,1); + for (col=1; col<=sw; col++) + printf("%c", 'A'-1+row); + } + cup(4,1); + printf("Screen accordion test (Insert & Delete Line). "); holdit(); + ri(); el(2); + decstbm( 2,max_lines-1); + sm("?6"); + cup(1,1); + for (row=1; row<=max_lines; row++) { + il(row); + dl(row); + } + rm("?6"); + decstbm( 0, 0); + cup(2,1); + printf( + "Top line: A's, bottom line: %c's, this line, nothing more. ", 'A'-1+max_lines); + holdit(); + cup(2,1); ed(0); + cup(1,2); + printf("B"); + cub(1); + sm("4"); + for (col=2; col<=sw-1; col++) + printf("*"); + rm("4"); + cup(4,1); + printf("Test of 'Insert Mode'. The top line should be 'A*** ... ***B'. "); + holdit(); ri(); el(2); + cup(1,2); + dch(sw-2); + cup(4,1); + printf("Test of 'Delete Character'. The top line should be 'AB'. "); + holdit(); + + for(dblchr = 1; dblchr <= 2; dblchr++) { + ed(2); + for (row=1; row<=max_lines; row++) { + cup(row,1); + if (dblchr == 2) decdwl(); + for (col=1; col<=sw/dblchr; col++) + printf("%c", 'A'-1+row); + cup(row,sw/dblchr-row); + dch(row); + } + cup(4,1); + println("The right column should be staggered "); + printf("by one. "); + holdit(); + } + ed(2); + cup(1,1); + println("If your terminal has the ANSI 'Insert Character' function"); + println("(the VT102 does not), then you should see a line like this"); + println(" A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"); + println("below:"); + println(""); + for (i = 'Z'; i >= 'A'; i--) { + printf("%c\010",i); + ich(2); + } + cup(10,1); + holdit(); + + if (sw == max_cols) deccolm(FALSE); + } + return MENU_NOHOLD; +} + +/* Test of some known VT100 bugs and misfeatures */ + +int +tst_bugs(MENU_ARGS) +{ + int i; + + static MENU menutable[] = { + { "Exit to main menu", 0 }, + { "Bug A: Smooth scroll to jump scroll", bug_a }, + { "Bug B: Scrolling region", bug_b }, + { "Bug C: Wide to narrow screen", bug_c }, + { "Bug D: Narrow to wide screen", bug_d }, + { "Bug E: Cursor move from double- to single-wide line", bug_e }, + { "Bug F: Column mode escape sequence", bug_f }, + { "Wrap around with cursor addressing", bug_w }, + { "Erase right half of double width lines", bug_l }, + { "Funny scroll regions", bug_s }, + /* Add more here */ + { "", 0 } + }; + + static char *hmsg[] = { + "Test of known bugs in the DEC VT100 series. The numbering of some of", + "the bugs (A-F) refers to the article 'VT100 MAGIC' by Sami Tabih in", + "the 'Proceedings of the DEC Users Society' at St. Louis, Missouri, May", + "1983. To understand some of the tests, you have to look at the source", + "code or the article. Of course, a good VT100-compatible terminal", + "should not have these bugs (or have some means of disabling them)! If", + "a bug appears, you might want to RESET the terminal before continuing", + "the test. There is a test of the RESET function in the main menu.", + "" }; + + do { + vt_clear(2); + vt_move(1,1); + for (i = 0; *hmsg[i]; i++) + println(hmsg[i]); + println(""); + println(" Choose bug test number:"); + } while (menu(menutable)); + return MENU_NOHOLD; +} + +/* Bug A: Smooth scroll to jump scroll */ + +int +bug_a(MENU_ARGS) +{ + int i; + + cup (10, 1); + println("This is a test of the VT100 'Scroll while toggle softscroll'"); + println("bug. The cursor may disappear, or move UP the screen, or"); + println("multiple copies of some lines may appear."); + holdit(); + + /* Invoke the bug */ + + esc ("[24H"); /* Simplified cursor movement */ + decsclm(FALSE); for (i = 1; i <= 20; i++) printf("\n"); + decsclm(TRUE); for (i = 1; i <= 10; i++) printf("\n"); + decsclm(FALSE); for (i = 1; i <= 5; i++) printf("\n"); + + /* That should be enough to show the bug. But we'll try another way: */ + decsclm(TRUE); /* Set soft scroll */ + nel (); /* "NextLine", move down */ + decsclm(FALSE); /* Reset soft scroll */ + nel (); /* "NextLine", move down */ + for (i = 1; i <= 10; i++) { /* Show the bug */ + printf ("Softscroll bug test, line %d. ", i); + holdit(); + } + println("That should have been enough to show the bug, if present."); + return MENU_HOLD; +} + +/* Bug B: Scrolling region */ + +int +bug_b(MENU_ARGS) +{ + char c; + + decaln(); + cup( 1,1); el(0); + printf("Line 11 should be double-wide, line 12 should be cleared."); + cup( 2,1); el(0); + printf("Then, the letters A-P should be written at the beginning"); + cup( 3,1); el(0); + printf("of lines 12-%d, and the empty line and A-E are scrolled away.", max_lines); + cup( 4,1); el(0); + printf("If the bug is present, some lines are confused, look at K-P."); + cup(11,1); decdwl(); + decstbm(12,max_lines); + cup(12,1); el(0); printf("Here we go... "); holdit(); + cup(12,1); ri(); /* Bug comes here */ + for (c = 'A'; c <= 'P'; c++) printf("%c\n",c); /* Bug shows here */ + holdit(); + decstbm(0,0); /* No scr. region */ + return MENU_NOHOLD; +} + +/* Bug C: Wide to narrow screen */ + +int +bug_c(MENU_ARGS) +{ + deccolm(TRUE); /* 132 column mode */ + cup(1,81); + deccolm(FALSE); /* 80 column mode */ + cup(12,5); + printf("Except for this line, the screen should be blank. "); + return MENU_HOLD; +} + +/* Bug D: Narrow to wide screen */ + +int +bug_d(MENU_ARGS) +{ + int i; + char result; + /* Make the bug appear */ + do { + cup(14,1); + + /* The original code in the article says + * PRINT ESC$; "[13;1H"; CHR$(10%); + * but I guess a cup(14,1); would do. + * (To output a pure LF might be tricky). + */ + + deccolm(TRUE); /* Make the bug visible */ + cup(1,9); decdwl(); + println("You should see blinking text at the bottom line."); + cup(3,9); decdwl(); + println("Enter 0 to exit, 1 to try to invoke the bug again."); + cup(max_lines,9); decdwl(); sgr("1;5;7"); + printf("If you can see this then the bug did not appear."); sgr(""); + cup(4,9); decdwl(); + result = inchar(); readnl(); + deccolm(FALSE); + } while (result == '1'); + decsclm(TRUE); /* Syrup scroll */ + cup(max_lines-1,1); + for (i = 1; i <= 5; i++) + println("If the bug is present, this should make things much worse!"); + holdit(); + decsclm(FALSE); /* Jump scroll */ + return MENU_NOHOLD; +} + +/* Bug E: Cursor move from double- to single-wide line */ + +int +bug_e(MENU_ARGS) +{ + int i; + static char *rend[2] = { "m", "7m" }; + deccolm(TRUE); + cup(1,1); decdwl(); + println("This test should put an 'X' at line 3 column 100."); + for (i = 1; i <= 12; i++) + printf("1234567890%s%s", csi_output(), rend[i & 1]); + cup(1,1); /* The bug appears when we jump from a double-wide line */ + cup(3,100); /* to a single-wide line, column > 66. */ + printf("X"); + cup(4, max_cols/2); printf("! !"); + cup(5,1); + printf("--------------------------- The 'X' should NOT be above here -"); + printf("---+------------ but above here -----+"); + cup(10,1); decdwl(); holdit(); + deccolm(FALSE); + return MENU_NOHOLD; +} + +/* Bug F: Column mode escape sequence */ + +int +bug_f(MENU_ARGS) +{ + /* + * VT100 "toggle origin mode, forget rest" bug. If you try to set + * (or clear) parameters and one of them is the "origin mode" + * ("?6") parameter, parameters that appear after the "?6" + * remain unaffected. This is also true on CIT-101 terminals. + */ + decscnm(TRUE); /* Set reverse mode */ + deccolm(TRUE); /* Set 132 column mode */ + println("Test VT100 'Toggle origin mode, forget rest' bug, part 1."); + printf("The screen should be in reverse, %d column mode.\n", max_cols); + holdit(); + ed (2); + rm ("?6;5;3"); /* Reset (origin, reverse, 132 col) */ + println("Test VT100 'Toggle origin mode, forget rest' bug, part 2.\n"); + printf("The screen should be in non-reverse, %d column mode.\n", min_cols); + return MENU_HOLD; +} + + /* Bug W: + * The dreaded "wraparound" bug! You CUP to col 80, write a char, + * CUP to another line in col 80, write a char. And the brain-damaged + * terminal thinks that "Hokay, so he's written a char in col 80, so + * I stay in col 80 and wait for next character. Let's see now, here + * comes another character, and I'm still in col 80, so I must make + * a NewLine first." -- It doesn't clear that "still in col 80" flag + * on a CUP. Argh! + */ + +int +bug_w(MENU_ARGS) +{ + int row, col; + + cup (16,1); + println(" This illustrates the \"wrap around bug\" which exists on a"); + println(" standard VT100. At the top of the screen there should be"); + println(" a row of +'s, and the rightmost column should be filled"); + println(" with *'s. But if the bug is present, some of the *'s may"); + println(" be placed in other places, e.g. in the leftmost column,"); + println(" and the top line of +'s may be scrolled away."); + + cup(1,1); + for (col = 1; col <= min_cols-1; col++) + printf ("+"); + for (row = 1; row <= max_lines; row++) { + hvp (row, min_cols); + printf ("*"); + } + cup(max_lines,1); + return MENU_HOLD; +} + + /* Bug L: + * Check if the right half of double-width lines comes back + * when a line is first set to single-width, filled with stuff, + * set to double-width, and finally reset to single-width. + * + * A VT100 has this misfeature, and many others. Foo! + */ + +int +bug_l(MENU_ARGS) +{ + cup(15, 1); + printf("This-is-a-long-line-This-is-a-long-line-"); + printf("This-is-a-long-line-This-is-a-long-line-"); + cup(1, 1); + printf("This is a test of what happens to the right half of double-width"); + println(" lines."); + printf("A common misfeature is that the right half does not come back"); + println(" when a long"); + printf("single-width line is set to double-width and then reset to"); + println(" single-width."); + + cup(5, 1); + println("Now the line below should contain 80 characters in single width."); + holdit(); + cup(15, 1); decdwl(); + cup(8, 1); + println("Now the line below should contain 40 characters in double width."); + holdit(); + cup(15, 1); decswl(); + cup(11, 1); + println("Now the line below should contain 80 characters in single width."); + holdit(); + + /* ...and in 132 column mode */ + + deccolm(TRUE); + ed(2); + cup(15, 1); + printf("This-is-a-long-line-This-is-a-long-line-"); + printf("This-is-a-long-line-This-is-a-long-line-"); + printf("This-is-a-long-line-This-is-a-long-line-"); + printf("ending-here-"); + + cup(1, 1); + printf("This is the same test in %d column mode.", max_cols); + + cup(5, 1); + printf("Now the line below should contain %d characters in single width.\n", max_cols); + holdit(); + cup(15, 1); decdwl(); + cup(8, 1); + printf("Now the line below should contain %d characters in double width.\n", max_cols/2); + holdit(); + cup(15, 1); decswl(); + cup(11, 1); + printf("Now the line below should contain %d characters in single width.\n", max_cols); + holdit(); + deccolm(FALSE); + return MENU_NOHOLD; +} + +int +bug_s(MENU_ARGS) +{ + int i; + decstbm(20,10); /* 20-10=-10, < 2, so no scroll region. */ + cup(1,1); + for (i=1; i<=20; i++) + printf("This is 20 lines of text (line %d), no scroll region.\n", i); + holdit(); + ed(2); + decstbm(0,1); /* Should be interpreted as decstbm(1,1) = none */ + cup(1,1); + for (i=1; i<=20; i++) + printf("This is 20 lines of text (line %d), no scroll region.\n", i); + holdit(); + decstbm(0,0); /* No scroll region (just in case...) */ + return MENU_NOHOLD; +} + +void +initterminal(int pn) +{ + init_ttymodes(pn); + setup_terminal(""); +} + + /* Set up my personal prejudices */ +int +setup_terminal(MENU_ARGS) +{ + if (LOG_ENABLED) + fprintf(log_fp, "Setup Terminal with test-defaults\n"); + + default_level(); /* Enter ANSI mode (if in VT52 mode) */ + rm("?1"); /* cursor keys normal */ + deccolm(FALSE); /* 80 col mode */ + decsclm(FALSE); /* Jump scroll */ + decscnm(FALSE); /* Normal screen */ + rm("?6"); /* Absolute origin mode */ + sm("?7"); /* Wrap around on */ + rm("?8"); /* Auto repeat off */ + sm("?40"); /* Enable 80/132 switch */ + decstbm(0,0); /* No scroll region */ + sgr("0"); /* Normal character attributes */ + + return MENU_NOHOLD; +} + +void +bye (void) +{ + /* Force my personal prejudices upon the poor luser */ + if (LOG_ENABLED) + fprintf(log_fp, "Cleanup & exit\n"); + + default_level(); /* Enter ANSI mode (if in VT52 mode) */ + rm("?1"); /* cursor keys normal */ + deccolm(FALSE); /* 80 col mode */ + decscnm(FALSE); /* Normal screen */ + rm("?6"); /* Absolute origin mode */ + sm("?7"); /* Wrap around on */ + sm("?8"); /* Auto repeat on */ + decstbm(0,0); /* No scroll region */ + sgr("0"); /* Normal character attributes */ + + /* Say goodbye */ + + vt_clear(2); + vt_move(12,30); + printf("That's all, folks!\n"); + printf("\n\n\n"); + inflush(); + close_tty(); + exit(EXIT_SUCCESS); +} + +#ifdef UNIX +RETSIGTYPE +onbrk(SIG_ARGS) +{ + signal(SIGINT, onbrk); + if (reading) { + brkrd = TRUE; +#if HAVE_ALARM + alarm(0); +#endif + } else { + longjmp(intrenv, 1); + } +} + +RETSIGTYPE +onterm(SIG_ARGS) +{ + signal(SIGTERM, onterm); + longjmp(intrenv, 1); +} +#endif + +int +scanto(char *str, int *pos, int toc) +{ + char c; + int result = 0; + + while (toc != (c = str[(*pos)])) { + *pos += 1; + if (isdigit(c)) result = result * 10 + c - '0'; + else break; + } + if (c == toc) { + *pos += 1; /* point past delimiter */ + return(result); + } + return(0); +} + +int +scan_any(char *str, int *pos, int toc) +{ + int save = *pos; + int value = scanto(str, pos, ';'); + if (value == 0) { + *pos = save; + value = scanto(str, pos, toc); + if (str[*pos] != '\0') + value = 0; + } + return value; +} + +static char * +push_menu(int number) +{ + char *saved = current_menu; + current_menu = malloc(strlen(saved) + 10); + sprintf(current_menu, "%s%s%d", saved, *saved ? "." : "", number); + return saved; +} + +static void +pop_menu(char *saved) +{ + if (current_menu && *current_menu) + free(current_menu); + current_menu = saved; +} + +int +menu(MENU *table) +{ + int i, tablesize, choice; + char c; + char storage[BUFSIZ]; + + println(""); + tablesize = 0; + for (i = 0; table[i].description[0] != '\0'; i++) { + printf(" %d%c %s\n", i, + table[i].dispatch == not_impl ? '*' : '.', table[i].description); + tablesize++; + } + tablesize--; + + printf("\n Enter choice number (0 - %d): ", tablesize); + for(;;) { + char *s = storage; + inputline(s); + choice = 0; + while ((c = *s++) != '\0') { + if (c == '*') { + choice = -1; + break; + } else if (c >= '0' && c <= '9') { + choice = 10 * choice + c - '0'; + } else { + choice = tablesize+1; + break; + } + } + + if (choice < 0) { + for (choice = 0; choice <= tablesize; choice++) { + vt_clear(2); + if (table[choice].dispatch != 0) { + char *save = push_menu(choice); + char *name = table[choice].description; + if (LOG_ENABLED) + fprintf(log_fp, "Menu %s: %s\n", current_menu, name); + if ((*table[choice].dispatch)(name) == MENU_HOLD) + holdit(); + pop_menu(save); + } + } + return 1; + } else if (choice <= tablesize) { + vt_clear(2); + if (table[choice].dispatch != 0) { + char *save = push_menu(choice); + char *name = table[choice].description; + if (LOG_ENABLED) + fprintf(log_fp, "Menu %s: %s\n", current_menu, name); + if ((*table[choice].dispatch)(name) != MENU_NOHOLD) + holdit(); + pop_menu(save); + } + return (table[choice].dispatch != 0); + } + printf(" Bad choice, try again: "); + } +} + +void +chrprint (char *s) +{ + int i; + + printf(" "); + vt_hilite(TRUE); + printf(" "); + for (i = 0; s[i] != '\0'; i++) { + int c = (unsigned char)s[i]; + if (c <= ' ' || c >= '\177') + printf("<%d> ", c); + else + printf("%c ", c); + } + vt_hilite(FALSE); +} + +/* + * Returns a pointer past the prefix, or null if no match is found + */ +char * +skip_prefix(char *prefix, char *input) +{ + while (*prefix != '\0') { + if (*prefix++ != *input++) + return 0; + } + return input; +} + +char *skip_csi(char *input) +{ + if ((unsigned char)*input == CSI) { + return input+1; + } + return skip_prefix(csi_input(), input); +} + +char *skip_dcs(char *input) +{ + if ((unsigned char)*input == DCS) { + return input+1; + } + return skip_prefix(dcs_input(), input); +} + +char *skip_ss3(char *input) +{ + if ((unsigned char)*input == SS3) { + return input+1; + } + return skip_prefix(ss3_input(), input); +} + +/* + * Returns a pointer past digits, or null if none are found + */ +char * +skip_digits(char *src) +{ + char *base = src; + while (*src != '\0' && isdigit(*src)) + src++; + return (base == src) ? 0 : src; +} + +/* + * Strip the string terminator (ST) from the given string, returning true if + * we did this. + */ +int +strip_suffix(char *src, char *suffix) +{ + int have = strlen(src); + int want = strlen(suffix); + if (have > want) { + have -= want; + if (!strcmp(src+have, suffix)) { + src[have] = '\0'; + return TRUE; + } + } + return FALSE; +} + +/* + * Strip the string terminator (ST) from the given string, returning true if + * we did this. + */ +int +strip_terminator(char *src) +{ + int ok = strip_suffix(src, st_input()); + if (!ok) { + int have = strlen(src); + if (have > 0 && (unsigned char)src[have-1] == ST) { + ok = TRUE; + src[--have] = '\0'; + } + } + if (!ok && LOG_ENABLED) + fprintf(log_fp, "Missing ST\n"); + return ok; +} + +/* Parse the contents of a report from DECRQSS, returning the data as well */ +int parse_decrqss(char *report, char *func) +{ + int code = -1; + char *parse = report; + + if ((parse = skip_dcs(parse)) != 0 + && strip_terminator(parse) + && strip_suffix(parse, func)) { + if (!strncmp(parse, "1$r", 3)) + code = 1; + else if (!strncmp(parse, "0$r", 3)) + code = 0; + } + + if (code >= 0) { + while ((*report++ = parse[3]) != '\0') + parse++; + } + return code; +} + +void +title(int offset) +{ + vt_move(TITLE_LINE+offset, 10); + if (offset == 0 && *current_menu) + printf("Menu %s: ", current_menu); +} + +static void +my_vfprintf(FILE *fp, va_list ap, const char *fmt) +{ + while (*fmt != '\0') { + if (*fmt == '%') { + switch(*++fmt) { + case 'c': + fputc(va_arg(ap, int), fp); + break; + case 'x': + fprintf(fp, "%x", va_arg(ap, int)); + break; + case 'd': + fprintf(fp, "%d", va_arg(ap, int)); + break; + case 's': + fputs(va_arg(ap, char *), fp); + break; + } + } else if (*fmt != '\n') { + fputc(*fmt, fp); + } + fmt++; + } +} + +/* + * Show a test-result, optionally logging it as well. + */ +void +show_result(const char *fmt, ...) +{ + va_list ap; + + if (*fmt != ' ') + fputc(' ', stdout); + va_start(ap, fmt); + my_vfprintf(stdout, ap, fmt); + va_end(ap); + + if (LOG_ENABLED) { + fputs("Result: ", log_fp); + va_start(ap, fmt); + my_vfprintf(log_fp, ap, fmt); + va_end(ap); + fputc('\n', log_fp); + } +} + +/* + * Bypass normal logging for control sequences that are used only to format + * the test results. + */ +void +vt_clear(int code) +{ + log_disabled++; + ed(code); + log_disabled--; +} + +void +vt_el(int code) +{ + log_disabled++; + el(code); + log_disabled--; +} + +void +vt_move(int row, int col) +{ + log_disabled++; + cup(row, col); + log_disabled--; +} + +void +vt_hilite(int flag) +{ + log_disabled++; + sgr(flag ? "7" : ""); + log_disabled--; +} diff --git a/doc/vttest-20011130/makefile b/doc/vttest-20011130/makefile new file mode 100644 index 0000000..e830864 --- /dev/null +++ b/doc/vttest-20011130/makefile @@ -0,0 +1,171 @@ +# $Id$ +# Makefile-template for 'vttest' + +THIS = vttest +RELEASE = 2 + +#### Start of system configuration section. #### + +srcdir = . + +CC = gcc +LINK = $(CC) +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 + +LIBS = +CFLAGS = -g -O2 +LDFLAGS = + +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +mandir = ${prefix}/man/man$(manext) +manext = 1 + +#### End of system configuration section. #### + +SHELL = /bin/sh + +DEFINES = -DHAVE_CONFIG_H -DRELEASE=$(RELEASE) +INCLUDES = -I. -I$(srcdir) +CPPFLAGS = $(DEFINES) $(INCLUDES) + +.c.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) $< + +C_SRC = \ + charsets.c \ + color.c \ + esc.c \ + keyboard.c \ + main.c \ + mouse.c \ + nonvt100.c \ + printer.c \ + reports.c \ + reset.c \ + setup.c \ + sixel.c \ + status.c \ + ttymodes.c \ + unix_io.c \ + vt220.c \ + vt420.c \ + vt52.c \ + xterm.c +H_SRC = \ + vttest.h \ + esc.h \ + ttymodes.h +OBJS = \ + charsets.o \ + color.o \ + esc.o \ + keyboard.o \ + main.o \ + mouse.o \ + nonvt100.o \ + printer.o \ + reports.o \ + reset.o \ + setup.o \ + sixel.o \ + status.o \ + ttymodes.o \ + unix_io.o \ + vt220.o \ + vt420.o \ + vt52.o \ + xterm.o + +SRC = patchlev.h \ + CHANGES COPYING README BUGS \ + $(THIS).lsm $(THIS).1 \ + $(C_SRC) $(H_SRC) \ + tech.set \ + config.hin install.sh mkdirs.sh makefile.in configure.in + +DISTFILES = MANIFEST configure $(SRC) + +all: $(THIS) + +$(THIS): $(OBJS) + -mv $(THIS) o$(THIS) + $(LINK) $(CFLAGS) $(LDFLAGS) -o $(THIS) $(OBJS) $(LIBS) + +$(OBJS): config.h $(THIS).h patchlev.h + +install: all installdirs + $(INSTALL_PROGRAM) $(THIS) $(bindir)/$(THIS) + $(INSTALL_DATA) $(srcdir)/$(THIS).1 $(mandir)/$(THIS).$(manext) + +installdirs: + $(SHELL) ${srcdir}/mkdirs.sh $(bindir) $(mandir) + +uninstall: + rm -f $(bindir)/$(THIS) + rm -f $(mandir)/$(THIS).$(manext) + +makefile: makefile.in config.status + ./config.status + +config.status: configure + ./config.status --recheck + +mostlyclean: + rm -f *.o o$(THIS) core *~ *.BAK *.trace *.atac + +clean: mostlyclean + rm -f $(THIS) + +distclean: clean + rm -f makefile config.log config.cache config.status config.h + +realclean: distclean + rm -f tags TAGS # don't remove configure! + +tags: $(C_SRC) $(HDRS) + ctags $(C_SRC) $(HDRS) + +TAGS: $(C_SRC) $(HDRS) + etags $(C_SRC) $(HDRS) + +# I keep my sources in RCS, and assign a symbolic release to the current patch +# level. The 'manifest' script knows how to build a list of files for a given +# revision. +MANIFEST: patchlev.h +# manifest -rv$(RELEASE)`fgrep PATCHLEVEL patchlev.h | sed -e s'/^[^0-9]*/_/'` + manifest -rd`fgrep PATCH_DATE patchlev.h | sed -e s'/^[^0-9]*//'` + +dist: MANIFEST + - rm -f .fname .files + fgrep PATCH_DATE patchlev.h | sed -e 's/[^0-9.]//g' -e 's/^/$(THIS)-/' >.fname + cat MANIFEST | grep ' ' | egrep -v ' subdirectory$$' | sed -e 's/\ .*//' | uniq >.files + rm -rf `cat .fname` + TOP=`cat .fname`; mkdir $$TOP `cat .files | grep / | sed -e 's@/.*@@' | sed -e s@\^@$$TOP/@ | uniq` + for file in `cat .files`; do \ + ln $(srcdir)/$$file `cat .fname`/$$file \ + || { echo copying $$file instead; cp $$file `cat .fname`/$$file; }; \ + done + tar -cf - `cat .fname` | gzip >`cat .fname`.tgz + rm -rf `cat .fname` .fname .files + +# Some of the output will be uuencoded because the test scripts include +# <CR><LF> terminated ".bat" files for MS-DOS. +dist-shar: MANIFEST + - rm -f .fname .files + fgrep PATCH_DATE patchlev.h | sed -e 's/[^0-9.]//g' -e 's/^/$(THIS)-/' >.fname + cat MANIFEST | grep ' ' | egrep -v ' subdirectory$$' | sed -e 's/\ .*//' | uniq >.files + shar -M -n`cat .fname` -opart -l50 `cat .files` + - rm -f .fname .files + +$(THIS).o: config.h + +lint: + $(LINT) $(CPPFLAGS) $(C_SRC) + +check: $(THIS) + @echo 'Sorry -- You must run this interactively.' diff --git a/doc/vttest-20011130/makefile.in b/doc/vttest-20011130/makefile.in new file mode 100644 index 0000000..58e8405 --- /dev/null +++ b/doc/vttest-20011130/makefile.in @@ -0,0 +1,172 @@ +# $Id$ +# Makefile-template for 'vttest' + +THIS = vttest +RELEASE = 2 + +#### Start of system configuration section. #### + +srcdir = @srcdir@ +VPATH = @srcdir@ + +CC = @CC@ +LINK = $(CC) +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +LIBS = @LIBS@ +CFLAGS = @CFLAGS@ +LDFLAGS = @LDFLAGS@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +mandir = @mandir@/man$(manext) +manext = 1 + +#### End of system configuration section. #### + +SHELL = /bin/sh + +DEFINES = -DHAVE_CONFIG_H -DRELEASE=$(RELEASE) +INCLUDES = -I. -I$(srcdir) +CPPFLAGS = $(DEFINES) $(INCLUDES) @CPPFLAGS@ + +.c.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) $< + +C_SRC = \ + charsets.c \ + color.c \ + esc.c \ + keyboard.c \ + main.c \ + mouse.c \ + nonvt100.c \ + printer.c \ + reports.c \ + reset.c \ + setup.c \ + sixel.c \ + status.c \ + ttymodes.c \ + unix_io.c \ + vt220.c \ + vt420.c \ + vt52.c \ + xterm.c +H_SRC = \ + vttest.h \ + esc.h \ + ttymodes.h +OBJS = \ + charsets.o \ + color.o \ + esc.o \ + keyboard.o \ + main.o \ + mouse.o \ + nonvt100.o \ + printer.o \ + reports.o \ + reset.o \ + setup.o \ + sixel.o \ + status.o \ + ttymodes.o \ + unix_io.o \ + vt220.o \ + vt420.o \ + vt52.o \ + xterm.o + +SRC = patchlev.h \ + CHANGES COPYING README BUGS \ + $(THIS).lsm $(THIS).1 \ + $(C_SRC) $(H_SRC) \ + tech.set \ + config.hin install.sh mkdirs.sh makefile.in configure.in + +DISTFILES = MANIFEST configure $(SRC) + +all: $(THIS) + +$(THIS): $(OBJS) + -mv $(THIS) o$(THIS) + $(LINK) $(CFLAGS) $(LDFLAGS) -o $(THIS) $(OBJS) $(LIBS) + +$(OBJS): config.h $(THIS).h patchlev.h + +install: all installdirs + $(INSTALL_PROGRAM) $(THIS) $(bindir)/$(THIS) + $(INSTALL_DATA) $(srcdir)/$(THIS).1 $(mandir)/$(THIS).$(manext) + +installdirs: + $(SHELL) ${srcdir}/mkdirs.sh $(bindir) $(mandir) + +uninstall: + rm -f $(bindir)/$(THIS) + rm -f $(mandir)/$(THIS).$(manext) + +makefile: makefile.in config.status + ./config.status + +config.status: configure + ./config.status --recheck + +mostlyclean: + rm -f *.o o$(THIS) core *~ *.BAK *.trace *.atac + +clean: mostlyclean + rm -f $(THIS) + +distclean: clean + rm -f makefile config.log config.cache config.status config.h + +realclean: distclean + rm -f tags TAGS # don't remove configure! + +tags: $(C_SRC) $(HDRS) + ctags $(C_SRC) $(HDRS) + +TAGS: $(C_SRC) $(HDRS) + etags $(C_SRC) $(HDRS) + +# I keep my sources in RCS, and assign a symbolic release to the current patch +# level. The 'manifest' script knows how to build a list of files for a given +# revision. +MANIFEST: patchlev.h +# manifest -rv$(RELEASE)`fgrep PATCHLEVEL patchlev.h | sed -e s'/^[^0-9]*/_/'` + manifest -rd`fgrep PATCH_DATE patchlev.h | sed -e s'/^[^0-9]*//'` + +dist: MANIFEST + - rm -f .fname .files + fgrep PATCH_DATE patchlev.h | sed -e 's/[^0-9.]//g' -e 's/^/$(THIS)-/' >.fname + cat MANIFEST | grep ' ' | egrep -v ' subdirectory$$' | sed -e 's/\ .*//' | uniq >.files + rm -rf `cat .fname` + TOP=`cat .fname`; mkdir $$TOP `cat .files | grep / | sed -e 's@/.*@@' | sed -e s@\^@$$TOP/@ | uniq` + for file in `cat .files`; do \ + ln $(srcdir)/$$file `cat .fname`/$$file \ + || { echo copying $$file instead; cp $$file `cat .fname`/$$file; }; \ + done + tar -cf - `cat .fname` | gzip >`cat .fname`.tgz + rm -rf `cat .fname` .fname .files + +# Some of the output will be uuencoded because the test scripts include +# <CR><LF> terminated ".bat" files for MS-DOS. +dist-shar: MANIFEST + - rm -f .fname .files + fgrep PATCH_DATE patchlev.h | sed -e 's/[^0-9.]//g' -e 's/^/$(THIS)-/' >.fname + cat MANIFEST | grep ' ' | egrep -v ' subdirectory$$' | sed -e 's/\ .*//' | uniq >.files + shar -M -n`cat .fname` -opart -l50 `cat .files` + - rm -f .fname .files + +$(THIS).o: config.h + +lint: + $(LINT) $(CPPFLAGS) $(C_SRC) + +check: $(THIS) + @echo 'Sorry -- You must run this interactively.' diff --git a/doc/vttest-20011130/mkdirs.sh b/doc/vttest-20011130/mkdirs.sh new file mode 100755 index 0000000..91f6d04 --- /dev/null +++ b/doc/vttest-20011130/mkdirs.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman <friedman@prep.ai.mit.edu> +# Created: 1993-05-16 +# Last modified: 1994-03-25 +# Public domain + +errstatus=0 + +for file in ${1+"$@"} ; do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d in ${1+"$@"} ; do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" 1>&2 + mkdir "$pathcomp" || errstatus=$? + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/doc/vttest-20011130/mouse.c b/doc/vttest-20011130/mouse.c new file mode 100644 index 0000000..c3e2ff8 --- /dev/null +++ b/doc/vttest-20011130/mouse.c @@ -0,0 +1,441 @@ +/* $Id$ */ + +#include <vttest.h> +#include <esc.h> +#include <ttymodes.h> + +#define MCHR(c) (((c) - ' ') & 0xff) + +#define isQuit(c) (((c) == 'q') || ((c) == 'Q')) + +static void +cat_button(char *dst, char *src) +{ + if (*dst != 0) strcat(dst, ", "); + strcat(dst, src); +} + +static char * +locator_button(int b) +{ + static char result[80]; + + if (b) { + result[0] = 0; + if (b & 1) cat_button(result, "right"); + if (b & 2) cat_button(result, "middle"); + if (b & 4) cat_button(result, "left"); + if (b & 8) cat_button(result, "M4"); + } else { + strcpy(result, "no buttons down"); + } + return result; +} + +static char * +locator_event(int e) +{ + char *result; + switch (e) { + case 0: result = "locator unavailable"; break; + case 1: result = "request - received a DECRQLP"; break; + case 2: result = "left button down"; break; + case 3: result = "left button up"; break; + case 4: result = "middle button down"; break; + case 5: result = "middle button up"; break; + case 6: result = "right button down"; break; + case 7: result = "right button up"; break; + case 8: result = "M4 button down"; break; + case 9: result = "M4 button up"; break; + case 10: result = "locator outside filter rectangle"; break; + default: result = "unknown event"; break; + } + return result; +} + +static void +show_click(int y, int x, int c) +{ + cup(y,x); + putchar(c); + vt_move(y,x); + fflush(stdout); +} + +/* Print the corners of the highlight-region. Note that xterm doesn't use + * the last row. + */ +static void show_hilite(int first, int last) +{ + vt_move(first, 1); printf("+"); + vt_move(last-1, 1); printf("+"); + vt_move(first, min_cols); printf("+"); + vt_move(last-1, min_cols); printf("+"); + fflush(stdout); +} + +static void show_locator_rectangle(void) +{ + const int first = 10; + const int last = 20; + + decefr(first, 1, last, min_cols); + show_hilite(first, last); +} + +static int show_locator_report(char *report, int row, int pixels) +{ + int Pe, Pb, Pr, Pc, Pp; + int now = row; + + vt_move(3,10); vt_el(2); chrprint(report); + while ((report = skip_csi(report)) != 0 + && (sscanf(report, "%d;%d;%d;%d&w", &Pe, &Pb, &Pr, &Pc) == 4 + || sscanf(report, "%d;%d;%d;%d;%d&w", &Pe, &Pb, &Pr, &Pc, &Pp) == 5)) { + vt_move(row,10); vt_el(2); + show_result("%s - %s (%d,%d)", locator_event(Pe), locator_button(Pb), Pr, Pc); + vt_el(0); + if (!pixels) /* FIXME: we should be able to scale from the screen size */ + show_click(Pr, Pc, '*'); + report = strchr(report, '&') + 2; + now = row++; + } + return now; +} + +static void +show_dec_locator_events(MENU_ARGS, int mode, int pixels) +{ + int row, now; + + vt_move(1,1); + println(the_title); + println("Press 'q' to quit. Mouse events will be marked with the button number."); + + decelr((mode > 0) ? mode : ((mode == 0) ? 2 : -mode), pixels ? 1 : 2); + + if (mode < 0) + show_locator_rectangle(); + else if (mode == 0) + do_csi("'w"); /* see decefr() */ + + decsle(1); /* report button-down events */ + decsle(3); /* report button-up events */ + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + now = 4; + for(;;) { + char *report = instr(); + if (isQuit(*report)) { + decrqlp(1); + report = instr(); + show_locator_report(report, now+1, pixels); + break; + } + row = 4; + while (now > row) { + vt_move(now,1); vt_el(2); + now--; + } + now = show_locator_report(report, row, pixels); + if (mode == 0) { + decelr(2, pixels ? 1 : 2); + do_csi("'w"); /* see decefr() */ + } + } + + decelr(0,0); + restore_ttymodes(); + + vt_move(max_lines-2,1); +} + +/* Normal Mouse Tracking */ +static void +show_mouse_tracking(MENU_ARGS, char *the_mode) +{ + int y = 0, x = 0; + + vt_move(1,1); + println(the_title); + println("Press 'q' to quit. Mouse events will be marked with the button number."); + + sm(the_mode); + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + for(;;) { + char *report = instr(); + if (isQuit(*report)) + break; + vt_move(3,10); vt_el(2); chrprint(report); + while ((report = skip_csi(report)) != 0 + && *report == 'M' + && strlen(report) >= 4) { + int b = MCHR(report[1]); + int adj = 1; + vt_move(4,10); vt_el(2); + show_result("code 0x%x (%d,%d)", b, MCHR(report[3]), MCHR(report[2])); + if (b & ~3) { + if (b & 4) + printf(" shift"); + if (b & 8) + printf(" meta"); + if (b & 16) + printf(" control"); + if (b & 32) + printf(" motion"); + if (b & 64) + adj += 3; + } + b &= 3; + if (b != 3) { + b += adj; + printf(" button %d", b); + show_click(MCHR(report[3]), MCHR(report[2]), b + '0'); + } else if (MCHR(report[2]) != x || MCHR(report[3]) != y) { + printf(" release"); + show_click(MCHR(report[3]), MCHR(report[2]), '*'); + } + x = MCHR(report[2]); + y = MCHR(report[3]); + report += 4; + } + } + + rm(the_mode); + restore_ttymodes(); + + vt_move(max_lines-2,1); +} + +static int +test_dec_locator_event(MENU_ARGS) +{ + show_dec_locator_events(PASS_ARGS, 2, FALSE); + return MENU_HOLD; +} + +static int +test_dec_locator_events(MENU_ARGS) +{ + show_dec_locator_events(PASS_ARGS, 1, FALSE); + return MENU_HOLD; +} + +static int +test_dec_locator_event_p(MENU_ARGS) +{ + show_dec_locator_events(PASS_ARGS, 2, TRUE); + return MENU_HOLD; +} + +static int +test_dec_locator_events_p(MENU_ARGS) +{ + show_dec_locator_events(PASS_ARGS, 1, TRUE); + return MENU_HOLD; +} + +static int +test_dec_locator_rectangle(MENU_ARGS) +{ + show_dec_locator_events(PASS_ARGS, -2, FALSE); + return MENU_HOLD; +} + +static int +test_dec_locator_unfiltered(MENU_ARGS) +{ + show_dec_locator_events(PASS_ARGS, 0, FALSE); + return MENU_HOLD; +} + +/* Any-Event Mouse Tracking */ +static int +test_mouse_any_event(MENU_ARGS) +{ + show_mouse_tracking(PASS_ARGS, "?1003"); + return MENU_HOLD; +} + +/* Button-Event Mouse Tracking */ +static int +test_mouse_button_event(MENU_ARGS) +{ + show_mouse_tracking(PASS_ARGS, "?1002"); + return MENU_HOLD; +} + +/* Mouse Highlight Tracking */ +static int +test_mouse_hilite(MENU_ARGS) +{ + const int first = 10; + const int last = 20; + int y = 0, x = 0; + + vt_move(1,1); + println(the_title); + println("Press 'q' to quit. Mouse events will be marked with the button number."); + printf("Highlighting range is [%d..%d)\n", first, last); + show_hilite(first,last); + + sm("?1001"); + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + for(;;) { + char *report = instr(); + if (isQuit(*report)) + break; + show_hilite(first,last); + vt_move(4,10); vt_el(2); chrprint(report); + if ((report = skip_csi(report)) != 0) { + if (*report == 'M' + && strlen(report) == 4) { + int b = MCHR(report[1]); + b &= 7; + x = MCHR(report[2]); + y = MCHR(report[3]); + if (b != 3) { + /* send the xterm the highlighting range (it MUST be done first) */ + do_csi("1;%d;%d;%d;%d;T", x, y, 10, 20); + /* now, show the mouse-click */ + if (b < 3) b++; + show_click(y, x, b + '0'); + } + /* interpret the event */ + vt_move(5,10); vt_el(2); + show_result("tracking: code 0x%x (%d,%d)", MCHR(report[1]), y, x); + fflush(stdout); + } else if (*report == 'T' && strlen(report) == 7) { + /* interpret the event */ + vt_move(5,10); vt_el(2); + show_result("done: start(%d,%d), end(%d,%d), mouse(%d,%d)", + MCHR(report[2]), MCHR(report[1]), + MCHR(report[4]), MCHR(report[3]), + MCHR(report[6]), MCHR(report[5])); + if (MCHR(report[2]) != y + || MCHR(report[1]) != x) + show_click(MCHR(report[2]), MCHR(report[1]), 's'); + if (MCHR(report[4]) != y + || MCHR(report[3]) != x) + show_click(MCHR(report[4]), MCHR(report[3]), 'e'); + if (MCHR(report[6]) != y + || MCHR(report[5]) != x) + show_click(MCHR(report[6]), MCHR(report[5]), 'm'); + } else if (*report == 't' && strlen(report) == 3) { + /* interpret the event */ + vt_move(5,10); vt_el(2); + show_result("done: end(%d,%d)", + MCHR(report[2]), MCHR(report[1])); + if (MCHR(report[2]) != y + || MCHR(report[1]) != x) + show_click(MCHR(report[2]), MCHR(report[1]), 'e'); + } + } + } + + rm("?1001"); + restore_ttymodes(); + + vt_move(max_lines-2,1); + return MENU_HOLD; +} + +/* Normal Mouse Tracking */ +static int +test_mouse_normal(MENU_ARGS) +{ + show_mouse_tracking(PASS_ARGS, "?1000"); + return MENU_HOLD; +} + +/* X10 Mouse Compatibility */ +static int +test_X10_mouse(MENU_ARGS) +{ + vt_move(1,1); + println(the_title); + println("Press 'q' to quit. Mouse events will be marked with the button number."); + + sm("?9"); + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + for(;;) { + char *report = instr(); + if (isQuit(*report)) + break; + vt_move(3,10); vt_el(2); chrprint(report); + if ((report = skip_csi(report)) != 0 + && *report == 'M' + && strlen(report) == 4) { + int x = report[2] - ' '; + int y = report[3] - ' '; + cup(y,x); + printf("%d", report[1] - ' ' + 1); + vt_move(y,x); + fflush(stdout); + } + } + + rm("?9"); + restore_ttymodes(); + + vt_move(max_lines-2,1); + return MENU_HOLD; +} + +/* + * DEC locator events are implemented on DECterm, to emulate VT220. + */ +static int +tst_dec_locator_events (MENU_ARGS) +{ + static MENU my_menu[] = { + { "Return to main menu", 0 }, + { "One-Shot", test_dec_locator_event }, + { "Repeated", test_dec_locator_events }, + { "One-Shot (pixels)", test_dec_locator_event_p }, + { "Repeated (pixels)", test_dec_locator_events_p }, + { "Filter Rectangle", test_dec_locator_rectangle }, + { "Filter Rectangle (unfiltered)", test_dec_locator_unfiltered }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); println("DEC Locator Events"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/* + * xterm generally implements mouse escape sequences (except for dtterm and + * DECterm). XFree86 xterm implements some additional controls. + */ +int +tst_mouse(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Return to main menu", 0 }, + { "X10 Mouse Compatibility", test_X10_mouse }, + { "Normal Mouse Tracking", test_mouse_normal }, + { "Mouse Highlight Tracking", test_mouse_hilite }, + { "Mouse Any-Event Tracking (XFree86 xterm)", test_mouse_any_event }, + { "Mouse Button-Event Tracking (XFree86 xterm)", test_mouse_button_event }, + { "DEC Locator Events (DECterm)", tst_dec_locator_events }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); println("XTERM mouse features"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/nonvt100.c b/doc/vttest-20011130/nonvt100.c new file mode 100644 index 0000000..7e9676f --- /dev/null +++ b/doc/vttest-20011130/nonvt100.c @@ -0,0 +1,437 @@ +/* $Id$ */ + +/* + * The list of non-VT320 codes was compiled using the list of non-VT320 codes + * described in the Kermit 3.13 documentation, combined with the ISO-6429 + * (ECMA-48) spec. + */ +#include <vttest.h> +#include <ttymodes.h> +#include <esc.h> + +int +not_impl(MENU_ARGS) +{ + vt_move(1,1); + printf("Sorry, test not implemented:\r\n\r\n %s", the_title); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +/* VT420 doesn't do this, VT510 does */ +static int +tst_CBT(MENU_ARGS) +{ + int n; + int last = (min_cols + 7) / 8; + + for (n = 1; n <= last; n++) { + cup(1,min_cols); + cbt(n); + printf("%d", last + 1 - n); + } + vt_move(max_lines-3,1); + vt_clear(0); + println(the_title); + println("The tab-stops should be numbered consecutively starting at 1."); + return MENU_HOLD; +} + +/* Note: CHA and HPA have identical descriptions in ECMA-48 */ +/* dtterm implements this (VT400 doesn't, VT510 does) */ +static int +tst_CHA(MENU_ARGS) +{ + int n; + + for (n = 1; n < max_lines-3; n++) { + cup(n, min_cols - n); + cha(n); + printf("+"); + } + vt_move(max_lines-3, 1); + for (n = 1; n <= min_cols; n++) + printf("%c", n == max_lines-3 ? '+' : '*'); + vt_move(max_lines-2, 1); + println(the_title); + println("There should be a diagonal of +'s down to the row of *'s above this message"); + return MENU_HOLD; +} + +/* + * Kermit's documentation refers to this as CHI, ECMA-48 as CHT. + * + * VT420 doesn't do this, VT510 does + */ +static int +tst_CHT(MENU_ARGS) +{ + int n; + int last = (min_cols * 2 + 7) / 8; + + vt_move(1,1); + println("CHT with param == 1:"); + for (n = 0; n < last; n++) { + cht(1); + printf("*"); + } + + vt_move(4,1); + println("CHT with param != 1:"); + for (n = 0; n < last; n++) { + cup(5,1); + cht(n); + printf("+"); + } + + vt_move(7,1); + println("Normal tabs:"); + for (n = 0; n < last; n++) { + printf("\t*"); + } + + vt_move(max_lines-3, 1); + println(the_title); + println("The lines with *'s above should look the same (they're designed to"); + println("wrap-around once)."); + return MENU_HOLD; +} + +/* VT420 doesn't do this, VT510 does */ +static int +tst_CNL(MENU_ARGS) +{ + int n; + + vt_move(1, 1); + printf("1."); + for (n = 1; n <= max_lines - 3; n++) { + cup(1, min_cols); + cnl(n-1); + printf("%d.", n); + } + + vt_move(max_lines-3, 1); + vt_clear(0); + println(the_title); + println("The lines above this should be numbered in sequence, from 1."); + return MENU_HOLD; +} + +/* + * VT510 & up + * + * There's a comment in the MS-DOS Kermit 3.13 documentation that implies CPL + * is used to replace RI (reverse-index). ECMA-48 doesn't specify scrolling + * regions, DEC terminals do apparently, so for CPL and CNL we'll test this. + */ +static int +tst_CPL(MENU_ARGS) +{ + int i; + + vt_move(max_lines, 1); + for (i = max_lines-1; i > 0; i--) { + cpl(1); + printf("%d.", i); + } + + vt_move(max_lines-3, 1); + vt_clear(0); + println(the_title); + println("The lines above this should be numbered in sequence, from 1."); + return MENU_HOLD; +} + +/* VT420 doesn't do this, VT510 does */ +static int +tst_HPA(MENU_ARGS) +{ + int n; + int last = max_lines-4; + + for (n = 1; n < last; n++) { + cup(n, min_cols - n); + hpa(n); + printf("+"); + } + + vt_move(last, 1); + for (n = 1; n <= min_cols; n++) + printf("%c", n == last ? '+' : '*'); + vt_move(last+1, 1); + println(the_title); + println("There should be a diagonal of +'s down to the row of *'s above this message."); + println("(The + in the row of *'s is the target)"); + return MENU_HOLD; +} + +/* + * Neither VT420 nor VT510. + */ +static int +tst_REP(MENU_ARGS) +{ + int n; + int last = max_lines-4; + + vt_move(1,1); + for (n = 1; n < last; n++) { + if (n > 1) { + printf(" "); + if (n > 2) + rep(n-2); + } + printf("+"); + rep(1); /* make that 2 +'s */ + rep(10); /* this should be ignored, since a control sequence precedes */ + println(""); + } + + vt_move(last, 1); + for (n = 1; n <= min_cols; n++) + printf("%c", (n == last || n == last+1) ? '+' : '*'); + vt_move(last+1, 1); + println(the_title); + println("There should be a diagonal of 2 +'s down to the row of *'s above this message."); + println("(The ++ in the row of *'s is the target)"); + return MENU_HOLD; +} + +/* + * Test the SD (scroll-down) by forcing characters written in a diagonal into + * a horizontal row. + * + * VT400 and dtterm use the (incorrect?) escape sequence (ending with 'T' + * instead of '^'), apparently someone misread 05/14 as 05/04 or vice versa. + */ +int +tst_SD(MENU_ARGS) +{ + int n; + int last = max_lines - 3; + + for (n = 1; n < last; n++) { + cup(n, n); + printf("*"); + sd(1); + } + vt_move(last+1,1); + vt_clear(0); + println(the_title); + println("There should be a horizontal row of *'s above, just above the message."); + return MENU_HOLD; +} + +/* + * not in VT510 + * + * Test the SL (scroll-left) by forcing characters written in a diagonal into + * a vertical line. + */ +static int +tst_SL(MENU_ARGS) +{ + int n; + int last = max_lines - 3; + + for (n = 1; n < last; n++) { + cup(n, min_cols/2 + last - n); + printf("*"); + sl(1); + } + vt_move(last,1); + vt_clear(0); + println(the_title); + println("There should be a vertical column of *'s centered above."); + return MENU_HOLD; +} + +/* + * not in VT510 + * + * Test the SR (scroll-right) by forcing characters written in a diagonal into + * a vertical line. + */ +static int +tst_SR(MENU_ARGS) +{ + int n; + int last = max_lines - 3; + + for (n = 1; n < last; n++) { + cup(n, min_cols/2 - last + n); + printf("*"); + sr(1); + } + vt_move(last,1); + vt_clear(0); + println(the_title); + println("There should be a vertical column of *'s centered above."); + return MENU_HOLD; +} + +/* + * Test the SU (scroll-up) by forcing characters written in a diagonal into + * a horizontal row. + */ +int +tst_SU(MENU_ARGS) +{ + int n; + int last = max_lines - 3; + + for (n = 1; n < last; n++) { + cup(last + 1 - n, n); + printf("*"); + su(1); + } + vt_move(last+1,1); + vt_clear(0); + println(the_title); + println("There should be a horizontal row of *'s above, on the top row."); + return MENU_HOLD; +} + +/* + * Test SPA (set-protected area) + */ +static int +tst_SPA(MENU_ARGS) +{ + int i, j, pass; + + for (pass = 0; pass < 2; pass++) { + if (pass == 0) { + esc("V"); /* SPA */ + } + /* make two passes so we can paint over the protected-chars in the second */ + for (i = 5; i <= max_lines - 6; i++) { + cup(i, 20); + for (j = 20; j < min_cols - 20; j++) { + printf("*"); + } + } + if (pass == 0) { + esc("W"); /* EPA */ + + cup(max_lines/2, min_cols/2); + ed(0); /* after the cursor */ + ed(1); /* before the cursor */ + ed(2); /* the whole display */ + + el(0); /* after the cursor */ + el(1); /* before the cursor */ + el(2); /* the whole line */ + + ech(min_cols); + + cup(max_lines-4, 1); + println(the_title); + println("There should be an solid box made of *'s in the middle of the screen."); + holdit(); + } + } + return MENU_NOHOLD; +} + +/* + * Kermit's documentation refers to this as CVA, ECMA-48 as VPA. + * Move the cursor in the current column to the specified line. + * + * VT420 doesn't do this, VT510 does + */ +static int +tst_VPA(MENU_ARGS) +{ + int n; + + vt_move(5, 20); + for (n = 20; n <= min_cols - 20; n++) + printf("*"); + for (n = 5; n < max_lines - 6; n++) { + vpa(n); + printf("*\b"); + } + for (n = min_cols - 20; n >= 20; n--) + printf("\b*\b"); + for (n = 5; n < max_lines - 6; n++) { + vpa(n); + printf("*\b"); + } + + vt_move(max_lines-3, 1); + println(the_title); + println("There should be a box-outline made of *'s in the middle of the screen."); + return MENU_HOLD; +} + +/******************************************************************************/ + +static int +tst_ecma48_curs(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Character-Position-Absolute (HPA)", tst_HPA }, + { "Test Cursor-Back-Tab (CBT)", tst_CBT }, + { "Test Cursor-Character-Absolute (CHA)", tst_CHA }, + { "Test Cursor-Horizontal-Index (CHT)", tst_CHT }, + { "Test Line-Position-Absolute (VPA)", tst_VPA }, + { "Test Next-Line (CNL)", tst_CNL }, + { "Test Previous-Line (CPL)", tst_CPL }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("ISO-6429 (ECMA-48) Cursor-Movement"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +static int +tst_ecma48_misc(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Protected-Areas (SPA)", tst_SPA }, + { "Test Repeat (REP)", tst_REP }, + { "Test Scroll-Down (SD)", tst_SD }, + { "Test Scroll-Left (SL)", tst_SL }, + { "Test Scroll-Right (SR)", tst_SR }, + { "Test Scroll-Up (SU)", tst_SU }, + { "", 0 }, + }; + + do { + vt_clear(2); + title(0); printf("Miscellaneous ISO-6429 (ECMA-48) Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ +int +tst_nonvt100(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test of VT220/VT320 features", tst_vt220 }, + { "Test of VT420 features", tst_vt420 }, + { "Test ISO-6429 cursor-movement", tst_ecma48_curs }, + { "Test ISO-6429 colors", tst_colors }, + { "Test other ISO-6429 features", tst_ecma48_misc }, + { "Test XTERM special features", tst_xterm }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("Non-VT100 Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/patchlev.h b/doc/vttest-20011130/patchlev.h new file mode 100644 index 0000000..89f77cf --- /dev/null +++ b/doc/vttest-20011130/patchlev.h @@ -0,0 +1,3 @@ +/* $Id$ */ +#define PATCHLEVEL 7 +#define PATCH_DATE 20011130 diff --git a/doc/vttest-20011130/printer.c b/doc/vttest-20011130/printer.c new file mode 100644 index 0000000..f4a0ffb --- /dev/null +++ b/doc/vttest-20011130/printer.c @@ -0,0 +1,198 @@ +/* $Id$ */ + +#include <vttest.h> +#include <esc.h> + +static int pex_mode; +static int pff_mode; +static int started; +static int assigned; +static int margin_lo; +static int margin_hi; + +static void +setup_printout(MENU_ARGS, int visible, char * whole) +{ + margin_lo = 7; + margin_hi = max_lines - 5; + + vt_clear(2); + cup(1,1); + println(the_title); + println("Test screen for printing. We will set scrolling margins at"); + printf("lines %d and %d, and write a test pattern there.\n", margin_lo, margin_hi); + printf("The test pattern should be %s.\n", visible + ? "visible" + : "invisible"); + printf("The %s should be in the printer's output.\n", whole); + decstbm(margin_lo, margin_hi); + cup(margin_lo, 1); +} + +static void +test_printout(void) +{ + int row, col; + vt_move(margin_hi,1); + for (row = 0; row < max_lines; row++) { + printf("%3d:", row); + for (col = 0; col < min_cols - 5; col++) { + printf("%c", ((row + col) % 26) + 'a'); + } + printf("\n"); + } +} + +static void +cleanup_printout(void) +{ + decstbm(0, 0); + vt_move(max_lines-2,1); +} + +static int +tst_Assign(MENU_ARGS) +{ + mc_printer_assign(assigned = !assigned); + return MENU_HOLD; +} + +static int +tst_DECPEX(MENU_ARGS) +{ + decpex(pex_mode = !pex_mode); + return MENU_HOLD; +} + +static int +tst_DECPFF(MENU_ARGS) +{ + decpff(pff_mode = !pff_mode); + return MENU_HOLD; +} + +static int +tst_Start(MENU_ARGS) +{ + mc_printer_start(started = !started); + return MENU_HOLD; +} + +static int +tst_autoprint(MENU_ARGS) +{ + setup_printout(PASS_ARGS, TRUE, "scrolling region"); + mc_autoprint(TRUE); + test_printout(); + mc_autoprint(FALSE); + cleanup_printout(); + return MENU_HOLD; +} + +static int +tst_printer_controller(MENU_ARGS) +{ + setup_printout(PASS_ARGS, FALSE, "scrolling region"); + mc_printer_controller(TRUE); + test_printout(); + mc_printer_controller(FALSE); + cleanup_printout(); + return MENU_HOLD; +} + +static int +tst_print_all_pages(MENU_ARGS) +{ + setup_printout(PASS_ARGS, TRUE, "contents of all pages"); + test_printout(); + mc_print_all_pages(); + cleanup_printout(); + return MENU_HOLD; +} + +static int +tst_print_cursor(MENU_ARGS) +{ + int row; + setup_printout(PASS_ARGS, TRUE, "reverse of the scrolling region"); + test_printout(); + for (row = margin_hi; row >= margin_lo; row--) { + vt_move(row,1); + mc_print_cursor_line(); + } + cleanup_printout(); + return MENU_HOLD; +} + +static int +tst_print_display(MENU_ARGS) +{ + setup_printout(PASS_ARGS, TRUE, "whole display"); + test_printout(); + mc_print_composed(); + cleanup_printout(); + return MENU_HOLD; +} + +static int +tst_print_page(MENU_ARGS) +{ + setup_printout(PASS_ARGS, TRUE, pex_mode ? "whole page" : "scrolling region"); + test_printout(); + mc_print_page(); + cleanup_printout(); + return MENU_HOLD; +} + +int +tst_printing(MENU_ARGS) +{ + static char pex_mesg[80]; + static char pff_mesg[80]; + static char assign_mesg[80]; + static char start_mesg[80]; + + static MENU my_menu[] = { + { "Exit", 0 }, + { assign_mesg, tst_Assign }, + { start_mesg, tst_Start }, + { pex_mesg, tst_DECPEX }, + { pff_mesg, tst_DECPFF }, + { "Test Auto-print mode (MC - DEC private mode)", tst_autoprint }, + { "Test Printer-controller mode (MC)", tst_printer_controller }, + { "Test Print-page (MC)", tst_print_page }, + { "Test Print composed main-display (MC)", tst_print_display }, + { "Test Print all pages (MC)", tst_print_all_pages }, + { "Test Print cursor line (MC)", tst_print_cursor }, + { "", 0 } + }; + + do { + sprintf(pex_mesg, "%s Printer-Extent mode (DECPEX)", + pex_mode ? "Disable" : "Enable"); + sprintf(pff_mesg, "%s Print Form Feed Mode (DECPFF)", + pff_mode ? "Disable" : "Enable"); + strcpy(assign_mesg, assigned + ? "Release printer (MC)" + : "Assign printer to active session (MC)"); + sprintf(start_mesg, "%s printer-to-host session (MC)", + started ? "Stop" : "Start"); + vt_clear(2); + title(0); printf("Printing-Control Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + + if (pex_mode) + decpex(pex_mode = 0); + + if (pff_mode) + decpex(pff_mode = 0); + + if (assigned) + mc_printer_start(assigned = 0); + + if (started) + mc_printer_start(started = 0); + + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/reports.c b/doc/vttest-20011130/reports.c new file mode 100644 index 0000000..0cb921c --- /dev/null +++ b/doc/vttest-20011130/reports.c @@ -0,0 +1,510 @@ +/* $Id$ */ + +#include <vttest.h> +#include <ttymodes.h> +#include <esc.h> +#include <ctype.h> + +static +struct table { + int key; + char *msg; +} paritytable[] = { + { 1, "NONE" }, + { 4, "ODD" }, + { 5, "EVEN" }, + { -1, "" } +},nbitstable[] = { + { 1, "8" }, + { 2, "7" }, + { -1,"" } +},speedtable[] = { + { 0, "50" }, + { 8, "75" }, + { 16, "110" }, + { 24, "134.5"}, + { 32, "150" }, + { 40, "200" }, + { 48, "300" }, + { 56, "600" }, + { 64, "1200" }, + { 72, "1800" }, + { 80, "2000" }, + { 88, "2400" }, + { 96, "3600" }, + { 104, "4800" }, + { 112, "9600" }, + { 120, "19200" }, + { 128, "38400" }, + { -1, "" } +},operating_level[] = { + { 6, "VT102" }, + { 12, "VT125" }, + { 61, "VT100 family" }, + { 62, "VT200 family" }, + { 63, "VT300 family" }, + { 64, "VT400 family" }, + { 65, "VT500 family" }, + { -1, "" } +},extensions[] = { + { 1, "132 columns" }, /* vt400 */ + { 2, "printer port" }, /* vt400 */ + { 3, "ReGIS Graphics" }, /* kermit */ + { 4, "Sixel Graphics" }, /* kermit */ + { 6, "selective erase" }, /* vt400 */ + { 7, "soft character set (DRCS)" }, /* vt400 */ + { 8, "user-defined keys" }, /* vt400 */ + { 9, "national replacement character-sets" }, /* kermit */ + { 10, "text ruling vector" }, /* ? */ + { 11, "25th status line" }, /* ? */ + { 12, "Serbo-Croation (SCS)" }, /* vt500 */ + { 13, "local editing mode" }, /* kermit */ + { 14, "8-bit architecture" }, /* ? */ + { 15, "DEC technical set" }, /* vt400 */ + { 16, "locator device port (ReGIS)" }, /* kermit */ + { 17, "terminal state reports" }, /* ? */ + { 18, "user windows" }, /* vt400 */ + { 19, "two sessions" }, /* vt400 */ + { 21, "horizontal scrolling" }, /* vt400 */ + { 22, "color" }, /* vt500 */ + { 23, "Greek" }, /* vt500 */ + { 24, "Turkish" }, /* vt500 */ + { 29, "ANSI text locator" }, /* DXterm */ + { 39, "page memory extension" }, /* ? */ + { 42, "ISO Latin-2" }, /* vt500 */ + { 44, "PC Term" }, /* vt500 */ + { 45, "Soft key mapping" }, /* vt500 */ + { 46, "ASCII Terminal emulation (WYSE,TVI,...)" }, /* vt500 */ + { -1, "" } +}; + +static int +legend(int n, char *input, char *word, char *description) +{ + int i; + unsigned len = strlen(word); + char buf[BUFSIZ]; + + for (i = 0; input[i] != 0; i++) { + if ((i == 0 || !isalpha(input[i-1])) + && !strncmp(word, input+i, len)) { + sprintf(buf, "%-8s %-3s = %s", n ? "" : "Legend:", word, description); + show_result("%s", buf); + println(""); + return n+1; + } + } + return n; +} + +static char * +lookup(struct table t[], int k) +{ + int i; + for (i = 0; t[i].key != -1; i++) { + if (t[i].key == k) return(t[i].msg); + } + return("BAD VALUE"); +} + +static int +scan_DA(char *str, int *pos) +{ + int save = *pos; + int value = scanto(str, pos, ';'); + if (value == 0) { + *pos = save; + value = scanto(str, pos, 'c'); + if (str[*pos] != '\0') + value = 0; + } + return value; +} + +/******************************************************************************/ + +static int +tst_DA(MENU_ARGS) +{ + int i, found; + char *report, *cmp; + + static char *attributes[][2] = { /* after CSI */ + { "?1;0c", "No options (vanilla VT100)" }, + { "?1;1c", "VT100 with STP" }, + { "?1;2c", "VT100 with AVO (could be a VT102)" }, + { "?1;3c", "VT100 with STP and AVO" }, + { "?1;4c", "VT100 with GPO" }, + { "?1;5c", "VT100 with STP and GPO" }, + { "?1;6c", "VT100 with AVO and GPO" }, + { "?1;7c", "VT100 with STP, AVO and GPO" }, + { "?1;11c", "VT100 with PP and AVO" }, + { "?1;15c", "VT100 with PP, GPO and AVO" }, + { "?2c", "VT102" }, + { "?4;2c", "VT132 with AVO" }, + { "?4;3c", "VT132 with AVO and STP" }, + { "?4;6c", "VT132 with GPO and AVO" }, + { "?4;7c", "VT132 with GPO, AVO, and STP" }, + { "?4;11c", "VT132 with PP and AVO" }, + { "?4;15c", "VT132 with PP, GPO and AVO" }, + { "?6c", "VT102" }, + { "?7c", "VT131" }, + { "?12;5c", "VT125" }, /* VT125 also has ROM version */ + { "?12;7c", "VT125 with AVO" }, /* number, so this won't work */ + { "?5;0c", "VK100 (GIGI)" }, + { "?5c", "VK100 (GIGI)" }, + { "?62;1;2;4;6;8;9;15c", "VT220" }, + { "?63;1;2;8;9c", "VT320" }, + { "?63;1;2;4;6;8;9;15c", "VT320" }, + { "?63;1;3;4;6;8;9;15;16;29c", "DXterm" }, + { "", "" } + }; + + vt_move(1,1); + println("Test of Device Attributes report (what are you)"); + + set_tty_raw(TRUE); + da(); + report = get_reply(); + vt_move(3,1); + vt_el(0); + printf("Report is: "); + chrprint(report); + + found = FALSE; + if ((cmp = skip_csi(report)) != 0) { + for (i = 0; *attributes[i][0] != '\0'; i++) { + if (!strcmp(cmp, attributes[i][0])) { + int n = 0; + show_result(" -- means %s", attributes[i][1]); + println(""); + n = legend(n, attributes[i][1], "STP", "Processor Option"); + n = legend(n, attributes[i][1], "AVO", "Advanced Video Option"); + n = legend(n, attributes[i][1], "GPO", "Graphics Processor Option"); + n = legend(n, attributes[i][1], "PP", "Printer Port"); + found = TRUE; + break; + } + } + } + if (!found) { /* this could be a vt200+ with some options disabled */ + if (cmp != 0 && *cmp == '?') { + int reportpos = 1; + int value = scan_DA(cmp, &reportpos); + show_result("%s\n", lookup(operating_level, value)); + println(""); + while ((value = scan_DA(cmp, &reportpos)) != 0) { + printf(" "); + show_result("%d = %s\n", value, lookup(extensions, value)); + println(""); + } + found = TRUE; + } + } + if (!found) + show_result(" -- Unknown response, refer to the manual"); + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +/* + * Applies to VT220 & up (probably no VT100's). + * Expected reply (from VT420 manual): + * CSI > 4 1 ; Pv ; 0 c (Pv = firmware version) + * From kermit: + * CSI > 2 4 ; Pv ; 0 c (Pv = "0 ; 0 ; 0", for "0.0") + * I've seen also: + * CSI > 8 3 ; Pv ; 0 c (e.g., Pv = "3 0 7 0 1") + */ +static int +tst_DA_2(MENU_ARGS) +{ + static const struct { + int Pp; + const char *name; + } tbl[] = { + { 1, "VT220" }, + { 18, "VT330" }, + { 19, "VT340" }, + { 24, "kermit" }, + { 28, "DECterm" }, + { 41, "VT420" }, + }; + + char *report; + int Pp, Pv, Pc; + char ch; + char *show = SHOW_FAILURE; + size_t n; + + vt_move(1,1); println("Testing Secondary Device Attributes (Firmware version)"); + + set_tty_raw(TRUE); + do_csi(">c"); /* or "CSI > 0 c" */ + report = get_reply(); + vt_move(3,10); + chrprint(report); + if ((report = skip_csi(report)) != 0) { + if (sscanf(report, ">%d;%d;%d%c", &Pp, &Pv, &Pc, &ch) == 4 + && ch == 'c') { + const char *name = "unknown"; + show = SHOW_SUCCESS; + for (n = 0; n < TABLESIZE(tbl); n++) { + if (Pp == tbl[n].Pp) { + name = tbl[n].name; + break; + } + } + vt_move(4,10); printf("Pp=%d (%s)", Pp, name); + vt_move(5,10); printf("Pv=%d, firmware version %d.%d", Pv, Pv/10, Pv%10); + vt_move(6,10); printf("Pc=%d, ROM cartridge registration number", Pc); + } + } + show_result(show); + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +/* + * VT400 (reply is a hexidecimal string) + */ +static int +tst_DA_3(MENU_ARGS) +{ + char *report; + char *show; + + vt_move(1,1); println("Testing Tertiary Device Attributes (unit ID)"); + + set_tty_raw(TRUE); + do_csi("=c"); /* or "CSI = 0 c" */ + report = get_reply(); + vt_move(3,10); + chrprint(report); + if ((report = skip_dcs(report)) != 0 + && strip_terminator(report) != 0 + && *report++ == '!' + && *report++ == '|' + && strlen(report) != 0) { + show = SHOW_SUCCESS; + } else { + show = SHOW_FAILURE; + } + show_result(show); + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +/* Not supported above VT320 */ +static int +tst_DECREQTPARM(MENU_ARGS) +{ + int parity, nbits, xspeed, rspeed, clkmul, flags; + int reportpos; + char *report, *report2, *cmp; + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + vt_move(2,1); + println("Test of the \"Request Terminal Parameters\" feature, argument 0."); + vt_move(3,1); + decreqtparm(0); + report = get_reply(); + vt_move(5,1); + vt_el(0); + printf("Report is: "); + chrprint(report); + + if ((cmp = skip_csi(report)) != 0) + report = cmp; + + if (strlen(report) < 14 + || report[0] != '2' + || report[1] != ';') + println(" -- Bad format"); + else { + reportpos = 2; + parity = scanto(report, &reportpos, ';'); + nbits = scanto(report, &reportpos, ';'); + xspeed = scanto(report, &reportpos, ';'); + rspeed = scanto(report, &reportpos, ';'); + clkmul = scanto(report, &reportpos, ';'); + flags = scanto(report, &reportpos, 'x'); + + if (parity == 0 || nbits == 0 || clkmul == 0) println(" -- Bad format"); + else println(" -- OK"); + + show_result( + "This means: Parity %s, %s bits, xmitspeed %s, recvspeed %s.\n", + lookup(paritytable, parity), + lookup(nbitstable, nbits), + lookup(speedtable, xspeed), + lookup(speedtable, rspeed)); + show_result("(CLoCk MULtiplier = %d, STP option flags = %d)\n", clkmul, flags); + } + + vt_move(10,1); + println("Test of the \"Request Terminal Parameters\" feature, argument 1."); + vt_move(11,1); + decreqtparm(1); /* Does the same as decreqtparm(0), reports "3" */ + report2 = get_reply(); + vt_move(13,1); + vt_el(0); + printf("Report is: "); + chrprint(report2); + + if ((cmp = skip_csi(report2)) != 0) + report2 = cmp; + + if (strlen(report2) < 1 + || report2[0] != '3') + println(" -- Bad format"); + else { + report2[0] = '2'; + if (!strcmp(report,report2)) println(" -- OK"); + else println(" -- Bad format"); + } + vt_move(max_lines,1); + + restore_ttymodes(); + return MENU_HOLD; +} + +static int +tst_DSR(MENU_ARGS) +{ + int found; + char *report, *cmp; + + set_tty_raw(TRUE); + vt_move(1,1); + printf("Test of Device Status Report 5 (report terminal status)."); + vt_move(2,1); + dsr(5); + report = get_reply(); + vt_move(2,1); + vt_el(0); + printf("Report is: "); + chrprint(report); + + if ((cmp = skip_csi(report)) != 0) + found = !strcmp(cmp, "0n") || !strcmp(cmp, "3n"); + else + found = 0; + + if (found) + show_result(" -- means \"TERMINAL OK\""); + else + show_result(" -- Unknown response!"); + + vt_move(4,1); + println("Test of Device Status Report 6 (report cursor position)."); + vt_move(5,1); + dsr(6); + report = get_reply(); + vt_move(5,1); + vt_el(0); + printf("Report is: "); + chrprint(report); + + if ((cmp = skip_csi(report)) != 0) + found = !strcmp(cmp,"5;1R"); + else + found = 0; + + if (found) + show_result(" -- OK"); + else + show_result(" -- Unknown response!"); + + vt_move(max_lines-1,1); + restore_ttymodes(); + return MENU_HOLD; +} + +static int +tst_ENQ(MENU_ARGS) +{ + char *report; + + vt_move(5,1); + println("This is a test of the ANSWERBACK MESSAGE. (To load the A.B.M."); + println("see the TEST KEYBOARD part of this program). Below here, the"); + println("current answerback message in your terminal should be"); + println("displayed. Finish this test with RETURN."); + vt_move(10,1); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + inflush(); + printf("%c", 5); /* ENQ */ + report = get_reply(); + vt_move(10,1); + chrprint(report); + vt_move(12,1); + + restore_ttymodes(); + return MENU_HOLD; +} + +static int +tst_NLM(MENU_ARGS) +{ + char *report; + + vt_move(1,1); + println("Test of LineFeed/NewLine mode."); + vt_move(3,1); + sm("20"); + set_tty_crmod(FALSE); + printf("NewLine mode set. Push the RETURN key: "); + report = instr(); + vt_move(4,1); + vt_el(0); + chrprint(report); + if (!strcmp(report, "\015\012")) show_result(" -- OK"); + else show_result(" -- Not expected"); + vt_move(6,1); + rm("20"); + printf("NewLine mode reset. Push the RETURN key: "); + report = instr(); + vt_move(7,1); + vt_el(0); + chrprint(report); + if (!strcmp(report, "\015")) show_result(" -- OK"); + else show_result(" -- Not expected"); + vt_move(9,1); + + restore_ttymodes(); + return MENU_HOLD; +} + +/******************************************************************************/ +int +tst_reports(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "<ENQ> (AnswerBack Message)", tst_ENQ }, + { "Set/Reset Mode - LineFeed / Newline", tst_NLM }, + { "Device Status Report (DSR) VT100 & up", tst_DSR }, + { "Primary Device Attributes (DA) VT100 & up", tst_DA }, + { "Secondary Device Attributes (DA) VT220 & up", tst_DA_2 }, + { "Tertiary Device Attributes (DA) VT420", tst_DA_3 }, + { "Request Terminal Parameters (DECREQTPARM) VT100", tst_DECREQTPARM }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("Terminal Reports/Responses"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/reset.c b/doc/vttest-20011130/reset.c new file mode 100644 index 0000000..7f9dcfb --- /dev/null +++ b/doc/vttest-20011130/reset.c @@ -0,0 +1,84 @@ +/* $Id$ */ + +#include <vttest.h> +#include <esc.h> + +static int did_reset = FALSE; + +int +tst_DECSTR(MENU_ARGS) +{ + vt_move(1,1); + println(the_title); + println("(VT220 & up)"); + println(""); + println("The terminal will now soft-reset"); + holdit(); + decstr(); + return MENU_HOLD; +} + +static int +tst_DECTST(MENU_ARGS) +{ + vt_move(1,1); + println(the_title); + println(""); + + if (did_reset) + println("The terminal is now RESET. Next, the built-in confidence test"); + else + printf("The built-in confidence test "); + printf("will be invoked. "); + holdit(); + + vt_clear(2); + dectst(1); + zleep(5000); /* Wait 5.0 seconds */ + vt_move(10,1); + println("If the built-in confidence test found any errors, a code"); + printf("%s", "is visible above. "); + + did_reset = FALSE; + return MENU_HOLD; +} + +static int +tst_RIS(MENU_ARGS) +{ + vt_move(1,1); + println(the_title); + println("(VT100 & up, not recommended)"); + println(""); + printf ("The terminal will now be RESET. "); + holdit(); + ris(); + zleep(5000); /* Wait 5.0 seconds */ + + did_reset = TRUE; + reset_level(); + input_8bits = FALSE; + output_8bits = FALSE; + return MENU_HOLD; +} + +int +tst_rst(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Reset to Initial State (RIS)", tst_RIS }, + { "Invoke Terminal Test (DECTST)", tst_DECTST }, + { "Soft Terminal Reset (DECSTR)", tst_DECSTR }, + { "", 0 } + }; + + did_reset = FALSE; + + do { + vt_clear(2); + title(0); printf(the_title); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/setup.c b/doc/vttest-20011130/setup.c new file mode 100644 index 0000000..10297ec --- /dev/null +++ b/doc/vttest-20011130/setup.c @@ -0,0 +1,298 @@ +/* $Id$ */ + +#include <vttest.h> +#include <esc.h> +#include <ttymodes.h> + +static int cur_level = -1; /* current operating level (VT100=1) */ +static int max_level = -1; /* maximum operating level */ + +static int +check_8bit_toggle(void) +{ + char *report; + + set_tty_raw(TRUE); + cup(1,1); dsr(6); + padding(5); /* FIXME: may not be needed */ + report = get_reply(); + restore_ttymodes(); + + if ((report = skip_csi(report)) != 0 + && !strcmp(report, "1;1R")) + return TRUE; + return FALSE; +} + +/* + * Determine the current and maximum operating levels of the terminal + */ +static void +find_levels(void) +{ + char *report; + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + da(); + report = get_reply(); + if (!strcmp(report, "\033/Z")) { + cur_level = + max_level = 0; /* must be a VT52 */ + } else if ((report = skip_csi(report)) == 0 + || strncmp(report, "?6", 2) + || !isdigit(report[2]) + || report[3] != ';') { + cur_level = + max_level = 1; /* must be a VT100 */ + } else { /* "CSI ? 6 x ; ..." */ + cur_level = + max_level = report[2] - '0'; /* VT220=2, VT320=3, VT420=4 */ + if (max_level >= 4) { + decrqss("\"p"); + report = get_reply(); + if ((report = skip_dcs(report)) != 0 + && isdigit(*report++) /* 0 or 1 (by observation, though 1 is an err) */ + && *report++ == '$' + && *report++ == 'r' + && *report++ == '6' + && isdigit(*report)) + cur_level = *report - '0'; + } + } + + if (LOG_ENABLED) { + fprintf(log_fp, "Max Operating Level: %d\n", max_level); + fprintf(log_fp, "Cur Operating Level: %d\n", cur_level); + } + + restore_ttymodes(); +} + +static int +toggle_DECSCL(MENU_ARGS) +{ + int request = cur_level; + + if (max_level <= 1) { + vt_move(1,1); + printf("Sorry, terminal supports only VT%d", terminal_id()); + vt_move(max_lines-1,1); + return MENU_HOLD; + } + + if (++request > max_level) + request = 1; + set_level(request); + + restore_ttymodes(); + return MENU_NOHOLD; +} + +static int +toggle_Logging(MENU_ARGS) +{ + if (log_fp == 0) + enable_logging(); + else + log_disabled = !log_disabled; + return MENU_NOHOLD; +} + +static int +toggle_Padding(MENU_ARGS) +{ + use_padding = !use_padding; + return MENU_NOHOLD; +} + +static int +toggle_8bit_in(MENU_ARGS) +{ + int old = input_8bits; + + s8c1t(!old); + fflush(stdout); + if (!check_8bit_toggle()) { + input_8bits = old; + vt_clear(2); + vt_move(1,1); + println("Sorry, this terminal does not support 8-bit input controls"); + return MENU_HOLD; + } + return MENU_NOHOLD; +} + +/* + * This changes the CSI code to/from an escape sequence. + */ +static int +toggle_8bit_out(MENU_ARGS) +{ + int old = output_8bits; + + fflush(stdout); + output_8bits = !output_8bits; + if (!check_8bit_toggle()) { + output_8bits = old; + vt_clear(2); + vt_move(1,1); + println("Sorry, this terminal does not support 8-bit output controls"); + return MENU_HOLD; + } + return MENU_NOHOLD; +} + +/******************************************************************************/ + +void +enable_logging(void) +{ + static char my_name[] = "vttest.log"; + log_fp = fopen(my_name, "w"); + if (log_fp == 0) { + perror(my_name); + exit(EXIT_FAILURE); + } +} + +void +reset_level(void) +{ + cur_level = max_level; +} + +void +restore_level(VTLEVEL *save) +{ + set_level(save->cur_level); + if (cur_level > 1 + && save->input_8bits != input_8bits) /* just in case level didn't change */ + s8c1t(save->input_8bits); + output_8bits = save->output_8bits; /* in case we thought this was VT100 */ +} + +void +save_level(VTLEVEL *save) +{ + save->cur_level = cur_level; + save->input_8bits = input_8bits; + save->output_8bits = output_8bits; + + if (LOG_ENABLED) + fprintf(log_fp, "save_level(%d) in=%d, out=%d\n", cur_level, + input_8bits ? 8 : 7, + output_8bits ? 8 : 7); +} + +int +get_level(void) +{ + return cur_level; +} + +int +set_level(int request) +{ + if (cur_level < 0) + find_levels(); + + if (LOG_ENABLED) + fprintf(log_fp, "set_level(%d)\n", request); + + if (request > max_level) { + printf("Sorry, this terminal supports only VT%d\n", terminal_id()); + return FALSE; + } + + if (request != cur_level) { + if (request == 0) { + rm("?2"); /* Reset ANSI (VT100) mode, Set VT52 mode */ + input_8bits = FALSE; + output_8bits = FALSE; + } else { + if (cur_level == 0) { + esc("<"); /* Enter ANSI mode (VT100 mode) */ + } + if (request == 1) { + input_8bits = FALSE; + output_8bits = FALSE; + } + if (request > 1) + do_csi("6%d;%d\"p", request, !input_8bits); + else + do_csi("61\"p"); + } + padding(5); /* FIXME: may not be needed */ + + cur_level = request; + } + + if (LOG_ENABLED) + fprintf(log_fp, "...set_level(%d) in=%d, out=%d\n", cur_level, + input_8bits ? 8 : 7, + output_8bits ? 8 : 7); + + return TRUE; +} + +/* + * Set the terminal's operating level to the default (i.e., based on what the + * terminal returns as a response to DA). + */ +void +default_level() +{ + if (max_level < 0) + find_levels(); + set_level(max_level); +} + +int +terminal_id(void) +{ + if (max_level >= 1) + return max_level * 100; + else if (max_level == 0) + return 52; + return 100; +} + +int +tst_setup(MENU_ARGS) +{ + static char txt_output[80] = "send 7/8"; + static char txt_input8[80] = "receive 7/8"; + static char txt_DECSCL[80] = "DECSCL"; + static char txt_logging[80] = "logging"; + static char txt_padded[80] = "padding"; + + static MENU my_menu[] = { + { "Return to main menu", 0 }, + { "Setup terminal to original test-configuration", setup_terminal }, + { txt_output, toggle_8bit_out }, + { txt_input8, toggle_8bit_in }, + { txt_DECSCL, toggle_DECSCL }, + { txt_logging, toggle_Logging }, + { txt_padded, toggle_Padding }, + { "", 0 } + }; + + if (cur_level < 0) + find_levels(); + + do { + sprintf(txt_output, "Send %d-bit controls", output_8bits ? 8 : 7); + sprintf(txt_input8, "Receive %d-bit controls", input_8bits ? 8 : 7); + sprintf(txt_DECSCL, "Operating level %d (VT%d)", + cur_level, cur_level ? cur_level * 100 : 52); + sprintf(txt_logging, "Logging %s", LOG_ENABLED ? "enabled" : "disabled"); + sprintf(txt_padded, "Padding %s", use_padding ? "enabled" : "disabled"); + + vt_clear(2); + title(0); println("Modify test-parameters"); + title(2); println("Select a number to modify it:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/sixel.c b/doc/vttest-20011130/sixel.c new file mode 100644 index 0000000..9d43d5a --- /dev/null +++ b/doc/vttest-20011130/sixel.c @@ -0,0 +1,303 @@ +/* $Id$ */ + +#include <vttest.h> +#include <ttymodes.h> +#include <esc.h> + +#define is_inter(c) ((c) >= 0x20 && ((c) <= 0x2f)) +#define is_final(c) ((c) >= 0x30 && ((c) <= 0x7e)) + +#define L_CURL '{' +#define MAX_WIDTH 10 + +static char *EraseCtl = ""; +static char *FontName = ""; +static char *StartingCharPtr = ""; +static char *TextCell = ""; +static char *WidthAttr = ""; +static char *font_string = ""; +static int FontNumber; +static int MatrixHigh; +static int MatrixWide; +static int StartingCharNum; + +/* + * Lookup the given character 'chr' in the font-string and write a readable + * display of the glyph + */ +static void +decode_header(void) +{ + int Pe, Pcms, Pw, Pt; + char *s; + + switch (sscanf(font_string+2, "%d;%d;%d;%d;%d;%d", &FontNumber, &StartingCharNum, &Pe, &Pcms, &Pw, &Pt)) { + case 0: FontNumber = 0; + case 1: StartingCharNum = 0; + case 2: Pe = 0; + case 3: Pcms = 0; + case 4: Pw = 0; + case 5: Pt = 0; + case 6: + break; + } + + switch (Pcms) { + case 1: MatrixWide = 0; MatrixHigh = 0; break; /* illegal */ + case 2: MatrixWide = 5; MatrixHigh = 10; break; + case 3: MatrixWide = 6; MatrixHigh = 10; break; + case 0: + case 4: MatrixWide = 7; MatrixHigh = 10; break; + default: MatrixWide = Pcms; MatrixHigh = 10; break; /* 5 thru 10 */ + } + + switch (Pe) { + case 0: EraseCtl = "this DRCS set"; break; + case 1: EraseCtl = "only reloaded chars"; break; + case 2: EraseCtl = "all chars in all DRCS sets"; break; + default: EraseCtl = "?"; break; + } + + switch (Pw) { + case 0: /* FALLTHRU */ + case 1: WidthAttr = "80 cols, 24 lines"; break; + case 2: WidthAttr = "132 cols, 24 lines"; break; + case 11: WidthAttr = "80 cols, 36 lines"; break; + case 12: WidthAttr = "132 cols, 36 lines"; break; + case 21: WidthAttr = "80 cols, 24 lines"; break; + case 22: WidthAttr = "132 cols, 48 lines"; break; + default: WidthAttr = "?"; break; + } + + if (Pt == 2) + TextCell = "Full Cell"; + else + TextCell = "Text"; + for (s = font_string; *s; s++) { + if (*s == L_CURL) { + char *t; + char tmp[BUFSIZ]; + size_t use = 0; + for (t = s + 1; *t; t++) { + if (is_inter(*t)) { + tmp[use++] = *t; + } + if (is_final(*t)) { + tmp[use++] = *t++; + tmp[use] = '\0'; + FontName = strcpy(malloc(use+1), tmp); + StartingCharPtr = t; + break; + } + } + break; + } + } +} + +static char * +find_char(int chr) +{ + char *s = StartingCharPtr; + + chr -= (' ' + StartingCharNum); + if (chr < 0) + return 0; + while (chr > 0) { + do { + if (*s == '\0') + return 0; + } while (*s++ != ';'); + chr--; + } + return s; +} + +static void +display_head(FILE *fp) +{ + fprintf(fp, "Font %d:%s, Matrix %dx%d (%s, %s)\n", + FontNumber, FontName, MatrixWide, MatrixHigh, WidthAttr, TextCell); + fprintf(fp, "Start %d, Erase %s\n", + StartingCharNum, EraseCtl); +} + +static int +display_char(FILE *fp, int chr) +{ + char *s; + int bit, n, high; + char bits[6][MAX_WIDTH]; + + s = find_char(chr); + if (s != 0) { + fprintf(fp, "Glyph '%c'\n", chr); + bit = 0; + high = 0; + do { + if (*s >= '?' && *s <= '~') { + for (n = 0; n < 6; n++) + bits[n][bit] = ((*s - '?') & 1 << n) ? 'O' : '.'; + bit++; + } else if ((*s == ';' || *s == '/') && bit) { + for (n = 0; (n < 6) && (high++ < MatrixHigh); n++) { + bits[n][bit] = '\0'; + fprintf(fp, "%s\n", bits[n]); + } + bit = 0; + } + } while (*s++ != ';'); + return TRUE; + } + return FALSE; +} + +static int +tst_DECDLD(MENU_ARGS) +{ + char *s; + + vt_move(1,1); + printf("Working...\n"); + for (s = font_string; *s; s++) { + putchar(*s); + if (*s == '\n') { + fflush(stdout); + padding(20); + } + } + fflush(stdout); + padding(20); + printf("...done "); + + printf("%c*%s", ESC, FontName); /* designate G2 as the DRCS font */ + padding(4); + fflush(stdout); + + return MENU_HOLD; +} + +static int +tst_display(MENU_ARGS) +{ + int d, c = -1; + + vt_move(1,1); + display_head(stdout); + println(""); + println("Press any key to display its soft-character. Repeat a key to quit."); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + do { + d = c; + c = inchar(); + vt_move(6,1); + vt_clear(0); + if (display_char(stdout, c)) { + println(""); + printf("Render: %cN%c", ESC, c); /* use SS2 to invoke G2 into GL */ + } + } while (c != d); + + restore_ttymodes(); + return MENU_NOHOLD; +} + +/* + * Remove all characters in all DRCS sets (the " @" is a dummy name) + */ +static int +tst_cleanup(MENU_ARGS) +{ + do_dcs("1;1;2%c @", L_CURL); + padding(20); + return MENU_NOHOLD; +} + +/* + * Read a soft-character definition string from a file. Strip off garbage + * at the beginning (to accommodate the "font2xx" output format). + */ +void +setup_softchars(char *filename) +{ + FILE *fp; + int c; + size_t len = 1024; + size_t use = 0; + char *buffer = malloc(len); + char *s; + char *first = 0; + char *last = 0; + int save_8bits = input_8bits; + input_8bits = FALSE; /* use the 7-bit input-parsing */ + + /* read the file into memory */ + if ((fp = fopen(filename, "r")) == 0) { + perror(filename); + exit(EXIT_FAILURE); + } + while ((c = fgetc(fp)) != EOF) { + if (use+1 >= len) { + buffer = realloc(buffer, len *= 2); + } + buffer[use++] = c; + } + buffer[use] = '\0'; + fclose(fp); + + /* find the DCS that begins the control string */ + /* and the ST that ends the control string */ + for (s = buffer; *s; s++) { + if (first == 0) { + if (skip_dcs(s) != 0) + first = s; + } else { + if (!strncmp(s, st_input(), 2)) { + last = s + 2; + *last = '\0'; + break; + } + } + } + input_8bits = save_8bits; + + if (first == 0 || last == 0) { + fprintf(stderr, "Not a vtXXX font description: %s\n", filename); + exit(EXIT_FAILURE); + } + for (s = buffer; (*s++ = *first++) != '\0'; ) + ; + if (LOG_ENABLED && first != 0) + fprintf(log_fp, "Font String:\n%s\n", buffer); + + font_string = buffer; + + decode_header(); +} + +int +tst_softchars(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Download the soft characters", tst_DECDLD }, + { "Examine the soft characters", tst_display }, + { "Clear the soft characters", tst_cleanup }, + { "", 0 } + }; + + vt_move(1,1); + if (font_string == 0 || *font_string == 0) { + printf("You did not specify a font-file with the -f option\n"); + return MENU_HOLD; + } + do { + vt_clear(2); + title(0); printf("Soft Character Sets"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/status.c b/doc/vttest-20011130/status.c new file mode 100644 index 0000000..989a480 --- /dev/null +++ b/doc/vttest-20011130/status.c @@ -0,0 +1,102 @@ +/* $Id$ */ + +#include <vttest.h> +#include <esc.h> +#include <ttymodes.h> + +static void +restore_status(void) +{ + decsasd(0); /* main display */ + decssdt(1); /* indicator (default) */ + restore_ttymodes(); +} + +static int +simple_statusline(MENU_ARGS) +{ + static char text[] = "TEXT IN THE STATUS LINE"; + + vt_move(1,1); + println("This is a simple test of the status-line"); + println(""); + + decssdt(2); + decsasd(1); + printf(text); + decsasd(0); + printf("There should be %s\r\n", text); + holdit(); + + decssdt(0); + println("There should be no status line"); + holdit(); + + decssdt(1); + println("The status line should be normal (i.e., indicator)"); + holdit(); + + restore_status(); + return MENU_NOHOLD; +} + +static int +SGR_statusline(MENU_ARGS) +{ + vt_move(1,1); + println("This test writes SGR controls to the status-line"); + holdit(); + + decssdt(2); + decsasd(1); + + el(2); + cup(1,1); + sgr("1"); + printf("BOLD text "); + sgr("0"); + printf("NORMAL text "); + + decsasd(0); + holdit(); + + restore_status(); + holdit(); + + restore_status(); + return MENU_NOHOLD; +} + +/* VT200 & up + * + * CSI Ps $ } DECSASD Select active status display + * Ps = 0 select main display + * Ps = 1 select status line + * Moves cursor to selected display area. This command will be ignored + * unless the status line has been enabled by CSI 2 $ ~. When the + * status line has been selected cursor remains there until the main + * display is reselected by CSI 0 $ }. + * + * CSI Ps $ ~ DECSSDT Select Status Line Type + * Ps meaning + * 0 no status line (empty) + * 1 indicator line + * 2 host-writable line + */ +int +tst_statusline(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Simple Status line Test", simple_statusline }, + { "Test Graphic-Rendition in Status line", SGR_statusline }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); println(the_title); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/tech.set b/doc/vttest-20011130/tech.set new file mode 100644 index 0000000..0737413 --- /dev/null +++ b/doc/vttest-20011130/tech.set @@ -0,0 +1,96 @@ +Working...P1;1;1;4{ @ +__?~????/??@B????; +???wGGGG/???N????; +GGGGGGGG/????????; +???}@@A?/???N????; +???~????/CGGF????; +???~????/???N????; +???}A???/???N????; +???~????/???FC???; +??A}????/???N????; +???~????/??CF????; +???{A@??/???N????; +???~????/???BCG??; +?@A{????/???N????; +???~????/?GCB????; +?_ON????/??@M????; +???NO_??/???M@???; +???WgGGG/?????@A?; +???GKIHG/????????; +@ACGO_??/??????@?; +?_OGCA@?/@???????; +GGGGGGW?/????????; +GGGGGGK?/????????; +@ACGo???/GCA@????; +????????/????????; +????????/????????; +????????/????????; +????????/????????; +?OWSQOO?/?@@@@@@?; +?ggwkig?/?A@?????; +?OOQSWO?/?@@@@@@?; +???}@@A?/CGGF????; +???C????/A?????A?; +_OGGGOoG/?@AAA@@A; +oGGo?Go?/@AA@?A@?; +OOOSOOO?/???@????; +?oKAKo??/BAAAAAB?; +KScCcSK?/???@????; +Wcd~dcW?/??ABA???; +?@~@@B??/?ABA????; +OGGO__O?/????????; +GCCGOOG?/@@@@@@@?; +wCQQQCw?/?@AAA@??; +?CgOgC??/?@???@??; +?oKAKo??/BA???AB?; +gkigikg?/?@A?A@??; +?gggikg?/????A@??; +?gggggg?/?AAAAAA?; +A}AAA}A?/?B???B??; +MO_}_OM?/??ABA???; +????????/????????; +AEiQAAA?/ABAAAAA?; +????????/????????; +????????/????????; +_??_WEA?/?@A@????; +wCAAACw?/AB???BA?; +?AQQQQA?/?AAAAAA?; +CA?{AAC?/???B????; +oGCCCCC?/?@AAAAA?; +CCCCCGo?/AAAAA@??; +wCAAACw?/B?????B?; +}?????}?/?@AAA@??; +?oKAKo??/B?????B?; +EW_?_WE?/??@A@???; +?GGGGGW?/????????; +_OGGoOG?/?@AA@@A?; +?_WSqQK?/A@AAA@??; +?GGO__W?/GCA@?@M?; +?_O[QaC?/?@AAA@??; +?ogggG??/?@AAAA??; +_OOOoOg?/HEABAA@?; +GCGo?_O?/??KN@???; +GGoOGGo?/??B???N?; +???w????/???@AA@?; +oggggo??/@AAAA@??; +C{?_OG??/?B@@AA??; +?CCgO_??/AA@???B?; +????????/????????; +CcW??_[?/ABA@@???; +CCcSGGo?/??@AAA@?; +?GwGGwG?/?A@??B??; +_??w??_?/?@ANA@??; +??_OGGo?/KB??@@??; +_OGGWgG?/@AAAA@??; +OGGwGGC?/???BA???; +????????/????????; +???}PPA?/EGGF????; +oG?_?Go?/@AA@AA@?; +OgicCC??/?BAIIE??; +Cw????w?/??@AA@??; +cQIEEAA?/?@@DDB??; +OwSOOOO?/??@?????; +?GC}CG??/???B????; +OOOOSwO?/????@???; +?_?}?_??/??@B@???; +\[1;1H[2JCharacters Loaded. diff --git a/doc/vttest-20011130/ttymodes.c b/doc/vttest-20011130/ttymodes.c new file mode 100644 index 0000000..7d12e10 --- /dev/null +++ b/doc/vttest-20011130/ttymodes.c @@ -0,0 +1,300 @@ +/* $Id$ */ + +#include <vttest.h> +#include <ttymodes.h> +#include <esc.h> /* inflush() */ + +static TTY old_modes, new_modes; + +static struct { + int name; + int code; +} 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 +}; + +#if !USE_POSIX_TERMIOS && !USE_TERMIO && USE_SGTTY +static struct tchars old_tchars; +static struct ltchars old_ltchars; +#endif + +#if USE_POSIX_TERMIOS || USE_TERMIO +static void +disable_control_chars(TTY *modes) +{ +# if USE_POSIX_TERMIOS + int n; + int temp; +# if HAVE_POSIX_VDISABLE + temp = _POSIX_VDISABLE; +# else + errno = 0; + temp = fpathconf(0, _PC_VDISABLE); + if (temp == -1) { + if (errno != 0) { + restore_ttymodes(); + fprintf(stderr, "Cannot disable special characters!\n"); + exit(EXIT_FAILURE); + } + temp = 0377; + } +# endif + for (n = 0; n < NCCS; n++) + modes->c_cc[n] = temp; +# else /* USE_TERMIO */ +# ifdef VSWTCH + modes->c_cc[VSWTCH] = VDISABLE; +# endif + modes->c_cc[VSUSP] = VDISABLE; +# if defined (VDSUSP) && defined(NCCS) && VDSUSP < NCCS + modes->c_cc[VDSUSP] = VDISABLE; +# endif + modes->c_cc[VSTART] = VDISABLE; + modes->c_cc[VSTOP] = VDISABLE; +# endif + modes->c_cc[VMIN] = 1; + modes->c_cc[VTIME] = 0; +} +#endif + +static void +set_ttymodes(TTY *modes) +{ +# if USE_POSIX_TERMIOS + fflush(stdout); + tcsetattr(0, TCSAFLUSH, modes); +# else +# if USE_TERMIO + tcsetattr(0, TCSETAF, modes); +# else /* USE_SGTTY */ + stty(0, modes); +# endif +# endif +} + +#ifndef log_ttymodes +void log_ttymodes(char *file, int line) +{ + if (LOG_ENABLED) + fprintf(log_fp, "%s @%d\n", file, line); +} +#endif + +#ifndef dump_ttymodes +void dump_ttymodes(char *tag, int flag) +{ +#ifdef UNIX + TTY tmp_modes; + if (LOG_ENABLED) { + fprintf(log_fp, "%s (%d):\n", tag, flag); +# if USE_POSIX_TERMIOS || USE_TERMIO + tcgetattr(0, &tmp_modes); + fprintf(log_fp, " iflag %08lo\n", tmp_modes.c_iflag); + fprintf(log_fp, " oflag %08lo\n", tmp_modes.c_oflag); + fprintf(log_fp, " lflag %08lo\n", tmp_modes.c_lflag); + if (!tmp_modes.c_lflag & ICANON) { + fprintf(log_fp, " %d:min =%d\n", VMIN, tmp_modes.c_cc[VMIN]); + fprintf(log_fp, " %d:time =%d\n", VTIME, tmp_modes.c_cc[VTIME]); + } +# else + gtty(0, &tmp_modes); + fprintf(log_fp, " flags %08o\n", tmp_modes.sg_flags); +# endif + } +#endif +} +#endif + +void +close_tty(void) +{ + restore_ttymodes(); +} + +void init_ttymodes(int pn) +{ + int speed_code, n; + + dump_ttymodes("init_ttymodes", pn); +#ifdef UNIX + if (pn==0) { + fflush(stdout); +# if USE_POSIX_TERMIOS || USE_TERMIO + tcgetattr(0, &old_modes); + speed_code = cfgetospeed(&old_modes); +# else +# if USE_SGTTY + gtty(0, &old_modes); + ioctl(0, TIOCGETC, &old_tchars); + ioctl(0, TIOCGLTC, &old_ltchars); + speed_code = old_modes.sg_ospeed; +# endif +# endif + new_modes = old_modes; + for (n = 0; n < TABLESIZE(speeds); n++) { + if (speeds[n].name == speed_code) { + tty_speed = speeds[n].code; + break; + } + } + } else { + putchar(BEL); + fflush(stdout); + inflush(); + new_modes = old_modes; + sleep(2); + } +# if USE_POSIX_TERMIOS || USE_TERMIO + new_modes.c_iflag = BRKINT | old_modes.c_iflag; +# else /* USE_SGTTY */ + new_modes.sg_flags = old_modes.sg_flags | CBREAK; +# endif + set_ttymodes(&new_modes); +# if HAVE_FCNTL_H + close(2); + open("/dev/tty", O_RDWR|O_NDELAY); +# endif +#endif /* UNIX */ + dump_ttymodes("...init_ttymodes", pn); +} + +void restore_ttymodes(void) +{ + dump_ttymodes("restore_ttymodes", -1); +#ifdef UNIX + set_ttymodes(&old_modes); +#endif + dump_ttymodes("...restore_ttymodes", -1); +} + +void +set_tty_crmod(int enabled) +{ + dump_ttymodes("set_tty_crmod", enabled); +#ifdef UNIX +# if USE_POSIX_TERMIOS || USE_TERMIO +# if USE_POSIX_TERMIOS +# define MASK_CRMOD ((unsigned long) (ICRNL | IXON)) +# else +# define MASK_CRMOD ((unsigned long) (ICRNL)) +# endif + if (enabled) { + new_modes.c_iflag |= MASK_CRMOD; + new_modes.c_lflag |= ICANON; + memcpy(new_modes.c_cc, old_modes.c_cc, sizeof(new_modes.c_cc)); + } else { + new_modes.c_iflag &= ~MASK_CRMOD; + new_modes.c_lflag &= ~ICANON; + disable_control_chars(&new_modes); + } +# else + if (enabled) + new_modes.sg_flags |= CRMOD; + else + new_modes.sg_flags &= ~CRMOD; +# endif + set_ttymodes(&new_modes); +#endif + dump_ttymodes("...set_tty_crmod", enabled); +} + +void +set_tty_echo(int enabled) +{ + dump_ttymodes("set_tty_echo", enabled); +#ifdef UNIX +# if USE_POSIX_TERMIOS || USE_TERMIO + if (enabled) + new_modes.c_lflag |= ECHO; + else + new_modes.c_lflag &= ~ECHO; +# else /* USE_SGTTY */ + if (enabled) + new_modes.sg_flags |= ECHO; + else + new_modes.sg_flags &= ~ECHO; +# endif + set_ttymodes(&new_modes); +#endif + dump_ttymodes("...set_tty_echo", enabled); +} + +void +set_tty_raw(int enabled) +{ + dump_ttymodes("set_tty_raw", enabled); + if (enabled) { +#ifdef UNIX +# if USE_POSIX_TERMIOS || USE_TERMIO + new_modes.c_iflag = 0; + new_modes.c_lflag = 0; + new_modes.c_cc[VMIN] = 1; + new_modes.c_cc[VTIME] = 0; + set_ttymodes(&new_modes); + set_tty_crmod(FALSE); +# else /* USE_SGTTY */ +# if HAVE_FCNTL_H + new_modes.sg_flags &= ~CBREAK; +# endif + new_modes.sg_flags |= RAW; + set_ttymodes(&new_modes); + { + struct tchars tmp_tchars; + struct ltchars tmp_ltchars; + memset(&tmp_tchars, -1, sizeof(tmp_tchars)); + memset(&tmp_ltchars, -1, sizeof(tmp_ltchars)); + ioctl(0, TIOCSETC, &tmp_tchars); + ioctl(0, TIOCSLTC, &tmp_ltchars); + } +# endif +#endif + } else { +#ifdef UNIX +# if USE_POSIX_TERMIOS || USE_TERMIO + new_modes = old_modes; /* FIXME */ +# else /* USE_SGTTY */ + new_modes.sg_flags &= ~RAW; +# if HAVE_FCNTL_H + new_modes.sg_flags |= CBREAK; +# endif + ioctl(0, TIOCSETC, &old_tchars); + ioctl(0, TIOCSLTC, &old_ltchars); +# endif + set_ttymodes(&new_modes); +#endif + } + dump_ttymodes("...set_tty_raw", enabled); +} diff --git a/doc/vttest-20011130/ttymodes.h b/doc/vttest-20011130/ttymodes.h new file mode 100644 index 0000000..0c9056b --- /dev/null +++ b/doc/vttest-20011130/ttymodes.h @@ -0,0 +1,21 @@ +/* $Id$ */ + +#ifndef TTYMODES_H +#define TTYMODES_H 1 + +#ifdef DEBUG +void log_ttymodes(char *file, int line); +void dump_ttymodes(char *tag, int flag); +#else +#define log_ttymodes(file, line) /*nothing*/ +#define dump_ttymodes(tag, flag) /*nothing*/ +#endif + +void close_tty(void); +void init_ttymodes(int pn); +void restore_ttymodes(void); +void set_tty_crmod(int enabled); +void set_tty_echo(int enabled); +void set_tty_raw(int enabled); + +#endif /* TTYMODES_H */ diff --git a/doc/vttest-20011130/unix_io.c b/doc/vttest-20011130/unix_io.c new file mode 100644 index 0000000..70ee8a7 --- /dev/null +++ b/doc/vttest-20011130/unix_io.c @@ -0,0 +1,196 @@ +/* $Id$ */ + +#include <stdarg.h> +#include <vttest.h> +#include <esc.h> + +static void +give_up(int sig) +{ + if (LOG_ENABLED) { + fprintf(log_fp, "** killing program due to timeout\n"); + fflush(log_fp); + } + kill(getpid(), (int) SIGTERM); +} + +static int last_char; + +void +reset_inchar(void) +{ + last_char = -1; +} + +/* + * Wait until a character is typed on the terminal then read it, without + * waiting for CR. + */ +char +inchar(void) +{ + int lval; char ch; + + fflush(stdout); + lval = last_char; + brkrd = FALSE; + reading = TRUE; +#if HAVE_ALARM + signal(SIGALRM, give_up); + alarm(60); /* timeout after 1 minute, in case user's keyboard is hung */ +#endif + read(0,&ch,1); +#if HAVE_ALARM + alarm(0); +#endif + reading = FALSE; +#ifdef DEBUG + { + FILE *fp = fopen("ttymodes.log","a"); + if (fp != 0) { + fprintf(fp, "%d>%#x\n", brkrd, ch); + fclose(fp); + } + } +#endif + if (brkrd) + last_char = 0177; + else + last_char = ch; + if ((last_char==0177) && (last_char==lval)) + give_up(SIGTERM); + return(last_char); +} + +/* + * Get an unfinished string from the terminal: wait until a character is typed + * on the terminal, then read it, and all other available characters. Return a + * pointer to that string. + */ +char * +instr(void) +{ +#if USE_FIONREAD + long l1; +#endif + int i; + static char result[1024]; + + i = 0; + result[i++] = inchar(); +/* Wait 0.1 seconds (1 second in vanilla UNIX) */ + zleep(100); + fflush(stdout); +#if HAVE_RDCHK + while(rdchk(0)) { + read(0,result+i,1); + if (i++ == sizeof(result)-2) break; + } +#else +#if USE_FIONREAD + while(ioctl(0,FIONREAD,&l1), l1 > 0L) { + while(l1-- > 0L) { + read(0,result+i,1); + if (i++ == sizeof(result)-2) goto out1; + } + } +out1: +#else + while(read(2,result+i,1) == 1) + if (i++ == sizeof(result)-2) break; +#endif +#endif + result[i] = '\0'; + + if (LOG_ENABLED) { + fputs("Reply: ", log_fp); + put_string(log_fp, result); + fputs("\n", log_fp); + } + + return(result); +} + +char * +get_reply(void) +{ + return instr(); /* cf: vms_io.c */ +} + +/* + * Read to the next newline, truncating the buffer at BUFSIZ-1 characters + */ +void +inputline(char *s) +{ + do { + int ch; + char *d = s; + while ((ch = getchar()) != EOF && ch != '\n') { + if ((d - s) < BUFSIZ-2) + *d++ = ch; + } + *d = 0; + } while (!*s); +} + +/* + * Flush input buffer, make sure no pending input character + */ +void +inflush(void) +{ + int val; + +#if HAVE_RDCHK + while(rdchk(0)) + read(0,&val,1); +#else +#if USE_FIONREAD + long l1; + ioctl (0, FIONREAD, &l1); + while(l1-- > 0L) + read(0,&val,1); +#else + while(read(2,&val,1) > 0) + ; +#endif +#endif +} + +void +holdit(void) +{ + inflush(); + printf("Push <RETURN>"); + readnl(); +} + +void +readnl(void) +{ + char ch; + fflush(stdout); + brkrd = FALSE; + reading = TRUE; + do { read(0,&ch,1); } while(ch != '\n' && !brkrd); + if (brkrd) + give_up(SIGTERM); + reading = FALSE; +} + +/* + * Sleep and do nothing (don't waste CPU) for t milliseconds + */ +void +zleep(int t) +{ +#if HAVE_USLEEP + unsigned msecs = t * 1000; + usleep(msecs); +#else + unsigned secs = t / 1000; + if (secs == 0) secs = 1; + sleep(secs); /* UNIX can only sleep whole seconds */ +#endif +} diff --git a/doc/vttest-20011130/vms_io.c b/doc/vttest-20011130/vms_io.c new file mode 100644 index 0000000..a4aef4e --- /dev/null +++ b/doc/vttest-20011130/vms_io.c @@ -0,0 +1,405 @@ +/* $Id$ */ + +#define DEBUG + +#include <stdarg.h> +#include <vttest.h> +#include <esc.h> +#include <ttymodes.h> + +#include <starlet.h> +#include <lib$routines.h> +#include <stsdef.h> +#include <ssdef.h> +#include <descrip.h> +#include <iodef.h> +#include <ttdef.h> +#include <tt2def.h> + +typedef struct { + unsigned short int status; /* I/O completion status */ + unsigned short int count; /* byte transfer count */ + int dev_dep_data; /* device dependant data */ + } QIO_SB; /* This is a QIO I/O Status Block */ + +#define NIBUF 1024 /* Input buffer size */ +#define NOBUF 1024 /* MM says big buffers win! */ +#define EFN 0 /* Event flag */ + +static char obuf[NOBUF]; /* Output buffer */ +static int nobuf; /* # of bytes in above */ +static char ibuf[NIBUF]; /* Input buffer */ +static int nibuf; /* # of bytes in above */ +static int oldmode[3]; /* Old TTY mode bits */ +static int newmode[3]; /* New TTY mode bits */ +static short iochan; /* TTY I/O channel */ + +static int in_flags; +static int cr_flag = TRUE; + +static void +give_up(int status) +{ + if (LOG_ENABLED) + fprintf(log_fp, "status=%#x\n", status); + close_tty(); + exit(status); +} + +static int +lookup_speed(int code) +{ + static struct { + int code; + int speed; + } table[] = { + {TT$C_BAUD_50, 50 } + ,{TT$C_BAUD_75, 75 } + ,{TT$C_BAUD_110, 110 } + ,{TT$C_BAUD_134, 134 } + ,{TT$C_BAUD_150, 150 } + ,{TT$C_BAUD_300, 300 } + ,{TT$C_BAUD_600, 600 } + ,{TT$C_BAUD_1200, 1200 } + ,{TT$C_BAUD_1800, 1800 } + ,{TT$C_BAUD_2000, 2000 } + ,{TT$C_BAUD_2400, 2400 } + ,{TT$C_BAUD_3600, 3600 } + ,{TT$C_BAUD_4800, 4800 } + ,{TT$C_BAUD_7200, 7200 } + ,{TT$C_BAUD_9600, 9600 } + ,{TT$C_BAUD_19200, 19200 } + ,{TT$C_BAUD_38400, 38400 } +#ifdef TT$C_BAUD_57600 + ,{TT$C_BAUD_57600, 57600 } + ,{TT$C_BAUD_76800, 76800 } + ,{TT$C_BAUD_115200, 115200 } +#endif + }; + int n; + int speed = DEFAULT_SPEED; + for (n = 0; n < TABLESIZE(table); n++) { + if (table[n].code == code) { + if (table[n].speed > DEFAULT_SPEED) + speed = table[n].speed; + break; + } + } + return speed; +} + +/* + * Read the tty-in. If we're looking for a single character, wait. Otherwise, + * read whatever is available, assuming that it's queued and ready. + * + * The VMS terminal driver operates with a one-second timer, and (from the + * manual) we must give at least two seconds for the timeout value. If we + * give a 0-second timeout, we'll only get (from testing) 16 bytes, which + * is enough for a CPR, but not for DA, etc. + */ +static void +read_vms_tty(int length, int timed) +{ + int status; + QIO_SB iosb; + int term[2] = {0,0}; + int my_flags = IO$_READLBLK | in_flags; + int timeout = 0; + + if (length < 1) + return; + if (length > 1) { + my_flags |= IO$M_TIMED; + timeout = 1; /* seconds */ + } + if (timed) + timeout = 2; /* seconds */ + +#ifdef DEBUG + if (LOG_ENABLED) { + fprintf(log_fp, "reading: len=%d, flags=%#x\n", length, my_flags); + fflush(log_fp); + } +#endif + status = sys$qiow(EFN, iochan, my_flags, + &iosb, 0, 0, ibuf, length, timeout, term, 0, 0); +#ifdef DEBUG + if (LOG_ENABLED) { + fprintf(log_fp, + "read: st=%d, cnt=%#x, dev=%#x\n", + iosb.status, iosb.count, iosb.dev_dep_data); + fflush(log_fp); + } +#endif + + if (status != SS$_NORMAL + || iosb.status == SS$_ENDOFFILE) + give_up(status); + + nibuf = iosb.count + (iosb.dev_dep_data >> 16); +} + +/******************************************************************************/ + +void reset_inchar(void) +{ + /* FIXME */ +} + +/* + * Wait until a character is typed on the terminal then read it, without + * waiting for CR. + */ +char +inchar(void) +{ + int c; + + fflush(stdout); + read_vms_tty(1, FALSE); + c = (ibuf[0] & 0xff); + if (c == '\r' && cr_flag && !(in_flags & IO$M_NOFILTR)) { + c = '\n'; + if (in_flags & IO$M_NOECHO) + putchar(c); + } + return c; +} + +/* + * Get an unfinished string from the terminal: wait until a character is typed + * on the terminal, then read it, and all other available characters. Return a + * pointer to that string. + * + * This function won't read long strings, but we use it for instances where + * we only expect short (16 bytes or less) replies (i.e., a function-key). + */ +char * +instr(void) +{ + static char result[1024]; + + result[0] = inchar(); + zleep(100); /* Wait 0.1 seconds */ + fflush(stdout); + read_vms_tty (sizeof(result)-3, FALSE); + memcpy(result+1, ibuf, nibuf); + result[1 + nibuf] = '\0'; + + if (LOG_ENABLED) { + fputs("Reply: ", log_fp); + put_string(log_fp, result); + fputs("\n", log_fp); + } + + return(result); +} + +/* + * Get an unfinished string from the terminal: wait until a character is typed + * on the terminal, then read it, and all other available characters. Return a + * pointer to that string. + * + * Unlike 'instr()', this will really read long strings. + */ +char * +get_reply(void) +{ + static char result[256]; + + result[0] = inchar(); + zleep(100); /* Wait 0.1 seconds */ + fflush(stdout); + read_vms_tty (sizeof(result)-3, TRUE); + memcpy(result+1, ibuf, nibuf); + result[1 + nibuf] = '\0'; + + if (LOG_ENABLED) { + fputs("Reply: ", log_fp); + put_string(log_fp, result); + fputs("\n", log_fp); + } + + return(result); +} + +/* + * Read to the next newline, truncating the buffer at BUFSIZ-1 characters + */ +void +inputline(char *s) +{ + do { + int ch; + char *d = s; + while ((ch = getchar()) != EOF && ch != '\n') { + if ((d - s) < BUFSIZ-2) + *d++ = ch; + } + *d = 0; + } while (!*s); +} + +/* + * Flush input buffer, make sure no pending input character + */ +void +inflush(void) +{ + nibuf = 0; +} + +void +outflush(void) +{ + fflush(stdout); +} + +void +holdit(void) +{ + inflush(); + printf("Push <RETURN>"); + readnl(); +} + +void +readnl(void) +{ + fflush(stdout); + while (inchar() != '\n') + ; +} + +/* + * Sleep and do nothing (don't waste CPU) for t milliseconds + */ +void +zleep(int t) +{ + float seconds = t/1000.; + lib$wait(&seconds); +} + +/******************************************************************************/ + +void +init_ttymodes(int pn) +{ + struct dsc$descriptor idsc; + struct dsc$descriptor odsc; + char oname[40]; + QIO_SB iosb; + int status; + + odsc.dsc$a_pointer = "TT"; + odsc.dsc$w_length = strlen(odsc.dsc$a_pointer); + odsc.dsc$b_dtype = DSC$K_DTYPE_T; + odsc.dsc$b_class = DSC$K_CLASS_S; + idsc.dsc$b_dtype = DSC$K_DTYPE_T; + idsc.dsc$b_class = DSC$K_CLASS_S; + + do { + idsc.dsc$a_pointer = odsc.dsc$a_pointer; + idsc.dsc$w_length = odsc.dsc$w_length; + odsc.dsc$a_pointer = &oname[0]; + odsc.dsc$w_length = sizeof(oname); + + status = lib$sys_trnlog(&idsc, &odsc.dsc$w_length, &odsc); + if (status != SS$_NORMAL + && status != SS$_NOTRAN) + give_up(status); + if (oname[0] == 0x1B) { + odsc.dsc$a_pointer += 4; + odsc.dsc$w_length -= 4; + } + } while (status == SS$_NORMAL); + + status = sys$assign(&odsc, &iochan, 0, 0); + if (status != SS$_NORMAL) + give_up(status); + + status = sys$qiow(EFN, iochan, IO$_SENSEMODE, &iosb, 0, 0, + oldmode, sizeof(oldmode), 0, 0, 0, 0); + if (status != SS$_NORMAL + || iosb.status != SS$_NORMAL) + give_up(status); +#ifdef DEBUG + if (LOG_ENABLED) + fprintf(log_fp, + "sense: st=%d, cnt=%#x, dev=%#x\n", + iosb.status, iosb.count, iosb.dev_dep_data); +#endif + + newmode[0] = oldmode[0]; + newmode[1] = oldmode[1] | TT$M_EIGHTBIT; + newmode[1] &= ~(TT$M_TTSYNC|TT$M_HOSTSYNC); + + /* FIXME: this assumes we're doing IO$_SETCHAR */ + newmode[2] = oldmode[2] | TT2$M_PASTHRU; + + status = sys$qiow(EFN, iochan, IO$_SETMODE, &iosb, 0, 0, + newmode, sizeof(newmode), 0, 0, 0, 0); + if (status != SS$_NORMAL + || iosb.status != SS$_NORMAL) + give_up(status); + + max_lines = (newmode[1]>>24); + min_cols = newmode[0]>>16; + tty_speed = lookup_speed(iosb.count & 0xff); + + if (LOG_ENABLED) { + fprintf(log_fp, "TTY modes %#x, %#x, %#x\n", oldmode[0], oldmode[1], oldmode[2]); + fprintf(log_fp, "iosb.count = %#x\n", iosb.count); + fprintf(log_fp, "iosb.dev_dep_data = %#x\n", iosb.dev_dep_data); + fprintf(log_fp, "TTY speed = %d\n", tty_speed); + } +} + +/* + * Restore state to "normal", for menu-prompting + */ +void +restore_ttymodes(void) +{ + outflush(); + in_flags = 0; + cr_flag = TRUE; +} + +void +close_tty(void) +{ + int status; + QIO_SB iosb; + + status = sys$qiow(EFN, iochan, IO$_SETMODE, &iosb, 0, 0, + oldmode, sizeof(oldmode), 0, 0, 0, 0); + if (status == SS$_IVCHAN) + return; /* already closed it */ + (void) sys$dassgn(iochan); +} + +void +set_tty_crmod(int enabled) +{ + cr_flag = enabled; +} + +void +set_tty_echo(int enabled) +{ + if (enabled) + in_flags &= ~IO$M_NOECHO; + else + in_flags |= IO$M_NOECHO; +} + +void +set_tty_raw(int enabled) +{ + if (enabled) + in_flags |= IO$M_NOFILTR; + else + in_flags &= ~IO$M_NOFILTR; +} diff --git a/doc/vttest-20011130/vmsbuild.com b/doc/vttest-20011130/vmsbuild.com new file mode 100644 index 0000000..4849b26 --- /dev/null +++ b/doc/vttest-20011130/vmsbuild.com @@ -0,0 +1,163 @@ +$! $Id$ +$! VMS build-script for VTTEST. Requires installed C compiler +$! +$! Tested with: +$! VMS system version 5.4-2 +$! VAX-C version 3.2 +$! +$! Build the option-file +$! +$ release := 2 +$ open/write optf vms_link.opt +$ write optf "Identification=""VtTest ''release'.7""" +$ write optf "charsets.obj" +$ write optf "color.obj" +$ write optf "esc.obj" +$ write optf "keyboard.obj" +$ write optf "mouse.obj" +$ write optf "nonvt100.obj" +$ write optf "printer.obj" +$ write optf "reports.obj" +$ write optf "reset.obj" +$ write optf "setup.obj" +$ write optf "sixel.obj" +$ write optf "status.obj" +$ write optf "vt220.obj" +$ write optf "vt420.obj" +$ write optf "vt52.obj" +$ write optf "vms_io.obj" +$ write optf "xterm.obj" +$! +$! Look for the compiler used +$! +$ CC = "CC" +$ if f$getsyi("HW_MODEL").ge.1024 +$ then +$ arch = "__alpha__=1" +$ comp = "__decc__=1" +$ CFLAGS = "/prefix=all" +$ DEFS = ",HAVE_ALARM" +$ if f$trnlnm("SYS").eqs."" then define sys sys$library: +$ else +$ arch = "__vax__=1" +$ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs."" +$ then +$ if f$trnlnm("SYS").eqs."" then define sys sys$library: +$ DEFS = ",HAVE_SYS_ERRLIST" +$ write optf "sys$library:vaxcrtl.exe/share" +$ if f$search("SYS$SYSTEM:VAXC.EXE").eqs."" +$ then +$ if f$trnlnm("GNU_CC").eqs."" +$ then +$ write sys$output "C compiler required to rebuild vttest" +$ close optf +$ exit +$ else +$ write optf "gnu_cc:[000000]gcclib.olb/lib" +$ comp = "__gcc__=1" +$ CC = "GCC" +$ endif +$ else +$ comp = "__vaxc__=1" +$ endif +$ else +$ if f$trnlnm("SYS").eqs."" then define sys decc$library_include: +$ comp = "__decc__=1" +$ endif +$ endif +$ +$ close optf +$ +$! used /G_FLOAT with vaxcrtlg/share in vms_link.opt +$! can also use /Debug /Listing, /Show=All +$ +$ if f$search("SYS$SYSTEM:MMS.EXE").eqs."" +$ then +$ +$ CFLAGS := 'CFLAGS/Diagnostics /Define=("RELEASE=''RELEASE'''DEFS'") /Include=([]) +$ +$ if "''p1'" .nes. "" then goto 'p1 +$ +$ all : +$ call make charsets +$ call make color +$ call make esc +$ call make keyboard +$ call make main +$ call make mouse +$ call make nonvt100 +$ call make printer +$ call make reports +$ call make reset +$ call make setup +$ call make sixel +$ call make status +$ call make vt220 +$ call make vt420 +$ call make vt52 +$ call make vms_io +$ call make xterm +$ +$ link /exec=VTTEST/map/cross main.obj, vms_link/opt +$ goto build_last +$ +$ install : +$ WRITE SYS$ERROR "** no rule for install" +$ goto build_last +$ +$ clean : +$ if f$search("*.obj") .nes. "" then delete *.obj;* +$ if f$search("*.bak") .nes. "" then delete *.bak;* +$ if f$search("*.lis") .nes. "" then delete *.lis;* +$ if f$search("*.log") .nes. "" then delete *.log;* +$ if f$search("*.map") .nes. "" then delete *.map;* +$ if f$search("*.opt") .nes. "" then delete *.opt;* +$ goto build_last +$ +$ clobber : +$ if f$search("vttest.com") .nes. "" then delete vttest.com;* +$ if f$search("*.exe") .nes. "" then delete *.exe;* +$ goto build_last +$ +$ build_last : +$ if f$search("*.dia") .nes. "" then delete *.dia;* +$ if f$search("*.lis") .nes. "" then purge *.lis +$ if f$search("*.obj") .nes. "" then purge *.obj +$ if f$search("*.map") .nes. "" then purge *.map +$ if f$search("*.opt") .nes. "" then purge *.opt +$ if f$search("*.exe") .nes. "" then purge *.exe +$ if f$search("*.log") .nes. "" then purge *.log +$ exit +$ +$! Runs VTTEST from the current directory (used for testing) +$ vttest_com : +$ if "''f$search("vttest.com")'" .nes. "" then delete vttest.com;* +$ copy nl: vttest.com +$ open/append test_script vttest.com +$ write test_script "$ temp = f$environment(""procedure"")" +$ write test_script "$ temp = temp -" +$ write test_script " - f$parse(temp,,,""version"",""syntax_only"") -" +$ write test_script " - f$parse(temp,,,""type"",""syntax_only"")" +$ write test_script "$ vttest :== $ 'temp'.exe" +$ write test_script "$ define/user_mode sys$input sys$command" +$ write test_script "$ define/user_mode sys$output sys$command" +$ write test_script "$ vttest 'p1 'p2 'p3 'p4 'p5 'p6 'p7 'p8" +$ close test_script +$ write sys$output "** made vttest.com" +$ exit +$! +$! We have MMS installed +$ else +$ mms/macro=('comp','mmstar','arch') 'p2 +$ endif +$ exit +$ +$ make: subroutine +$ if f$search("''p1'.obj") .eqs. "" +$ then +$ write sys$output "compiling ''p1'" +$ 'CC 'CFLAGS 'p1.c +$ if f$search("''p1'.dia") .nes. "" then delete 'p1.dia;* +$ endif +$ exit +$ endsubroutine diff --git a/doc/vttest-20011130/vt220.c b/doc/vttest-20011130/vt220.c new file mode 100644 index 0000000..2f9bed6 --- /dev/null +++ b/doc/vttest-20011130/vt220.c @@ -0,0 +1,463 @@ +/* $Id$ */ + +/* + * Reference: VT220 Programmer Pocket Guide (EK-VT220-HR-002) + */ +#include <vttest.h> +#include <ttymodes.h> +#include <esc.h> + +int +any_DSR(MENU_ARGS, char *text, void (*explain)(char *report)) +{ + char *report; + + vt_move(1,1); + printf("Testing DSR: %s\n", the_title); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + do_csi("%s", text); + report = get_reply(); + vt_move(3,10); + chrprint(report); + if ((report = skip_csi(report)) != 0 + && strlen(report) > 2 + && *report++ == '?') { + if (explain != 0) + (*explain)(report); + else + show_result(SHOW_SUCCESS); + } else { + show_result(SHOW_FAILURE); + } + + restore_ttymodes(); + vt_move(max_lines-1, 1); + return MENU_HOLD; +} + +static void +report_ok(char *ref, char *tst) +{ + if ((tst = skip_csi(tst)) == 0) + tst = "?"; + show_result(!strcmp(ref, tst) ? SHOW_SUCCESS : SHOW_FAILURE); +} + +/* + * Request CSI ? 26 n keyboard dialect + * Response CSI ? 27; Ps n + */ +static void +show_KeyboardStatus(char *report) +{ + int pos = 0; + int code; + int save; + char *show = SHOW_FAILURE; + + if ((code = scanto(report, &pos, ';')) == 27 + && (code = scan_any(report, &pos, 'n')) != 0) { + switch(code) { + case 1: show = "North American/ASCII"; break; + case 2: show = "British"; break; + case 3: show = "Flemish"; break; + case 4: show = "French Canadian"; break; + case 5: show = "Danish"; break; + case 6: show = "Finnish"; break; + case 7: show = "German"; break; + case 8: show = "Dutch"; break; + case 9: show = "Italian"; break; + case 10: show = "Swiss (French)"; break; + case 11: show = "Swiss (German)"; break; + case 12: show = "Swedish"; break; + case 13: show = "Norwegian/Danish"; break; + case 14: show = "French"; break; + case 15: show = "Spanish"; break; + case 16: show = "Portugese"; break; + case 17: show = "Hebrew"; break; /* FIXME: kermit says 14 */ + default: show = "unknown"; + } + } + show_result(show); + + /* VT420 implements additional parameters past those reported by the VT220 */ + save = pos; + code = scan_any(report, &pos, 'n'); + if (save != pos) { + vt_move(5,10); + switch(code) { + case 0: show = "keyboard ready"; break; + case 3: show = "no keyboard"; break; + case 8: show = "keyboard busy"; break; + default: show = "unknown keyboard status"; + } + show_result(show); + + vt_move(6,10); + switch (code = scan_any(report, &pos, 'n')) { + case 0: show = "LK201"; break; + case 1: show = "LK401"; break; + default: show = "unknown keyboard type"; + } + show_result(show); + } +} + +static void +show_Locator_Status(char *report) +{ + int pos = 0; + int code = scanto(report, &pos, 'n'); + char *show; + + switch(code) { + case 53: show = "No locator"; break; + case 50: show = "Locator ready"; break; + case 58: show = "Locator busy"; break; + default: show = SHOW_FAILURE; + } + show_result(show); +} + +static void +show_PrinterStatus(char *report) +{ + int pos = 0; + int code = scanto(report, &pos, 'n'); + char *show; + + switch (code) { + case 13: show = "No printer"; break; + case 10: show = "Printer ready"; break; + case 11: show = "Printer not ready"; break; + case 18: show = "Printer busy"; break; + case 19: show = "Printer assigned to other session"; break; + default: show = SHOW_FAILURE; + } + show_result(show); +} + +static void +show_UDK_Status(char *report) +{ + int pos = 0; + int code = scanto(report, &pos, 'n'); + char *show; + + switch(code) { + case 20: show = "UDKs unlocked"; break; + case 21: show = "UDKs locked"; break; + default: show = SHOW_FAILURE; + } + show_result(show); +} + +/* VT220 & up. + */ +int +tst_S8C1T(MENU_ARGS) +{ + char *report; + int flag = input_8bits; + int pass; + + vt_move(1,1); + println(the_title); + + vt_move(5,1); + println("This tests the VT200+ control sequence to direct the terminal to emit 8-bit"); + println("control-sequences instead of <esc> sequences."); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + for (pass = 0; pass < 2; pass++) { + flag = !flag; + s8c1t(flag); + cup(1,1); dsr(6); + report = instr(); + vt_move(10 + pass * 3, 1); + printf("8-bit controls %s: ", flag ? "enabled" : "disabled"); + chrprint(report); + report_ok("1;1R", report); + } + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +/* + * Test DEC's selective-erase (set-protected area) by drawing a box of + * *'s that will remain, and a big X of *'s that gets cleared.. + */ +int +tst_DECSCA(MENU_ARGS) +{ + int i, j, pass; + int tmar = 5; + int bmar = max_lines - 8; + int lmar = 20; + int rmar = min_cols - lmar; + + for (pass = 0; pass < 2; pass++) { + if (pass == 0) + decsca(1); + for (i = tmar; i <= bmar; i++) { + cup(i, lmar); + for (j = lmar; j <= rmar; j++) { + printf("*"); + } + } + if (pass == 0) { + decsca(0); + + for (j = 0; j <= 2; j++) { + for (i = 1; i < tmar; i++) { + cup(i, lmar - tmar + (i+j)); printf("*"); + cup(i, rmar + tmar - (i+j)); printf("*"); + } + for (i = bmar + 1; i < max_lines; i++) { + cup(i, lmar + bmar - i + j); printf("*"); + cup(i, rmar - bmar + i - j); printf("*"); + } + cup(max_lines/2, min_cols/2); + decsed(j); + } + + for (i = rmar+1; i <= min_cols; i++) { + cup(tmar, i); printf("*"); + cup(max_lines/2, i); printf("*"); + } + cup(max_lines/2, min_cols/2); + decsel(0); /* after the cursor */ + + for (i = 1; i < lmar; i++) { + cup(tmar, i); printf("*"); + cup(max_lines/2, i); printf("*"); + } + cup(max_lines/2, min_cols/2); + decsel(1); /* before the cursor */ + + cup(tmar, min_cols/2); + decsel(2); /* the whole line */ + + vt_move(max_lines-3, 1); + vt_clear(0); + println("If your terminal supports DEC protected areas (DECSCA, DECSED, DECSEL),"); + println("there will be an solid box made of *'s in the middle of the screen."); + holdit(); + } + } + return MENU_NOHOLD; +} + +/* + * VT220 & up + * + * Test if the terminal can make the cursor invisible + */ +int +tst_DECTCEM(MENU_ARGS) +{ + vt_move(1,1); + rm("?25"); + println("The cursor should be invisible"); + holdit(); + sm("?25"); + println("The cursor should be visible again"); + return MENU_HOLD; +} + +int +tst_DECUDK(MENU_ARGS) +{ + int key; + + static struct { + int code; + char *name; + } keytable[] = { + /* xterm programs these: */ + { 11, "F1" }, + { 12, "F2" }, + { 13, "F3" }, + { 14, "F4" }, + { 15, "F5" }, + /* vt420 programs these: */ + { 17, "F6" }, + { 18, "F7" }, + { 19, "F8" }, + { 20, "F9" }, + { 21, "F10" }, + { 23, "F11" }, + { 24, "F12" }, + { 25, "F13" }, + { 26, "F14" }, + { 28, "F15" }, + { 29, "F16" }, + { 31, "F17" }, + { 32, "F18" }, + { 33, "F19" }, + { 34, "F20" } }; + + for (key = 0; key < TABLESIZE(keytable); key++) { + char temp[80]; + char *s; + temp[0] = '\0'; + for (s = keytable[key].name; *s; s++) + sprintf(temp + strlen(temp), "%02x", *s & 0xff); + do_dcs("1;1|%d/%s", keytable[key].code, temp); + } + + vt_move(1,1); + println(the_title); + println("Press 'q' to quit. Function keys should echo their labels."); + println("(On a DEC terminal you must press SHIFT as well)."); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + for (;;) { + char *report = instr(); + if (*report == 'q') + break; + vt_move(5,10); + vt_clear(0); + chrprint(report); + } + + do_dcs("0"); /* clear all keys */ + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +int +tst_DSR_keyboard(MENU_ARGS) +{ + return any_DSR(PASS_ARGS, "?26n", show_KeyboardStatus); +} + +int +tst_DSR_locator(MENU_ARGS) +{ + return any_DSR(PASS_ARGS, "?53n", show_Locator_Status); +} + +int +tst_DSR_printer(MENU_ARGS) +{ + return any_DSR(PASS_ARGS, "?15n", show_PrinterStatus); +} + +int +tst_DSR_userkeys(MENU_ARGS) +{ + return any_DSR(PASS_ARGS, "?25n", show_UDK_Status); +} + +/* + * VT200 and up + * + * Test to ensure that 'ech' (erase character) is honored, with no parameter, + * explicit parameter, and longer than the screen width (to ensure that the + * terminal doesn't try to wrap-around the erasure). + */ +int +tst_ECH(MENU_ARGS) +{ + int i; + int last = max_lines - 4; + + decaln(); + for (i = 1; i <= max_lines; i++) { + cup(i, min_cols - i - 2); + do_csi("X"); /* make sure default-parameter works */ + cup(i, min_cols - i - 1); + printf("*"); + ech(min_cols); + printf("*"); /* this should be adjacent, in the upper-right corner */ + } + + vt_move(last, 1); + vt_clear(0); + + vt_move(last, min_cols - (last + 10)); + println("diagonal: ^^ (clear)"); + println("ECH test: there should be E's with a gap before diagonal of **'s"); + println("The lower-right diagonal region should be cleared. Nothing else."); + return MENU_HOLD; +} + +/******************************************************************************/ + +static int +tst_device_status(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Keyboard Status", tst_DSR_keyboard }, + { "Test Printer Status", tst_DSR_printer }, + { "Test UDK Status", tst_DSR_userkeys }, + { "Test Locator Status", tst_DSR_locator }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT220 Device Status Reports"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +static int +tst_terminal_modes(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Send/Receive mode (SRM)", tst_SRM }, + { "Test Visible/Invisible Cursor (DECTCEM)", tst_DECTCEM }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT220 Terminal Mode Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +int +tst_vt220(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test 8-bit controls (S7C1T/S8C1T)", tst_S8C1T }, + { "Test Device Status Report (DSR)", tst_device_status }, + { "Test Erase Char (ECH)", tst_ECH }, + { "Test Printer (MC)", tst_printing }, + { "Test Protected-Areas (DECSCA)", tst_DECSCA }, + { "Test Soft Character Sets (DECDLD)", tst_softchars }, + { "Test Terminal Modes", tst_terminal_modes }, + { "Test user-defined keys (DECUDK)", tst_DECUDK }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT220/VT320 Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/vt420.c b/doc/vttest-20011130/vt420.c new file mode 100644 index 0000000..e88de28 --- /dev/null +++ b/doc/vttest-20011130/vt420.c @@ -0,0 +1,1615 @@ +/* $Id$ */ + +/* + * Reference: Installing and Using the VT420 Video Terminal (North American + * Model (EK-VT420-UG.002) + */ +#include <vttest.h> +#include <esc.h> +#include <ttymodes.h> + +typedef struct { + int mode; + char *name; + } MODES; + +static void show_DECCIR(char *report); +static void show_DECTABSR(char *report); + +/******************************************************************************/ + +static int +any_decrqpsr(MENU_ARGS, int Ps) +{ + char *report; + + vt_move(1,1); + printf("Testing DECRQPSR: %s\n", the_title); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + do_csi("%d$w", Ps); + report = get_reply(); + vt_move(3,10); + chrprint(report); + if ((report = skip_dcs(report)) != 0) { + if (strip_terminator(report) + && *report == Ps + '0' + && !strncmp(report+1, "$u", 2)) { + show_result("%s (valid request)", SHOW_SUCCESS); + switch (Ps) { + case 1: + show_DECCIR(report); + break; + case 2: + show_DECTABSR(report); + break; + } + } else { + show_result(SHOW_FAILURE); + } + } else { + show_result(SHOW_FAILURE); + } + + restore_ttymodes(); + vt_move(max_lines-1, 1); + return MENU_HOLD; +} + +/* + * FIXME: The VT420 manual says that a valid response begins "DCS 0 $ r", + * however I see "DCS 1 $ r" on a real VT420, consistently. + */ +static int +any_decrqss(char *msg, char *func) +{ + char *report; + char *show; + + vt_move(1,1); + printf("Testing DECRQSS: %s\n", msg); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + decrqss(func); + report = get_reply(); + vt_move(3,10); + chrprint(report); + switch (parse_decrqss(report, func)) { + case 1: + show = "ok (valid request)"; + break; + case 0: + show = "invalid request"; + break; + default: + show = SHOW_FAILURE; + break; + } + show_result(show); + + restore_ttymodes(); + vt_move(max_lines-1, 1); + return MENU_HOLD; +} + +/******************************************************************************/ + +static int +rpt_DECSASD(MENU_ARGS) +{ + return any_decrqss(the_title, "$}"); +} + +static int +rpt_DECSACE(MENU_ARGS) +{ + return any_decrqss(the_title, "*x"); +} + +static int +rpt_DECSCA(MENU_ARGS) +{ + return any_decrqss(the_title, "\"q"); +} + +static int +rpt_DECSCL(MENU_ARGS) +{ + return any_decrqss(the_title, "\"p"); +} + +static int +rpt_DECSCPP(MENU_ARGS) +{ + return any_decrqss(the_title, "$|"); +} + +static int +rpt_DECSLPP(MENU_ARGS) +{ + return any_decrqss(the_title, "t"); +} + +static int +rpt_DECSNLS(MENU_ARGS) +{ + return any_decrqss(the_title, "*|"); +} + +static int +rpt_DECSLRM(MENU_ARGS) +{ + return any_decrqss(the_title, "s"); +} + +static int +rpt_DECSSDT(MENU_ARGS) +{ + return any_decrqss(the_title, "$~"); +} + +static int +rpt_DECSTBM(MENU_ARGS) +{ + return any_decrqss(the_title, "r"); +} + +static int +rpt_SGR(MENU_ARGS) +{ + return any_decrqss(the_title, "m"); +} + +static int +rpt_DECELF(MENU_ARGS) +{ + return any_decrqss(the_title, "+q"); +} + +/* + * VT420 manual shows "=}", but the terminal returns an error. VT510 sequences + * show "*}". + */ +static int +rpt_DECLFKC(MENU_ARGS) +{ + return any_decrqss(the_title, "*}"); +} + +static int +rpt_DECSMKR(MENU_ARGS) +{ + return any_decrqss(the_title, "+r"); +} + +/******************************************************************************/ + +/* + * DECCIR returns single characters separated by semicolons. It's not clear + * (unless you test on a DEC terminal) from the documentation, which only cites + * their values. This function returns an equivalent-value, recovering from + * the bogus implementations that return a decimal number. + */ +static int +scan_chr(char *str, int *pos, int toc) +{ + int value = 0; + while (str[*pos] != '\0' && str[*pos] != toc) { + value = (value * 256) + (unsigned char)str[*pos]; + *pos += 1; + } + if (str[*pos] == toc) + *pos += 1; + return value; +} + +static void +show_DataIntegrity(char *report) +{ + int pos = 0; + int code = scanto(report, &pos, 'n'); + char *show; + + switch(code) { + case 70: show = "No communication errors"; break; + case 71: show = "Communication errors"; break; + case 73: show = "Not reported since last power-up or RIS"; break; + default: show = SHOW_FAILURE; + } + show_result(show); +} + +/* + * From Kermit 3.13 & VT220 pocket guide + * + * Request CSI 1 $ w cursor information report + * Response DCS 1 $ u Pr; Pc; Pp; Srend; Satt; Sflag; Pgl; Pgr; Scss; Sdesig ST + * where Pr is cursor row (counted from origin as 1,1) + * Pc is cursor column + * Pp is 1, video page, a constant for VT320s + * Srend = 40h + 8 (rev video on) + 4 (blinking on) + * + 2 (underline on) + 1 (bold on) + * Satt = 40h + 1 (selective erase on) + * Sflag = 40h + 8 (autowrap pending) + 4 (SS3 pending) + * + 2 (SS2 pending) + 1 (Origin mode on) + * Pgl = char set in GL (0 = G0, 1 = G1, 2 = G2, 3 = G3) + * Pgr = char set in GR (same as for Pgl) + * Scss = 40h + 8 (G3 is 96 char) + 4 (G2 is 96 char) + * + 2 (G1 is 96 char) + 1 (G0 is 96 char) + * Sdesig is string of character idents for sets G0...G3, with + * no separators between set idents. + * If NRCs are active the set idents (all 94 byte types) are: + * British A Italian Y + * Dutch 4 Norwegian/Danish ' (hex 60) or E or 6 + * Finnish 5 or C Portuguese %6 or g or L + * French R or f Spanish Z + * French Canadian 9 or Q Swedish 7 or H + * German K Swiss = + * Hebrew %= + * (MS Kermit uses any choice when there are multiple) + */ + +#define show_DECCIR_flag(value, mask, string) \ + if (value & mask) { value &= ~mask; show_result(string); } + +static void +show_DECCIR(char *report) +{ + int Pr, Pc, Pp, Srend, Satt, Sflag, Pgl, Pgr, Scss, Sdesig; + int pos = 3; /* skip "1$u" */ + int n; + + Pr = scanto(report, &pos, ';'); + Pc = scanto(report, &pos, ';'); + Pp = scanto(report, &pos, ';'); + vt_move(5,10); show_result("Cursor (%d,%d), page %d", Pr, Pc, Pp); + + Srend = scan_chr(report, &pos, ';'); + vt_move(6,10); + if (Srend & 0x40) { + show_DECCIR_flag(Srend, 0x40, "Rendition:"); + if (Srend == 0) show_result(" normal"); + show_DECCIR_flag(Srend, 0x08, " reverse"); + show_DECCIR_flag(Srend, 0x04, " blinking"); + show_DECCIR_flag(Srend, 0x02, " underline"); + show_DECCIR_flag(Srend, 0x01, " bold"); + } + if (Srend) show_result(" -> unknown rendition (0x%x)", Srend); + + Satt = scan_chr(report, &pos, ';'); + vt_move(7,10); + switch(Satt) { + case 0x40: show_result("Selective erase: off"); break; + case 0x41: show_result("Selective erase: ON"); break; + default: show_result("Selective erase: unknown (0x%x)", Satt); + } + + Sflag = scan_chr(report, &pos, ';'); + vt_move(8,10); + if (Sflag & 0x40) { + show_DECCIR_flag(Sflag, 0x40, "Flags:"); + show_DECCIR_flag(Sflag, 0x08, " autowrap pending"); + show_DECCIR_flag(Sflag, 0x04, " SS3 pending"); + show_DECCIR_flag(Sflag, 0x02, " SS2 pending"); + show_DECCIR_flag(Sflag, 0x01, " origin-mode on"); + } else { + show_result(" -> unknown flag (0x%x)", Sflag); + } + + Pgl = scanto(report, &pos, ';'); + Pgr = scanto(report, &pos, ';'); + vt_move(9,10); + show_result("Char set in GL: G%d, Char set in GR: G%d", Pgl, Pgr); + + Scss = scan_chr(report, &pos, ';'); + vt_move(10,10); + if (Scss & 0x40) { + show_DECCIR_flag(Scss, 0x40, "Char set sizes:"); + show_DECCIR_flag(Scss, 0x08, " G3 is 96 char"); + show_DECCIR_flag(Scss, 0x04, " G2 is 96 char"); + show_DECCIR_flag(Scss, 0x02, " G1 is 96 char"); + show_DECCIR_flag(Scss, 0x01, " G0 is 96 char"); /* VT420 manual says this cannot happen */ + } else { + show_result(" -> unknown char set size (0x%x)", Scss); + } + + n = 11; + vt_move(n, 10); + show_result("Character set idents for G0...G3: "); + while ((Sdesig = report[pos]) != '\0') { + vt_move(++n, 12); + ++pos; + switch (Sdesig) { + case 'B': + show_result("ASCII"); + break; + case '<': + show_result("DEC supplemental"); + break; + case '0': + show_result("DEC special graphics"); + break; + case 'A': + show_result("British"); + break; + case 'Y': + show_result("Italian"); + break; + case '4': + show_result("Dutch"); + break; + case '\'': + case 'E': + case '6': + show_result("Norwegian/Danish"); + break; + case '5': + case 'C': + show_result("Finnish"); + break; + case 'g': + case 'L': + show_result("Portuguese"); + break; + case 'R': + case 'f': + show_result("French"); + break; + case 'Z': + show_result("Spanish"); + break; + case '9': + case 'Q': + show_result("French Canadian"); + break; + case '7': + case 'H': + show_result("Swedish"); + break; + case 'K': + show_result("German"); + break; + case '=': + show_result("Swiss"); + break; + case '%': + if ((Sdesig = report[pos]) != '\0') { + ++pos; + switch(Sdesig) { + case '=': + show_result("Hebrew"); + break; + case '6': + show_result("Portuguese"); + break; + default: show_result(" unknown (0x%x)", Sdesig); + } + } + break; + default: show_result(" unknown (0x%x)", Sdesig); + } + } +} + +/* + * Request CSI 2 $ w tab stop report + * Response DCS 2 $ u Pc/Pc/...Pc ST + * Pc are column numbers (from 1) where tab stops occur. Note the + * separator "/" occurs in a real VT320 but should have been ";". + */ +static void +show_DECTABSR(char *report) +{ + int pos = 3; /* skip "2$u" */ + int stop; + char *buffer = malloc(strlen(report)); + + *buffer = '\0'; + strcat(report, "/"); /* simplify scanning */ + while ((stop = scanto(report, &pos, '/')) != 0) { + sprintf(buffer + strlen(buffer), " %d", stop); + } + println(""); + show_result("Tab stops:%s", buffer); + free(buffer); +} + +static void +show_ExtendedCursorPosition(char *report) +{ + int pos = 0; + int Pl = scan_any(report, &pos, 'R'); + int Pc = scan_any(report, &pos, 'R'); + int Pp = scan_any(report, &pos, 'R'); + + if (Pl != 0 && Pc != 0) { + if (Pp != 0) + show_result("Line %d, Column %d, Page %d", Pl, Pc, Pp); + else + show_result("Line %d, Column %d (Page?)", Pl, Pc); + } else + show_result(SHOW_FAILURE); +} + +static void +show_keypress(int row, int col) +{ + char *report; + char last[BUFSIZ]; + + last[0] = '\0'; + vt_move(row++,1); + println("When you are done, press any key twice to quit."); + vt_move(row,col); + fflush(stdout); + while (strcmp(report = instr(), last)) { + vt_move(row,col); + vt_clear(0); + chrprint(report); + strcpy(last, report); + } +} + +static void +show_MultisessionStatus(char *report) +{ + int pos = 0; + int Ps1 = scan_any(report, &pos, 'n'); + int Ps2 = scanto(report, &pos, 'n'); + char *show; + + switch (Ps1) { + case 80: show = "SSU sessions enabled (%d max)"; break; + case 81: show = "SSU sessions available but pending (%d max)"; break; + case 83: show = "SSU sessions not ready"; break; + case 87: show = "Sessions on separate lines"; break; + default: show = SHOW_FAILURE; + } + show_result(show, Ps2); +} + +/******************************************************************************/ + +/* + * VT400 & up. + * DECBI - Back Index + * This control function moves the cursor backward one column. If the cursor + * is at the left margin, then all screen data within the margin moves one + * column to the right. The column that shifted past the right margin is lost. + * + * Format: ESC 6 + * Description: + * DECBI adds a new column at the left margin with no visual attributes. DECBI + * is not affected by the margins. If the cursor is at the left border of the + * page when the terminal received DECBI, then the terminal ignores DECBI. + */ +static int +tst_DECBI(MENU_ARGS) +{ + int n, m; + int last = max_lines - 4; + int final = min_cols / 4; + + for (n = final; n > 0; n--) { + cup(1,1); + if (n != final) { + for (m = 0; m < 4; m++) + decbi(); + } + printf("%3d", n); + } + + vt_move(last,1); + vt_clear(0); + + println(the_title); + println("If your terminal supports DECBI (backward index), then the top row"); + printf("should be numbered 1 through %d.\n", final); + return MENU_HOLD; +} + +static int +tst_DECBKM(MENU_ARGS) +{ + char *report; + + vt_move(1,1); + println(the_title); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + reset_inchar(); + decbkm(TRUE); + println("Press the backspace key"); + vt_move(3,10); + report = instr(); + chrprint(report); + show_result(!strcmp(report, "\010") ? SHOW_SUCCESS : SHOW_FAILURE); + + reset_inchar(); + vt_move(5,1); + decbkm(FALSE); + println("Press the backspace key again"); + vt_move(6,10); + report = instr(); + chrprint(report); + show_result(!strcmp(report, "\177") ? SHOW_SUCCESS : SHOW_FAILURE); + + vt_move(max_lines-1,1); + restore_ttymodes(); + return MENU_HOLD; +} + +/* + * VT400 & up + * Change Attributes in Rectangular Area + */ +static int +tst_DECCARA(MENU_ARGS) +{ + int last = max_lines - 4; + int top = 5; + int left = 5; + int right = 45; + int bottom = max_lines-10; + + decsace(TRUE); + decaln(); /* fill the screen */ + deccara(top, left, bottom, right, 7); /* invert a rectangle) */ + deccara(top+1, left+1, bottom-1, right-1, 0); /* invert a rectangle) */ + + vt_move(last, 1); + vt_clear(0); + + println(the_title); + println("There should be an open rectangle formed by reverse-video E's"); + holdit(); + + decsace(FALSE); + decaln(); /* fill the screen */ + deccara(top, left, bottom, right, 7); /* invert a rectangle) */ + deccara(top+1, left+1, bottom-1, right-1, 0); /* invert a rectangle) */ + + vt_move(last, 1); + vt_clear(0); + + println(the_title); + println("There should be an open rectangle formed by reverse-video E's"); + println("combined with wrapping at the margins."); + return MENU_HOLD; +} + +static int +tst_DECCIR(MENU_ARGS) +{ + return any_decrqpsr(PASS_ARGS, 1); +} + +static int +tst_DECCKSR(MENU_ARGS, int Pid, char *the_csi) +{ + char *report; + int pos = 0; + + vt_move(1,1); + printf("Testing DECCKSR: %s\n", the_title); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + do_csi("%s", the_csi); + report = get_reply(); + vt_move(3,10); + chrprint(report); + if ((report = skip_dcs(report)) != 0 + && strip_terminator(report) + && strlen(report) > 1 + && scanto(report, &pos, '!') == Pid + && report[pos++] == '~' + && (report = skip_digits(report+pos+1)) != 0 + && *report == '\0') { + show_result(SHOW_SUCCESS); + } else { + show_result(SHOW_FAILURE); + } + + restore_ttymodes(); + vt_move(max_lines-1, 1); + return MENU_HOLD; +} + +/* + * VT400 & up. + * Copy Rectangular area + */ +static int +tst_DECCRA(MENU_ARGS) +{ + int j; + int top = 5; + int left = 5; + int right = 45; + int bottom = max_lines-10; + + for (j = top; j < bottom; j++) { + cup(j, left); printf("*"); + cup(j, right); printf("*"); + } + cup(top,left); + for (j = left; j <= right; j++) + printf("*"); + cup(bottom,left); + for (j = left; j <= right; j++) + printf("*"); + + vt_move(max_lines-3,1); + println(the_title); + println("The box of *'s will be copied"); + holdit(); + + deccra(top, left, bottom, right, 1, top+3, left + 4, 1); + + vt_move(max_lines-2, 1); + vt_clear(0); + + println("The box should be copied, overlapping"); + return MENU_HOLD; +} + +/* + * VT400 & up. + * Delete column. + */ +static int +tst_DECDC(MENU_ARGS) +{ + int n; + int last = max_lines - 3; + + for (n = 1; n < last; n++) { + cup(n, last - n + 22); printf("*"); + cup(1,1); decdc(1); + } + cup(1,1); decdc(20); + + vt_move(last+1,1); + println("If your terminal supports DECDC, there will be a column of *'s on the left"); + return MENU_HOLD; +} + +/* + * VT400 & up + * Erase Rectangular area + */ +static int +tst_DECERA(MENU_ARGS) +{ + decaln(); + decera(5,5, max_lines-10, min_cols-5); + + vt_move(max_lines-3,1); + vt_clear(0); + + println(the_title); + println("There should be a rectangle cleared in the middle of the screen."); + return MENU_HOLD; +} + +/* + * VT400 & up. + * + * DECFI - Forward Index + * This control function moves the column forward one column. If the cursor is + * at the right margin, then all screen data within the margins moves one + * column to the left. The column shifted past the left margin is lost. + * + * Format: ESC 9 + * Description: + * DECFI adds a new column at the right margin with no visual attributes. + * DECFI is not affected by the margins. If the cursor is at the right border + * of the page when the terminal receives DECFI, then the terminal ignores + * DECFI. + */ +static int +tst_DECFI(MENU_ARGS) +{ + int n, m; + int last = max_lines - 4; + int final = min_cols / 4; + + for (n = 1; n <= final; n++) { + cup(1,min_cols-3); + printf("%3d", n); /* leaves cursor in rightmost column */ + if (n != final) { + for (m = 0; m < 4; m++) + decfi(); + } + } + + vt_move(last,1); + vt_clear(0); + + println(the_title); + println("If your terminal supports DECFI (forward index), then the top row"); + printf("should be numbered 1 through %d.\n", final); + return MENU_HOLD; +} + +/* + * VT400 & up + * Fill Rectangular area + */ +static int +tst_DECFRA(MENU_ARGS) +{ + decfra('*', 5,5, max_lines-10, min_cols-5); + + vt_move(max_lines-3,1); + vt_clear(0); + + println(the_title); + println("There should be a rectangle filled in the middle of the screen."); + return MENU_HOLD; +} + +/* + * VT400 & up. + * Insert column. + */ +static int +tst_DECIC(MENU_ARGS) +{ + int n; + int last = max_lines - 3; + + for (n = 1; n < last; n++) { + cup(n, min_cols - 22 - last + n); printf("*"); + cup(1,1); decic(1); + } + decic(20); + + vt_move(last+1,1); + println("If your terminal supports DECIC, there will be a column of *'s on the right"); + return MENU_HOLD; +} + +static int +tst_DECKBUM(MENU_ARGS) +{ + vt_move(1,1); + println(the_title); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + deckbum(TRUE); + println("The keyboard is set for data processing."); + show_keypress(3,10); + + vt_move(10,1); + deckbum(FALSE); + println("The keyboard is set for normal (typewriter) processing."); + show_keypress(11,10); + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +static int +tst_DECKPM(MENU_ARGS) +{ + vt_move(1,1); + println(the_title); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + deckpm(TRUE); + println("The keyboard is set for position reports."); + show_keypress(3,10); + + vt_move(10,1); + deckpm(FALSE); + println("The keyboard is set for character codes."); + show_keypress(11,10); + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +static int +tst_DECNKM(MENU_ARGS) +{ + vt_move(1,1); + println(the_title); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + decnkm(FALSE); + println("Press one or more keys on the keypad. They should generate numeric codes."); + show_keypress(3,10); + + vt_move(10,1); + decnkm(TRUE); + println("Press one or more keys on the keypad. They should generate control codes."); + show_keypress(11,10); + + decnkm(FALSE); + vt_move(max_lines-1,1); + restore_ttymodes(); + return MENU_HOLD; +} + +/* + * VT400 & up + * Reverse Attributes in Rectangular Area + */ +static int +tst_DECRARA(MENU_ARGS) +{ + int last = max_lines - 4; + int top = 5; + int left = 5; + int right = 45; + int bottom = max_lines-10; + + decsace(TRUE); + decaln(); /* fill the screen */ + decrara(top, left, bottom, right, 7); /* invert a rectangle) */ + decrara(top+1, left+1, bottom-1, right-1, 7); /* invert a rectangle) */ + + vt_move(last, 1); + vt_clear(0); + + println(the_title); + println("There should be an open rectangle formed by reverse-video E's"); + holdit(); + + decsace(FALSE); + decaln(); /* fill the screen */ + decrara(top, left, bottom, right, 7); /* invert a rectangle) */ + decrara(top+1, left+1, bottom-1, right-1, 7); /* invert a rectangle) */ + + vt_move(last, 1); + vt_clear(0); + + println(the_title); + println("There should be an open rectangle formed by reverse-video E's"); + println("combined with wrapping at the margins."); + return MENU_HOLD; +} + +static int +tst_ISO_DECRPM(MENU_ARGS) +{ + int mode, Pa, Ps; + char chr; + char *report; + + static struct { + int mode; + char *name; + } ansi_modes[] = { + { GATM, "GATM" }, + { AM, "AM" }, + { CRM, "CRM" }, + { IRM, "IRM" }, + { SRTM, "SRTM" }, + { VEM, "VEM" }, + { HEM, "HEM" }, + { PUM, "PUM" }, + { SRM, "SRM" }, + { FEAM, "FEAM" }, + { FETM, "FETM" }, + { MATM, "MATM" }, + { TTM, "TTM" }, + { SATM, "SATM" }, + { TSM, "TSM" }, + { EBM, "EBM" }, + { LNM, "LNM" } }; + + vt_move(1,1); + printf("Testing %s\n", the_title); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + for (mode = 0; mode < TABLESIZE(ansi_modes); mode++) { + do_csi("%d$p", ansi_modes[mode].mode); + report = instr(); + vt_move(mode+2,10); + printf("%8s", ansi_modes[mode].name); + if (LOG_ENABLED) + fprintf(log_fp, "Testing %8s\n", ansi_modes[mode].name); + chrprint(report); + if ((report = skip_csi(report)) != 0 + && sscanf(report, "%d;%d$%c", &Pa, &Ps, &chr) == 3 + && Pa == ansi_modes[mode].mode + && chr == 'y') { + switch(Ps) { + case 0: show_result(" unknown"); break; + case 1: show_result(" set"); break; + case 2: show_result(" reset"); break; + case 3: show_result(" permanently set"); break; + case 4: show_result(" permanently reset"); break; + default: show_result(" ?"); break; + } + } else { + show_result(SHOW_FAILURE); + } + } + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +static int +tst_DEC_DECRPM(MENU_ARGS) +{ + int mode, Pa, Ps; + char chr; + char *report; + char *show; + + static struct { + int mode; + char *name; + } dec_modes[] = { + { DECCKM, "DECCKM" }, + { DECANM, "DECANM" }, + { DECCOLM, "DECCOLM" }, + { DECSCLM, "DECSCLM" }, + { DECSCNM, "DECSCNM" }, + { DECOM, "DECOM" }, + { DECAWM, "DECAWM" }, + { DECARM, "DECARM" }, + { DECPFF, "DECPFF" }, + { DECPEX, "DECPEX" }, + { DECTCEM, "DECTCEM" }, + { DECNRCM, "DECNRCM" }, + { DECHCCM, "DECHCCM" }, + { DECVCCM, "DECVCCM" }, + { DECPCCM, "DECPCCM" }, + { DECNKM, "DECNKM" }, + { DECBKM, "DECBKM" }, + { DECKBUM, "DECKBUM" }, + { DECVSSM, "DECVSSM" }, + { DECXRLM, "DECXRLM" }, + { DECKPM, "DECKPM" } }; + + vt_move(1,1); + printf("Testing %s\n", the_title); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + for (mode = 0; mode < TABLESIZE(dec_modes); mode++) { + do_csi("?%d$p", dec_modes[mode].mode); + report = instr(); + vt_move(mode+2,10); + printf("%8s", dec_modes[mode].name); + if (LOG_ENABLED) + fprintf(log_fp, "Testing %8s\n", dec_modes[mode].name); + chrprint(report); + if ((report = skip_csi(report)) != 0 + && sscanf(report, "?%d;%d$%c", &Pa, &Ps, &chr) == 3 + && Pa == dec_modes[mode].mode + && chr == 'y') { + switch(Ps) { + case 0: show = "unknown"; break; + case 1: show = "set"; break; + case 2: show = "reset"; break; + case 3: show = "permanently set"; break; + case 4: show = "permanently reset"; break; + default: show = "?"; break; + } + } else { + show = SHOW_FAILURE; + } + show_result(show); + } + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +/* Test Window Report - VT400 */ +static int +tst_DECRQDE(MENU_ARGS) +{ + char *report; + char chr; + int Ph, Pw, Pml, Pmt, Pmp; + + vt_move(1,1); + println("Testing DECRQDE/DECRPDE Window Report"); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + do_csi("\"v"); + report = get_reply(); + vt_move(3,10); + chrprint(report); + + if ((report = skip_csi(report)) != 0 + && sscanf(report, "%d;%d;%d;%d;%d\"%c", + &Ph, &Pw, &Pml, &Pmt, &Pmp, &chr) == 6 + && chr == 'w') { + vt_move(5, 10); + show_result("lines:%d, cols:%d, left col:%d, top line:%d, page %d", + Ph, Pw, Pml, Pmt, Pmp); + } else { + show_result(SHOW_FAILURE); + } + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +static int +tst_DECRQSS(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Select active status display (DECSASD)", rpt_DECSASD }, + { "Select attribute change extent (DECSACE)", rpt_DECSACE }, + { "Set character attribute (DECSCA)", rpt_DECSCA }, + { "Set conformance level (DECSCL)", rpt_DECSCL }, + { "Set columns per page (DECSCPP)", rpt_DECSCPP }, + { "Set lines per page (DECSLPP)", rpt_DECSLPP }, + { "Set number of lines per screen (DECSNLS)", rpt_DECSNLS }, + { "Set status line type (DECSSDT)", rpt_DECSSDT }, + { "Set left and right margins (DECSLRM)", rpt_DECSLRM }, + { "Set top and bottom margins (DECSTBM)", rpt_DECSTBM }, + { "Select graphic rendition (SGR)", rpt_SGR }, + { "Enable local functions (DECELF)", rpt_DECELF }, + { "Local function key control (DECLFKC)", rpt_DECLFKC }, + { "Select modifier key reporting (DECSMKR)", rpt_DECSMKR }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT420 Status-Strings Reports"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/* Request Terminal State Report */ +static int +tst_DECRQTSR(MENU_ARGS) +{ + char *report; + char *show; + + vt_move(1,1); println("Testing Terminal State Reports (DECRQTSR/DECTSR)"); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + do_csi("1$u"); + report = get_reply(); + + vt_move(3,10); + chrprint(report); + + if ((report = skip_dcs(report)) != 0 + && strip_terminator(report) + && !strncmp(report, "1$s", 3)) { + show = SHOW_SUCCESS; + } else { + show = SHOW_FAILURE; + } + show_result(show); + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +/* Test User-Preferred Supplemental Set - VT400 */ +static int +tst_DECRQUPSS(MENU_ARGS) +{ + char *report; + char *show; + + vt_move(1,1); + println("Testing DECRQUPSS/DECAUPSS Window Report"); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + do_csi("&u"); + report = get_reply(); + vt_move(3,10); + chrprint(report); + if ((report = skip_dcs(report)) != 0 + && strip_terminator(report)) { + if (!strcmp(report, "0!u%5")) + show = "DEC Supplemental Graphic"; + else if (!strcmp(report, "1!uA")) + show = "ISO Latin-1 supplemental"; + else + show = "unknown"; + } else { + show = SHOW_FAILURE; + } + show_result(show); + + restore_ttymodes(); + vt_move(max_lines-1,1); + return MENU_HOLD; +} + +/* + * Selective-Erase Rectangular area + */ +static int +tst_DECSERA(MENU_ARGS) +{ + int top = 5; + int left = 5; + int right = 45; + int bottom = max_lines-10; + int last = max_lines - 3; + + decaln(); + decsca(1); + decfra('E', top+1, left+1, bottom-1, right-1); + decsca(1); + decsera(top, left, bottom, right); /* erase the inside */ + + vt_move(last, 1); + vt_clear(0); + + println(the_title); + println("There should be an open rectangle formed by blanks on a background of E's"); + + holdit(); + decaln(); + return MENU_NOHOLD; +} + +/* FIXME: use DECRQSS to get reports */ +static int +tst_DECSNLS(MENU_ARGS) +{ + int rows; + + vt_move(1,1); println("Testing Select Number of Lines per Screen (DECSNLS)"); + + for (rows = 48; rows >= 24; rows -= 12) { + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + printf("%d Lines/Screen: ", rows); + decsnls(rows); + decrqss("*|"); + chrprint(instr()); + println(""); + + restore_ttymodes(); + holdit(); + } + + return MENU_NOHOLD; +} + +static int +tst_DECTABSR(MENU_ARGS) +{ + return any_decrqpsr(PASS_ARGS, 2); +} + +static int +tst_DSR_area_sum(MENU_ARGS) +{ + return tst_DECCKSR(PASS_ARGS, 1, "1;1;10;10;20;20*y"); +} + +static int +tst_DSR_cursor(MENU_ARGS) +{ + return any_DSR(PASS_ARGS, "?6n", show_ExtendedCursorPosition); +} + +static int +tst_DSR_data_ok(MENU_ARGS) +{ + return any_DSR(PASS_ARGS, "?75n", show_DataIntegrity); +} + +static int +tst_DSR_macrospace(MENU_ARGS) +{ + char *report; + char *show; + + vt_move(1,1); + printf("Testing DECMSR: %s\n", the_title); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + do_csi("?62n"); + report = instr(); + vt_move(3,10); + chrprint(report); + if ((report = skip_csi(report)) != 0 + && (report = skip_digits(report)) != 0 + && !strcmp(report, "*{")) { + show = SHOW_SUCCESS; + } else { + show = SHOW_FAILURE; + } + show_result(show); + + restore_ttymodes(); + vt_move(max_lines-1, 1); + return MENU_HOLD; +} + +static int +tst_DSR_memory_sum(MENU_ARGS) +{ + return tst_DECCKSR(PASS_ARGS, 1, "?63;1n"); +} + +static int +tst_DSR_multisession(MENU_ARGS) +{ + return any_DSR(PASS_ARGS, "?85n", show_MultisessionStatus); +} + +int +tst_SRM(MENU_ARGS) +{ + int oldc, newc; + + vt_move(1,1); + println(the_title); + + set_tty_raw(TRUE); + + set_tty_echo(FALSE); + srm(FALSE); + + println("Local echo is enabled, remote echo disabled. Press any keys, repeat to quit."); + vt_move(3,10); + + oldc = -1; + while ((newc = inchar()) != oldc) + oldc = newc; + + set_tty_echo(TRUE); + srm(TRUE); + + vt_move(10,1); + println("Local echo is disabled, remote echo enabled. Press any keys, repeat to quit."); + vt_move(11,10); + + oldc = -1; + while ((newc = inchar()) != oldc) + oldc = newc; + + vt_move(max_lines-1,1); + restore_ttymodes(); + return MENU_HOLD; +} + +/******************************************************************************/ + +static int +tst_PageFormat(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test set columns per page (DECSCPP)", not_impl }, + { "Test columns mode (DECCOLM)", not_impl }, + { "Test set lines per page (DECSLPP)", not_impl }, + { "Test set left and right margins (DECSLRM)", not_impl }, + { "Test set vertical split-screen (DECVSSM)", not_impl }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("Page Format Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +static int +tst_PageMovement(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Next Page (NP)", not_impl }, + { "Test Preceding Page (PP)", not_impl }, + { "Test Page Position Absolute (PPA)", not_impl }, + { "Test Page Position Backward (PPB)", not_impl }, + { "Test Page Position Relative (PPR)", not_impl }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("Page Format Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +/* + * The main vt100 module tests CUP, HVP, CUF, CUB, CUU, CUD + */ +static int +tst_VT420_cursor(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Back Index (DECBI)", tst_DECBI }, + { "Test Forward Index (DECFI)", tst_DECFI }, + { "Test Pan down (SU)", tst_SU }, + { "Test Pan up (SD)", tst_SD}, + { "Test Vertical Cursor Coupling (DECVCCM)", not_impl }, + { "Test Page Cursor Coupling (DECPCCM)", not_impl }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT420 Cursor-Movement Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +/* + * The main vt100 module tests IRM, DL, IL, DCH, ICH, ED, EL + */ +static int +tst_VT420_editing(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Delete Column (DECDC)", tst_DECDC }, + { "Erase Character", tst_ECH }, + { "Test Insert Column (DECIC)", tst_DECIC }, + { "Test Protected-Areas (DECSCA)", tst_DECSCA }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT420 Editing Sequence Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +/* + * The main vt100 module tests AM, LNM, DECKPAM, DECARM, DECAWM + */ +static int +tst_VT420_keyboard_ctl(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Backarrow key (DECBKM)", tst_DECBKM }, + { "Test Numeric keypad (DECNKM)", tst_DECNKM }, + { "Test Keyboard usage (DECKBUM)", tst_DECKBUM }, + { "Test Key position (DECKPM)", tst_DECKPM }, + { "Test Enable Local Functions (DECELF)", not_impl }, + { "Test Local Function-Key Control (DECLFKC)", not_impl }, + { "Test Select Modifier-Key Reporting (DECSMKR)", not_impl }, /* DECEKBD */ + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT420 Keyboard-Control Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +/* + * These apply only to VT400's & above + */ +static int +tst_VT420_rectangle(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Change-Attributes in Rectangular Area (DECCARA)", tst_DECCARA }, + { "Test Copy Rectangular area (DECCRA)", tst_DECCRA }, + { "Test Erase Rectangular area (DECERA)", tst_DECERA }, + { "Test Fill Rectangular area (DECFRA)", tst_DECFRA }, + { "Test Reverse-Attributes in Rectangular Area (DECRARA)", tst_DECRARA }, + { "Test Selective-Erase Rectangular area (DECSERA)", tst_DECSERA }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT420 Rectangular Area Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +/* UDK and rectangle-checksum status are available only on VT400 */ + +static int +tst_VT420_report_device(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Extended Cursor-Position", tst_DSR_cursor }, + { "Test Printer Status", tst_DSR_printer }, + { "Test UDK Status", tst_DSR_userkeys }, + { "Test Keyboard Status", tst_DSR_keyboard }, + { "Test Locator Status", tst_DSR_locator }, + { "Test Macro Space", tst_DSR_macrospace }, + { "Test Memory Checksum", tst_DSR_memory_sum }, + { "Test Data Integrity", tst_DSR_data_ok }, + { "Test Multiple Session Status", tst_DSR_multisession }, + { "Test Checksum of Rectangular Area", tst_DSR_area_sum }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT420 Device Status Reports"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +static int +tst_VT420_report_presentation(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Cursor Information Report (DECCIR)", tst_DECCIR }, + { "Tab Stop Report (DECTABSR)", tst_DECTABSR }, + { "ANSI Mode Report (DECRPM)", tst_ISO_DECRPM }, + { "DEC Mode Report (DECRPM)", tst_DEC_DECRPM }, + { "Restore Presentation State (DECRSPS)", not_impl }, + { "Status-String Report (DECRQSS)", tst_DECRQSS }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT420 Device Status Reports"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +static int +tst_VT420_report_terminal(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Restore Terminal State (DECRSTS)", not_impl }, + { "Terminal State Report (DECRQTS/DECTSR)", tst_DECRQTSR }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT420 Terminal State Reports"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +static int +tst_VT420_reports(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Device Status Reports", tst_VT420_report_device }, + { "Test Presentation State Reports", tst_VT420_report_presentation }, + { "Test Terminal State Reports", tst_VT420_report_terminal }, + { "Test User-Preferred Supplemental Set (DECAUPSS)", tst_DECRQUPSS }, + { "Test Window Report (DECRPDE)", tst_DECRQDE }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT420 Reports"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +/* DECSASD and DECSSDT are for VT400's only */ +static int +tst_VT420_screen(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test Send/Receive mode (SRM)", tst_SRM }, + { "Test Select Number of Lines per Screen (DECSNLS)", tst_DECSNLS }, + { "Test Status line (DECSASD/DECSSDT)", tst_statusline }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT420 Screen-Display Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +/******************************************************************************/ + +int +tst_vt420(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Exit", 0 }, + { "Test cursor-movement", tst_VT420_cursor }, + { "Test downloading soft-chars (DECDLD)", tst_softchars }, + { "Test editing sequences", tst_VT420_editing }, + { "Test keyboard-control", tst_VT420_keyboard_ctl }, + { "Test macro-definition (DECDMAC)", not_impl }, + { "Test page-format controls", tst_PageFormat }, + { "Test page-movement controls", tst_PageMovement }, + { "Test printing functions", tst_printing }, + { "Test rectangular area functions", tst_VT420_rectangle }, + { "Test reporting functions", tst_VT420_reports }, + { "Test screen-display functions", tst_VT420_screen }, + { "Test soft terminal-reset", tst_DECSTR }, + { "Test user-defined keys (DECUDK)", tst_DECUDK }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); printf("VT420 Tests"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest-20011130/vt52.c b/doc/vttest-20011130/vt52.c new file mode 100644 index 0000000..c912486 --- /dev/null +++ b/doc/vttest-20011130/vt52.c @@ -0,0 +1,235 @@ +/* $Id$ */ + +#include <vttest.h> +#include <ttymodes.h> +#include <esc.h> + +static int +testing(char *name, int row) +{ + printf("Testing %s. ", name); + printf("A real VT%d will not recognize %s at this point", terminal_id(), name); + println(""); + return row+1; +} + +static int +isreturn(char *reply) +{ + return (*reply == '\r' || *reply == '\n'); +} + +int +tst_vt52(MENU_ARGS) +{ + static struct rtabl { + char *rcode; + char *rmsg; + } resptable[] = { + { "\033/A", " -- OK (VT50)" }, + { "\033/C", " -- OK (VT55)" }, + { "\033/H", " -- OK (VT50H without copier)" }, + { "\033/J", " -- OK (VT50H with copier)" }, + { "\033/K", " -- OK (means Standard VT52)" }, + { "\033/L", " -- OK (VT52 with copier)" }, + { "\033/Z", " -- OK (means VT100 emulating VT52)" }, + { "", " -- Unknown response"} + }; + + int i,j; + char *response; + char *temp; + VTLEVEL save; + + save_level(&save); + set_level(0); /* Reset ANSI (VT100) mode, Set VT52 mode */ + vt52home(); /* Cursor home */ + vt52ed(); /* Erase to end of screen */ + vt52home(); /* Cursor home */ + for (i = 0; i <= max_lines-1; i++) { + for (j = 0; j <= 9; j++) + printf("%s", "FooBar "); + println("Bletch"); + } + vt52home(); /* Cursor home */ + vt52ed(); /* Erase to end of screen */ + + vt52cup(7,47); + printf("nothing more."); + for (i = 1; i <= 10; i++) printf("THIS SHOULD GO AWAY! "); + for (i = 1; i <= 5; i++) { + vt52cup(1,1); + printf("%s", "Back scroll (this should go away)"); + vt52ri(); /* Reverse LineFeed (with backscroll!) */ + } + vt52cup(12,60); + vt52ed(); /* Erase to end of screen */ + for (i = 2; i <= 6; i++) { + vt52cup(i,1); + vt52el(); /* Erase to end of line */ + } + + for (i = 2; i <= max_lines-1; i++) { + vt52cup(i,70); printf("%s", "**Foobar"); + } + vt52cup(max_lines-1,10); + for (i = max_lines-1; i >= 2; i--) { + printf("%s", "*"); + printf("%c", 8); /* BS */ + vt52ri(); /* Reverse LineFeed (LineStarve) */ + } + vt52cup(1,70); + for (i = 70; i >= 10; i--) { + printf("%s", "*"); + vt52cub1(); vt52cub1(); /* Cursor Left */ + } + vt52cup(max_lines,10); + for (i = 10; i <= 70; i++) { + printf("%s", "*"); + printf("%c", 8); /* BS */ + vt52cuf1(); /* Cursor Right */ + } + vt52cup(2,11); + for (i = 2; i <= max_lines-1; i++) { + printf("%s", "!"); + printf("%c", 8); /* BS */ + vt52cud1(); /* Cursor Down */ + } + vt52cup(max_lines-1,69); + for (i = max_lines-1; i >= 2; i--) { + printf("%s", "!"); + printf("%c", 8); /* BS */ + vt52cuu1(); /* Cursor Up */ + } + for (i = 2; i <= max_lines-1; i++) { + vt52cup(i,71); + vt52el(); /* Erase to end of line */ + } + + vt52cup(10,16); + printf("%s", "The screen should be cleared, and have a centered"); + vt52cup(11,16); + printf("%s", "rectangle of \"*\"s with \"!\"s on the inside to the"); + vt52cup(12,16); + printf("%s", "left and right. Only this, and"); + vt52cup(13,16); + holdit(); + + vt52home(); /* Cursor home */ + vt52ed(); /* Erase to end of screen */ + printf("%s", "This is the normal character set:"); + for (j = 0; j <= 1; j++) { + vt52cup(3 + j, 16); + for (i = 0; i <= 47; i++) + printf("%c", 32 + i + 48 * j); + } + vt52cup(6,1); + printf("%s", "This is the special graphics character set:"); + esc("F"); /* Select Special Graphics character set */ + for (j = 0; j <= 1; j++) { + vt52cup(8 + j, 16); + for (i = 0; i <= 47; i++) + printf("%c", 32 + i + 48 * j); + } + esc("G"); /* Select ASCII character set */ + vt52cup(12,1); + holdit(); + + vt52home(); /* Cursor home */ + vt52ed(); /* Erase to end of screen */ + println("Test of terminal response to IDENTIFY command"); + + /* + * According to J.Altman, DECID isn't recognized by VT5xx terminals. Real + * DEC terminals through VT420 do, though it isn't recommended. VT420's + * emulation of VT52 does not recognize DA -- so we use DECID in this case. + */ + set_tty_raw(TRUE); + decid(); /* Identify */ + response = get_reply(); + println(""); + + restore_level(&save); + restore_ttymodes(); + padding(10); /* some terminals miss part of the 'chrprint()' otherwise */ + + printf("Response was"); + chrprint(response); + for(i = 0; resptable[i].rcode[0] != '\0'; i++) { + if (!strcmp(response, resptable[i].rcode)) { + show_result("%s", resptable[i].rmsg); + break; + } + } + println(""); + println(""); + + /* + * Verify whether returning to ANSI mode restores the previous operating + * level. If it was a VT220, we can check this by seeing if 8-bit controls + * work; if a VT420 we can check the value of DECSCL. A real VT420 goes to + * VT100 mode. + */ + if (terminal_id() >= 200) { + int row = 8; + set_level(0); /* Reset ANSI (VT100) mode, Set VT52 mode */ + println("Verify operating level after restoring ANSI mode"); + esc("<"); /* Enter ANSI mode (VT100 mode) */ + set_tty_raw(TRUE); + if (save.cur_level >= 3) { /* VT340 implements DECRQSS */ + vt_move(row,1); + row = testing("DECSCL", row); + println("You should have to press return to continue:"); + println(""); + decrqss("\"p"); + response = get_reply(); + vt_move(++row,10); + printf("Response was"); + chrprint(response); + if (isreturn(response)) { + show_result(SHOW_SUCCESS); + } else { + if (parse_decrqss(response, "\"p") > 0) + printf("DECSCL recognized --"); + show_result(SHOW_FAILURE); + } + println(""); + row++; + } + + if (save.cur_level >= 2) { + vt_move(++row,1); + row = testing("S8C1T", row); + s8c1t(1); + cup(1,1); + dsr(6); + response = instr(); + vt_move(row,10); + printf("Response to CUP(1,1)/DSR(6)"); + chrprint(response); + if ((temp = skip_prefix(csi_input(), response)) != 0) { + if (!strcmp("1;1R", temp)) { + printf("S8C1T recognized --"); + show_result(SHOW_FAILURE); + } else { + printf("unknown response --"); + show_result(SHOW_FAILURE); + } + } else { + input_8bits = FALSE; /* we expect this anyway */ + if ((temp = skip_prefix(csi_input(), response)) != 0 + && !strcmp("1;1R", temp)) { + show_result(SHOW_SUCCESS); + } else { + printf("unknown response --"); + show_result(SHOW_FAILURE); + } + } + } + restore_level(&save); + restore_ttymodes(); + println(""); + println(""); + } + return MENU_HOLD; +} diff --git a/doc/vttest-20011130/vttest b/doc/vttest-20011130/vttest Binary files differnew file mode 100755 index 0000000..b4eeb9f --- /dev/null +++ b/doc/vttest-20011130/vttest diff --git a/doc/vttest-20011130/vttest.1 b/doc/vttest-20011130/vttest.1 new file mode 100644 index 0000000..02df6fe --- /dev/null +++ b/doc/vttest-20011130/vttest.1 @@ -0,0 +1,47 @@ +.\" $Id$ +.TH VTTEST 1 "LOCAL" +. +.SH NAME +vttest \- test VT100-type terminal +. +.SH SYNOPSIS +.B vttest \fI[options] [24x80.132] +. +.SH DESCRIPTION +.I Vttest +is a program designed to test the functionality of a VT100 terminal +(or emulator thereof). +It tests both display (escape sequence handling) and keyboard. +.PP +The program is menu\-driven and contains full on\-line operating instructions. +To run a given menu\-item, you must enter its number. +You can run all menu\-items (for a given level) by entering an asterisk, +i.e, `*'. +. +.SH OPTIONS +You can specify the screen geometry in the form \fI[24x80.132]\fP, +i.e., 24 lines, 80 minimum columns, 132 maximum columns. +If your terminal does not switch between 80 and 132 columns you +may specify 24x80.80, for example, to avoid a misleading display. +.PP +Other options are: +.TP 5 +.BI \-f " file" +specify a file containing a DRCS (soft character definition) string. +.TP 5 +.B \-l +log test results to \fIvttest.log\fP. +.TP 5 +.B \-p +use padding, e.g., for a VT100 connected to a high-speed line. +.TP 5 +.B \-8 +use 8-bit controls (this can be changed with a menu option). +. +.SH AUTHOR +Per Lindberg +(mcvax,seismo)!enea!suadb!lindberg +sometime 1985. + +Modified by Thomas Dickey +from June 1996, to support nonstandard screen geometry, VT220 and ISO color tests. diff --git a/doc/vttest-20011130/vttest.h b/doc/vttest-20011130/vttest.h new file mode 100644 index 0000000..d08e3a2 --- /dev/null +++ b/doc/vttest-20011130/vttest.h @@ -0,0 +1,270 @@ +/* $Id$ */ + +#ifndef VTTEST_H +#define VTTEST_H 1 + +#define VERSION "1.7b 1985-04-19" +#include <patchlev.h> + +/* Choose one of these */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#define UNIX +#else + +/* Assume ANSI and (minimal) Posix */ +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define RETSIGTYPE void + +#endif + +#define SIG_ARGS int sig /* FIXME: configure-test */ + +#include <stdio.h> +#include <stdarg.h> + +#if HAVE_STDLIB_H +#include <stdlib.h> +#endif + +#if HAVE_UNISTD_H +#include <unistd.h> +#endif + +#if HAVE_STRING_H +#include <string.h> +#endif + +#include <ctype.h> + +#if HAVE_TERMIOS_H && HAVE_TCGETATTR +# define USE_POSIX_TERMIOS 1 +#else +# if HAVE_TERMIO_H +# define USE_TERMIO 1 +# else +# if HAVE_SGTTY_H +# define USE_SGTTY 1 +# define USE_FIONREAD 1 +# else +# ifdef VMS + /* FIXME */ +# else + please fix me +# endif +# endif +# endif +#endif + +#include <signal.h> +#include <setjmp.h> + +#if USE_POSIX_TERMIOS +# include <termios.h> +# define TTY struct termios +#else +# if USE_TERMIO +# include <termio.h> +/*# define TCSANOW TCSETA */ +/*# define TCSADRAIN TCSETAW */ +/*# define TCSAFLUSH TCSETAF */ +# define TTY struct termio +# define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg) +# define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg) +# define VDISABLE (unsigned char)(-1) +# else +# if USE_SGTTY +# include <sgtty.h> +# define TTY struct sgttyb +# endif +# endif +#endif + +#if HAVE_SYS_FILIO_H +# include <sys/filio.h> /* FIONREAD */ +#endif + +#if HAVE_FCNTL_H +#include <fcntl.h> +#endif + +#if !defined(sun) || !defined(NL0) +# if HAVE_IOCTL_H +# include <ioctl.h> +# else +# if HAVE_SYS_IOCTL_H +# include <sys/ioctl.h> +# endif +# endif +#endif + +/*FIXME: really want 'extern' for errno*/ +#include <errno.h> + +#define LOG_ENABLED ((log_fp != 0) && !log_disabled) + +extern FILE *log_fp; +extern int brkrd; +extern int input_8bits; +extern int log_disabled; +extern int max_cols; +extern int max_lines; +extern int min_cols; +extern int output_8bits; +extern int reading; +extern int tty_speed; +extern int use_padding; +extern jmp_buf intrenv; + +#ifndef TRUE +#define TRUE (1) +#endif + +#ifndef FALSE +#define FALSE (0) +#endif + +#ifndef EXIT_SUCCESS +#define EXIT_SUCCESS 0 +#endif + +#ifndef EXIT_FAILURE +#define EXIT_FAILURE 1 +#endif + +#define SHOW_SUCCESS "ok" +#define SHOW_FAILURE "failed" + +#define TABLESIZE(table) (sizeof(table)/sizeof(table[0])) + +#define DEFAULT_SPEED 9600 + +#if !defined(__GNUC__) && !defined(__attribute__) +#define __attribute__(p) /* nothing */ +#endif + +#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) + +/* my SunOS 4.1.x doesn't have prototyped headers */ +#if defined(__GNUC__) && defined(sun) && !defined(__SVR4) +extern void perror(const char *s); +extern int _flsbuf(int c, FILE *s); +extern int fclose(FILE *s); +extern int fflush(FILE *s); +extern int fprintf(FILE *s, const char *fmt, ...); +extern int fgetc(FILE *s); +extern int fputc(int c, FILE *s); +extern int fputs(char *p, FILE *s); +extern int ioctl(int fd, unsigned long mask, void *p); +extern int printf(const char *fmt, ...); +extern int scanf(const char *fmt, ...); +extern int sscanf(const char *src, const char *fmt, ...); +extern long strtol(const char *src, char **dst, int base); +#endif + +#define MENU_ARGS char * the_title +#define PASS_ARGS /* char * */the_title + +typedef struct { + char *description; + int (*dispatch)(MENU_ARGS); +} MENU; + +typedef struct { + int cur_level; + int input_8bits; + int output_8bits; +} VTLEVEL; + +#define MENU_NOHOLD 0 +#define MENU_HOLD 1 +#define MENU_MERGE 2 + +#define TITLE_LINE 3 + +/* main.c */ +extern RETSIGTYPE onbrk(SIG_ARGS); +extern RETSIGTYPE onterm(SIG_ARGS); +extern char *skip_csi(char *input); +extern char *skip_dcs(char *input); +extern char *skip_digits(char *src); +extern char *skip_prefix(char *prefix, char *input); +extern char *skip_ss3(char *input); +extern int any_DSR(MENU_ARGS, char *text, void (*explain)(char *report)); +extern int bug_a(MENU_ARGS); +extern int bug_b(MENU_ARGS); +extern int bug_c(MENU_ARGS); +extern int bug_d(MENU_ARGS); +extern int bug_e(MENU_ARGS); +extern int bug_f(MENU_ARGS); +extern int bug_l(MENU_ARGS); +extern int bug_s(MENU_ARGS); +extern int bug_w(MENU_ARGS); +extern int get_level(void); +extern int main(int argc, char *argv[]); +extern int menu(MENU *table); +extern int not_impl(MENU_ARGS); +extern int parse_decrqss(char *report, char *func); +extern int set_level(int level); +extern int scan_any(char *str, int *pos, int toc); +extern int scanto(char *str, int *pos, int toc); +extern int setup_terminal(MENU_ARGS); +extern int strip_suffix(char *src, char *suffix); +extern int strip_terminator(char *src); +extern int terminal_id(void); +extern int tst_DECSCA(MENU_ARGS); +extern int tst_DECSTR(MENU_ARGS); +extern int tst_DECTCEM(MENU_ARGS); +extern int tst_DECUDK(MENU_ARGS); +extern int tst_DSR_keyboard(MENU_ARGS); +extern int tst_DSR_locator(MENU_ARGS); +extern int tst_DSR_printer(MENU_ARGS); +extern int tst_DSR_userkeys(MENU_ARGS); +extern int tst_ECH(MENU_ARGS); +extern int tst_S8C1T(MENU_ARGS); +extern int tst_SD(MENU_ARGS); +extern int tst_SRM(MENU_ARGS); +extern int tst_SU(MENU_ARGS); +extern int tst_bugs(MENU_ARGS); +extern int tst_characters(MENU_ARGS); +extern int tst_colors(MENU_ARGS); +extern int tst_doublesize(MENU_ARGS); +extern int tst_insdel(MENU_ARGS); +extern int tst_keyboard(MENU_ARGS); +extern int tst_keyboard_layout(char *scs_params); +extern int tst_mouse(MENU_ARGS); +extern int tst_movements(MENU_ARGS); +extern int tst_nonvt100(MENU_ARGS); +extern int tst_printing(MENU_ARGS); +extern int tst_reports(MENU_ARGS); +extern int tst_rst(MENU_ARGS); +extern int tst_screen(MENU_ARGS); +extern int tst_setup(MENU_ARGS); +extern int tst_softchars(MENU_ARGS); +extern int tst_statusline(MENU_ARGS); +extern int tst_vt220(MENU_ARGS); +extern int tst_vt420(MENU_ARGS); +extern int tst_vt52(MENU_ARGS); +extern int tst_xterm(MENU_ARGS); +extern void bye(void); +extern void chrprint(char *s); +extern void default_level(void); +extern void do_scrolling(void); +extern void enable_logging(void); +extern void initterminal(int pn); +extern void reset_level(void); +extern void restore_level(VTLEVEL *save); +extern void save_level(VTLEVEL *save); +extern void scs_graphics(void); +extern void scs_normal(void); +extern void setup_softchars(char *filename); +extern void show_result(const char *fmt, ...); +extern void title(int offset); +extern void vt_clear(int code); +extern void vt_el(int code); +extern void vt_hilite(int flag); +extern void vt_move(int row, int col); + +#endif /* VTTEST_H */ diff --git a/doc/vttest-20011130/vttest.lsm b/doc/vttest-20011130/vttest.lsm new file mode 100644 index 0000000..ea367c7 --- /dev/null +++ b/doc/vttest-20011130/vttest.lsm @@ -0,0 +1,15 @@ +Begin3 +Title: vttest +Version: v2_7 +Entered-date: 17NOV96 +Description: a program to test the compatibility (or to demonstrate the + non-compatibility) of so-called "VT100-compatible" terminals. + New version using configure script, in ANSI C, with tests for + ISO color, xterm, VT220 and VT420. Ported to VAX/VMS. +Keywords: VT100, VT220, VT420, ISO 6429, ECMA-48 +Author: dickey@clark.net (Thomas E. Dickey) +Primary-site: sunsite.unc.edu /pub/Linux/apps/comm +Original-site: ftp.clark.net:/pub/dickey/vttest +Platforms: *NIX, VAX/VMS, ANSI C +Copying-policy: freely distributable copyrighted software +End diff --git a/doc/vttest-20011130/xterm.c b/doc/vttest-20011130/xterm.c new file mode 100644 index 0000000..b02f755 --- /dev/null +++ b/doc/vttest-20011130/xterm.c @@ -0,0 +1,401 @@ +/* $Id$ */ + +#include <vttest.h> +#include <esc.h> +#include <ttymodes.h> + +static void +check_rc(int row, int col) +{ + char *report; + char *params; + char expected[80]; + + sprintf(expected, "%d;%dR", row, col); + + set_tty_raw(TRUE); + set_tty_echo(FALSE); + do_csi("6n"); + report = get_reply(); + restore_ttymodes(); + + vt_move(row, 1); + el(2); + if ((params = skip_csi(report)) == 0 + || strcmp(params, expected) != 0) { + printf("cursor save/restore %s, expected \"%s\", got \"%s\"", + SHOW_FAILURE, params, expected); + } else { + printf("cursor save/restore %s", SHOW_SUCCESS); + } +} + +static int +test_altscrn_47(MENU_ARGS) +{ + vt_move(1,1); + println(the_title); + vt_move(3,1); + println("Test private setmode 47 (to/from alternate screen)"); + vt_move(4,1); + println("The next screen will be filled with E's down to the prompt."); + vt_move(7,5); + decsc(); + vt_move(max_lines-2,1); + holdit(); + + sm("?47"); + decaln(); /* fill the screen */ + vt_move(15,7); + decsc(); + vt_move(max_lines-2,1); + ed(0); + holdit(); + + rm("?47"); + decrc(); + check_rc(7,5); + vt_move(4,1); + el(2); + println("The original screen should be restored except for this line."); + vt_move(max_lines-2,1); + return MENU_HOLD; +} + +static int +test_altscrn_1047(MENU_ARGS) +{ + vt_move(1,1); + println(the_title); + vt_move(3,1); + println("Test private setmode 1047 (to/from alternate screen)"); + vt_move(4,1); + println("The next screen will be filled with E's down to the prompt"); + vt_move(5,1); + println("unless titeInhibit resource is set, or alternate-screen is disabled."); + vt_move(7,5); + decsc(); + vt_move(9,7); /* move away from the place we saved with DECSC */ + sm("?1048"); /* this saves the cursor position */ + vt_move(max_lines-2,1); + holdit(); + + sm("?1047"); + decaln(); /* fill the screen */ + vt_move(15,7); + decsc(); + vt_move(max_lines-2,1); + ed(0); + holdit(); + + rm("?1047"); + decrc(); + rm("?1048"); + check_rc(9,7); + vt_move(4,1); + el(2); + println("The original screen should be restored except for this line"); + vt_move(max_lines-2,1); + return MENU_HOLD; +} + +static int +test_altscrn_1049(MENU_ARGS) +{ + vt_move(1,1); + println(the_title); + vt_move(3,1); + println("Test private setmode 1049 (to/from alternate screen)"); + vt_move(4,1); + println("The next screen will be filled with E's down to the prompt."); + vt_move(5,1); + println("unless titeInhibit resource is set, or alternate-screen is disabled."); + vt_move(7,5); + decsc(); + vt_move(max_lines-2,1); + holdit(); /* cursor location will be one line down */ + + sm("?1049"); /* this saves the cursor location */ + decaln(); /* fill the screen */ + vt_move(max_lines-2,1); + ed(0); + holdit(); + + rm("?1049"); + decrc(); + check_rc(max_lines-1,1); + vt_move(4,1); + el(2); + println("The original screen should be restored except for this line"); + vt_move(max_lines-2,1); + return MENU_HOLD; +} + +/* + * Xterm implements an alternate screen, which is used to save the command-line + * screen to restore it after running a full-screen application. + * + * The original scheme used separate save/restore-cursor and clear-screen + * operations in conjunction with a toggle to/from the alternate screen + * (private setmode 47). Since not all users want the feature, xterm also + * implements the titeInhibit resource to make it populate the $TERMCAP + * variable without the ti/te (smcup/rmcup) strings which hold those sequences. + * The limitation of titeInhibit is that it cannot work for terminfo, because + * that information is read from a file rather than the environment. I + * implemented a corresponding set of strings for private setmode 1047 and 1048 + * to model the termcap behavior in terminfo. + * + * The behavior of the save/restore cursor operations still proved + * unsatisfactory since users would (even in the original private setmode 47) + * occasionally run shell programs from within their full-screen application + * which would do a save-cursor to a different location, causing the final + * restore-cursor to place the cursor in an unexpected location. The private + * setmode 1049 works around this by using a separate memory location to store + * its version of the cursor location. + */ +static int +tst_altscrn(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Return to main menu", 0 }, + { "Switch to/from alternate screen (xterm)", test_altscrn_47 }, + { "Improved alternate screen (XFree86 xterm mode 1047)", test_altscrn_1047 }, + { "Better alternate screen (XFree86 xterm mode 1049)", test_altscrn_1049 }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); println("XTERM Alternate-Screen features"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} + +static int +test_modify_ops(MENU_ARGS) +{ + int n; + int wide, high; + char temp[100]; + + vt_move(1,1); + println("Test of Window modifying."); + + brc(2, 't'); /* iconify window */ + println("Iconify"); + fflush(stdout); sleep(2); + + brc(1, 't'); /* de-iconify window */ + println("De-Iconify"); + fflush(stdout); sleep(1); + + ed(2); + for (n = 0; n <= 200; n += 5) { + sprintf(temp, "Position (%d,%d)", n, n*2); + println(temp); + esc("K"); /* Erase to end of line */ + brc3(3, n, n*2, 't'); + fflush(stdout); + } + holdit(); + + ed(2); + brc3(3, 0, 0, 't'); + + for (n = 0; n <= 200; n += 10) { + wide = n+20; + high = n+50; + brc3(4, high, wide, 't'); + sprintf(temp, "%d x %d pixels", high, wide); + println(temp); + fflush(stdout); + } + holdit(); + + ed(2); + for (n = 0; n <= 200; n += 10) { + high = n+50; + brc3(4, high, 0, 't'); + sprintf(temp, "%d x (screen-width) pixels", high); + println(temp); + fflush(stdout); + } + holdit(); + + ed(2); + for (n = 0; n <= 300; n += 10) { + wide = n+50; + brc3(4, 0, wide, 't'); + sprintf(temp, "(screen-height) x %d pixels", wide); + println(temp); + fflush(stdout); + } + holdit(); + + while (n >= 200) { + wide = n+50; + high = 500 - n; + brc3(4, high, wide, 't'); + sprintf(temp, "%d x %d pixels", high, wide); + println(temp); + fflush(stdout); + n -= 5; + } + holdit(); + + while (n <= 300) { + wide = n+50; + high = 500 - n; + brc3(4, high, wide, 't'); + sprintf(temp, "%d x %d pixels", high, wide); + println(temp); + fflush(stdout); + n += 5; + } + holdit(); + + ed(2); + for (n = 5; n <= 20; n++) { + wide = n*4; + high = n+5; + brc3(8, high, wide, 't'); + sprintf(temp, "%d x %d chars", high, wide); + while (strlen(temp) < wide - 1) + strcat(temp, "."); + println(temp); + fflush(stdout); + } + holdit(); + + ed(2); + for (n = 5; n <= 24; n++) { + high = n; + brc3(8, high, 0, 't'); + sprintf(temp, "%d x (screen-width) chars", high); + println(temp); + fflush(stdout); + } + holdit(); + + ed(2); + for (n = 5; n <= 80; n++) { + wide = n; + brc3(8, 0, wide, 't'); + sprintf(temp, "(screen-height) x %d chars", wide); + println(temp); + fflush(stdout); + } + holdit(); + + brc3(3, 200, 200, 't'); + brc3(8, 24, 80, 't'); + println("Reset to 24 x 80"); + + ed(2); + println("Lower"); + brc(6, 't'); + holdit(); + + ed(2); + println("Raise"); + brc(5, 't'); + return MENU_HOLD; +} + +static int +test_report_ops(MENU_ARGS) +{ + char *report; + + vt_move(1,1); + println("Test of Window reporting."); + set_tty_raw(TRUE); + set_tty_echo(FALSE); + + vt_move(3,1); + println("Report icon label:"); + vt_move(4,10); + brc(20, 't'); /* report icon label */ + report = instr(); + chrprint(report); + + vt_move(5,1); + println("Report window label:"); + vt_move(6,10); + brc(21, 't'); /* report window label */ + report = instr(); + chrprint(report); + + vt_move(7,1); + println("Report size of window (chars):"); + vt_move(8,10); + brc(18, 't'); /* report window's text-size */ + report = instr(); + chrprint(report); + + vt_move(9,1); + println("Report size of window (pixels):"); + vt_move(10,10); + brc(14, 't'); /* report window's pixel-size */ + report = instr(); + chrprint(report); + + vt_move(11,1); + println("Report position of window (pixels):"); + vt_move(12,10); + brc(13, 't'); /* report window's pixel-size */ + report = instr(); + chrprint(report); + + vt_move(13,1); + println("Report state of window (normal/iconified):"); + vt_move(14,10); + brc(11, 't'); /* report window's pixel-size */ + report = instr(); + chrprint(report); + + vt_move(20,1); + restore_ttymodes(); + return MENU_HOLD; +} + +/* Set window title */ +static int +test_window_name(MENU_ARGS) +{ + char temp[BUFSIZ]; + + vt_move(1,1); + println("Please enter the new window name. Newer xterms may beep when setting the title."); + inputline(temp); + do_osc("0;%s%c", temp, BEL); + return MENU_NOHOLD; +} + +/* + * xterm (and derived programs such as hpterm, dtterm, rxvt) are the most + * widely used vt100 near-compatible terminal emulators (other than modem + * programs). dtterm emulates a vt220, as does XFree86 xterm. DECterm + * emulates a vt320. + */ +int +tst_xterm(MENU_ARGS) +{ + static MENU my_menu[] = { + { "Return to main menu", 0 }, + { "Set window title", test_window_name }, + { "Mouse features", tst_mouse }, + { "Alternate-Screen features (xterm)", tst_altscrn }, + { "Window modify-operations (dtterm)", test_modify_ops }, + { "Window report-operations (dtterm)", test_report_ops }, + { "", 0 } + }; + + do { + vt_clear(2); + title(0); println("XTERM special features"); + title(2); println("Choose test type:"); + } while (menu(my_menu)); + return MENU_NOHOLD; +} diff --git a/doc/vttest.tar.gz b/doc/vttest.tar.gz Binary files differnew file mode 100644 index 0000000..130ace6 --- /dev/null +++ b/doc/vttest.tar.gz diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..a7de089 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,62 @@ +bin_PROGRAMS = vte +noinst_PROGRAMS = interpret pty termcap trie utf8echo +lib_LTLIBRARIES = libvte.la + +CFLAGS = @CFLAGS@ @X_CFLAGS@ @GTK_CFLAGS@ + +libvte_la_SOURCES = \ + caps.c \ + caps.h \ + marshal.c \ + marshal.h \ + pty.c \ + pty.h \ + termcap.c \ + termcap.h \ + trie.c \ + trie.h \ + vte.c \ + vte.h + +CLEANFILES = marshal.c marshal.h + +marshal.c marshal.h: marshal.list + glib-genmarshal --prefix=_vte_marshal --body $^ > marshal.c + glib-genmarshal --prefix=_vte_marshal --header $^ > marshal.h + +vte_SOURCES = \ + vteapp.c +vte_LDADD = libvte.la @GTK_LIBS@ @X_LIBS@ + +interpret_SOURCES = \ + caps.c \ + caps.h \ + termcap.c \ + termcap.h \ + trie.c \ + trie.h \ + interpret.c +interpret_LDADD = @GLIB_LIBS@ + +trie_CFLAGS = @CFLAGS@ @GLIB_CFLAGS@ -DTRIE_MAIN +trie_SOURCES = \ + termcap.c \ + termcap.h \ + trie.c \ + trie.h +trie_LDADD = @GLIB_LIBS@ + +termcap_CFLAGS = @CFLAGS@ @GLIB_CFLAGS@ -DTERMCAP_MAIN +termcap_SOURCES = \ + termcap.c \ + termcap.h +termcap_LDADD = @GLIB_LIBS@ + +pty_CFLAGS = @CFLAGS@ @GLIB_CFLAGS@ -DPTY_MAIN +pty_SOURCES = \ + pty.c \ + pty.h +pty_LDADD = @GLIB_LIBS@ + +utf8echo_SOURCES = \ + utf8echo.c diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..6960cf4 --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,577 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PKG_CONFIG = @PKG_CONFIG@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +bin_PROGRAMS = vte +noinst_PROGRAMS = interpret pty termcap trie utf8echo +lib_LTLIBRARIES = libvte.la + +CFLAGS = @CFLAGS@ @X_CFLAGS@ @GTK_CFLAGS@ + +libvte_la_SOURCES = \ + caps.c \ + caps.h \ + marshal.c \ + marshal.h \ + pty.c \ + pty.h \ + termcap.c \ + termcap.h \ + trie.c \ + trie.h \ + vte.c \ + vte.h + + +CLEANFILES = marshal.c marshal.h + +vte_SOURCES = \ + vteapp.c + +vte_LDADD = libvte.la @GTK_LIBS@ @X_LIBS@ + +interpret_SOURCES = \ + caps.c \ + caps.h \ + termcap.c \ + termcap.h \ + trie.c \ + trie.h \ + interpret.c + +interpret_LDADD = @GLIB_LIBS@ + +trie_CFLAGS = @CFLAGS@ @GLIB_CFLAGS@ -DTRIE_MAIN +trie_SOURCES = \ + termcap.c \ + termcap.h \ + trie.c \ + trie.h + +trie_LDADD = @GLIB_LIBS@ + +termcap_CFLAGS = @CFLAGS@ @GLIB_CFLAGS@ -DTERMCAP_MAIN +termcap_SOURCES = \ + termcap.c \ + termcap.h + +termcap_LDADD = @GLIB_LIBS@ + +pty_CFLAGS = @CFLAGS@ @GLIB_CFLAGS@ -DPTY_MAIN +pty_SOURCES = \ + pty.c \ + pty.h + +pty_LDADD = @GLIB_LIBS@ + +utf8echo_SOURCES = \ + utf8echo.c + +subdir = src +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(lib_LTLIBRARIES) + +libvte_la_LDFLAGS = +libvte_la_LIBADD = +am_libvte_la_OBJECTS = caps.lo marshal.lo pty.lo termcap.lo trie.lo \ + vte.lo +libvte_la_OBJECTS = $(am_libvte_la_OBJECTS) +bin_PROGRAMS = vte$(EXEEXT) +noinst_PROGRAMS = interpret$(EXEEXT) pty$(EXEEXT) termcap$(EXEEXT) \ + trie$(EXEEXT) utf8echo$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) + +am_interpret_OBJECTS = caps.$(OBJEXT) termcap.$(OBJEXT) trie.$(OBJEXT) \ + interpret.$(OBJEXT) +interpret_OBJECTS = $(am_interpret_OBJECTS) +interpret_DEPENDENCIES = +interpret_LDFLAGS = +am_pty_OBJECTS = pty-pty.$(OBJEXT) +pty_OBJECTS = $(am_pty_OBJECTS) +pty_DEPENDENCIES = +pty_LDFLAGS = +am_termcap_OBJECTS = termcap-termcap.$(OBJEXT) +termcap_OBJECTS = $(am_termcap_OBJECTS) +termcap_DEPENDENCIES = +termcap_LDFLAGS = +am_trie_OBJECTS = trie-termcap.$(OBJEXT) trie-trie.$(OBJEXT) +trie_OBJECTS = $(am_trie_OBJECTS) +trie_DEPENDENCIES = +trie_LDFLAGS = +am_utf8echo_OBJECTS = utf8echo.$(OBJEXT) +utf8echo_OBJECTS = $(am_utf8echo_OBJECTS) +utf8echo_LDADD = $(LDADD) +utf8echo_DEPENDENCIES = +utf8echo_LDFLAGS = +am_vte_OBJECTS = vteapp.$(OBJEXT) +vte_OBJECTS = $(am_vte_OBJECTS) +vte_DEPENDENCIES = libvte.la +vte_LDFLAGS = + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/caps.Plo $(DEPDIR)/caps.Po \ +@AMDEP_TRUE@ $(DEPDIR)/interpret.Po $(DEPDIR)/marshal.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/pty-pty.Po $(DEPDIR)/pty.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/termcap-termcap.Po $(DEPDIR)/termcap.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/termcap.Po $(DEPDIR)/trie-termcap.Po \ +@AMDEP_TRUE@ $(DEPDIR)/trie-trie.Po $(DEPDIR)/trie.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/trie.Po $(DEPDIR)/utf8echo.Po \ +@AMDEP_TRUE@ $(DEPDIR)/vte.Plo $(DEPDIR)/vteapp.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(libvte_la_SOURCES) $(interpret_SOURCES) $(pty_SOURCES) \ + $(termcap_SOURCES) $(trie_SOURCES) $(utf8echo_SOURCES) \ + $(vte_SOURCES) +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(libvte_la_SOURCES) $(interpret_SOURCES) $(pty_SOURCES) $(termcap_SOURCES) $(trie_SOURCES) $(utf8echo_SOURCES) $(vte_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$p; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) +libvte.la: $(libvte_la_OBJECTS) $(libvte_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libvte_la_LDFLAGS) $(libvte_la_OBJECTS) $(libvte_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$f; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +interpret$(EXEEXT): $(interpret_OBJECTS) $(interpret_DEPENDENCIES) + @rm -f interpret$(EXEEXT) + $(LINK) $(interpret_LDFLAGS) $(interpret_OBJECTS) $(interpret_LDADD) $(LIBS) +pty-pty.$(OBJEXT): pty.c +pty$(EXEEXT): $(pty_OBJECTS) $(pty_DEPENDENCIES) + @rm -f pty$(EXEEXT) + $(LINK) $(pty_LDFLAGS) $(pty_OBJECTS) $(pty_LDADD) $(LIBS) +termcap-termcap.$(OBJEXT): termcap.c +termcap$(EXEEXT): $(termcap_OBJECTS) $(termcap_DEPENDENCIES) + @rm -f termcap$(EXEEXT) + $(LINK) $(termcap_LDFLAGS) $(termcap_OBJECTS) $(termcap_LDADD) $(LIBS) +trie-termcap.$(OBJEXT): termcap.c +trie-trie.$(OBJEXT): trie.c +trie$(EXEEXT): $(trie_OBJECTS) $(trie_DEPENDENCIES) + @rm -f trie$(EXEEXT) + $(LINK) $(trie_LDFLAGS) $(trie_OBJECTS) $(trie_LDADD) $(LIBS) +utf8echo$(EXEEXT): $(utf8echo_OBJECTS) $(utf8echo_DEPENDENCIES) + @rm -f utf8echo$(EXEEXT) + $(LINK) $(utf8echo_LDFLAGS) $(utf8echo_OBJECTS) $(utf8echo_LDADD) $(LIBS) +vte$(EXEEXT): $(vte_OBJECTS) $(vte_DEPENDENCIES) + @rm -f vte$(EXEEXT) + $(LINK) $(vte_LDFLAGS) $(vte_OBJECTS) $(vte_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/caps.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/caps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/interpret.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/marshal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pty-pty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pty.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/termcap-termcap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/termcap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/termcap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/trie-termcap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/trie-trie.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/trie.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/trie.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/utf8echo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vte.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vteapp.Po@am__quote@ + +distclean-depend: + -rm -rf $(DEPDIR) + +.c.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + +.c.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `cygpath -w $<` + +.c.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< + +pty-pty.o: pty.c +@AMDEP_TRUE@ source='pty.c' object='pty-pty.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/pty-pty.Po' tmpdepfile='$(DEPDIR)/pty-pty.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pty_CFLAGS) $(CFLAGS) -c -o pty-pty.o `test -f pty.c || echo '$(srcdir)/'`pty.c + +pty-pty.obj: pty.c +@AMDEP_TRUE@ source='pty.c' object='pty-pty.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/pty-pty.Po' tmpdepfile='$(DEPDIR)/pty-pty.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pty_CFLAGS) $(CFLAGS) -c -o pty-pty.obj `cygpath -w pty.c` + +pty-pty.lo: pty.c +@AMDEP_TRUE@ source='pty.c' object='pty-pty.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/pty-pty.Plo' tmpdepfile='$(DEPDIR)/pty-pty.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pty_CFLAGS) $(CFLAGS) -c -o pty-pty.lo `test -f pty.c || echo '$(srcdir)/'`pty.c + +termcap-termcap.o: termcap.c +@AMDEP_TRUE@ source='termcap.c' object='termcap-termcap.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/termcap-termcap.Po' tmpdepfile='$(DEPDIR)/termcap-termcap.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(termcap_CFLAGS) $(CFLAGS) -c -o termcap-termcap.o `test -f termcap.c || echo '$(srcdir)/'`termcap.c + +termcap-termcap.obj: termcap.c +@AMDEP_TRUE@ source='termcap.c' object='termcap-termcap.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/termcap-termcap.Po' tmpdepfile='$(DEPDIR)/termcap-termcap.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(termcap_CFLAGS) $(CFLAGS) -c -o termcap-termcap.obj `cygpath -w termcap.c` + +termcap-termcap.lo: termcap.c +@AMDEP_TRUE@ source='termcap.c' object='termcap-termcap.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/termcap-termcap.Plo' tmpdepfile='$(DEPDIR)/termcap-termcap.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(termcap_CFLAGS) $(CFLAGS) -c -o termcap-termcap.lo `test -f termcap.c || echo '$(srcdir)/'`termcap.c + +trie-termcap.o: termcap.c +@AMDEP_TRUE@ source='termcap.c' object='trie-termcap.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/trie-termcap.Po' tmpdepfile='$(DEPDIR)/trie-termcap.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trie_CFLAGS) $(CFLAGS) -c -o trie-termcap.o `test -f termcap.c || echo '$(srcdir)/'`termcap.c + +trie-termcap.obj: termcap.c +@AMDEP_TRUE@ source='termcap.c' object='trie-termcap.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/trie-termcap.Po' tmpdepfile='$(DEPDIR)/trie-termcap.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trie_CFLAGS) $(CFLAGS) -c -o trie-termcap.obj `cygpath -w termcap.c` + +trie-termcap.lo: termcap.c +@AMDEP_TRUE@ source='termcap.c' object='trie-termcap.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/trie-termcap.Plo' tmpdepfile='$(DEPDIR)/trie-termcap.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trie_CFLAGS) $(CFLAGS) -c -o trie-termcap.lo `test -f termcap.c || echo '$(srcdir)/'`termcap.c + +trie-trie.o: trie.c +@AMDEP_TRUE@ source='trie.c' object='trie-trie.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/trie-trie.Po' tmpdepfile='$(DEPDIR)/trie-trie.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trie_CFLAGS) $(CFLAGS) -c -o trie-trie.o `test -f trie.c || echo '$(srcdir)/'`trie.c + +trie-trie.obj: trie.c +@AMDEP_TRUE@ source='trie.c' object='trie-trie.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/trie-trie.Po' tmpdepfile='$(DEPDIR)/trie-trie.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trie_CFLAGS) $(CFLAGS) -c -o trie-trie.obj `cygpath -w trie.c` + +trie-trie.lo: trie.c +@AMDEP_TRUE@ source='trie.c' object='trie-trie.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/trie-trie.Plo' tmpdepfile='$(DEPDIR)/trie-trie.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trie_CFLAGS) $(CFLAGS) -c -o trie-trie.lo `test -f trie.c || echo '$(srcdir)/'`trie.c +CCDEPMODE = @CCDEPMODE@ +uninstall-info-am: + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + +GTAGS: + here=`CDPATH=: && cd $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) +install-binPROGRAMS: install-libLTLIBRARIES + + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am \ + uninstall-libLTLIBRARIES + +.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstPROGRAMS distclean distclean-compile \ + distclean-depend distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-binPROGRAMS install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool tags uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-info-am \ + uninstall-libLTLIBRARIES + + +marshal.c marshal.h: marshal.list + glib-genmarshal --prefix=_vte_marshal --body $^ > marshal.c + glib-genmarshal --prefix=_vte_marshal --header $^ > marshal.h +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/caps.c b/src/caps.c new file mode 100644 index 0000000..3fad4b3 --- /dev/null +++ b/src/caps.c @@ -0,0 +1,551 @@ +/* + * Copyright (C) 2001,2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" +#include "../config.h" +#include <stdlib.h> +#include <glib.h> +#include "caps.h" + +#define ESC "" +#define CSI ESC "[" +#define ST ESC "\\" +#define OSC ESC "]" +#define PM ESC "T" +#define APC ESC "_" + +#define BEL "" +#define BS "" +#define TAB " " +#define LF "\n" +#define VT "" +#define FF "" +#define CR "\r" +#define SO "" +#define SI "" + +/* This list combined from the Linux termcap(5) man page, and + * termcap_&_terminfo by Strang, Mui, and O'Reilly. */ +struct vte_capability_quark vte_terminal_capability_strings[] = { + {"!1", 0}, + {"!2", 0}, + {"!3", 0}, + + {"#1", 0}, + {"#2", 0}, + {"#3", 0}, + {"#4", 0}, + + {"%0", 0}, + {"%1", 0}, + {"%2", 0}, + {"%3", 0}, + {"%4", 0}, + {"%5", 0}, + {"%6", 0}, + {"%7", 0}, + {"%8", 0}, + {"%9", 0}, + {"%a", 0}, + {"%b", 0}, + {"%c", 0}, + {"%d", 0}, + {"%e", 0}, + {"%f", 0}, + {"%g", 0}, + {"%h", 0}, + {"%i", 0}, + {"%j", 0}, + + {"&0", 0}, + {"&1", 0}, + {"&2", 0}, + {"&3", 0}, + {"&4", 0}, + {"&5", 0}, + {"&6", 0}, + {"&7", 0}, + {"&8", 0}, + {"&9", 0}, + + {"*0", 0}, + {"*1", 0}, + {"*2", 0}, + {"*3", 0}, + {"*4", 0}, + {"*5", 0}, + {"*6", 0}, + {"*7", 0}, + {"*8", 0}, + {"*9", 0}, + + {"@0", 0}, + {"@1", 0}, + {"@2", 0}, + {"@3", 0}, + {"@4", 0}, + {"@5", 0}, + {"@6", 0}, + {"@7", 0}, + {"@8", 0}, + {"@9", 0}, + + {"ac", 0}, + {"ae", 0}, + {"al", 0}, + {"AL", 0}, + {"as", 0}, + + {"bc", 0}, + {"bl", 0}, + {"bt", 0}, + + {"cb", 0}, + {"cc", 0}, + {"cd", 0}, + {"ce", 0}, + {"ch", 0}, + {"cl", 0}, + {"cm", 0}, + {"CM", 0}, + {"cr", 0}, + {"cs", 0}, + {"ct", 0}, + {"cv", 0}, + + {"dc", 0}, + {"DC", 0}, + {"dl", 0}, + {"DL", 0}, + {"dm", 0}, + {"do", 0}, + {"DO", 0}, + {"ds", 0}, + + {"eA", 0}, + {"ec", 0}, + {"ed", 0}, + {"ei", 0}, + + {"F1", 0}, + {"F2", 0}, + {"F3", 0}, + {"F4", 0}, + {"F5", 0}, + {"F6", 0}, + {"F7", 0}, + {"F8", 0}, + {"F9", 0}, + {"FA", 0}, + {"FB", 0}, + {"FC", 0}, + {"FD", 0}, + {"FE", 0}, + {"FF", 0}, + {"FG", 0}, + {"FH", 0}, + {"FI", 0}, + {"FJ", 0}, + {"FK", 0}, + {"FL", 0}, + {"FM", 0}, + {"FN", 0}, + {"FO", 0}, + {"FP", 0}, + {"FQ", 0}, + {"FR", 0}, + {"FS", 0}, + {"FT", 0}, + {"FU", 0}, + {"FV", 0}, + {"FW", 0}, + {"FX", 0}, + {"FY", 0}, + {"FZ", 0}, + + {"Fa", 0}, + {"Fb", 0}, + {"Fc", 0}, + {"Fd", 0}, + {"Fe", 0}, + {"Ff", 0}, + {"Fg", 0}, + {"Fh", 0}, + {"Fi", 0}, + {"Fj", 0}, + {"Fk", 0}, + {"Fl", 0}, + {"Fm", 0}, + {"Fn", 0}, + {"Fo", 0}, + {"Fp", 0}, + {"Fq", 0}, + {"Fr", 0}, + + {"ff", 0}, + {"fs", 0}, + + {"hd", 0}, + {"ho", 0}, + {"hu", 0}, + + {"i1", 0}, + {"i3", 0}, + + {"ic", 0}, + {"IC", 0}, + {"if", 0}, + {"im", 0}, + {"ip", 0}, + {"iP", 0}, + {"is", 0}, + + {"K1", 0}, + {"K2", 0}, + {"K3", 0}, + {"K4", 0}, + {"K5", 0}, + + {"k0", 0}, + {"k1", 0}, + {"k2", 0}, + {"k3", 0}, + {"k4", 0}, + {"k5", 0}, + {"k6", 0}, + {"k7", 0}, + {"k8", 0}, + {"k9", 0}, + {"k;", 0}, + {"ka", 0}, + {"kA", 0}, + {"kb", 0}, + {"kB", 0}, + {"kC", 0}, + {"kd", 0}, + {"kD", 0}, + {"ke", 0}, + {"kE", 0}, + {"kF", 0}, + {"kh", 0}, + {"kH", 0}, + {"kI", 0}, + {"kl", 0}, + {"kL", 0}, + {"kM", 0}, + {"kN", 0}, + {"kP", 0}, + {"kr", 0}, + {"kR", 0}, + {"ks", 0}, + {"kS", 0}, + {"kt", 0}, + {"kT", 0}, + {"ku", 0}, + + {"l0", 0}, + {"l1", 0}, + {"l2", 0}, + {"l3", 0}, + {"l4", 0}, + {"l5", 0}, + {"l6", 0}, + {"l7", 0}, + {"l8", 0}, + {"l9", 0}, + + {"la", 0}, + {"le", 0}, + {"LE", 0}, + {"LF", 0}, + {"ll", 0}, + {"LO", 0}, + + {"ma", 0}, + {"mb", 0}, + {"MC", 0}, + {"md", 0}, + {"me", 0}, + {"mh", 0}, + {"mk", 0}, + {"ml", 0}, + {"ML", 0}, + {"mm", 0}, + {"mo", 0}, + {"mp", 0}, + {"mr", 0}, + {"MR", 0}, + {"mu", 0}, + + {"nd", 0}, + {"nl", 0}, + {"nw", 0}, + + {"pc", 0}, + {"pf", 0}, + {"pk", 0}, + {"pl", 0}, + {"pn", 0}, + {"po", 0}, + {"pO", 0}, + {"ps", 0}, + {"px", 0}, + + {"r1", 0}, + {"r2", 0}, + {"r3", 0}, + + {"RA", 0}, + {"rc", 0}, + {"rf", 0}, + {"RF", 0}, + {"RI", 0}, + {"rp", 0}, + {"rP", 0}, + {"rs", 0}, + {"RX", 0}, + + {"s0", 0}, + {"s1", 0}, + {"s2", 0}, + {"s3", 0}, + + {"sa", 0}, + {"SA", 0}, + {"sc", 0}, + {"se", 0}, + {"sf", 0}, + {"SF", 0}, + /* {"so", 0}, standout is always the same as another attribute. */ + {"sr", 0}, + {"SR", 0}, + {"st", 0}, + {"SX", 0}, + + {"ta", 0}, + {"te", 0}, + {"ti", 0}, + {"ts", 0}, + + {"uc", 0}, + {"ue", 0}, + {"up", 0}, + {"UP", 0}, + {"us", 0}, + + {"vb", 0}, + /* {"ve", 0}, */ + {"vi", 0}, + /* {"vs", 0}, */ + + {"wi", 0}, + + {"XF", 0}, + {"XN", 0}, + + {NULL, 0}, +}; + +/* From some really old XTerm docs we had at the office, and an updated + * version at Moy, Gildea, and Dickey. */ +struct vte_capability_string vte_xterm_capability_strings[] = { + {ESC "#3", "double-height-top-half", 0}, + {ESC "#4", "double-height-bottom-half", 0}, + {ESC "#5", "single-width", 0}, + {ESC "#6", "double-width", 0}, + {ESC "#8", "screen-alignment-test", 0}, + + {ESC "%@", "iso8859-1-character-set", 0}, + {ESC "%G", "utf-8-character-set", 0}, + + {ESC "(%+\\0", "designate-g0-character-set", 0}, + {ESC ")%+\\0", "designate-g1-character-set", 0}, + {ESC "*%+\\0", "designate-g2-character-set", 0}, + {ESC "+%+\\0", "designate-g3-character-set", 0}, + + {ESC "7", "save-cursor", 0}, + {ESC "8", "restore-cursor", 0}, + {ESC "=", "application-keypad", 0}, + {ESC ">", "normal-keypad", 0}, + {ESC "D", "index", 0}, + {ESC "E", "next-line", 0}, + {ESC "F", "cursor-lower-left", 0}, + {ESC "H", "tab-set", 0}, + {ESC "M", "reverse-index", 0}, + {ESC "N", "single-shift-g2", 0}, + {ESC "O", "single-shift-g3", 0}, + {ESC "P%s" ESC "\\", "device-control-string", 0}, + {ESC "Z", "return-terminal-id", 0}, + {ESC "c", "full-reset", 0}, + {ESC "l", "memory-lock", 0}, + {ESC "m", "memory-unlock", 0}, + {ESC "n", "invoke-g2-character-set", 0}, + {ESC "o", "invoke-g3-character-set", 0}, + {ESC "|", "invoke-g3-character-set-as-gr", 0}, + {ESC "}", "invoke-g2-character-set-as-gr", 0}, + {ESC "~", "invoke-g1-character-set-as-gr", 0}, + + /* DCS stuff omitted. */ + + {CSI "@", "insert-blank-characters", 0}, + {CSI "%d@", "insert-blank-characters", 0}, + {CSI "A", "cursor-up", 0}, + {CSI "%dA", "cursor-up", 0}, + {CSI "B", "cursor-down", 0}, + {CSI "%dB", "cursor-down", 0}, + {CSI "C", "cursor-forward", 0}, + {CSI "%dC", "cursor-forward", 0}, + {CSI "D", "cursor-backward", 0}, + {CSI "%dD", "cursor-backward", 0}, + {CSI "E", "cursor-next-line", 0}, + {CSI "%dE", "cursor-next-line", 0}, + {CSI "F", "cursor-preceding-line", 0}, + {CSI "%dF", "cursor-preceding-line", 0}, + {CSI ";H", "cursor-position", 0}, + {CSI "%d;H", "cursor-position", 0}, + {CSI ";%dH", "cursor-position", 0}, + {CSI "%d;%dH", "cursor-position", 0}, + {CSI "J", "erase-in-display", 0}, + {CSI "%dJ", "erase-in-display", 0}, + {CSI "?J", "selective-erase-in-display", 0}, + {CSI "?%dJ", "selective-erase-in-display", 0}, + {CSI "K", "erase-in-line", 0}, + {CSI "%dK", "erase-in-line", 0}, + {CSI "?K", "selective-erase-in-line", 0}, + {CSI "?%dK", "selective-erase-in-line", 0}, + {CSI "L", "insert-lines", 0}, + {CSI "%dL", "insert-lines", 0}, + {CSI "M", "delete-lines", 0}, + {CSI "%dM", "delete-lines", 0}, + {CSI "P", "delete-characters", 0}, + {CSI "%dP", "delete-characters", 0}, + {CSI "S", "scroll-up", 0}, + {CSI "%dS", "scroll-up", 0}, + {CSI "T", "scroll-down", 0}, + {CSI "%dT", "scroll-down", 0}, + {CSI "%d;%d;%d;%d;%dT", "initiate-hilite-mouse-tracking", 0}, + {CSI "X", "erase-characters", 0}, + {CSI "%dX", "erase-characters", 0}, + {CSI "Z", "cursor-back-tab", 0}, + {CSI "%dZ", "cursor-back-tab", 0}, + + {CSI "`", "character-position-absolute", 0}, + {CSI "%d`", "character-position-absolute", 0}, + {CSI "b", "repeat", 0}, + {CSI "%db", "repeat", 0}, + {CSI "c", "send-primary-device-attributes", 0}, + {CSI "%dc", "send-primary-device-attributes", 0}, + {CSI ">c", "send-secondary-device-attributes", 0}, + {CSI ">%dc", "send-secondary-device-attributes", 0}, + {CSI "d", "line-position-absolute", 0}, + {CSI "%dd", "line-position-absolute", 0}, + {CSI ";f", "horizontal-and-vertical-position", 0}, + {CSI "%d;f", "horizontal-and-vertical-position", 0}, + {CSI ";%df", "horizontal-and-vertical-position", 0}, + {CSI "%d;%df", "horizontal-and-vertical-position", 0}, + {CSI "g", "tab-clear", 0}, + {CSI "%dg", "tab-clear", 0}, + + {CSI "h", "set-mode", 0}, + {CSI "%mh", "set-mode", 0}, + {CSI "?h", "decset", 0}, + {CSI "?%mh", "decset", 0}, + + {CSI "i", "media-copy", 0}, + {CSI "%mi", "media-copy", 0}, + {CSI "?i", "dec-media-copy", 0}, + {CSI "?%mi", "dec-media-copy", 0}, + + {CSI "l", "reset-mode", 0}, + {CSI "%ml", "reset-mode", 0}, + {CSI "?l", "decreset", 0}, + {CSI "?%ml", "decreset", 0}, + + {CSI "m", "character-attributes", 0}, + {CSI "%mm", "character-attributes", 0}, + + {CSI "%dn", "device-status-report", 0}, + {CSI "?%dn", "dec-device-status-report", 0}, + {CSI "!p", "soft-reset", 0}, + {CSI "%d;%dr", "set-scrolling-region", 0}, + {CSI "?%dr", "restore-mode", 0}, + {CSI "?%ds", "save-mode", 0}, + + {CSI "1t", "deiconify-window", 0}, + {CSI "2t", "iconify-window", 0}, + {CSI "3;%d;%dt", "move-window", 0}, + {CSI "4;%d;%dt", "resize-window", 0}, + {CSI "5t", "raise-window", 0}, + {CSI "6t", "lower-window", 0}, + {CSI "7t", "refresh-window", 0}, + {CSI "8;%d;%dt", "resize-text-area", 0}, + {CSI "9;0t", "restore-maximized-window", 0}, + {CSI "9;1t", "restore-window", 0}, + {CSI "11t", "report-window-state", 0}, + {CSI "13t", "report-window-position", 0}, + {CSI "14t", "report-window-size", 0}, + {CSI "18t", "report-text-area-size", 0}, + {CSI "19t", "report-screen-size", 0}, + {CSI "20t", "report-icon-title", 0}, + {CSI "21t", "report-window-title", 0}, + {CSI "%dt", "resize-text-area-lines", 0}, + + {CSI "%dx", "request-terminal-parameters", 0}, + + {OSC "0;%s" BEL, "set-icon-and-window-title", 0}, + {OSC "1;%s" BEL, "set-icon-title", 0}, + {OSC "2;%s" BEL, "set-window-title", 0}, + {OSC "3;%s" BEL, "set-xproperty", 0}, + {OSC "4;%s" BEL, "change-color", 0}, + {OSC "10;%s" BEL, "change-foreground-colors", 0}, + {OSC "11;%s" BEL, "change-background-colors", 0}, + {OSC "12;%s" BEL, "change-cursor-colors", 0}, + {OSC "13;%s" BEL, "change-mouse-cursor-foreground-colors", 0}, + {OSC "14;%s" BEL, "change-mouse-cursor-foreground-colors", 0}, + {OSC "15;%s" BEL, "change-tek-background-colors", 0}, + {OSC "16;%s" BEL, "change-tek-background-colors", 0}, + {OSC "17;%s" BEL, "change-highlight-colors", 0}, + {OSC "46;%s" BEL, "change-logfile", 0}, + {OSC "50;#%d" BEL, "change-font-number", 0}, + {OSC "50;%s" BEL, "change-font-name", 0}, + + {NULL, NULL, 0}, +}; + +void +vte_capability_init(void) +{ + unsigned int i; + GQuark quark; + for (i = 0; i < G_N_ELEMENTS(vte_terminal_capability_strings); i++) { + const char *tmp; + tmp = vte_terminal_capability_strings[i].capability; + if (tmp != NULL) { + quark = g_quark_from_static_string(tmp); + vte_terminal_capability_strings[i].quark = quark; + } + } + for (i = 0; i < G_N_ELEMENTS(vte_xterm_capability_strings); i++) { + const char *tmp; + tmp = vte_xterm_capability_strings[i].value; + if (tmp != NULL) { + quark = g_quark_from_static_string(tmp); + vte_xterm_capability_strings[i].quark = quark; + } + } +} diff --git a/src/caps.h b/src/caps.h new file mode 100644 index 0000000..68b40b7 --- /dev/null +++ b/src/caps.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2001,2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" + +#ifndef caps_h +#define caps_h + +#include <glib.h> + +G_BEGIN_DECLS + +/* A NULL-terminated list of capability strings which have string values, + * which means they're either key sequences or commands. */ +struct vte_capability_quark { + const char *capability; + GQuark quark; +}; +struct vte_capability_string { + const char *code, *value; + GQuark quark; +}; + +/* The known capability strings in termcap entries. */ +extern struct vte_capability_quark vte_terminal_capability_strings[]; + +/* The xterm-specific terminal control strings. */ +extern struct vte_capability_string vte_xterm_capability_strings[]; + +/* Initialize the Quarks in the various tables. */ +void vte_capability_init(void); + +G_END_DECLS + +#endif diff --git a/src/interpret.c b/src/interpret.c new file mode 100644 index 0000000..8eabdd6 --- /dev/null +++ b/src/interpret.c @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2001,2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" +#include "../config.h" +#include <sys/types.h> +#include <assert.h> +#include <ctype.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <glib.h> +#include <glib-object.h> +#include "caps.h" +#include "termcap.h" +#include "trie.h" + +static void +convert_mbstowcs(const char *i, size_t ilen, wchar_t *o, size_t *olen) +{ + mbstate_t state; + memset(&state, 0, sizeof(state)); + *olen = mbsrtowcs(o, &i, ilen, &state); +} + +int +main(int argc, char **argv) +{ + char *terminal = NULL; + struct vte_trie *trie = NULL; + struct vte_termcap *termcap = NULL; + GByteArray *array = NULL; + int i; + char c; + GValue *value; + FILE *infile = NULL; + + if (argc < 2) { + g_print("usage: %s terminal [file]\n", argv[0]); + return 1; + } + + if (argc > 2) { + infile = fopen(argv[2], "r"); + } else { + infile = stdin; + } + + g_type_init(); + terminal = argv[1]; + trie = vte_trie_new(); + termcap = vte_termcap_new("/etc/termcap"); + array = g_byte_array_new(); + + for (i = 0; + vte_terminal_capability_strings[i].capability != NULL; + i++) { + const char *capability; + char *tmp; + capability = vte_terminal_capability_strings[i].capability; + tmp = vte_termcap_find_string(termcap, terminal, capability); + if ((tmp != NULL) && (strlen(tmp) > 0)) { + vte_trie_add(trie, tmp, strlen(tmp), capability, + g_quark_from_static_string(capability)); + } + g_free(tmp); + } + for (i = 0; vte_xterm_capability_strings[i].value != NULL; i++) { + const char *code, *value; + code = vte_xterm_capability_strings[i].code; + value = vte_xterm_capability_strings[i].value; + vte_trie_add(trie, code, strlen(code), value, + g_quark_from_static_string(code)); + } + + while (fread(&c, 1, 1, infile) == 1) { + g_byte_array_append(array, &c, 1); + for (i = 1; i <= array->len; i++) { + const char *tmp; + GQuark quark; + GValueArray *values; + wchar_t wbuf[LINE_MAX]; + size_t wbuflen; + convert_mbstowcs(array->data, i, wbuf, &wbuflen); + vte_trie_match(trie, wbuf, wbuflen, + &tmp, &quark, &values); + if (tmp != NULL) { + if (strlen(tmp) > 0) { + int j; + g_print("%s(", g_quark_to_string(quark)); + for (j = 0; (values != NULL) && (j < values->n_values); j++) { + if (j > 0) { + g_print(", "); + } + value = g_value_array_get_nth(values, j); + if (G_VALUE_HOLDS_LONG(value)) { + g_print("%ld", + g_value_get_long(value)); + } + if (G_VALUE_HOLDS_STRING(value)) { + g_print("`%s'", + g_value_get_string(value)); + } + } + if (values != NULL) { + g_value_array_free(values); + } + for (j = 0; j < i; j++) { + g_byte_array_remove_index(array, 0); + } + g_print(")\n"); + break; + } + } else { + while (array->len > 0) { + g_print("`%c'\n", array->data[0]); + g_byte_array_remove_index(array, 0); + } + } + } + } + + if (infile != stdin) { + fclose(infile); + } + + g_byte_array_free(array, TRUE); + vte_termcap_free(termcap); + vte_trie_free(trie); + return 0; +} diff --git a/src/marshal.list b/src/marshal.list new file mode 100644 index 0000000..149bc32 --- /dev/null +++ b/src/marshal.list @@ -0,0 +1,4 @@ +VOID:VOID +VOID:STRING +VOID:UINT,UINT +VOID:OBJECT,OBJECT diff --git a/src/pty.c b/src/pty.c new file mode 100644 index 0000000..90c246e --- /dev/null +++ b/src/pty.c @@ -0,0 +1,209 @@ +/* + * Copyright (C) 2001,2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" +#include "../config.h" +#include <sys/ioctl.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <fcntl.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <glib.h> +#include "pty.h" + +/* Open the named PTY slave, fork off a child (storing its PID in child), + * and exec the named command in its own session as a process group leader */ +static int +vte_pty_fork_on_fd(const char *path, const char *command, pid_t *child) +{ + int fd, i; + pid_t pid; + + + /* Start up a child. */ + pid = fork(); + if (pid == -1) { + /* Error fork()ing. Bail. */ + return -1; + } + if (pid != 0) { + /* Parent. Close our connection to the slave and return the + * new child's PID. */ + *child = pid; + return 0; + } + + /* Child. Start a new session and become process-group leader. */ + setsid(); + setpgid(0, 0); + + /* Close all descriptors except for the slave. */ + for (i = 0; i < sysconf(_SC_OPEN_MAX); i++) { + close(i); + } + + /* Open the slave PTY, acquiring it as the controlling terminal for + * this process and its children. */ + fd = open(path, O_RDWR); + if (fd == -1) { + return -1; + } + if (fd != STDIN_FILENO) { + dup2(fd, STDIN_FILENO); + } + if (fd != STDOUT_FILENO) { + dup2(fd, STDOUT_FILENO); + } + if (fd != STDERR_FILENO) { + dup2(fd, STDERR_FILENO); + } + + /* Close the original slave descriptor, unless it's one of the stdio + * descriptors. */ + if ((fd != STDIN_FILENO) && + (fd != STDOUT_FILENO) && + (fd != STDERR_FILENO)) { + close(fd); + } + + /* Outta here. */ + execl(command, command, NULL); + + /* Avoid calling any atexit() code. */ + _exit(0); +} + +static char * +vte_pty_ptsname(int master) +{ +#if defined(HAVE_PTSNAME_R) + char buf[PATH_MAX]; + memset(buf, 0, sizeof(buf)); + if (ptsname_r(master, buf, sizeof(buf) - 1) == 0) { + return g_strdup(buf); + } +#elif defined(HAVE_PTSNAME) + char *p; + if ((p = ptsname(master)) == NULL) { + return g_strdup(p); + } +#elif defined(TIOCGPTN) + int pty = 0; + if (ioctl(master, TIOCGPTN, &pty) == 0) { + return g_strdup_printf("/dev/pts/%d", pty); + } +#endif + return NULL; +} + +static int +vte_pty_getpt() +{ +#ifdef HAVE_GETPT + return getpt(); +#else + return open("/dev/ptmx", O_RDWR | O_NOCTTY); +#endif +} + +static int +vte_pty_grantpt(int master) +{ +#ifdef HAVE_GRANTPT + return grantpt(master); +#else + return 0; +#endif +} + +static int +vte_pty_unlockpt(int fd) +{ +#ifdef HAVE_UNLOCKPT + return unlockpt(fd); +#elif defined(TIOCSPTLCK) + int zero = 0; + return ioctl(fd, TIOCSPTLCK, &zero); +#endif + return -1; +} + +static int +vte_pty_open_unix98(pid_t *child, const char *command) +{ + int fd; + char *buf; + + /* Attempt to open the master. */ + fd = vte_pty_getpt(); + if (fd != -1) { + /* Use ioctls to read the slave number, and to unlock it. */ + if (((buf = vte_pty_ptsname(fd)) == NULL) || + (vte_pty_grantpt(fd) != 0) || + (vte_pty_unlockpt(fd) != 0)) { + close(fd); + fd = -1; + } else { + /* Start up a child process with the given command. */ + if (vte_pty_fork_on_fd(buf, command, child) != 0) { + close(fd); + fd = -1; + } + } + } + return fd; +} + +static int +vte_pty_open_old_school(pid_t *child, const char *command) +{ + return -1; +} + +int +vte_pty_open(pid_t *child, const char *command) +{ + int ret = -1; + if (ret == -1) { + ret = vte_pty_open_unix98(child, command); + } + if (ret == -1) { + ret = vte_pty_open_old_school(child, command); + } + return ret; +} + +#ifdef PTY_MAIN +int +main(int argc, char **argv) +{ + pid_t child; + int fd; + char c; + fd = vte_pty_open(&child, "/usr/bin/tty"); + g_print("Child pid is %d.\n", (int)child); + while(read(fd, &c, 1) == 1) { + write(STDOUT_FILENO, &c, 1); + } + return 0; +} +#endif diff --git a/src/pty.h b/src/pty.h new file mode 100644 index 0000000..2453c86 --- /dev/null +++ b/src/pty.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2001,2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" + +#ifndef pty_h_included +#define pty_h_included + +#include <sys/types.h> + +G_BEGIN_DECLS + +/* Start up the given binary (exact path, not interpreted at all) in a + * pseudo-terminal of its own, returning the descriptor for the master + * side of the PTY pair, storing the child's PID in the given argument. */ +int vte_pty_open(pid_t *child, const char *command); + +G_END_DECLS + +#endif diff --git a/src/termcap.c b/src/termcap.c new file mode 100644 index 0000000..0964d64 --- /dev/null +++ b/src/termcap.c @@ -0,0 +1,641 @@ +/* + * Copyright (C) 2000-2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" +#include "../config.h" +#include <sys/types.h> +#include <ctype.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <glib.h> + +#ifndef TERMCAP_MAYBE_STATIC +#define TERMCAP_MAYBE_STATIC +#include "termcap.h" +#endif + +struct vte_termcap { + char *comment; + struct vte_termcap_entry { + char *comment; + char *string; + size_t length; + struct vte_termcap_entry *next; + } *entries; + struct vte_termcap_alias { + char *name; + struct vte_termcap_entry *entry; + struct vte_termcap_alias *next; + } *names; + GTree *nametree; +}; + +static char * +nextline(FILE *fp, size_t *outlen) +{ + char buf[LINE_MAX]; + size_t len = 0; + char *ret = NULL; + size_t retlen = 0; + char *tmp = NULL; + + if (!feof(fp)) do { + if (fgets(buf, sizeof(buf), fp) != buf) { + break; + } + len = strlen(buf); + tmp = g_malloc(retlen + len + 1); + if (retlen > 0) { + memcpy(tmp, ret, retlen); + } + memcpy(tmp + retlen, buf, len + 1); + if (ret != NULL) { + g_free(ret); + } + retlen += len; + ret = tmp; + ret[retlen] = '\0'; + } while ((len > 0) && (buf[retlen - 1] != '\n') && !feof(fp)); + + if ((ret != NULL) && (ret[retlen - 1] == '\n')) { + retlen--; + ret[retlen] = '\0'; + } + + if ((ret != NULL) && (ret[retlen - 1] == '\r')) { + retlen--; + ret[retlen] = '\0'; + } + + *outlen = retlen; + return ret; +} + +static char * +nextline_with_continuation(FILE *fp) +{ + char *ret = NULL; + size_t rlen = 0, slen = 0; + char *s, *tmp; + gboolean continuation = FALSE; + do { + s = nextline(fp, &slen); + if (s == NULL) { + break; + } + tmp = g_malloc(slen + rlen + 1); + if (rlen > 0) { + memcpy(tmp, ret, rlen); + } + memcpy(tmp + rlen, s, slen + 1); + if (ret != NULL) { + g_free(ret); + } + g_free(s); + ret = tmp; + rlen += slen; + if (ret[rlen - 1] == '\\') { + ret[rlen - 1] = '\0'; + rlen--; + continuation = TRUE; + } else { + continuation = FALSE; + } + } while ((rlen == 0) || continuation); + return ret; +} + +static void +vte_termcap_add_aliases(struct vte_termcap *termcap, + struct vte_termcap_entry *entry, + const char *aliases) +{ + size_t l; + struct vte_termcap_alias *alias = NULL; + const char *p; + + for (p = aliases, l = 0; p != NULL; l++) { + if (aliases[l] == '\\') { + l++; + } else + if ((aliases[l] == '|') || + (aliases[l] == ':') || + (aliases[l] == '\0')) { + alias = g_malloc(sizeof(struct vte_termcap_alias)); + if (alias) { + memset(alias, 0, sizeof(*alias)); + alias->name = g_strndup(p, &aliases[l] - p); + alias->entry = entry; + alias->next = termcap->names; + termcap->names = alias; + if (aliases[l] == '\0') { + p = NULL; + } else { + p = &aliases[l + 1]; + } + g_tree_insert(termcap->nametree, + GINT_TO_POINTER(g_quark_from_string(alias->name)), + alias); + } + l++; + } + } +} + +static void +vte_termcap_add_entry(struct vte_termcap *termcap, const char *s, size_t length, + char *comment) +{ + struct vte_termcap_entry *entry = NULL; + char *p = NULL; + size_t l; + + entry = g_malloc(sizeof(struct vte_termcap_entry)); + if (entry != NULL) { + memset(entry, 0, sizeof(struct vte_termcap_entry)); + entry->string = g_malloc(length + 1); + if (length > 0) { + memcpy(entry->string, s, length); + } + entry->string[length] = '\0'; + entry->length = length; + entry->comment = comment; + entry->next = termcap->entries; + termcap->entries = entry; + for (l = 0; l < length; l++) { + if (s[l] == '\\') { + l++; + continue; + } + if (s[l] == ':') { + break; + } + } + if (l <= length) { + p = g_malloc(l + 1); + if (p) { + strncpy(p, s, l); + p[l] = '\0'; + vte_termcap_add_aliases(termcap, entry, p); + g_free(p); + } + } + } +} + +static void +vte_termcap_strip(const char *termcap, char **stripped, size_t *len) +{ + char *ret; + size_t i, o, length; + length = strlen(termcap); + + ret = g_malloc(length + 2); + for (i = o = 0; i < length; i++) { + ret[o++] = termcap[i]; + if (termcap[i] == '\\') { + char *p; + switch(termcap[i + 1]) { + case '\n': + while ((termcap[i + 1] == ' ') || + (termcap[i + 1] == '\t')) { + i++; + } + continue; + case 'E': + i++; + ret[o - 1] = 27; + continue; + case 'n': + i++; + ret[o - 1] = 10; + continue; + case 'r': + i++; + ret[o - 1] = 13; + continue; + case 't': + i++; + ret[o - 1] = 8; + continue; + case 'b': + i++; + ret[o - 1] = 9; + continue; + case 'f': + i++; + ret[o - 1] = 12; + continue; + case '0': + i++; + ret[o - 1] = strtol(termcap + i, &p, 8); + p--; + i = p - termcap; + continue; + } + } else + if (termcap[i] == '^') { + switch(termcap[i + 1]) { + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + i++; + ret[o - 1] = termcap[i] - ('A' - 1); + continue; + default: + break; + } + } else { + if (termcap[i] == ':') { + while ((termcap[i + 1] == ' ') || + (termcap[i + 1] == '\t')) { + i++; + } + continue; + } + } + } + ret[o] = ':'; + o++; + ret[o] = '\0'; + *stripped = ret; + *len = o; +} + +static gint +vte_direct_compare(gconstpointer a, gconstpointer b) +{ + return GPOINTER_TO_INT(a) - GPOINTER_TO_INT(b); +} + +TERMCAP_MAYBE_STATIC struct vte_termcap * +vte_termcap_new(const char *filename) +{ + FILE *fp; + char *s, *stripped, *comment = NULL; + struct vte_termcap *ret = NULL; + fp = fopen(filename, "r"); + if (fp != NULL) { + while ((s = nextline_with_continuation(fp)) != NULL) { + size_t slen; + if ((s[0] != '#') && (isprint(s[0]))) { + if (ret == NULL) { + ret = g_malloc(sizeof(struct vte_termcap)); + if (ret == NULL) { + return NULL; + } + memset(ret, 0, sizeof(struct vte_termcap)); + ret->nametree = g_tree_new(vte_direct_compare); + } + stripped = NULL; + vte_termcap_strip(s, &stripped, &slen); + if (stripped) { + vte_termcap_add_entry(ret, stripped, + slen, comment); + comment = NULL; + g_free(stripped); + } + } else { + slen = strlen(s); + if (comment == NULL) { + comment = g_malloc(slen + 2); + memcpy(comment, s, slen); + comment[slen] = '\n'; + comment[slen + 1] = '\0'; + } else { + char *tmp; + size_t clen; + clen = strlen(comment); + tmp = g_malloc(slen + clen + 2); + if (tmp == NULL) { + return NULL; + } + memcpy(tmp, comment, clen); + memcpy(tmp + clen, s, slen); + tmp[clen + slen] = '\n'; + tmp[clen + slen + 1] = '\0'; + g_free(comment); + comment = tmp; + } + } + g_free(s); + } + ret->comment = comment; + fclose(fp); + } + return ret; +} + +TERMCAP_MAYBE_STATIC void +vte_termcap_free(struct vte_termcap *termcap) +{ + struct vte_termcap_entry *entry, *nextentry; + struct vte_termcap_alias *alias, *nextalias; + for (entry = termcap->entries; entry != NULL; entry = nextentry) { + nextentry = entry->next; + g_free(entry->comment); + g_free(entry->string); + g_free(entry); + } + for (alias = termcap->names; alias != NULL; alias = nextalias) { + nextalias = alias->next; + g_free(alias->name); + g_free(alias); + } + g_tree_destroy(termcap->nametree); + g_free(termcap->comment); + g_free(termcap); +} + +static const char * +vte_termcap_find_l(struct vte_termcap *termcap, const char *tname, size_t len, + const char *cap) +{ + const char *ret; + struct vte_termcap_alias *alias; + char ttname[len + 1]; + size_t clen; + + /* Find the entry by this name. */ + memcpy(ttname, tname, len); + ttname[len] = '\0'; + alias = g_tree_lookup(termcap->nametree, + GINT_TO_POINTER(g_quark_from_string(ttname))); + + /* If we found the entry, poke around in it. */ + if (alias != NULL) { + char *str = alias->entry->string; + const char *nextcap = "tc"; + size_t len = alias->entry->length; + + clen = strlen(cap); + ret = str; + + /* Search for the capability in this entry. */ + for (ret = str - 1; + ret != NULL; + ret = memchr(ret, ':', str + len - ret - clen)) { + /* We've hit the first separator, or are before the + * very first part of the entry, so hit the next + * capability. */ + ret++; + /* If the end of the entry's name isn't the end of the + * string, and it isn't a boolean/string/numeric, or + * its name is wrong, keep looking. */ + if (((ret[clen] != '\0') && + (ret[clen] != ':') && + (ret[clen] != '=') && + (ret[clen] != '#')) || + (memcmp(ret, cap, clen) != 0)) { + continue; + } + /* Found it. */ + return ret; + } + + /* Now find the "tc=" entries, and scan those entries. */ + clen = strlen(nextcap); + ret = str - 1; + + while (ret != NULL) { + for (; + ret != NULL; + ret = memchr(ret, ':', str + len - ret - clen)) { + ret++; + if (((ret[clen] != '\0') && + (ret[clen] != ':') && + (ret[clen] != '=') && + (ret[clen] != '#')) || + (memcmp(ret, nextcap, clen) != 0)) { + continue; + } + break; + } + + if (ret != NULL) { + const char *t; + char *end; + end = strchr(ret + clen + 1, ':'); + if (end != NULL) { + t = vte_termcap_find_l(termcap, + ret + clen + 1, + end - + (ret + clen + 1), + cap); + } else { + t = vte_termcap_find_l(termcap, + ret + clen + 1, + strlen(ret + + clen + 1), + cap); + } + if ((t != NULL) && (t[0] != '\0')) { + return t; + } + ret++; + } + } + } + return ""; +} + +static const char * +vte_termcap_find(struct vte_termcap *termcap, + const char *tname, const char *cap) +{ + return vte_termcap_find_l(termcap, tname, strlen(tname), cap); +} + +TERMCAP_MAYBE_STATIC int +vte_termcap_find_boolean(struct vte_termcap *termcap, const char *tname, + const char *cap) +{ + const char *val; + val = vte_termcap_find(termcap, tname, cap); + if ((val != NULL) && (val[0] != '\0')) { + return 1; + } + return 0; +} + +TERMCAP_MAYBE_STATIC long +vte_termcap_find_numeric(struct vte_termcap *termcap, const char *tname, + const char *cap) +{ + const char *val; + char *p; + size_t l; + long ret; + val = vte_termcap_find(termcap, tname, cap); + if ((val != NULL) && (val[0] != '\0')) { + l = strlen(cap); + ret = strtol(val + l + 1, &p, 0); + if ((p != NULL) && ((*p == '\0') || (*p == ':'))) { + return ret; + } + } + return 0; +} + +TERMCAP_MAYBE_STATIC char * +vte_termcap_find_string(struct vte_termcap *termcap, const char *tname, + const char *cap) +{ + const char *val, *p; + size_t l; + val = vte_termcap_find(termcap, tname, cap); + if ((val != NULL) && (val[0] != '\0')) { + l = strlen(cap); + val += (l + 1); + p = strchr(val, ':'); + if (p) { + return g_strndup(val, p - val); + } else { + return g_strdup(val); + } + } + return g_strdup(""); +} + +TERMCAP_MAYBE_STATIC char * +vte_termcap_find_string_length(struct vte_termcap *termcap, const char *tname, + const char *cap, size_t *length) +{ + const char *val, *p; + char *ret; + size_t l; + val = vte_termcap_find(termcap, tname, cap); + if (val != NULL) { + l = strlen(cap); + val += (l + 1); + p = val; + while (*p != ':') p++; + *length = l = p - val; + ret = g_malloc(l + 1); + if (l > 0) { + memcpy(ret, val, l); + } + ret[l] = '\0'; + return ret; + } + return g_strdup(""); +} + +TERMCAP_MAYBE_STATIC const char * +vte_termcap_comment(struct vte_termcap *termcap, const char *tname) +{ + struct vte_termcap_alias *alias; + size_t len; + if ((tname == NULL) || (tname[0] == '\0')) { + return termcap->comment; + } + len = strlen(tname); + for (alias = termcap->names; alias != NULL; alias = alias->next) { + if (strncmp(tname, alias->name, len) == 0) { + if (alias->name[len] == '\0') { + break; + } + } + } + if (alias && (alias->entry != NULL)) { + return alias->entry->comment; + } + return NULL; +} + +/* FIXME: should escape characters we've previously decoded. */ +TERMCAP_MAYBE_STATIC char * +vte_termcap_generate(struct vte_termcap *termcap) +{ + size_t size; + char *ret = NULL; + struct vte_termcap_entry *entry; + size = strlen(termcap->comment ?: ""); + for (entry = termcap->entries; entry != NULL; entry = entry->next) { + size += strlen(entry->comment ?: ""); + size += (strlen(entry->string ?: "") + 1); + } + ret = g_malloc(size + 1); + if (ret == NULL) { + return NULL; + } + memset(ret, '\0', size); + size = 0; + for (entry = termcap->entries; entry != NULL; entry = entry->next) { + if (entry->comment) { + memcpy(ret + size, entry->comment, + strlen(entry->comment)); + size += strlen(entry->comment); + } + if (entry->string) { + memcpy(ret + size, entry->string, + strlen(entry->string)); + size += strlen(entry->string); + ret[size] = '\n'; + size++; + } + } + if (termcap->comment) { + memcpy(ret + size, termcap->comment, + strlen(termcap->comment)); + size += strlen(termcap->comment); + } + return ret; +} + +#ifdef TERMCAP_MAIN +int +main(int argc, char **argv) +{ + const char *tc = (argc > 1) ? argv[1] : "linux"; + const char *cap = (argc > 2) ? argv[2] : "so"; + char *value; + struct vte_termcap *termcap = vte_termcap_new("/etc/termcap"); + value = vte_termcap_find_string(termcap, tc, cap); + printf("%s\n", value); + g_free(value); + vte_termcap_free(termcap); + return 0; +} +#endif diff --git a/src/termcap.h b/src/termcap.h new file mode 100644 index 0000000..9d9531b --- /dev/null +++ b/src/termcap.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2000-2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" + +#ifndef termcap_h +#define termcap_h + +G_BEGIN_DECLS + +struct vte_termcap; + +/* Create a new termcap structure. */ +struct vte_termcap *vte_termcap_new(const char *filename); + +/* Free a termcap structure. */ +void vte_termcap_free(struct vte_termcap *termcap); + +/* Read a boolean capability for a given terminal. */ +int vte_termcap_find_boolean(struct vte_termcap *termcap, const char *tname, + const char *cap); + +/* Read a numeric capability for a given terminal. */ +long vte_termcap_find_numeric(struct vte_termcap *termcap, const char *tname, + const char *cap); + +/* Read a string capability for a given terminal. The returned string should + * be freed with g_free(). */ +char *vte_termcap_find_string(struct vte_termcap *termcap, const char *tname, + const char *cap); + +/* Read a string capability for a given terminal, and return the length of + * the result in addition to the result itself. The returned string should + * be freed with g_free(). */ +char *vte_termcap_find_string_length(struct vte_termcap *termcap, + const char *tname, + const char *cap, size_t *length); + +G_END_DECLS + +#endif diff --git a/src/trie.c b/src/trie.c new file mode 100644 index 0000000..5b36122 --- /dev/null +++ b/src/trie.c @@ -0,0 +1,868 @@ +/* + * Copyright (C) 2001,2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" +#include "../config.h" +#include <sys/types.h> +#include <assert.h> +#include <ctype.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> +#include <glib.h> +#include <glib-object.h> +#include "trie.h" + +#ifndef TRIE_MAYBE_STATIC +#define TRIE_MAYBE_STATIC +#endif + +/* Structures and whatnot for tracking character classes. */ +struct char_class_data { + wchar_t c; /* A character. */ + int i; /* An integer. */ + char *s; /* A string. */ + int inc; /* An increment value. */ +}; + +struct char_class { + enum cclass { + exact = 0, /* Not a special class. */ + digit, /* Multiple-digit special class. */ + multi, /* Multiple-number special class. */ + any, /* Any single character. */ + string, /* Any string of characters. */ + invalid, /* A placeholder. */ + } type; + gboolean multiple; /* Whether a sequence of multiple + characters in this class should be + counted together. */ + wchar_t *code; /* A magic string that indicates this + class should be found here. */ + size_t code_length; + size_t ccount; /* The maximum number of characters + after the format specifier to + consume. */ + gboolean (*check)(const wchar_t c, struct char_class_data *data); + /* Function to check if a character + is in this class. */ + void (*setup)(const wchar_t *s, struct char_class_data *data, int inc); + /* Setup the data struct for use in the + * above check function. */ + gboolean (*extract)(const wchar_t *s, size_t length, + struct char_class_data *data, + GValueArray *array); + /* Extract a parameter. */ +}; + +/* A trie to hold control sequences. */ +struct vte_trie { + const char *result; /* If this is a terminal node, then this + field contains its "value". */ + GQuark quark; /* The quark for the value of the + result. */ + size_t trie_path_count; /* Number of children of this node. */ + struct { + struct char_class *cclass; + struct char_class_data data; + struct vte_trie *trie; /* The child node corresponding to this + character. */ + } *trie_paths; +}; + +/* Functions for checking if a particular character is part of a class, and + * for setting up a structure for use when determining matches. */ +static gboolean +char_class_exact_check(wchar_t c, struct char_class_data *data) +{ + return (c == data->c) ? TRUE : FALSE; +} +static void +char_class_exact_setup(const wchar_t *s, struct char_class_data *data, int inc) +{ + data->c = s[0]; + return; +} +static void +char_class_percent_setup(const wchar_t *s, struct char_class_data *data, + int inc) +{ + data->c = '%'; + return; +} +static gboolean +char_class_none_extract(const wchar_t *s, size_t length, + struct char_class_data *data, GValueArray *array) +{ + return FALSE; +} + +static gboolean +char_class_digit_check(wchar_t c, struct char_class_data *data) +{ + switch (c) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return TRUE; + default: + return FALSE; + } + return FALSE; +} +static void +char_class_digit_setup(const wchar_t *s, struct char_class_data *data, int inc) +{ + data->inc = inc; + return; +} +static gboolean +char_class_digit_extract(const wchar_t *s, size_t length, + struct char_class_data *data, GValueArray *array) +{ + long ret = 0; + size_t i; + GValue value; + for (i = 0; i < length; i++) { + ret *= 10; + ret += (s[i] - '0'); + } + memset(&value, 0, sizeof(value)); + g_value_init(&value, G_TYPE_LONG); + g_value_set_long(&value, ret - data->inc); + g_value_array_append(array, &value); + g_value_unset(&value); + return TRUE; +} + +static gboolean +char_class_multi_check(wchar_t c, struct char_class_data *data) +{ + switch (c) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case ';': + return TRUE; + default: + return FALSE; + } + return FALSE; +} +static void +char_class_multi_setup(const wchar_t *s, struct char_class_data *data, int inc) +{ + data->inc = inc; + return; +} +static gboolean +char_class_multi_extract(const wchar_t *s, size_t length, + struct char_class_data *data, GValueArray *array) +{ + long ret = 0; + size_t i; + GValue value; + memset(&value, 0, sizeof(value)); + g_value_init(&value, G_TYPE_LONG); + for (i = 0; i < length; i++) { + if (s[i] == ';') { + g_value_set_long(&value, ret - data->inc); + g_value_array_append(array, &value); + ret = 0; + } else { + ret *= 10; + ret += (s[i] - '0'); + } + } + g_value_set_long(&value, ret - data->inc); + g_value_array_append(array, &value); + g_value_unset(&value); + return TRUE; +} + +static gboolean +char_class_any_check(wchar_t c, struct char_class_data *data) +{ + return (c >= data->c) ? TRUE : FALSE; +} +static void +char_class_any_setup(const wchar_t *s, struct char_class_data *data, int inc) +{ + data->c = s[0] + inc; + return; +} +static gboolean +char_class_any_extract(const wchar_t *s, size_t length, + struct char_class_data *data, GValueArray *array) +{ + long ret = 0; + GValue value; + ret = s[0] - data->c; + memset(&value, 0, sizeof(value)); + g_value_init(&value, G_TYPE_LONG); + g_value_set_long(&value, ret - data->inc); + g_value_array_append(array, &value); + g_value_unset(&value); + return TRUE; +} + +static gboolean +char_class_string_check(wchar_t c, struct char_class_data *data) +{ + return (c != data->c) ? TRUE : FALSE; +} +static void +char_class_string_setup(const wchar_t *s, struct char_class_data *data, int inc) +{ + data->c = s[0]; + return; +} +static gboolean +char_class_string_extract(const wchar_t *s, size_t length, + struct char_class_data *data, GValueArray *array) +{ + wchar_t *ret = NULL; + size_t len; + GValue value; + + len = wcslen(s); + if (len > length) { + len = length; + } + + ret = g_malloc0((len + 1) * sizeof(wchar_t)); + wcsncpy(ret, s, len); + memset(&value, 0, sizeof(value)); + + g_value_init(&value, G_TYPE_POINTER); + g_value_set_pointer(&value, ret); + g_value_array_append(array, &value); + g_value_unset(&value); + + return TRUE; +} + +static wchar_t empty_wstring[] = {'\0'}; +static wchar_t digit_wstring1[] = {'%', '2', '\0'}; +static wchar_t digit_wstring2[] = {'%', 'd', '\0'}; +static wchar_t any_wstring[] = {'%', '+', '\0'}; +static wchar_t exact_wstring[] = {'%', '%', '\0'}; +static wchar_t string_wstring[] = {'%', 's', '\0'}; +static wchar_t multi_wstring[] = {'%', 'm', '\0'}; + +static struct char_class char_classes[] = { + {exact, FALSE, empty_wstring, 0, 1, + char_class_exact_check, + char_class_exact_setup, + char_class_none_extract}, + {digit, TRUE, digit_wstring1, 2, 0, + char_class_digit_check, + char_class_digit_setup, + char_class_digit_extract}, + {digit, TRUE, digit_wstring2, 2, 0, + char_class_digit_check, + char_class_digit_setup, + char_class_digit_extract}, + {multi, TRUE, multi_wstring, 2, 0, + char_class_multi_check, + char_class_multi_setup, + char_class_multi_extract}, + {any, FALSE, any_wstring, 2, 1, + char_class_any_check, + char_class_any_setup, + char_class_any_extract}, + {exact, FALSE, exact_wstring, 2, 0, + char_class_exact_check, + char_class_percent_setup, + char_class_none_extract}, + {string, TRUE, string_wstring, 2, 0, + char_class_string_check, + char_class_string_setup, + char_class_string_extract}, +}; + +/* Create a new trie. */ +TRIE_MAYBE_STATIC struct vte_trie * +vte_trie_new(void) +{ + return g_malloc0(sizeof(struct vte_trie)); +} + +TRIE_MAYBE_STATIC void +vte_trie_free(struct vte_trie *trie) +{ + unsigned int i; + for (i = 0; i < trie->trie_path_count; i++) { + vte_trie_free(trie->trie_paths[i].trie); + } + if (trie->trie_path_count > 0) { + g_free(trie->trie_paths); + } + g_free(trie); +} + +/* Add the given pattern, with its own result string, to the trie, with the + * given initial increment value. */ +static void +vte_trie_addx(struct vte_trie *trie, wchar_t *pattern, size_t length, + const char *result, GQuark quark, int inc) +{ + unsigned long i; + struct char_class *cclass = NULL; + struct char_class_data data; + wchar_t *code; + size_t len = 0, ccount = 0; + wchar_t inc_wstring[] = {'%', 'i', '\0'}; + + /* The trivial case -- we'll just set the result at this node. */ + if (length == 0) { + if (trie->result == NULL) { + trie->quark = g_quark_from_string(result); + trie->result = g_quark_to_string(trie->quark); +#ifdef VTE_DEBUG + } else { + g_warning("Duplicate (%s/%s)!", result, trie->result); +#endif + } + return; + } + + /* If this part of the control sequence indicates incrementing a + * parameter, keep track of the incrementing, skip over the increment + * substring, and keep going. */ + if ((length >= 2) && (wcsncmp(pattern, inc_wstring, 2) == 0)) { + vte_trie_addx(trie, pattern + 2, length - 2, + result, quark, inc + 1); + return; + } + + /* Now check for examples of character class specifiers, and use that + * to put this part of the pattern in a character class. */ + for (i = G_N_ELEMENTS(char_classes) - 1; i >= 0; i--) { + len = char_classes[i].code_length; + code = char_classes[i].code; + ccount = char_classes[i].ccount; + if ((len <= length) && (wcsncmp(pattern, code, len) == 0)) { + cclass = &char_classes[i]; + break; + } + } + g_assert(i >= 0); + + /* Initialize the data item using the data we have here. */ + memset(&data, 0, sizeof(data)); + cclass->setup(pattern + len, &data, inc); + + /* Hunt for a subtrie which matches this class / data pair. */ + for (i = 0; i < trie->trie_path_count; i++) { + struct char_class_data *tdata; + tdata = &trie->trie_paths[i].data; + if ((trie->trie_paths[i].cclass == cclass) && + (memcmp(&data, tdata, sizeof(data)) == 0)) { + /* It matches, so insert the rest of the pattern into + * this subtrie. */ + vte_trie_addx(trie->trie_paths[i].trie, + pattern + (len + ccount), + length - (len + ccount), + result, + quark, + inc); + return; + } + } + + /* Add a new subtrie to contain the rest of this pattern. */ + trie->trie_path_count++; + trie->trie_paths = g_realloc(trie->trie_paths, + trie->trie_path_count * + sizeof(trie->trie_paths[0])); + i = trie->trie_path_count - 1; + memset(&trie->trie_paths[i], 0, sizeof(trie->trie_paths[i])); + trie->trie_paths[i].trie = vte_trie_new(); + cclass->setup(pattern + len, &trie->trie_paths[i].data, inc); + trie->trie_paths[i].cclass = cclass; + + /* Now insert the rest of the pattern into the node we just created. */ + vte_trie_addx(trie->trie_paths[i].trie, + pattern + (len + ccount), + length - (len + ccount), + result, + quark, + inc); +} + +/* Add the given pattern, with its own result string, to the trie. */ +TRIE_MAYBE_STATIC void +vte_trie_add(struct vte_trie *trie, const char *pattern, size_t length, + const char *result, GQuark quark) +{ + mbstate_t state; + wchar_t *wpattern; + char *tpattern; + const char *pat; + size_t wlength; + + g_return_if_fail(trie != NULL); + g_return_if_fail(pattern != NULL); + g_return_if_fail(length > 0); + g_return_if_fail(result != NULL); + if (quark == 0) { + quark = g_quark_from_string(result); + } + + wpattern = g_malloc0(sizeof(wchar_t) * (length + 1)); + memset(&state, 0, sizeof(state)); + pat = tpattern = g_strndup(pattern, length); + + wlength = mbsrtowcs(wpattern, &pat, length, &state); + vte_trie_addx(trie, wpattern, wlength, result, quark, 0); + + g_free(wpattern); + g_free(tpattern); +} + +/* Check if the given pattern matches part of the given trie, returning an + * empty string on a partial initial match, a NULL if there's no match in the + * works, and the result string if we have an exact match. */ +static const char * +vte_trie_matchx(struct vte_trie *trie, const wchar_t *pattern, size_t length, + const char **res, GQuark *quark, GValueArray *array) +{ + unsigned int i; + const char *hres; + enum cclass cc; + const char *best = NULL; + GValueArray *bestarray = NULL; + GQuark bestquark = 0; + + /* Make sure that attempting to save output values doesn't kill us. */ + if (res == NULL) { + res = &hres; + } + + /* Trivial cases. We've matched the entire pattern, or we're out of + * pattern to match. */ + if (length <= 0) { + if (trie->result) { + *res = trie->result; + *quark = trie->quark; + return *res; + } else { + if (trie->trie_path_count > 0) { + *res = ""; + *quark = g_quark_from_static_string(""); + return *res; + } else { + *res = NULL; + *quark = 0; + return *res; + } + } + } + + /* Now figure out which (if any) subtrees to search. First, see + * which character class this character matches. */ + for (cc = exact; cc < invalid; cc++) + for (i = 0; i < trie->trie_path_count; i++) { + struct vte_trie *subtrie = trie->trie_paths[i].trie; + struct char_class *cclass = trie->trie_paths[i].cclass; + struct char_class_data *data = &trie->trie_paths[i].data; + if (trie->trie_paths[i].cclass->type == cc) { + /* If it matches this character class... */ + if (cclass->check(pattern[0], data)) { + const wchar_t *prospect = pattern + 1; + const char *tmp; + GQuark tmpquark = 0; + GValueArray *tmparray; + /* Move past characters which might match this + * part of the string... */ + while (cclass->multiple && + ((prospect - pattern) < length) && + cclass->check(prospect[0], data)) { + prospect++; + } + /* ... see if there's a parameter here, ... */ + tmparray = g_value_array_new(0); + cclass->extract(pattern, + prospect - pattern, + data, + tmparray); + /* ... and check if the subtree matches the + * rest of the input string. Any parameters + * further on will be appended to the array. */ + vte_trie_matchx(subtrie, + prospect, + length - (prospect - pattern), + &tmp, + &tmpquark, + tmparray); + /* If it's a better match than any we've seen + * so far, call it the "best so far". */ + if ((best == NULL) || + ((best[0] == '\0') && + (tmp != NULL) && + (tmp[0] != '\0'))) { + best = tmp; + if (bestarray != NULL) { + g_value_array_free(bestarray); + } + bestarray = tmparray; + bestquark = tmpquark; + } else { + g_value_array_free(tmparray); + tmparray = NULL; + } + } + } + } + + /* We're done searching. Copy out any parameters we picked up. */ + if (bestarray != NULL) { + for (i = 0; i < bestarray->n_values; i++) { + g_value_array_append(array, + g_value_array_get_nth(bestarray, + i)); + } + g_value_array_free(bestarray); + } +#if 0 + g_print("`%s' ", best); + dump_array(array); +#endif + *quark = bestquark; + *res = best; + return *res; +} + +/* Check if the given pattern matches part of the given trie, returning an + * empty string on a partial initial match, a NULL if there's no match in the + * works, and the result string if we have an exact match. */ +TRIE_MAYBE_STATIC const char * +vte_trie_match(struct vte_trie *trie, wchar_t *pattern, size_t length, + const char **res, GQuark *quark, GValueArray **array) +{ + const char *ret = NULL; + GQuark tmpquark; + GValueArray *valuearray; + + valuearray = g_value_array_new(0); + if (quark == NULL) { + quark = &tmpquark; + } + *quark = 0; + + ret = vte_trie_matchx(trie, pattern, length, res, quark, valuearray); + + if (((ret == NULL) || (ret[0] == '\0')) || (valuearray->n_values == 0)){ + g_value_array_free(valuearray); + *array = NULL; + } else { + *array = valuearray; + } + + return ret; +} + +/* Print the next layer of the trie, indented by length spaces. */ +static void +vte_trie_printx(struct vte_trie *trie, const char *previous) +{ + unsigned int i; + char buf[LINE_MAX]; + + for (i = 0; i < trie->trie_path_count; i++) { + memset(buf, '\0', sizeof(buf)); + snprintf(buf, sizeof(buf), "%s", previous); + switch (trie->trie_paths[i].cclass->type) { + case exact: + if (trie->trie_paths[i].data.c < 32) { + snprintf(buf + strlen(buf), + sizeof(buf) - strlen(buf), + "^%lc", + (wint_t)trie->trie_paths[i].data.c + + 64); + } else { + snprintf(buf + strlen(buf), + sizeof(buf) - strlen(buf), + "%lc", + (wint_t)trie->trie_paths[i].data.c); + } + break; + case digit: + snprintf(buf + strlen(buf), + sizeof(buf) - strlen(buf), + "{num+%d}", + trie->trie_paths[i].data.inc); + break; + case multi: + snprintf(buf + strlen(buf), + sizeof(buf) - strlen(buf), + "{multinum+%d}", + trie->trie_paths[i].data.inc); + break; + case any: + snprintf(buf + strlen(buf), + sizeof(buf) - strlen(buf), + "{char+`%lc'}", + (wint_t)trie->trie_paths[i].data.c); + break; + case string: + snprintf(buf + strlen(buf), + sizeof(buf) - strlen(buf), + "{string}"); + break; + case invalid: + break; + } + if (trie->trie_paths[i].trie->result != NULL) { + g_print("%s = `%s'\n", buf, + trie->trie_paths[i].trie->result); + } + vte_trie_printx(trie->trie_paths[i].trie, buf); + } +} + +/* Print the trie. */ +TRIE_MAYBE_STATIC void +vte_trie_print(struct vte_trie *trie) +{ + vte_trie_printx(trie, ""); + g_print("\n"); +} + +#ifdef TRIE_MAIN +static void +dump_array(GValueArray *array) +{ + unsigned int i; + if (array != NULL) { + g_print("args = {"); + for (i = 0; i < array->n_values; i++) { + GValue *value; + value = g_value_array_get_nth(array, i); + if (i > 0) { + g_print(", "); + } + if (G_VALUE_HOLDS_LONG(value)) { + g_print("%ld", g_value_get_long(value)); + } + if (G_VALUE_HOLDS_STRING(value)) { + g_print("`%s'", g_value_get_string(value)); + } + if (G_VALUE_HOLDS_POINTER(value)) { + printf("`%ls'", + (wchar_t*)g_value_get_pointer(value)); + } + } + g_print("}\n"); + } +} + +static void +convert_mbstowcs(const char *i, size_t ilen, wchar_t *o, size_t *olen) +{ + mbstate_t state; + memset(&state, 0, sizeof(state)); + *olen = mbsrtowcs(o, &i, ilen, &state); +} + +int +main(int argc, char **argv) +{ + struct vte_trie *trie; + GValueArray *array = NULL; + GQuark quark; + wchar_t buf[LINE_MAX]; + size_t buflen; + + g_type_init(); + trie = vte_trie_new(); + + vte_trie_add(trie, "abcdef", 6, "abcdef", + g_quark_from_string("abcdef")); + vte_trie_add(trie, "abcde", 5, "abcde", + g_quark_from_string("abcde")); + vte_trie_add(trie, "abcdeg", 6, "abcdeg", + g_quark_from_string("abcdeg")); + vte_trie_add(trie, "abc%+Aeg", 8, "abc%+Aeg", + g_quark_from_string("abc%+Aeg")); + vte_trie_add(trie, "abc%deg", 7, "abc%deg", + g_quark_from_string("abc%deg")); + vte_trie_add(trie, "abc%%eg", 7, "abc%%eg", + g_quark_from_string("abc%%eg")); + vte_trie_add(trie, "abc%%%i%deg", 11, "abc%%%i%deg", + g_quark_from_string("abc%%%i%deg")); + vte_trie_add(trie, "<esc>[%i%d;%dH", 14, "vtmatch", + g_quark_from_string("vtmatch")); + vte_trie_add(trie, "<esc>[%i%mL", 11, "multimatch", + g_quark_from_string("multimatch")); + vte_trie_add(trie, "<esc>]2;%sh", 11, "decset-title", + g_quark_from_string("decset-title")); + vte_trie_print(trie); + + quark = 0; + convert_mbstowcs("abc", 3, buf, &buflen); + g_print("`%s' = `%s'\n", "abc", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + array = NULL; + } + + quark = 0; + convert_mbstowcs("abcdef", 6, buf, &buflen); + g_print("`%s' = `%s'\n", "abcdef", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + array = NULL; + } + + quark = 0; + convert_mbstowcs("abcde", 5, buf, &buflen); + g_print("`%s' = `%s'\n", "abcde", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + array = NULL; + } + + quark = 0; + convert_mbstowcs("abcdeg", 6, buf, &buflen); + g_print("`%s' = `%s'\n", "abcdeg", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + array = NULL; + } + + quark = 0; + convert_mbstowcs("abc%deg", 7, buf, &buflen); + g_print("`%s' = `%s'\n", "abc%deg", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + array = NULL; + } + + quark = 0; + convert_mbstowcs("abc10eg", 7, buf, &buflen); + g_print("`%s' = `%s'\n", "abc10eg", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + array = NULL; + } + + quark = 0; + convert_mbstowcs("abc%eg", 6, buf, &buflen); + g_print("`%s' = `%s'\n", "abc%eg", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + array = NULL; + } + + quark = 0; + convert_mbstowcs("abc%10eg", 8, buf, &buflen); + g_print("`%s' = `%s'\n", "abc%10eg", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + array = NULL; + } + + quark = 0; + convert_mbstowcs("abcBeg", 6, buf, &buflen); + g_print("`%s' = `%s'\n", "abcBeg", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + array = NULL; + } + + quark = 0; + convert_mbstowcs("<esc>[25;26H", 12, buf, &buflen); + g_print("`%s' = `%s'\n", "<esc>[25;26H", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + array = NULL; + } + + quark = 0; + convert_mbstowcs("<esc>[25;26L", 12, buf, &buflen); + g_print("`%s' = `%s'\n", "<esc>[25;26L", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + } + + quark = 0; + convert_mbstowcs("<esc>]2;WoofWoofh", 17, buf, &buflen); + g_print("`%s' = `%s'\n", "<esc>]2;WoofWoofh", + vte_trie_match(trie, buf, buflen, NULL, &quark, &array)); + g_print("=> `%s'\n", g_quark_to_string(quark)); + if (array != NULL) { + dump_array(array); + g_value_array_free(array); + array = NULL; + } + + vte_trie_free(trie); + + return 0; +} +#endif diff --git a/src/trie.h b/src/trie.h new file mode 100644 index 0000000..1c608d5 --- /dev/null +++ b/src/trie.h @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2001,2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" + +#ifndef trie_h +#define trie_h + +#include <wchar.h> +#include <glib.h> + +G_BEGIN_DECLS + +struct vte_trie; + +/* Create a new trie structure. */ +struct vte_trie *vte_trie_new(void); + +/* Free a trie structure. */ +void vte_trie_free(struct vte_trie *trie); + +/* Add a string to the trie, along with its associated result and an optional + * Quark to store with it. */ +void vte_trie_add(struct vte_trie *trie, + const char *pattern, size_t length, + const char *result, GQuark quark); + +/* See if a given pattern of a given length is in the trie. The result is + * returned both as the result of the function, and in the pointer res (if + * res is not NULL). The associated quark is also stored in "quark". If + * the string could be the initial portion of some sequence in the trie, the + * empty string is returned for the answer. If no match is found, and the + * passed-in string can not be an initial substring of one of the strings in + * the trie, then NULL is returned. */ +const char *vte_trie_match(struct vte_trie *trie, + wchar_t *pattern, size_t length, + const char **res, + GQuark *quark, + GValueArray **array); + +/* Print the contents of the trie (mainly for diagnostic purposes). */ +void vte_trie_print(struct vte_trie *trie); + +G_END_DECLS + +#endif diff --git a/src/typescript b/src/typescript new file mode 100644 index 0000000..86ac59a --- /dev/null +++ b/src/typescript @@ -0,0 +1,76 @@ +Script started on Mon Jan 28 23:02:33 2002 +]2;nalin@blade.devel.redhat.com:/home/devel/nalin/projects/vte/srcnalin has logged on pts/0 from local.
+nalin has logged on tty1 from local.
+]2;nalin@blade.devel.redhat.com:/home/devel/nalin/projects/vte/srcnalin@blade:~/projects/vte/src> less trie.c
+7[?47h[?1h=[24;1H[K/*
+ * Copyright (C) 2001 Red Hat, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "../config.h"
+#include <sys/types.h>
+#include <assert.h>
+#include <ctype.h>
+#include <stdio.h>
+[24;1H[K[7mtrie.c [m[24;1H[24;1H[K#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+#include <glib.h>
+#include <glib-object.h>
+#include "trie.h"
+
+#ifndef TRIE_MAYBE_STATIC
+#define TRIE_MAYBE_STATIC
+#endif
+
+/* Structures and whatnot for tracking character classes. */
+struct char_class_data {
+ wchar_t c; /* A character. */
+ int i; /* An integer. */
+ char *s; /* A string. */
+ int inc; /* An increment value. */
+};
+
+struct char_class {
+ enum cclass {
+ exact = 0, /* Not a special class. */
+ digit, /* Multiple-digit special class. */
+[24;1H[K:[24;1H[HM#include <stdio.h>
+[HM#include <ctype.h>
+[HM#include <assert.h>
+[HM#include <sys/types.h>
+[HM#include "../config.h"
+[HM
+[HM */
+[HM * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+[HM * License along with this program; if not, write to the Free Software
+[HM * You should have received a copy of the GNU Library General Public
+[HM *
+[HM * General Public License for more details.
+[HM * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+[HM * WITHOUT ANY WARRANTY; without even the implied warranty of
+[HM * This program is distributed in the hope that it will be useful, but
+[HM *
+[HM * (at your option) any later version.
+[HM * the Free Software Foundation; either version 2 of the License, or
+[HM * the terms of the GNU Library General Public License as published by
+[HM * This is free software; you can redistribute it and/or modify it under
+[HM *
+[HM * Copyright (C) 2001 Red Hat, Inc.
+[HM/*
+[24;1H[K:[24;1H[K[?1l>[2J[?47l8]2;nalin@blade.devel.redhat.com:/home/devel/nalin/projects/vte/srcnalin@blade:~/projects/vte/src> ^Dexit
+ +Script done on Mon Jan 28 23:02:39 2002 diff --git a/src/utf8echo.c b/src/utf8echo.c new file mode 100644 index 0000000..fdf9ba4 --- /dev/null +++ b/src/utf8echo.c @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2001,2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" +#include "../config.h" +#include <iconv.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#define ESC "" + +int +main(int argc, char **argv) +{ + int i; + iconv_t conv; + char buf[LINE_MAX]; + wchar_t w; + char *inbuf, *outbuf; + size_t insize, outsize; + + if (argc < 2) { + printf("usage: %s index [...]\n", argv[0]); + return 1; + } + + conv = iconv_open("UTF-8", "WCHAR_T"); + if (conv == NULL) { + return 1; + } + + printf(ESC "%%G "); + for (i = 1; i < argc; i++) { + w = (wint_t)atol(argv[i]); + inbuf = (char*)&w; + insize = sizeof(w); + memset(buf, 0, sizeof(buf)); + outbuf = buf; + outsize = sizeof(buf); + if (iconv(conv, &inbuf, &insize, &outbuf, &outsize) != -1) { + printf("%*s", outbuf - buf, buf); + } + } + printf(" " ESC "%%@\n"); + + iconv_close(conv); + + return 0; +} diff --git a/src/vte.c b/src/vte.c new file mode 100644 index 0000000..79a3041 --- /dev/null +++ b/src/vte.c @@ -0,0 +1,3494 @@ +/* + * Copyright (C) 2001,2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" +#include "../config.h" +#include <sys/ioctl.h> +#include <sys/types.h> +#include <sys/param.h> +#include <errno.h> +#include <fcntl.h> +#include <iconv.h> +#include <langinfo.h> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <termios.h> +#include <unistd.h> +#include <wchar.h> +#include <X11/Xlib.h> +#include <glib.h> +#include <glib-object.h> +#include <gdk/gdk.h> +#include <gdk/gdkkeysyms.h> +#include <gdk/gdkx.h> +#include <gtk/gtk.h> +#include "caps.h" +#include "marshal.h" +#include "pty.h" +#include "termcap.h" +#include "trie.h" +#include "vte.h" + +#define VTE_TAB_WIDTH 8 + +/* A function which can handle a terminal control sequence. */ +typedef void (*VteTerminalSequenceHandler)(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params); + +static void vte_sequence_handler_clear_screen(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params); +static void vte_sequence_handler_ho(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params); +static void vte_sequence_handler_do(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params); +static void vte_sequence_handler_up(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params); + +/* Allocate a new line. */ +static GArray * +vte_new_row_data() +{ + return g_array_new(FALSE, FALSE, sizeof(struct vte_charcell)); +} + +/* Reset defaults for character insertion. */ +static void +vte_terminal_set_default_attributes(VteTerminal *terminal) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + memset(&terminal->screen->defaults, 0, + sizeof(terminal->screen->defaults)); + terminal->screen->defaults.fore = 7; + terminal->screen->defaults.back = 0; + terminal->screen->defaults.reverse = 0; + terminal->screen->defaults.invisible = 0; + terminal->screen->defaults.half = 0; + terminal->screen->defaults.underline = 0; + terminal->screen->defaults.blink = 0; + terminal->screen->defaults.standout = 0; + terminal->screen->defaults.bold = 0; +} + +/* Cause certain cells to be updated. */ +static void +vte_invalidate_cells(VteTerminal *terminal, + gint column_start, gint column_count, + gint row_start, gint row_count) +{ + GdkRectangle rect; + GtkWidget *widget = GTK_WIDGET(terminal); + + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + + /* Clamp the start values to reasonable numbers. */ + column_start = (column_start > 0) ? column_start : 0; + row_start = (row_start > 0) ? row_start : 0; + + /* Convert the column and row start and end to pixel values + * by multiplying by the size of a character cell. */ + rect.x = widget->allocation.x + column_start * terminal->char_width; + rect.width = column_count * terminal->char_width; + rect.y = widget->allocation.y + row_start * terminal->char_height; + rect.height = row_count * terminal->char_height; + + /* Invalidate the rectangle. */ + gdk_window_invalidate_rect(widget->window, &rect, TRUE); +} + +/* Update the adjustment field of the widget. This function should be called + * whenever we add rows to the history or switch screens. */ +static void +vte_terminal_adjust_adjustments(VteTerminal *terminal) +{ + gboolean changed; + guint page_size; + long rows; + /* Adjust the vertical, uh, adjustment. */ + changed = FALSE; + /* The lower value should always be zero. */ + if (terminal->adjustment->lower != 0) { + terminal->adjustment->lower = 0; + changed = TRUE; + } + /* The upper value is the number of rows which might be visible. (Add + * one to the cursor offset because it's zero-based.) */ + rows = MAX(terminal->screen->row_data->len, + terminal->screen->cursor_current.row + 1); + if (terminal->adjustment->upper != rows) { + terminal->adjustment->upper = rows; + changed = TRUE; + } + /* The step increment should always be one. */ + if (terminal->adjustment->step_increment != 1) { + terminal->adjustment->step_increment = 1; + changed = TRUE; + } + /* Set the number of rows the user sees to the number of rows the + * user sees. */ + page_size = terminal->row_count; + if (terminal->adjustment->page_size != page_size) { + terminal->adjustment->page_size = page_size; + changed = TRUE; + } + /* Clicking in the empty area should scroll one screen, so set the + * page size to the number of visible rows. */ + if (terminal->adjustment->page_increment != page_size) { + terminal->adjustment->page_increment = page_size; + changed = TRUE; + } + /* If anything changed, signal that there was a change. */ + if (changed == TRUE) { + gtk_adjustment_changed(terminal->adjustment); + } +} + +/* Call another function, offsetting any long arguments by the given + * increment value. */ +static void +vte_sequence_handler_offset(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params, + int increment, + VteTerminalSequenceHandler handler) +{ + int i; + long val; + GValue *value; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + /* Decrement the parameters and let the _cs handler deal with it. */ + for (i = 0; (params != NULL) && (i < params->n_values); i++) { + value = g_value_array_get_nth(params, i); + if (G_VALUE_HOLDS_LONG(value)) { + val = g_value_get_long(value); + val += increment; + g_value_set_long(value, val); + } + } + handler(terminal, match, match_quark, params); +} + +/* Call another function a given number of times, or once. */ +static void +vte_sequence_handler_multiple(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params, + VteTerminalSequenceHandler handler) +{ + long val = 1; + int i; + GValue *value; + if ((params != NULL) && (params->n_values > 0)) { + value = g_value_array_get_nth(params, 0); + if (G_VALUE_HOLDS_LONG(value)) { + val = g_value_get_long(value); + } + } + for (i = 0; i < val; i++) { + handler(terminal, match, match_quark, NULL); + } +} + +/* Insert a blank line at an arbitrary position. */ +static void +vte_insert_line_int(VteTerminal *terminal, long position) +{ + GArray *array; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + /* Pad out the line data to the insertion point. */ + while (terminal->screen->row_data->len < position) { + array = vte_new_row_data(); + g_array_append_val(terminal->screen->row_data, array); + } + /* If we haven't inserted a line yet, insert a new one. */ + array = vte_new_row_data(); + if (terminal->screen->row_data->len >= position) { + g_array_insert_val(terminal->screen->row_data, position, array); + } else { + g_array_append_val(terminal->screen->row_data, array); + } +} + +/* Remove a line at an arbitrary position. */ +static void +vte_remove_line_int(VteTerminal *terminal, long position) +{ + GArray *array; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + if (terminal->screen->row_data->len > position) { + array = g_array_index(terminal->screen->row_data, + GArray *, + position); + g_array_remove_index(terminal->screen->row_data, position); + g_array_free(array, TRUE); + } +} + +/* Change the encoding used for the terminal to the given codeset, or the + * locale default if NULL is passed in. */ +static void +vte_terminal_set_encoding(VteTerminal *terminal, const char *codeset) +{ + if (codeset == NULL) { + codeset = nl_langinfo(CODESET); + } + + if (terminal->pending_conv != NULL) { + iconv_close(terminal->pending_conv); + } + terminal->pending_conv = iconv_open("WCHAR_T", codeset); + + if (terminal->outgoing_conv != NULL) { + iconv_close(terminal->outgoing_conv); + } + terminal->outgoing_conv = iconv_open(codeset, "WCHAR_T"); + + terminal->encoding = g_quark_to_string(g_quark_from_string(codeset)); +#ifdef VTE_DEBUG + g_print("Set encoding to `%s'.\n", terminal->encoding); +#endif +} + +/* Add a line at the current cursor position. */ +static void +vte_sequence_handler_al(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + struct _VteScreen *screen; + long start, end; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + if (screen->scrolling_restricted) { + start = screen->delta + screen->scrolling_region.start; + end = screen->delta + screen->scrolling_region.end; + } else { + start = screen->delta; + end = screen->delta + terminal->row_count - 1; + } + vte_remove_line_int(terminal, end); + vte_insert_line_int(terminal, screen->cursor_current.row); + screen->cursor_current.row++; + vte_invalidate_cells(terminal, + 0, terminal->column_count, + start - screen->delta, end - start + 1); +} + +/* Add N lines at the current cursor position. */ +static void +vte_sequence_handler_AL(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + vte_sequence_handler_multiple(terminal, match, match_quark, params, + vte_sequence_handler_al); +} + +/* Beep. */ +static void +vte_sequence_handler_bl(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + gdk_beep(); +} + +/* Clear from the cursor position to the beginning of the line. */ +static void +vte_sequence_handler_cb(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GArray *rowdata; + long delta, i; + struct _VteScreen *screen; + struct vte_charcell *pcell; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + /* If the cursor is actually on the screen, clear data in the row + * which corresponds to the cursor. */ + if (screen->row_data->len > screen->cursor_current.row) { + /* Get the data for the row which the cursor points to. */ + rowdata = g_array_index(screen->row_data, + GArray*, + screen->cursor_current.row); + /* Clear the data up to the current column. */ + for (i = 0; i < screen->cursor_current.col; i++) { + pcell = &g_array_index(rowdata, struct vte_charcell, i); + if (pcell != NULL) { + pcell->c = ' '; + pcell->columns = 1; + } + } + /* Repaint this row. */ + delta = screen->delta; + vte_invalidate_cells(terminal, + 0, terminal->column_count, + screen->cursor_current.row - delta, 1); + } +} + +/* Clear below the current line. */ +static void +vte_sequence_handler_cd(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GArray *rowdata; + long delta, i; + struct _VteScreen *screen; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + /* If the cursor is actually on the screen, clear data in the rows + * below the cursor. */ + delta = screen->delta; + for (i = screen->cursor_current.row + 1; + i < screen->row_data->len; + i++) { + /* Get the data for the row we're removing. */ + rowdata = g_array_index(screen->row_data, GArray*, i); + /* Remove it. */ + while ((rowdata != NULL) && (rowdata->len > 0)) { + g_array_remove_index(rowdata, rowdata->len - 1); + } + /* Repaint this row. */ + vte_invalidate_cells(terminal, + 0, terminal->column_count, + i - delta, 1); + } +} + +/* Clear from the cursor position to the end of the line. */ +static void +vte_sequence_handler_ce(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GArray *rowdata; + long delta; + struct _VteScreen *screen; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + /* If the cursor is actually on the screen, clear data in the row + * which corresponds to the cursor. */ + delta = screen->delta; + if (screen->row_data->len > screen->cursor_current.row) { + /* Get the data for the row which the cursor points to. */ + rowdata = g_array_index(screen->row_data, GArray*, + screen->cursor_current.row); + /* Remove the data at the end of the array. */ + while (rowdata->len > screen->cursor_current.col) { + g_array_remove_index(rowdata, rowdata->len - 1); + } + /* Repaint this row. */ + vte_invalidate_cells(terminal, + 0, terminal->column_count, + screen->cursor_current.row - delta, 1); + } +} + +/* Move the cursor to the given column (horizontal position). */ +static void +vte_sequence_handler_ch(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + struct _VteScreen *screen; + GValue *value; + long delta; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + delta = screen->delta; + /* Repaint the current cursor position. */ + vte_invalidate_cells(terminal, + screen->cursor_current.col, 1, + screen->cursor_current.row - delta, 1); + /* We only care if there's a parameter in there. */ + if ((params != NULL) && (params->n_values > 0)) { + value = g_value_array_get_nth(params, 0); + if (G_VALUE_HOLDS_LONG(value)) { + /* Move the cursor and repaint it. */ + screen->cursor_current.col = g_value_get_long(value); + vte_invalidate_cells(terminal, + screen->cursor_current.col, + 1, + screen->cursor_current.row - delta, + 1); + } + } +} + +/* Clear the screen and home the cursor. */ +static void +vte_sequence_handler_cl(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + vte_sequence_handler_clear_screen(terminal, NULL, 0, NULL); + vte_sequence_handler_ho(terminal, NULL, 0, NULL); +} + +/* Move the cursor to the given position. */ +static void +vte_sequence_handler_cm(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GValue *row, *col; + struct _VteScreen *screen; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + /* We need at least two parameters. */ + if ((params != NULL) && (params->n_values >= 2)) { + /* The first is the row, the second is the column. */ + row = g_value_array_get_nth(params, 0); + col = g_value_array_get_nth(params, 1); + if (G_VALUE_HOLDS_LONG(row) && + G_VALUE_HOLDS_LONG(col)) { + screen->cursor_current.row = g_value_get_long(row) + + screen->delta; + screen->cursor_current.col = g_value_get_long(col); + } + } +} + +/* Clear from the current line. */ +static void +vte_sequence_handler_clear_current_line(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GArray *rowdata; + long delta; + struct _VteScreen *screen; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + /* If the cursor is actually on the screen, clear data in the row + * which corresponds to the cursor. */ + delta = screen->delta; + if (screen->row_data->len > screen->cursor_current.row) { + /* Get the data for the row which the cursor points to. */ + rowdata = g_array_index(screen->row_data, GArray*, + screen->cursor_current.row); + /* Remove it. */ + while (rowdata->len > 0) { + g_array_remove_index(rowdata, rowdata->len - 1); + } + /* Repaint this row. */ + vte_invalidate_cells(terminal, + 0, terminal->column_count, + screen->cursor_current.row - delta, 1); + } +} + +/* Carriage return. */ +static void +vte_sequence_handler_cr(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->cursor_current.col = 0; +} + +/* Restrict scrolling and updates to a subset of the visible lines. */ +static void +vte_sequence_handler_cs(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + long start, end, rows; + GValue *value; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + /* We require two parameters. */ + if ((params == NULL) || (params->n_values < 2)) { + terminal->screen->scrolling_restricted = FALSE; + return; + } + /* Extract the two values. */ + value = g_value_array_get_nth(params, 0); + start = g_value_get_long(value); + value = g_value_array_get_nth(params, 1); + end = g_value_get_long(value); + /* Set the right values. */ + terminal->screen->scrolling_region.start = start; + terminal->screen->scrolling_region.end = end; + terminal->screen->scrolling_restricted = TRUE; + /* Special case -- run wild, run free. */ + rows = terminal->row_count; + if ((terminal->screen->scrolling_region.start == 0) && + (terminal->screen->scrolling_region.end == rows - 1)) { + terminal->screen->scrolling_restricted = FALSE; + } +} + +/* Move the cursor to the given row (vertical position). */ +static void +vte_sequence_handler_cv(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + struct _VteScreen *screen; + GValue *value; + long delta; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + delta = screen->delta; + /* Repaint the current cursor position. */ + vte_invalidate_cells(terminal, + screen->cursor_current.col, 1, + screen->cursor_current.row - delta, 1); + /* We only care if there's a parameter in there. */ + if ((params != NULL) && (params->n_values > 0)) { + value = g_value_array_get_nth(params, 0); + if (G_VALUE_HOLDS_LONG(value)) { + /* Move the cursor and repaint it. */ + screen->cursor_current.row = g_value_get_long(value); + vte_invalidate_cells(terminal, + screen->cursor_current.col, + 1, + screen->cursor_current.row - delta, + 1); + } + } +} + +/* Delete a line at the current cursor position. */ +static void +vte_sequence_handler_dl(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + struct _VteScreen *screen; + long end; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + if (screen->scrolling_restricted) { + end = screen->delta + screen->scrolling_region.end; + } else { + end = screen->delta + terminal->row_count - 1; + } + vte_remove_line_int(terminal, screen->cursor_current.row); + vte_insert_line_int(terminal, end); + vte_invalidate_cells(terminal, + 0, terminal->column_count, + 0, terminal->row_count); +} + +/* Delete N lines at the current cursor position. */ +static void +vte_sequence_handler_DL(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + vte_sequence_handler_multiple(terminal, match, match_quark, params, + vte_sequence_handler_dl); +} + +/* Scroll forward. */ +static void +vte_sequence_handler_do(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GtkWidget *widget; + long delta, rows, col, row, start, end; + struct _VteScreen *screen; + + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + widget = GTK_WIDGET(terminal); + screen = terminal->screen; + + delta = screen->delta; + start = screen->scrolling_region.start + delta; + end = screen->scrolling_region.end + delta; + col = screen->cursor_current.col; + row = screen->cursor_current.row; + + if (screen->scrolling_restricted) { + if (row == end) { + /* If we're at the end of the scrolling region, add a + * line at the bottom to scroll the top off. */ + vte_remove_line_int(terminal, start); + vte_insert_line_int(terminal, end); + /* Invalidate the rows the cursor was on and is on. */ + vte_invalidate_cells(terminal, + 0, terminal->column_count, + start - delta, end - start + 1); + } else { + /* Otherwise, just move the cursor down. */ + screen->cursor_current.row++; + /* Invalidate the rows the cursor was on and is on. */ + vte_invalidate_cells(terminal, + col, 1, + row - delta, 2); + } + } else { + /* Move the cursor down. */ + screen->cursor_current.row++; + + /* Make sure that the bottom row is visible. This usually + * causes the top row to become a history row. */ + rows = MAX(screen->row_data->len, + screen->cursor_current.row + 1); + delta = MAX(0, rows - terminal->row_count); + + /* Invalidate the cells the cursor was on and is on. */ + vte_invalidate_cells(terminal, + col, 1, + row - delta, 2); + + /* Update scroll bar adjustments. */ + vte_terminal_adjust_adjustments(terminal); + + /* Keep the cursor on-screen. */ + if (floor(gtk_adjustment_get_value(terminal->adjustment)) != delta) { + gtk_adjustment_set_value(terminal->adjustment, delta); + } + } +} + +/* Cursor down. */ +static void +vte_sequence_handler_DO(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + vte_sequence_handler_multiple(terminal, match, match_quark, params, + vte_sequence_handler_do); +} + +/* End insert mode. */ +static void +vte_sequence_handler_ei(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->insert = FALSE; +} + +/* Move the cursor to the home position. */ +static void +vte_sequence_handler_ho(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + struct _VteScreen *screen; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + screen->cursor_current.row = screen->delta; + screen->cursor_current.col = 0; +} + +/* Begin insert mode. */ +static void +vte_sequence_handler_im(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->insert = TRUE; +} + +/* Cursor left. */ +static void +vte_sequence_handler_le(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + struct _VteScreen *screen; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + screen->cursor_current.col = MAX(0, screen->cursor_current.col - 1); + vte_invalidate_cells(terminal, + screen->cursor_current.col, 2, + screen->cursor_current.row, 1); +} + +/* Move the cursor left N columns. */ +static void +vte_sequence_handler_LE(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + vte_sequence_handler_multiple(terminal, match, match_quark, params, + vte_sequence_handler_le); +} + +/* Blink on. */ +static void +vte_sequence_handler_mb(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->defaults.blink = 1; +} + +/* Bold on. */ +static void +vte_sequence_handler_md(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->defaults.bold = 1; +} + +/* End modes. */ +static void +vte_sequence_handler_me(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->defaults.blink = 0; + terminal->screen->defaults.half = 0; + terminal->screen->defaults.invisible = 0; + terminal->screen->defaults.reverse = 0; + terminal->screen->defaults.underline = 0; + terminal->screen->defaults.bold = 0; + terminal->screen->defaults.standout = 0; +} + +/* Invisible on. */ +static void +vte_sequence_handler_mk(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->defaults.invisible = 1; +} + +/* Reverse on. */ +static void +vte_sequence_handler_mr(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->defaults.reverse = 1; +} + +/* Cursor right. */ +static void +vte_sequence_handler_nd(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + struct _VteScreen *screen; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + screen->cursor_current.col++; +} + +/* Restore cursor (position). */ +static void +vte_sequence_handler_rc(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + struct _VteScreen *screen; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + screen->cursor_current.col = screen->cursor_saved.col; + screen->cursor_current.row = screen->cursor_saved.row + screen->delta; +} + +/* Cursor right N characters. */ +static void +vte_sequence_handler_RI(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + vte_sequence_handler_multiple(terminal, match, match_quark, params, + vte_sequence_handler_nd); +} + +/* Save cursor (position). */ +static void +vte_sequence_handler_sc(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + struct _VteScreen *screen; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + screen->cursor_saved.col = screen->cursor_current.col; + screen->cursor_saved.row = screen->cursor_current.row - screen->delta; +} + +/* Standout end. */ +static void +vte_sequence_handler_se(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->defaults.standout = 0; +} + +/* Standout start. */ +static void +vte_sequence_handler_so(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->defaults.standout = 1; +} + +/* Tab. FIXME: implement custom tabstop setting and the whole nine yards. */ +static void +vte_sequence_handler_ta(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + long newcol; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + /* Invalidate the cell the cursor is in. */ + vte_invalidate_cells(terminal, + terminal->screen->cursor_current.col, 1, + terminal->screen->cursor_current.row, 1); + /* Calculate which column is the next tab stop. */ + newcol = terminal->screen->cursor_current.col; + do { + newcol++; + } while ((newcol % VTE_TAB_WIDTH) != 0); + /* Wrap to the next line if need be. */ + if (newcol >= terminal->column_count) { + terminal->screen->cursor_current.col = 0; + vte_sequence_handler_do(terminal, match, match_quark, params); + } else { + terminal->screen->cursor_current.col = newcol; + } + /* Invalidate the cell the cursor is in. */ + vte_invalidate_cells(terminal, + terminal->screen->cursor_current.col, 1, + terminal->screen->cursor_current.row, 1); +} + +/* Underline end. */ +static void +vte_sequence_handler_ue(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->defaults.underline = 0; +} + +/* Cursor up, scrolling if need be. */ +static void +vte_sequence_handler_up(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GtkWidget *widget; + long delta, col, row, start, end; + struct _VteScreen *screen; + + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + widget = GTK_WIDGET(terminal); + screen = terminal->screen; + + delta = screen->delta; + col = screen->cursor_current.col; + row = screen->cursor_current.row; + + if (screen->scrolling_restricted) { + start = screen->scrolling_region.start + delta; + end = screen->scrolling_region.end + delta; + if (row == start) { + /* If we're at the top of the scrolling region, add a + * line at the top to scroll the bottom off. */ + vte_remove_line_int(terminal, end); + vte_insert_line_int(terminal, start); + /* Invalidate the scrolling region. */ + vte_invalidate_cells(terminal, + 0, terminal->column_count, + start - delta, end - start + 1); + } else { + /* Otherwise, just move the cursor up. */ + screen->cursor_current.row--; + row = screen->cursor_current.row; + /* Invalidate the cells the cursor was in and is in. */ + vte_invalidate_cells(terminal, + col, 1, + row - delta, 2); + } + } else { + start = delta; + end = delta + terminal->row_count - 1; + if (row == start) { + /* Insert a blank line and remove one from the bottom, + * to simulate a proper scroll without screwing up the + * history. */ + vte_remove_line_int(terminal, end); + vte_insert_line_int(terminal, start); + /* We need to redraw everything here. */ + vte_invalidate_cells(terminal, + 0, terminal->column_count, + 0, terminal->row_count); + } else { + /* Move the cursor up. */ + screen->cursor_current.row--; + row = screen->cursor_current.row; + /* Invalidate the places the cursor is and was. */ + vte_invalidate_cells(terminal, + col, 1, + row - delta, 2); + } + } +} + +/* Cursor up. */ +static void +vte_sequence_handler_UP(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + vte_sequence_handler_multiple(terminal, match, match_quark, params, + vte_sequence_handler_up); +} + +/* Underline start. */ +static void +vte_sequence_handler_us(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->defaults.underline = 1; +} + +/* Cursor invisible. */ +static void +vte_sequence_handler_vi(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->cursor_visible = FALSE; +} + +/* Cursor standout. */ +static void +vte_sequence_handler_vs(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->screen->cursor_visible = TRUE; +} + +/* Handle ANSI color setting and related stuffs (SGR). */ +static void +vte_sequence_handler_character_attributes(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + unsigned int i; + GValue *value; + long param; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + /* The default parameter is zero. */ + param = 0; + /* Step through each numeric parameter. */ + for (i = 0; (params != NULL) && (i < params->n_values); i++) { + /* If this parameter isn't a number, skip it. */ + value = g_value_array_get_nth(params, i); + if (!G_VALUE_HOLDS_LONG(value)) { + continue; + } + param = g_value_get_long(value); + switch (param) { + case 0: + vte_terminal_set_default_attributes(terminal); + break; + case 1: + terminal->screen->defaults.bold = 1; + break; + case 4: + terminal->screen->defaults.underline = 1; + break; + case 5: + terminal->screen->defaults.blink = 1; + break; + case 7: + terminal->screen->defaults.reverse = 1; + break; + case 8: + terminal->screen->defaults.invisible = 1; + break; + case 21: /* one of these is the linux console */ + case 22: /* one of these is ecma, i forget which */ + terminal->screen->defaults.bold = 0; + break; + case 24: + terminal->screen->defaults.underline = 0; + break; + case 25: + terminal->screen->defaults.blink = 0; + break; + case 27: + terminal->screen->defaults.reverse = 0; + break; + case 28: + terminal->screen->defaults.invisible = 0; + break; + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + terminal->screen->defaults.fore = param - 30; + break; + case 38: + /* default foreground, underscore */ + terminal->screen->defaults.fore = 7; + terminal->screen->defaults.underline = 1; + break; + case 39: + /* default foreground, no underscore */ + terminal->screen->defaults.fore = 7; + terminal->screen->defaults.underline = 0; + break; + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + terminal->screen->defaults.back = param - 40; + break; + case 49: + /* default background */ + terminal->screen->defaults.back = 0; + break; + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + terminal->screen->defaults.fore = param - 90; + break; + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + terminal->screen->defaults.back = param - 100; + break; + } + } + /* If we had no parameters, default to the defaults. */ + if (i == 0) { + vte_terminal_set_default_attributes(terminal); + } +} + +/* Clear above the current line. */ +static void +vte_sequence_handler_clear_above_current(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GArray *rowdata; + long delta, i; + struct _VteScreen *screen; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + /* If the cursor is actually on the screen, clear data in the row + * which corresponds to the cursor. */ + delta = screen->delta; + for (i = delta; i < screen->cursor_current.row; i++) { + if (screen->row_data->len > i) { + /* Get the data for the row we're erasing. */ + rowdata = g_array_index(screen->row_data, GArray*, i); + /* Remove it. */ + while (rowdata->len > 0) { + g_array_remove_index(rowdata, rowdata->len - 1); + } + /* Repaint this row. */ + vte_invalidate_cells(terminal, + 0, terminal->column_count, + i - delta, 1); + } + } +} + +/* Clear the entire screen. */ +static void +vte_sequence_handler_clear_screen(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GArray *rowdata; + long delta, i; + struct _VteScreen *screen; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + /* If the cursor is actually on the screen, clear data in the row + * which corresponds to the cursor. */ + delta = screen->delta; + for (i = delta; i < delta + terminal->row_count; i++) { + if (screen->row_data->len > i) { + /* Get the data for the row we're removing. */ + rowdata = g_array_index(screen->row_data, GArray*, i); + /* Remove it. */ + while (rowdata->len > 0) { + g_array_remove_index(rowdata, rowdata->len - 1); + } + /* Repaint this row. */ + vte_invalidate_cells(terminal, + 0, terminal->column_count, + i - delta, 1); + } + } +} + +/* Move the cursor to the given position, 1-based. */ +static void +vte_sequence_handler_cursor_position(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + vte_sequence_handler_offset(terminal, match, match_quark, params, + -1, vte_sequence_handler_cm); +} + +/* Set icon/window titles. */ +static void +vte_sequence_handler_set_icon_title(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GValue *value; + iconv_t conv; + char buf[LINE_MAX]; + char *inbuf, *outbuf; + size_t inbuf_len, outbuf_len; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + /* Get the string parameter's value. */ + value = g_value_array_get_nth(params, 0); + if (value) { + if (G_VALUE_HOLDS_LONG(value)) { + /* Convert the long to a string. */ + snprintf(buf, sizeof(buf), "%ld", + g_value_get_long(value)); + } else + if (G_VALUE_HOLDS_STRING(value)) { + /* Copy the string into the buffer. */ + snprintf(buf, sizeof(buf), "%s", + g_value_get_string(value)); + } else + if (G_VALUE_HOLDS_POINTER(value)) { + /* Convert the wide-character string into a + * multibyte string. */ + conv = iconv_open("UTF-8", "WCHAR_T"); + inbuf = g_value_get_pointer(value); + inbuf_len = wcslen((wchar_t*)inbuf) * sizeof(wchar_t); + memset(buf, 0, sizeof(buf)); + outbuf = buf; + outbuf_len = sizeof(buf) - 1; + if (iconv(conv, &inbuf, &inbuf_len, + &outbuf, &outbuf_len) == -1) { + memset(buf, 0, sizeof(buf)); + } + } else { + return; + } + /* Emit the signal, passing the string. */ + g_signal_emit_by_name(terminal, "set_icon_title", buf); + } +} +static void +vte_sequence_handler_set_window_title(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GValue *value; + iconv_t conv; + char buf[LINE_MAX]; + char *inbuf, *outbuf; + size_t inbuf_len, outbuf_len; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + /* Get the string parameter's value. */ + value = g_value_array_get_nth(params, 0); + if (value) { + if (G_VALUE_HOLDS_LONG(value)) { + /* Convert the long to a string. */ + snprintf(buf, sizeof(buf), "%ld", + g_value_get_long(value)); + } else + if (G_VALUE_HOLDS_STRING(value)) { + /* Copy the string into the buffer. */ + snprintf(buf, sizeof(buf), "%s", + g_value_get_string(value)); + } else + if (G_VALUE_HOLDS_POINTER(value)) { + /* Convert the wide-character string into a + * multibyte string. */ + conv = iconv_open("UTF-8", "WCHAR_T"); + inbuf = g_value_get_pointer(value); + inbuf_len = wcslen((wchar_t*)inbuf) * sizeof(wchar_t); + memset(buf, 0, sizeof(buf)); + outbuf = buf; + outbuf_len = sizeof(buf) - 1; + if (iconv(conv, &inbuf, &inbuf_len, + &outbuf, &outbuf_len) == -1) { + memset(buf, 0, sizeof(buf)); + } + iconv_close(conv); + } else { + return; + } + /* Emit the signal, passing the string. */ + g_signal_emit_by_name(terminal, "set_window_title", buf); + } +} + +/* Set both the window and icon titles to the same string. */ +static void +vte_sequence_handler_set_icon_and_window_title(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + vte_sequence_handler_set_icon_title(terminal, match, + match_quark, params); + vte_sequence_handler_set_window_title(terminal, match, + match_quark, params); +} + +/* Restrict the scrolling region. */ +static void +vte_sequence_handler_set_scrolling_region(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + vte_sequence_handler_offset(terminal, match, match_quark, params, + -1, vte_sequence_handler_cs); +} + +/* Manipulate certain terminal attributes. */ +static void +vte_sequence_handler_decset_internal(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params, + gboolean set) +{ + GValue *value; + long param; + int i; + if ((params == NULL) || (params->n_values == 0)) { + return; + } + for (i = 0; i < params->n_values; i++) { + value = g_value_array_get_nth(params, i); + if (!G_VALUE_HOLDS_LONG(value)) { + continue; + } + param = g_value_get_long(value); + switch (param) { + case 1: + /* Set the application keypad. */ + terminal->keypad = set ? + VTE_KEYPAD_NORMAL : + VTE_KEYPAD_APPLICATION; + break; + case 2: + /* FIXME: reset alternate character sets to + * ASCII. */ + break; + case 3: + /* FIXME: set 132 (reset to 80) column mode. */ + break; + case 4: + /* FIXME: set or unset smooth-scrolling. */ + break; + case 5: + /* normal or reverse video. */ + terminal->screen->defaults.reverse = set; + break; + case 6: + /* FIXME: origin or normal cursor mode. */ + break; + case 7: + /* FIXME: set or unset wraparound mode. */ + break; + case 8: + /* FIXME: set or unset autorepeat keys. */ + break; + case 9: + /* FIXME: send mouse X and Y on button. */ + break; + case 38: + /* FIXME: Tektronix/Xterm mode. */ + break; + case 40: + /* FIXME: Allow/disallow 80/132 column mode. */ + break; + case 41: + /* FIXME: more(1) fix. */ + break; + case 44: + /* FIXME: set/unset margin bell. */ + break; + case 45: + /* FIXME: set/unset reverse-wraparound mode. */ + break; + case 46: + /* FIXME(?): enable/disable logging. */ + break; + case 47: + /* Set or restore alternate screen. */ + terminal->screen = set ? + &terminal->alternate_screen : + &terminal->normal_screen; + /* Force the screen to be redrawn. */ + vte_invalidate_cells(terminal, + 0, terminal->column_count, + 0, terminal->row_count); + /* Fixup the scrollbars. */ + vte_terminal_adjust_adjustments(terminal); + break; + case 1000: + /* FIXME: send mouse X and Y on press and + * release. */ + break; + case 1001: + /* FIXME: use (or not) hilite mouse tracking. */ + break; + default: + break; + } + } +} + +/* Set the application or normal keypad. */ +static void +vte_sequence_handler_application_keypad(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->keypad = VTE_KEYPAD_APPLICATION; +} + +static void +vte_sequence_handler_normal_keypad(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + terminal->keypad = VTE_KEYPAD_NORMAL; +} + +/* Set certain terminal attributes. */ +static void +vte_sequence_handler_decset(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + vte_sequence_handler_decset_internal(terminal, match, match_quark, + params, TRUE); +} + +/* Unset certain terminal attributes. */ +static void +vte_sequence_handler_decreset(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + vte_sequence_handler_decset_internal(terminal, match, match_quark, + params, FALSE); +} + +/* Erase certain lines in the display. */ +static void +vte_sequence_handler_erase_in_display(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GValue *value; + long param; + int i; + /* The default parameter is 0. */ + param = 0; + /* Pull out a parameter. */ + for (i = 0; (params != NULL) && (i < params->n_values); i++) { + value = g_value_array_get_nth(params, i); + if (!G_VALUE_HOLDS_LONG(value)) { + continue; + } + param = g_value_get_long(value); + } + /* Clear the right area. */ + switch (param) { + case 0: + /* Clear below the current line. */ + vte_sequence_handler_cd(terminal, NULL, 0, NULL); + break; + case 1: + /* Clear above the current line. */ + vte_sequence_handler_clear_above_current(terminal, + NULL, + 0, + NULL); + break; + case 2: + /* Clear the entire screen. */ + vte_sequence_handler_clear_screen(terminal, + NULL, + 0, + NULL); + break; + default: + break; + } +} + +/* Erase certain parts of the current line in the display. */ +static void +vte_sequence_handler_erase_in_line(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GValue *value; + long param; + int i; + /* The default parameter is 0. */ + param = 0; + /* Pull out a parameter. */ + for (i = 0; (params != NULL) && (i < params->n_values); i++) { + value = g_value_array_get_nth(params, i); + if (!G_VALUE_HOLDS_LONG(value)) { + continue; + } + param = g_value_get_long(value); + } + /* Clear the right area. */ + switch (param) { + case 0: + /* Clear to end of the line. */ + vte_sequence_handler_ce(terminal, NULL, 0, NULL); + break; + case 1: + /* Clear to start of the line. */ + vte_sequence_handler_cb(terminal, NULL, 0, NULL); + break; + case 2: + /* Clear the entire line. */ + vte_sequence_handler_clear_current_line(terminal, + NULL, 0, NULL); + break; + default: + break; + } +} + +/* Insert a certain number of lines below the current cursor. */ +static void +vte_sequence_handler_insert_lines(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GValue *value; + struct _VteScreen *screen; + long param, delta, end, row; + int i; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + /* The default is one. */ + param = 1; + /* Extract any parameters. */ + if ((params != NULL) && (params->n_values > 0)) { + value = g_value_array_get_nth(params, 0); + param = g_value_get_long(value); + } + delta = screen->delta; + row = screen->cursor_current.row; + end = screen->scrolling_region.end + screen->delta; + /* Insert the new lines at the cursor. */ + for (i = 0; i < param; i++) { + /* Clear lines off the bottom of the scrolling region. */ + if (screen->scrolling_restricted) { + /* Clear a line off the end of the region. */ + vte_remove_line_int(terminal, end); + } + vte_insert_line_int(terminal, row); + } + /* Refresh the modified area. */ + vte_invalidate_cells(terminal, + 0, terminal->column_count, + row - delta, end - row + 1); +} + +/* Delete certain lines from the scrolling region. */ +static void +vte_sequence_handler_delete_lines(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + GValue *value; + struct _VteScreen *screen; + long param, delta, end, row; + int i; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + screen = terminal->screen; + /* The default is one. */ + param = 1; + /* Extract any parameters. */ + if ((params != NULL) && (params->n_values > 0)) { + value = g_value_array_get_nth(params, 0); + param = g_value_get_long(value); + } + /* Clear the lines which we need to clear. */ + delta = screen->delta; + row = screen->cursor_current.row; + end = screen->delta + screen->scrolling_region.end; + /* Clear them from below the current cursor. */ + for (i = 0; i < param; i++) { + /* Insert any new empty lines. */ + if (screen->scrolling_restricted) { + vte_insert_line_int(terminal, end); + } + /* Remove the line at the top of the area. */ + vte_remove_line_int(terminal, row); + } + /* Refresh the modified area. */ + vte_invalidate_cells(terminal, + 0, terminal->column_count, + row - delta, end - row + 1); +} + +/* Index. Move the cursor down a row, and if it's in a scrolling region, + * scroll to keep it on the screen. */ +static void +vte_sequence_handler_index(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + vte_sequence_handler_DO(terminal, match, match_quark, params); +} + +/* Reverse index. Move the cursor up a row, and if it's in a scrolling + * region, scroll to keep it on the screen. */ +static void +vte_sequence_handler_reverse_index(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + vte_sequence_handler_UP(terminal, match, match_quark, params); +} + +/* Set the terminal encoding. */ +static void +vte_sequence_handler_iso8859_1(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + vte_terminal_set_encoding(terminal, "ISO-8859-1"); +} + +static void +vte_sequence_handler_utf_8(VteTerminal *terminal, + const char *match, + GQuark match_quark, + GValueArray *params) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + vte_terminal_set_encoding(terminal, "UTF-8"); +} + +/* The table of handlers. Primarily used at initialization time. */ +static struct { + const char *code; + VteTerminalSequenceHandler handler; +} vte_sequence_handlers[] = { + {"!1", NULL}, + {"!2", NULL}, + {"!3", NULL}, + + {"#1", NULL}, + {"#2", NULL}, + {"#3", NULL}, + {"#4", NULL}, + + {"%1", NULL}, + {"%2", NULL}, + {"%3", NULL}, + {"%4", NULL}, + {"%5", NULL}, + {"%6", NULL}, + {"%7", NULL}, + {"%8", NULL}, + {"%9", NULL}, + {"%a", NULL}, + {"%b", NULL}, + {"%c", NULL}, + {"%d", NULL}, + {"%e", NULL}, + {"%f", NULL}, + {"%g", NULL}, + {"%h", NULL}, + {"%i", NULL}, + {"%j", NULL}, + + {"&0", NULL}, + {"&1", NULL}, + {"&2", NULL}, + {"&3", NULL}, + {"&4", NULL}, + {"&5", NULL}, + {"&6", NULL}, + {"&7", NULL}, + {"&8", NULL}, + {"&9", NULL}, + + {"*0", NULL}, + {"*1", NULL}, + {"*2", NULL}, + {"*3", NULL}, + {"*4", NULL}, + {"*5", NULL}, + {"*6", NULL}, + {"*7", NULL}, + {"*8", NULL}, + {"*9", NULL}, + + {"@0", NULL}, + {"@1", NULL}, + {"@2", NULL}, + {"@3", NULL}, + {"@4", NULL}, + {"@5", NULL}, + {"@6", NULL}, + {"@7", NULL}, + {"@8", NULL}, + {"@9", NULL}, + + {"al", vte_sequence_handler_al}, + {"AL", vte_sequence_handler_AL}, + {"ac", NULL}, + {"ae", NULL}, + {"as", NULL}, + + {"bc", NULL}, + {"bl", vte_sequence_handler_bl}, + {"bt", NULL}, + + {"cb", vte_sequence_handler_cb}, + {"cc", NULL}, + {"cd", vte_sequence_handler_cd}, + {"ce", vte_sequence_handler_ce}, + {"ch", vte_sequence_handler_ch}, + {"cl", vte_sequence_handler_cl}, + {"cm", vte_sequence_handler_cm}, + {"cr", vte_sequence_handler_cr}, + {"cs", vte_sequence_handler_cs}, + {"ct", NULL}, + {"cv", vte_sequence_handler_cv}, + + {"dc", NULL}, + {"DC", NULL}, + {"dl", vte_sequence_handler_dl}, + {"DL", vte_sequence_handler_DL}, + {"dm", NULL}, + {"do", vte_sequence_handler_do}, + {"DO", vte_sequence_handler_DO}, + {"ds", NULL}, + + {"eA", NULL}, + {"ec", NULL}, + {"ed", NULL}, + {"ei", vte_sequence_handler_ei}, + + {"ff", NULL}, + {"fs", NULL}, + {"F1", NULL}, + {"F2", NULL}, + {"F3", NULL}, + {"F4", NULL}, + {"F5", NULL}, + {"F6", NULL}, + {"F7", NULL}, + {"F8", NULL}, + {"F9", NULL}, + {"FA", NULL}, + {"FB", NULL}, + {"FC", NULL}, + {"FD", NULL}, + {"FE", NULL}, + {"FF", NULL}, + {"FG", NULL}, + {"FH", NULL}, + {"FI", NULL}, + {"FJ", NULL}, + {"FK", NULL}, + {"FL", NULL}, + {"FM", NULL}, + {"FN", NULL}, + {"FO", NULL}, + {"FP", NULL}, + {"FQ", NULL}, + {"FR", NULL}, + {"FS", NULL}, + {"FT", NULL}, + {"FU", NULL}, + {"FV", NULL}, + {"FW", NULL}, + {"FX", NULL}, + {"FY", NULL}, + {"FZ", NULL}, + + {"Fa", NULL}, + {"Fb", NULL}, + {"Fc", NULL}, + {"Fd", NULL}, + {"Fe", NULL}, + {"Ff", NULL}, + {"Fg", NULL}, + {"Fh", NULL}, + {"Fi", NULL}, + {"Fj", NULL}, + {"Fk", NULL}, + {"Fl", NULL}, + {"Fm", NULL}, + {"Fn", NULL}, + {"Fo", NULL}, + {"Fp", NULL}, + {"Fq", NULL}, + {"Fr", NULL}, + + {"hd", NULL}, + {"ho", vte_sequence_handler_ho}, + {"hu", NULL}, + + {"i1", NULL}, + {"i3", NULL}, + + {"is", NULL}, + {"ic", NULL}, + {"IC", NULL}, + {"if", NULL}, + {"im", vte_sequence_handler_im}, + {"ip", NULL}, + {"iP", NULL}, + + {"K1", NULL}, + {"K2", NULL}, + {"K3", NULL}, + {"K4", NULL}, + {"K5", NULL}, + + {"k0", NULL}, + {"k1", NULL}, + {"k2", NULL}, + {"k3", NULL}, + {"k4", NULL}, + {"k5", NULL}, + {"k6", NULL}, + {"k7", NULL}, + {"k8", NULL}, + {"k9", NULL}, + {"k;", NULL}, + {"ka", NULL}, + {"kA", NULL}, + {"kb", NULL}, + {"kB", NULL}, + {"kC", NULL}, + {"kd", NULL}, + {"kD", NULL}, + {"ke", NULL}, + {"kE", NULL}, + {"kF", NULL}, + {"kh", NULL}, + {"kH", NULL}, + {"kI", NULL}, + {"kl", NULL}, + {"kL", NULL}, + {"kM", NULL}, + {"kN", NULL}, + {"kP", NULL}, + {"kr", NULL}, + {"kR", NULL}, + {"ks", NULL}, + {"kS", NULL}, + {"kt", NULL}, + {"kT", NULL}, + {"ku", NULL}, + + {"l0", NULL}, + {"l1", NULL}, + {"l2", NULL}, + {"l3", NULL}, + {"l4", NULL}, + {"l5", NULL}, + {"l6", NULL}, + {"l7", NULL}, + {"l8", NULL}, + {"l9", NULL}, + + {"la", NULL}, + {"le", vte_sequence_handler_le}, + {"LE", vte_sequence_handler_LE}, + {"LF", NULL}, + {"ll", NULL}, + {"LO", NULL}, + + {"mb", vte_sequence_handler_mb}, + {"MC", NULL}, + {"md", vte_sequence_handler_md}, + {"me", vte_sequence_handler_me}, + {"mh", NULL}, + {"mk", vte_sequence_handler_mk}, + {"ML", NULL}, + {"mm", NULL}, + {"mo", NULL}, + {"mp", NULL}, + {"mr", vte_sequence_handler_mr}, + {"MR", NULL}, + + {"nd", NULL}, + {"nw", NULL}, + + {"pc", NULL}, + {"pf", NULL}, + {"pk", NULL}, + {"pl", NULL}, + {"pn", NULL}, + {"po", NULL}, + {"pO", NULL}, + {"ps", NULL}, + {"px", NULL}, + + {"r1", NULL}, + {"r2", NULL}, + {"r3", NULL}, + + {"..rp", NULL}, + {"RA", NULL}, + {"rc", vte_sequence_handler_rc}, + {"rf", NULL}, + {"RF", NULL}, + {"RI", vte_sequence_handler_RI}, + {"rp", NULL}, + {"rP", NULL}, + {"rs", NULL}, + {"RX", NULL}, + + {"s0", NULL}, + {"s1", NULL}, + {"s2", NULL}, + {"s3", NULL}, + + {"..sa", NULL}, + {"sa", NULL}, + {"SA", NULL}, + {"sc", vte_sequence_handler_sc}, + {"se", vte_sequence_handler_se}, + {"sf", vte_sequence_handler_do}, + {"SF", vte_sequence_handler_DO}, + {"so", vte_sequence_handler_so}, + {"sr", vte_sequence_handler_up}, + {"SR", vte_sequence_handler_UP}, + {"st", NULL}, + {"SX", NULL}, + + {"ta", vte_sequence_handler_ta}, + {"te", NULL}, + {"ti", NULL}, + {"ts", NULL}, + + {"uc", NULL}, + {"ue", vte_sequence_handler_ue}, + {"up", vte_sequence_handler_up}, + {"UP", vte_sequence_handler_UP}, + {"us", vte_sequence_handler_us}, + + {"vb", NULL}, + {"ve", NULL}, + {"vi", vte_sequence_handler_vi}, + {"vs", vte_sequence_handler_vs}, + + {"wi", NULL}, + + {"XF", NULL}, + + {"character-attributes", vte_sequence_handler_character_attributes}, + + {"cursor-backward", vte_sequence_handler_le}, + {"cursor-forward", vte_sequence_handler_RI}, + {"cursor-up", vte_sequence_handler_UP}, + {"cursor-down", vte_sequence_handler_DO}, + {"cursor-position", vte_sequence_handler_cursor_position}, + + {"set-icon-title", + vte_sequence_handler_set_icon_title}, + {"set-window-title", + vte_sequence_handler_set_window_title}, + {"set-icon-and-window-title", + vte_sequence_handler_set_icon_and_window_title}, + + {"application-keypad", vte_sequence_handler_application_keypad}, + {"normal-keypad", vte_sequence_handler_normal_keypad}, + {"decset", vte_sequence_handler_decset}, + {"decreset", vte_sequence_handler_decreset}, + {"save-cursor", vte_sequence_handler_sc}, + {"restore-cursor", vte_sequence_handler_rc}, + {"normal-keypad", vte_sequence_handler_normal_keypad}, + {"application-keypad", vte_sequence_handler_application_keypad}, + {"erase-in-display", vte_sequence_handler_erase_in_display}, + {"erase-in-line", vte_sequence_handler_erase_in_line}, + {"set-scrolling-region", vte_sequence_handler_set_scrolling_region}, + {"insert-lines", vte_sequence_handler_insert_lines}, + {"delete-lines", vte_sequence_handler_delete_lines}, + {"index", vte_sequence_handler_index}, + {"reverse-index", vte_sequence_handler_reverse_index}, + {"iso8859-1-character-set", vte_sequence_handler_iso8859_1}, + {"utf-8-character-set", vte_sequence_handler_utf_8}, + +}; + +/* Create the basic widget. This more or less creates and initializes a + * GtkWidget and clears out the rest of the data which is specific to our + * widget class. */ +GtkWidget * +vte_terminal_new(void) +{ + return GTK_WIDGET(g_object_new(vte_terminal_get_type(), NULL)); +} + +/* Reset palette defaults for character colors. */ +static void +vte_terminal_set_default_palette(VteTerminal *terminal) +{ + int i; + XColor color; + GtkWidget *widget; + Display *display; + GdkColormap *gcolormap; + Colormap colormap; + int bright, red, green, blue; + + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + if (terminal->palette_initialized) { + return; + } + memset(&color, 0, sizeof(color)); + + widget = NULL; + display = NULL; + gcolormap = NULL; + colormap = 0; + + /* Initialize each item in the palette. */ + for (i = 0; i < G_N_ELEMENTS(terminal->palette); i++) { + /* Get X11 attributes used by GDK for the widget. */ + if (widget == NULL) { + widget = GTK_WIDGET(terminal); + display = GDK_DISPLAY(); + gcolormap = gtk_widget_get_colormap(widget); + colormap = gdk_x11_colormap_get_xcolormap(gcolormap); + } + + /* Make the difference between normal and bright about three + * fourths of the total available brightness. */ + bright = (i & 8) ? 0x3fff : 0; + blue = (i & 4) ? 0xc000 : 0; + green = (i & 2) ? 0xc000 : 0; + red = (i & 1) ? 0xc000 : 0; + + /* Allocate a color from the colormap. */ + color.pixel = i; + color.red = bright + red; + color.green = bright + green; + color.blue = bright + blue; + + if (XAllocColor(display, colormap, &color)) { + terminal->palette[i] = color.pixel; + } + } + terminal->palette_initialized = TRUE; +} + +/* Insert a single character into the stored data array. */ +static void +vte_terminal_insert_char(GtkWidget *widget, wchar_t c) +{ + VteTerminal *terminal; + GArray *array; + struct vte_charcell cell, *pcell; + int columns, i; + long delta, col; + struct _VteScreen *screen; + + g_return_if_fail(widget != NULL); + g_return_if_fail(VTE_IS_TERMINAL(widget)); + terminal = VTE_TERMINAL(widget); + screen = terminal->screen; + + /* Make sure we have enough rows to hold this data. */ + while (screen->cursor_current.row >= screen->row_data->len) { + array = vte_new_row_data(); + g_array_append_val(screen->row_data, array); + } + + /* Get a handle on the array for the insertion row. */ + array = g_array_index(screen->row_data, + GArray*, + screen->cursor_current.row); + + /* Figure out how many columns this character should occupy. */ + columns = wcwidth(c); + + /* Read the deltas. */ + delta = floor(gtk_adjustment_get_value(terminal->adjustment)); + + for (i = 0; i < columns; i++) { + col = terminal->screen->cursor_current.col; + + /* Make sure we have enough columns in this row. */ + if (array->len <= col) { + /* Add enough characters. */ + memset(&cell, 0, sizeof(cell)); + cell.c = ' '; + cell.columns = 1; + cell.fore = 7; + cell.back = 0; + while (array->len < col) { + g_array_append_val(array, cell); + } + /* Add one more cell to the end of the line to get + * it into the column, and use it. */ + g_array_append_val(array, cell); + pcell = &g_array_index(array, + struct vte_charcell, + col); + } else { + /* If we're in insert mode, insert a new cell here + * and use it. */ + if (screen->insert) { + memset(&cell, 0, sizeof(cell)); + cell.c = ' '; + cell.columns = 1; + cell.fore = 7; + cell.back = 0; + g_array_insert_val(array, col, cell); + pcell = &g_array_index(array, + struct vte_charcell, + col); + } else { + /* We're in overtype mode, so use the existing + * character. */ + pcell = &g_array_index(array, + struct vte_charcell, + col); + } + } + + /* Initialize the character cell with the proper data. */ + pcell->c = c; + pcell->columns = (i == 0) ? columns : 0; + pcell->fore = terminal->screen->defaults.fore; + pcell->back = terminal->screen->defaults.back; + pcell->reverse = terminal->screen->defaults.reverse; + pcell->invisible = terminal->screen->defaults.invisible; + pcell->half = terminal->screen->defaults.half; + pcell->underline = terminal->screen->defaults.underline; + pcell->bold = terminal->screen->defaults.bold; + pcell->standout = terminal->screen->defaults.standout; + + /* Signal that this part of the window needs drawing. */ + if (terminal->screen->insert) { + vte_invalidate_cells(terminal, + screen->cursor_current.col - 1, + terminal->column_count - screen->cursor_current.col + 1, + screen->cursor_current.row - delta, + 2); + } else { + vte_invalidate_cells(terminal, + screen->cursor_current.col - 1, + 3, + screen->cursor_current.row - delta, + 2); + } + + /* And take a step to the to the right. We invalidated this + * part of the screen already, so no need to do it again. */ + screen->cursor_current.col++; + } +} + +static void +display_control_sequence(const char *name, GValueArray *params) +{ + /* Display the control sequence with its parameters, to + * help me debug this thing. I don't have all of the + * sequences implemented yet. */ + int i; + long l; + const char *s; + const wchar_t *w; + GValue *value; + fprintf(stderr, "%s(", name); + if (params != NULL) { + for (i = 0; i < params->n_values; i++) { + value = g_value_array_get_nth(params, i); + if (i > 0) { + fprintf(stderr, ", "); + } + if (G_VALUE_HOLDS_LONG(value)) { + l = g_value_get_long(value); + fprintf(stderr, "%ld", l); + } else + if (G_VALUE_HOLDS_STRING(value)) { + s = g_value_get_string(value); + fprintf(stderr, "\"%s\"", s); + } else + if (G_VALUE_HOLDS_POINTER(value)) { + w = g_value_get_pointer(value); + fprintf(stderr, "\"%ls\"", w); + } + } + } + fprintf(stderr, ")\n"); +} + +/* Handle a terminal control sequence and its parameters. */ +static void +vte_terminal_handle_sequence(GtkWidget *widget, + const char *match_s, + GQuark match, + GValueArray *params) +{ + VteTerminal *terminal; + VteTerminalSequenceHandler handler; + long delta; + struct _VteScreen *screen; + + g_return_if_fail(widget != NULL); + g_return_if_fail(VTE_IS_TERMINAL(widget)); + terminal = VTE_TERMINAL(widget); + screen = terminal->screen; + + /* Read the deltas. */ + delta = floor(gtk_adjustment_get_value(terminal->adjustment)); + + /* Signal that the cursor's current position needs redrawing. */ + vte_invalidate_cells(terminal, + screen->cursor_current.col - 1, 3, + screen->cursor_current.row - delta, 1); + + /* Find the handler for this control sequence. */ + handler = g_tree_lookup(terminal->sequences, GINT_TO_POINTER(match)); +#ifdef VTE_DEBUG + display_control_sequence(match_s, params); +#endif + if (handler != NULL) { + /* Let the handler handle it. */ + handler(terminal, match_s, match, params); + } else { + g_warning("No handler for control sequence `%s' defined.\n", + match_s); + } + + /* We probably need to update the cursor's new position, too. */ + vte_invalidate_cells(terminal, + screen->cursor_current.col - 1, 3, + screen->cursor_current.row - delta, 1); +} + +/* Handle an EOF from the client. */ +static void +vte_terminal_eof(gint source, gpointer data) +{ + VteTerminal *terminal; + + g_return_if_fail(VTE_IS_TERMINAL(data)); + terminal = VTE_TERMINAL(data); + + /* Stop reading input. */ + gtk_input_remove(source); + terminal->pty_input = -1; + + /* Emit a signal that we read an EOF. */ + g_signal_emit_by_name(terminal, "eof"); +} + +/* Read and handle data from the child. */ +static gboolean +vte_terminal_io_read(GIOChannel *channel, + GdkInputCondition condition, + gpointer data) +{ + GValueArray *params; + VteTerminal *terminal; + GtkWidget *widget; + char *buf; + size_t bufsize; + char *inbuf, *outbuf; + size_t inbuf_len, outbuf_len; + wchar_t wbuf[LINE_MAX], c; + int i, j, wcount, bcount, fd; + const char *match; + GQuark quark; + gboolean leave_open = TRUE; + + widget = GTK_WIDGET(data); + terminal = VTE_TERMINAL(data); + + /* Allocate a buffer to hold both existing data and new data. */ + bufsize = terminal->n_narrow_pending + LINE_MAX; + buf = g_malloc0(bufsize); + if (terminal->n_narrow_pending > 0) { + memcpy(buf, terminal->narrow_pending, + terminal->n_narrow_pending); + g_free(terminal->narrow_pending); + terminal->n_narrow_pending = 0; + } + + /* Read some more data in. */ + fd = g_io_channel_unix_get_fd(channel); + bcount = read(fd, buf + terminal->n_narrow_pending, + bufsize - terminal->n_narrow_pending); + + /* Convert any read bytes into wide characters. FIXME: handle + * cases where the encoding changes mid-stream. */ + if (bcount > 0) { + inbuf = buf; + inbuf_len = terminal->n_narrow_pending + bcount; + outbuf = (char*)wbuf; + outbuf_len = sizeof(wbuf); + if (iconv(terminal->pending_conv, + &inbuf, &inbuf_len, + &outbuf, &outbuf_len) != -1) { + /* Save the resulting bytes as the narrow pending data + * queue. */ + terminal->n_narrow_pending = inbuf_len; + terminal->narrow_pending = g_malloc(inbuf_len); + memcpy(terminal->narrow_pending, inbuf, inbuf_len); + wcount = (outbuf - (char*)wbuf) / sizeof(wchar_t); + } else { + wcount = 0; + } + } else { + wcount = 0; + } + + /* Add the read wchars to the pending array one at a time, then try + * to handle the entire array. */ + terminal->pending = g_realloc(terminal->pending, + (terminal->n_pending + wcount) * + sizeof(wchar_t)); + for (i = 0; i < wcount; i++) { + terminal->pending[terminal->n_pending] = wbuf[i]; + terminal->n_pending++; + /* Check if the contents of the array is a control string or + * not. The match function returns NULL if the data is not + * a control sequence, the name of the control sequence if it + * is one, and an empty string if it might be the beginning of + * a control sequence. */ + vte_trie_match(terminal->trie, + terminal->pending, + terminal->n_pending, + &match, + &quark, + ¶ms); + if (match == NULL) { + /* No interesting stuff in the buffer, so dump the + * accumulated data out. */ + for (j = 0; j < terminal->n_pending; j++) { + c = terminal->pending[j]; +#ifdef VTE_DEBUG + if (c > 127) { + fprintf(stderr, "%ld = ", (long) c); + } + if (c < 32) { + fprintf(stderr, "^%lc\n", + (wint_t)c + 64); + } else { + fprintf(stderr, "`%lc'\n", (wint_t)c); + } +#endif + vte_terminal_insert_char(widget, c); + } + terminal->n_pending = 0; + } else if (match[0] != '\0') { + /* A terminal sequence. */ + vte_terminal_handle_sequence(GTK_WIDGET(terminal), + match, + quark, + params); + if (params != NULL) { + g_value_array_free(params); + } + terminal->n_pending = 0; + } else { + /* It's a zero-length string, so we need to wait for + * more data from the client. */ + } + } + + /* Handle error conditions. */ + if (bcount <= 0) { + if (bcount == 0) { + /* EOF */ + g_source_remove(terminal->pty_input); + vte_terminal_eof(terminal->pty_input, data); + } else { + switch (errno) { + case EIO: + /* Fake EOF. */ + g_source_remove(terminal->pty_input); + vte_terminal_eof(terminal->pty_input, + data); + leave_open = FALSE; + break; + case EAGAIN: + case EBUSY: + break; + default: + g_warning("Error reading from child: " + "%s.\n", strerror(errno)); + } + } + } + + return leave_open; +} + +/* Send some data to the child. */ +static void +vte_terminal_send(VteTerminal *terminal, const guchar *data, size_t length) +{ + size_t count; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + count = write(terminal->pty_master, data, length); + if (count != length) { + g_warning("%s sending data to child\n", strerror(errno)); + } +} + +/* Read and handle a keypress event. */ +static gint +vte_terminal_key_press(GtkWidget *widget, GdkEventKey *event) +{ + VteTerminal *terminal; + GdkModifierType modifiers; + struct vte_termcap *termcap; + const char *tterm; + unsigned char *normal = NULL; + size_t normal_length = 0; + unsigned char *special = NULL; + + g_return_val_if_fail(widget != NULL, FALSE); + g_return_val_if_fail(VTE_IS_TERMINAL(widget), FALSE); + terminal = VTE_TERMINAL(widget); + + if (event->type == GDK_KEY_PRESS) { + /* Read the modifiers. */ + if (gdk_event_get_state((GdkEvent*)event, + &modifiers) == FALSE) { + modifiers = 0; + } + /* Map the key to a sequence name if we can. */ + switch (event->keyval) { +#if 0 + case GDK_BackSpace: + special = "kb"; + break; +#endif + case GDK_Delete: + special = "kD"; + break; + case GDK_KP_Home: + case GDK_Home: + special = "kh"; + break; + case GDK_KP_End: + case GDK_End: + special = "@7"; + break; + case GDK_F1: + special = "k1"; + break; + case GDK_F2: + special = "k2"; + break; + case GDK_F3: + special = "k3"; + break; + case GDK_F4: + special = "k4"; + break; + case GDK_F5: + special = "k5"; + break; + case GDK_F6: + special = "k6"; + break; + case GDK_F7: + special = "k7"; + break; + case GDK_F8: + special = "k8"; + break; + case GDK_F9: + special = "k9"; + break; + case GDK_F10: + special = "k0"; + break; + case GDK_F11: + special = "k;"; + break; + /* Cursor keys. */ + case GDK_KP_Up: + case GDK_Up: + special = "ku"; + break; + case GDK_KP_Down: + case GDK_Down: + special = "kd"; + break; + case GDK_KP_Left: + case GDK_Left: + special = "kl"; + break; + case GDK_KP_Right: + case GDK_Right: + special = "kr"; + break; + case GDK_Page_Up: + if (modifiers & GDK_SHIFT_MASK) { + fprintf(stderr, "Shift-PgUp\n"); + } else { + special = "kP"; + } + break; + case GDK_Page_Down: + if (modifiers & GDK_SHIFT_MASK) { + fprintf(stderr, "Shift-PgDn\n"); + } else { + special = "kN"; + } + break; + case GDK_Tab: + if (modifiers & GDK_SHIFT_MASK) { + special = "kB"; + } else { + normal = g_strdup("\t"); + normal_length = 1; + } + break; + /* The default is to just send the string. */ + default: + if (event->string != NULL) { + normal = g_strdup(event->string); + normal_length = strlen(normal); + } + break; + } + /* If we got normal characters, send them to the child. */ + if (normal != NULL) { + vte_terminal_send(terminal, normal, normal_length); + g_free(normal); + normal = NULL; + } + /* If the key maps to characters, send them to the child. */ + if (special != NULL) { + termcap = terminal->termcap; + tterm = terminal->terminal; + normal = vte_termcap_find_string_length(termcap, + tterm, + special, + &normal_length); + special = g_strdup_printf(normal, 1); + vte_terminal_send(terminal, special, strlen(special)); + g_free(special); + } + return TRUE; + } + return FALSE; +} + +/* Read and handle a pointing device buttonpress event. */ +static gint +vte_terminal_button_press(GtkWidget *widget, GdkEventButton *event) +{ + fprintf(stderr, "button pressed\n"); + if (event->type == GDK_BUTTON_PRESS) { + if (!GTK_WIDGET_HAS_FOCUS(widget)) { + gtk_widget_grab_focus(widget); + } + return TRUE; + } + return FALSE; +} + +/* Handle receiving or losing focus. */ +static gint +vte_terminal_focus_in(GtkWidget *widget, GdkEventFocus *event) +{ + g_return_val_if_fail(GTK_IS_WIDGET(widget), 0); + GTK_WIDGET_SET_FLAGS(widget, GTK_HAS_FOCUS); + return TRUE; +} + +static gint +vte_terminal_focus_out(GtkWidget *widget, GdkEventFocus *event) +{ + g_return_val_if_fail(GTK_WIDGET(widget), 0); + GTK_WIDGET_UNSET_FLAGS(widget, GTK_HAS_FOCUS); + return TRUE; +} + +/* Set the fontset used for rendering text into the widget. */ +static void +vte_terminal_set_fontset(VteTerminal *terminal, const char *xlfds) +{ + guint width, height, ascent, descent; + GtkWidget *widget; + XFontStruct **font_struct_list, font_struct; + char **missing_charset_list, *def_string; + int missing_charset_count; + char **font_name_list; + + g_return_if_fail(terminal != NULL); + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + widget = GTK_WIDGET(terminal); + + /* Choose default font metrics. I like '10x20' as a terminal font. */ + if (xlfds == NULL) { + xlfds = "10x20"; + } + width = 10; + height = 20; + descent = 0; + ascent = height - descent; + + /* Load the font set, freeing another one if we loaded one before. */ + if (terminal->fontset) { + XFreeFontSet(GDK_DISPLAY(), terminal->fontset); + } + terminal->fontset = XCreateFontSet(GDK_DISPLAY(), + xlfds, + &missing_charset_list, + &missing_charset_count, + &def_string); + g_return_if_fail(terminal->fontset != NULL); + XFreeStringList(missing_charset_list); + missing_charset_list = NULL; + /* Read the font metrics. */ + if (XFontsOfFontSet(terminal->fontset, + &font_struct_list, + &font_name_list)) { + if (font_struct_list) { + if (font_struct_list[0]) { + font_struct = font_struct_list[0][0]; + width = font_struct.max_bounds.width; + ascent = font_struct.max_bounds.ascent; + descent = font_struct.max_bounds.descent; + height = ascent + descent; + } + } + XFreeStringList(font_name_list); + font_name_list = NULL; + } + + /* Now save the values. */ + terminal->char_width = width; + terminal->char_height = height; + terminal->char_ascent = ascent; + terminal->char_descent = descent; + + /* Emit a signal that the font changed. */ + g_signal_emit_by_name(terminal, + "char_size_changed", + terminal->char_width, + terminal->char_height); +} + +/* A comparison function which helps sort quarks. */ +static gint +vte_compare_direct(gconstpointer a, gconstpointer b) +{ + return GPOINTER_TO_INT(a) - GPOINTER_TO_INT(b); +} + +/* Read and refresh our perception of the size of the PTY. */ +static void +vte_terminal_pty_size_get(VteTerminal *terminal) +{ + struct winsize size; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + g_return_if_fail(terminal->pty_master != -1); + /* Use an ioctl to read the size of the terminal. */ + if (ioctl(terminal->pty_master, TIOCGWINSZ, &size) != 0) { + g_warning("Error reading PTY size, assuming defaults: %s.", + strerror(errno)); + terminal->row_count = 10; + terminal->column_count = 60; + } else { + terminal->row_count = size.ws_row; + terminal->column_count = size.ws_col; + } +} + +/* Set the size of the PTY. */ +static void +vte_terminal_pty_size_set(VteTerminal *terminal, guint columns, guint rows) +{ + struct winsize size; + size.ws_row = rows; + size.ws_col = columns; + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + g_return_if_fail(terminal->pty_master != -1); + /* Try to set the terminal size. */ + if (ioctl(terminal->pty_master, TIOCSWINSZ, &size) != 0) { + g_warning("Error setting PTY size: %s.", strerror(errno)); + } + /* Read the terminal size, in case something went awry. */ + vte_terminal_pty_size_get(terminal); +} + +/* Redraw the widget. */ +static void +vte_handle_scroll(VteTerminal *terminal) +{ + long dy, adj; + GtkWidget *widget; + struct _VteScreen *screen; + /* Sanity checks. */ + g_return_if_fail(GTK_IS_WIDGET(terminal)); + widget = GTK_WIDGET(terminal); + screen = terminal->screen; + if (GTK_WIDGET_REALIZED(widget) == FALSE) { + return; + } + /* This may generate multiple redraws, so freeze it while we do them. */ + gdk_window_freeze_updates(widget->window); + /* Read the new adjustment value and save the difference. */ + adj = floor(gtk_adjustment_get_value(terminal->adjustment)); + dy = screen->delta - adj; + screen->delta = adj; + if (dy != 0) { + /* Scroll whatever's already in the window to avoid redrawing + * as much as possible. */ + gdk_window_scroll(widget->window, + 0, dy * terminal->char_height); + /* Trigger an expose on newly-exposed areas. */ + if (dy > 0) { + vte_invalidate_cells(terminal, + 0, + terminal->column_count, + screen->cursor_current.row - dy, + dy); + } else { + vte_invalidate_cells(terminal, + 0, + terminal->column_count, + 0, + -dy); + } + } + /* Let the refreshing begin. */ + gdk_window_thaw_updates(widget->window); +} + +/* Set the adjustment objects used by the terminal widget. */ +static void +vte_terminal_set_scroll_adjustment(VteTerminal *terminal, + GtkAdjustment *adjustment) +{ + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + if (adjustment != NULL) { + /* Add a reference to the new adjustment object. */ + g_object_ref(adjustment); + /* Get rid of the old adjustment object. */ + if (terminal->adjustment != NULL) { + /* Disconnect our signal handlers from this object. */ + g_signal_handlers_disconnect_by_func(terminal->adjustment, + G_CALLBACK(vte_handle_scroll), + terminal); + g_object_unref(terminal->adjustment); + } + /* Set the new adjustment object. */ + terminal->adjustment = adjustment; + g_signal_connect_swapped(terminal->adjustment, + "value_changed", + G_CALLBACK(vte_handle_scroll), + terminal); + g_signal_connect_swapped(terminal->adjustment, + "changed", + G_CALLBACK(vte_handle_scroll), + terminal); + } +} + +/* Set the type of terminal we're emulating. */ +static void +vte_terminal_set_emulation(VteTerminal *terminal, const char *emulation) +{ + const char *code, *value; + char *tmp; + int i; + + /* Set the emulation type, for reference. */ + if (emulation == NULL) { + emulation = "xterm"; + } + terminal->terminal = g_quark_to_string(g_quark_from_string(emulation)); +#ifdef VTE_DEBUG + g_print("Setting emulation to `%s'...", emulation); +#endif + + /* Create a trie to hold the control sequences. */ + if (terminal->trie) { + vte_trie_free(terminal->trie); + } + terminal->trie = vte_trie_new(); + + /* Create a tree to hold the handlers. */ + if (terminal->sequences) { + g_tree_destroy(terminal->sequences); + } + terminal->sequences = g_tree_new(vte_compare_direct); + for (i = 0; i < G_N_ELEMENTS(vte_sequence_handlers); i++) { + if (vte_sequence_handlers[i].handler != NULL) { + code = vte_sequence_handlers[i].code; + g_tree_insert(terminal->sequences, + GINT_TO_POINTER(g_quark_from_string(code)), + vte_sequence_handlers[i].handler); + } + } + + /* Load the known capability strings from the termcap structure into + * the trie for recognition. */ + for (i = 0; + vte_terminal_capability_strings[i].capability != NULL; + i++) { + code = vte_terminal_capability_strings[i].capability; + tmp = vte_termcap_find_string(terminal->termcap, + terminal->terminal, + code); + if ((tmp != NULL) && (tmp[0] != '\0')) { + vte_trie_add(terminal->trie, tmp, strlen(tmp), + vte_terminal_capability_strings[i].capability, + 0); + } + g_free(tmp); + } + + /* Add emulator-specific sequences. */ + for (i = 0; vte_xterm_capability_strings[i].value != NULL; i++) { + code = vte_xterm_capability_strings[i].code; + value = vte_xterm_capability_strings[i].value; + vte_trie_add(terminal->trie, code, strlen(code), value, 0); + } +#ifdef VTE_DEBUG + g_print("\n"); +#endif +} + +/* Set the path to the termcap file we read, and read it in. */ +static void +vte_terminal_set_termcap(VteTerminal *terminal, const char *path) +{ + if (path == NULL) { + path = "/etc/termcap"; + } + terminal->termcap_path = g_quark_to_string(g_quark_from_string(path)); +#ifdef VTE_DEBUG + g_print("Loading termcap `%s'...", terminal->termcap_path); +#endif + if (terminal->termcap) { + vte_termcap_free(terminal->termcap); + } + terminal->termcap = vte_termcap_new(path); +#ifdef VTE_DEBUG + g_print("\n"); +#endif + vte_terminal_set_emulation(terminal, terminal->terminal); +} + +/* Initialize the terminal widget after the base widget stuff is initialized. + * We need to create a new psuedo-terminal pair, read in the termcap file, and + * set ourselves up to do the interpretation of sequences. */ +static void +vte_terminal_init(VteTerminal *terminal) +{ + GtkAdjustment *adjustment; + GIOChannel *channel; + int i; + + g_return_if_fail(VTE_IS_TERMINAL(terminal)); + GTK_WIDGET_SET_FLAGS(GTK_WIDGET(terminal), GTK_CAN_FOCUS); + + /* Initialize data members with settings from the environment and + * structures to use for these. */ + terminal->shell = g_strdup(getenv("SHELL") ?: "/bin/sh"); + terminal->pty_master = -1; + terminal->pty_pid = -1; + terminal->pending = NULL; + terminal->n_pending = 0; + terminal->palette_initialized = FALSE; + terminal->keypad = VTE_KEYPAD_NORMAL; + adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 0, 0, 0, 0)); + + vte_terminal_set_termcap(terminal, NULL); + vte_terminal_set_emulation(terminal, NULL); + vte_terminal_set_encoding(terminal, NULL); + + terminal->normal_screen.row_data = g_array_new(FALSE, TRUE, + sizeof(GArray *)); + terminal->normal_screen.cursor_current.row = 0; + terminal->normal_screen.cursor_current.col = 0; + terminal->normal_screen.cursor_saved.row = 0; + terminal->normal_screen.cursor_saved.col = 0; + terminal->normal_screen.cursor_visible = TRUE; + terminal->normal_screen.delta = 0; + terminal->normal_screen.insert = FALSE; + + terminal->alternate_screen.row_data = g_array_new(FALSE, TRUE, + sizeof(GArray*)); + terminal->alternate_screen.cursor_current.row = 0; + terminal->alternate_screen.cursor_current.col = 0; + terminal->alternate_screen.cursor_saved.row = 0; + terminal->alternate_screen.cursor_saved.col = 0; + terminal->alternate_screen.cursor_visible = TRUE; + terminal->alternate_screen.delta = 0; + terminal->alternate_screen.insert = FALSE; + + terminal->screen = &terminal->alternate_screen; + vte_terminal_set_default_attributes(terminal); + + terminal->screen = &terminal->normal_screen; + vte_terminal_set_default_attributes(terminal); + + vte_terminal_set_scroll_adjustment(terminal, adjustment); + + /* Start up the shell. */ + terminal->pty_master = vte_pty_open(&terminal->pty_pid, + terminal->shell); + i = fcntl(terminal->pty_master, F_GETFL); + fcntl(terminal->pty_master, F_SETFL, i | O_NONBLOCK); + channel = g_io_channel_unix_new(terminal->pty_master); + terminal->pty_input = g_io_add_watch_full(channel, + G_PRIORITY_LOW, + G_IO_IN | G_IO_HUP, + vte_terminal_io_read, + terminal, + NULL); + + /* Set the PTY window size based on the terminal type. */ + vte_terminal_pty_size_set(terminal, + vte_termcap_find_numeric(terminal->termcap, + terminal->terminal, + "co") ?: 60, + vte_termcap_find_numeric(terminal->termcap, + terminal->terminal, + "li") ?: 18); + + /* Set the font. */ + vte_terminal_set_fontset(terminal, NULL); +} + +/* Tell GTK+ how much space we need. */ +static void +vte_terminal_size_request(GtkWidget *widget, GtkRequisition *requisition) +{ + VteTerminal *terminal; + + g_return_if_fail(widget != NULL); + g_return_if_fail(VTE_IS_TERMINAL(widget)); + terminal = VTE_TERMINAL(widget); + + requisition->width = terminal->char_width * terminal->column_count; + requisition->height = terminal->char_height * terminal->row_count; +} + +/* Accept a given size from GTK+. */ +static void +vte_terminal_size_allocate(GtkWidget *widget, GtkAllocation *allocation) +{ + VteTerminal *terminal; + + g_return_if_fail(widget != NULL); + g_return_if_fail(VTE_IS_TERMINAL(widget)); + terminal = VTE_TERMINAL(widget); + + /* Set our allocation to match the structure. */ + widget->allocation = *allocation; + + /* Calculate how many rows and columns we should display. */ + terminal->column_count = allocation->width / terminal->char_width; + terminal->row_count = allocation->height / terminal->char_height; + + /* Set the size of the pseudo-terminal. */ + vte_terminal_pty_size_set(terminal, + terminal->column_count, + terminal->row_count); + + /* Resize the GDK window. */ + if (widget->window != NULL) { + gdk_window_move_resize(widget->window, + allocation->x, + allocation->y, + allocation->width, + allocation->height); + } + + /* Adjust the adjustments. */ + vte_terminal_adjust_adjustments(terminal); +} + +/* The window is being destroyed. */ +static void +vte_terminal_unrealize(GtkWidget *widget) +{ + VteTerminal *terminal; + GArray *array; + int i; + + g_return_if_fail(widget != NULL); + g_return_if_fail(VTE_IS_TERMINAL(widget)); + terminal = VTE_TERMINAL(widget); + + /* Unmap the widget if it hasn't been already. */ + if (GTK_WIDGET_MAPPED(widget)) { + gtk_widget_unmap(widget); + } + + /* Remove the GDK window. */ + if (widget->window != NULL) { + gdk_window_destroy(widget->window); + widget->window = NULL; + } + + /* Mark that we no longer have a GDK window. */ + GTK_WIDGET_UNSET_FLAGS(widget, GTK_REALIZED); + + /* Free some of our strings. */ + terminal->termcap_path = NULL; + terminal->shell = NULL; + terminal->terminal = NULL; + + /* Shut down the child terminal. */ + close(terminal->pty_master); + terminal->pty_master = -1; + if (terminal->pty_pid > 0) { + kill(-terminal->pty_pid, SIGHUP); + } + terminal->pty_pid = 0; + + /* Stop watching for input from the child. */ + if (terminal->pty_input != -1) { + gtk_input_remove(terminal->pty_input); + terminal->pty_input = -1; + } + + /* Discard any pending data. */ + g_free(terminal->pending); + terminal->pending = NULL; + + /* Clean up emulation structures. */ + g_tree_destroy(terminal->sequences); + terminal->sequences= NULL; + vte_termcap_free(terminal->termcap); + terminal->termcap = NULL; + vte_trie_free(terminal->trie); + terminal->trie = NULL; + + /* Clear the output histories. */ + for (i = 0; i < terminal->normal_screen.row_data->len; i++) { + array = g_array_index(terminal->normal_screen.row_data, + GArray*, + i); + g_array_free(array, TRUE); + } + g_array_free(terminal->normal_screen.row_data, TRUE); + terminal->normal_screen.row_data = NULL; + + for (i = 0; i < terminal->alternate_screen.row_data->len; i++) { + array = g_array_index(terminal->alternate_screen.row_data, + GArray*, + i); + g_array_free(array, TRUE); + } + g_array_free(terminal->alternate_screen.row_data, TRUE); + terminal->alternate_screen.row_data = NULL; +} + +/* Handle realizing the widget. Most of this is copy-paste from GGAD. */ +static void +vte_terminal_realize(GtkWidget *widget) +{ + VteTerminal *terminal = NULL; + GdkWindowAttr attributes; + GdkColor black = {0, 0, 0}; + int attributes_mask = 0; + + g_return_if_fail(widget != NULL); + g_return_if_fail(VTE_IS_TERMINAL(widget)); + terminal = VTE_TERMINAL(widget); + + /* Create a GDK window for the widget. */ + attributes.window_type = GDK_WINDOW_CHILD; + attributes.x = 0; + attributes.y = 0; + attributes.width = widget->allocation.width; + attributes.height = widget->allocation.height; + attributes.wclass = GDK_INPUT_OUTPUT; + attributes.visual = gtk_widget_get_visual(widget); + attributes.colormap = gtk_widget_get_colormap(widget); + attributes.event_mask = gtk_widget_get_events(widget) | + GDK_EXPOSURE_MASK | + GDK_BUTTON_PRESS_MASK | + GDK_BUTTON_RELEASE_MASK | + GDK_KEY_PRESS_MASK | + GDK_KEY_RELEASE_MASK; + attributes.cursor = gdk_cursor_new(GDK_XTERM); + attributes_mask = GDK_WA_X | + GDK_WA_Y | + GDK_WA_VISUAL | + GDK_WA_COLORMAP | + GDK_WA_CURSOR; + widget->window = gdk_window_new(gtk_widget_get_parent_window(widget), + &attributes, + attributes_mask); + gdk_window_move_resize(widget->window, + widget->allocation.x, + widget->allocation.y, + widget->allocation.width, + widget->allocation.height); + gdk_window_set_user_data(widget->window, widget); + gdk_window_show(widget->window); + + /* Set up styles, backgrounds, and whatnot. */ + widget->style = gtk_style_attach(widget->style, widget->window); + gtk_style_set_background(widget->style, + widget->window, + GTK_STATE_NORMAL); + gdk_window_set_background(widget->window, &black); + + /* Set the realized flag. */ + GTK_WIDGET_SET_FLAGS(widget, GTK_REALIZED); + + /* Grab input focus. */ + gtk_widget_grab_focus(widget); +} + +/* Find the character in the given "virtual" position. */ +struct vte_charcell * +vte_terminal_find_charcell(VteTerminal *terminal, long row, long col) +{ + GArray *rowdata; + struct vte_charcell *ret = NULL; + struct _VteScreen *screen; + g_return_val_if_fail(VTE_IS_TERMINAL(terminal), NULL); + screen = terminal->screen; + if (screen->row_data->len > row) { + rowdata = g_array_index(screen->row_data, GArray*, row); + if (rowdata->len > col) { + ret = &g_array_index(rowdata, struct vte_charcell, col); + } + } + return ret; +} + +/* Draw the widget. */ +static void +vte_terminal_paint(GtkWidget *widget, GdkRectangle *area) +{ + VteTerminal *terminal = NULL; + struct _VteScreen *screen; + Display *display; + Drawable drawable; + GdkDrawable *gdrawable; + GC gc; + struct vte_charcell *cell; + int row, drow, col, dcol, row_stop, col_stop, x_offs = 0, y_offs = 0; + int fore, back, width, height, ascent, descent; + long delta; + XwcTextItem textitem; + + /* Make a few sanity checks. */ + g_return_if_fail(widget != NULL); + g_return_if_fail(VTE_IS_TERMINAL(widget)); + g_return_if_fail(area != NULL); + terminal = VTE_TERMINAL(widget); + if (!GTK_WIDGET_DRAWABLE(widget)) { + return; + } + screen = terminal->screen; + + /* Set up the default palette. */ + vte_terminal_set_default_palette(terminal); + + /* Get the X11 structures we need for the drawing area. */ + gdk_window_get_internal_paint_info(widget->window, &gdrawable, + &x_offs, &y_offs); + display = gdk_x11_drawable_get_xdisplay(gdrawable); + drawable = gdk_x11_drawable_get_xid(gdrawable); + gc = XCreateGC(display, drawable, 0, NULL); + + /* Keep local copies of rendering information. */ + width = terminal->char_width; + height = terminal->char_height; + ascent = terminal->char_ascent; + descent = terminal->char_descent; + delta = screen->delta; + +#if 1 + /* Paint the background for this area, using a filled rectangle. We + * have to do this even when the GDK background matches, otherwise + * we may miss character removals before an area is re-exposed. */ + XSetForeground(display, gc, terminal->palette[0]); + XFillRectangle(display, drawable, gc, + area->x - x_offs, + area->y - y_offs, + area->width, + area->height); +#endif + + /* Now we're ready to draw the text. Iterate over the rows we + * need to draw. */ + row = area->y / height; + row_stop = (area->y + area->height + height - 1) / height; + while (row < row_stop) { + /* Get the row data for the row we want to display, taking + * scrolling into account. */ + drow = row + delta; + col = area->x / width; + col_stop = (area->x + area->width + width - 1) / width; + while (col < col_stop) { + /* Get the character cell's contents. */ + cell = vte_terminal_find_charcell(terminal, drow, col); + if (cell != NULL) { + /* If this column is zero-width, backtrack + * until we find the multi-column character + * which renders into this column. */ + if (cell->columns == 0) { + /* Search for a suitable cell. */ + for (dcol = col - 1; + dcol >= 0; + dcol--) { + cell = vte_terminal_find_charcell(terminal, drow, dcol); + if (cell->columns > 0) { + break; + } + } + /* If we didn't find anything, bail. */ + if (dcol < 0) { + continue; + } + } + /* Determine what the foreground and background + * colors for rendering text should be. */ + if (cell->reverse) { + fore = cell->back; + back = cell->fore; + } else { + fore = cell->fore; + back = cell->back; + } + if (cell->invisible) { + fore = back; + } + if (cell->bold) { + fore += 8; + } + if (cell->standout) { + back += 8; + } + + /* Set the textitem's fields. */ + textitem.chars = &cell->c; + textitem.nchars = 1; + textitem.delta = 0; + textitem.font_set = terminal->fontset; + + /* Paint the background for the cell. */ + XSetForeground(display, gc, + terminal->palette[back]); + XFillRectangle(display, drawable, gc, + col * width - x_offs, + row * height - y_offs, + cell->columns * width, + height); + + /* Draw the text. We've handled bold, standout + * and reverse already, but we need to handle + * half, and maybe blink. */ + XSetForeground(display, gc, + terminal->palette[fore]); + XwcDrawText(display, drawable, gc, + col * width - x_offs, + row * height - y_offs + ascent, + &textitem, 1); + /* FX */ + if (cell->underline) { + XDrawLine(display, drawable, gc, + col * width - x_offs, + row * height - y_offs + height - 1, + col * width - x_offs + width - 1, + row * height - y_offs + height - 1); + } + col += cell->columns; + } else { + /* Skip to the next column. */ + col++; + } + } + row++; + } + + if (terminal->screen->cursor_visible) { + /* Draw the insertion cursor in the foreground color for this + * cell, shrinking it by one pixel to keep from overflowing + * into the next character cell. */ + col = screen->cursor_current.col; + row = screen->cursor_current.row; + cell = vte_terminal_find_charcell(terminal, row - delta, col); + XSetForeground(display, gc, + cell ? + terminal->palette[cell->fore] : + terminal->palette[screen->defaults.fore]); + XFillRectangle(display, drawable, gc, + col * width - x_offs, + (row - delta) * height - y_offs, + width - 1, + height - 1); + /* If we have a character in this spot, draw it in the reverse + * of the normal color. */ + if (cell != NULL) { + /* Draw the text reversed. FIXME: handle half, bold, + * standout (isn't that just bold?), blink. */ + XSetForeground(display, gc, + cell ? + terminal->palette[cell->back] : + terminal->palette[screen->defaults.back]); + textitem.chars = &cell->c; + textitem.nchars = 1; + textitem.delta = 0; + textitem.font_set = terminal->fontset; + XwcDrawText(display, drawable, gc, + col * width - x_offs, + row * height - y_offs + ascent, + &textitem, 1); + } + } + + /* Done with various structures. */ + XFreeGC(display, gc); +} + +/* Handle an expose event by painting the exposed area. */ +static gint +vte_terminal_expose(GtkWidget *widget, GdkEventExpose *event) +{ + g_return_val_if_fail(VTE_IS_TERMINAL(widget), 0); + if (event->window == widget->window) { + vte_terminal_paint(widget, &event->area); + } else { + g_assert_not_reached(); + } + return TRUE; +} + +/* Initialize methods. */ +static void +vte_terminal_class_init(VteTerminalClass *klass, gconstpointer data) +{ + GtkWidgetClass *widget_class; + widget_class = GTK_WIDGET_CLASS(klass); + /* Override some of the default handlers. */ + widget_class->realize = vte_terminal_realize; + widget_class->expose_event = vte_terminal_expose; + widget_class->key_press_event = vte_terminal_key_press; + widget_class->button_press_event = vte_terminal_button_press; + widget_class->focus_in_event = vte_terminal_focus_in; + widget_class->focus_out_event = vte_terminal_focus_out; + widget_class->unrealize = vte_terminal_unrealize; + widget_class->size_request = vte_terminal_size_request; + widget_class->size_allocate = vte_terminal_size_allocate; + klass->eof_signal = + g_signal_new("eof", + G_OBJECT_CLASS_TYPE(klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + _vte_marshal_VOID__VOID, + G_TYPE_NONE, 0); + klass->set_window_title_signal = + g_signal_new("set_window_title", + G_OBJECT_CLASS_TYPE(klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + _vte_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + klass->set_icon_title_signal = + g_signal_new("set_icon_title", + G_OBJECT_CLASS_TYPE(klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + _vte_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + klass->char_size_changed_signal = + g_signal_new("char_size_changed", + G_OBJECT_CLASS_TYPE(klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + _vte_marshal_VOID__UINT_UINT, + G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); +} + +GtkType +vte_terminal_get_type(void) +{ + static GtkType terminal_type = 0; + static const GTypeInfo terminal_info = { + sizeof(VteTerminalClass), + (GBaseInitFunc)NULL, + (GBaseFinalizeFunc)NULL, + + (GClassInitFunc)vte_terminal_class_init, + (GClassFinalizeFunc)NULL, + (gconstpointer)NULL, + + sizeof(VteTerminal), + 0, + (GInstanceInitFunc)vte_terminal_init, + + (GTypeValueTable*)NULL, + }; + + if (terminal_type == 0) { + terminal_type = g_type_register_static(GTK_TYPE_WIDGET, + "VteTerminal", + &terminal_info, + 0); + } + + return terminal_type; +} diff --git a/src/vte.h b/src/vte.h new file mode 100644 index 0000000..e334f35 --- /dev/null +++ b/src/vte.h @@ -0,0 +1,169 @@ +/* + * Copyright (C) 2001,2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" + +#ifndef vte_h_included +#define vte_h_included + +#include <sys/types.h> +#include <iconv.h> +#include <stdio.h> +#include <stdlib.h> +#include <wchar.h> +#include <X11/Xlib.h> +#include <glib.h> +#include <pango/pango.h> +#include "termcap.h" +#include "trie.h" + +G_BEGIN_DECLS + +typedef struct _VteTerminal VteTerminal; +typedef struct _VteTerminalClass VteTerminalClass; + +/* The structure we use to hold characters we're supposed to display -- this + * includes any supported visible attributes. */ +struct vte_charcell { + wchar_t c; /* The wide character. */ + guint16 columns: 2; /* Number of visible columns (as determined + by wcwidth(c)). */ + guint16 fore: 3; /* Indices in the color palette for the */ + guint16 back: 3; /* foreground and background of the cell. */ + guint16 reverse: 1; /* Single-bit attributes. */ + guint16 invisible: 1; + guint16 bold: 1; + guint16 standout: 1; + guint16 underline: 1; + guint16 half: 1; + guint16 blink: 1; +}; + +/* The terminal's keypad state. A terminal can either be using the normal + * keypad, or the "application" keypad. Arrow key sequences, for example, + * are really only defined for "application" mode. */ +typedef enum { + VTE_KEYPAD_NORMAL, + VTE_KEYPAD_APPLICATION, +} VteKeypad; + +/* The terminal widget itself. */ +struct _VteTerminal { + /*< public >*/ + GtkWidget widget; + GtkAdjustment *adjustment; /* Scrolling adjustment. */ + + /*< private >*/ + + /* Emulation setup data. */ + struct vte_termcap *termcap; /* termcap storage */ + struct vte_trie *trie; /* control sequence trie */ + const char *termcap_path; /* path to termcap file */ + const char *terminal; /* terminal type to emulate */ + GTree *sequences; /* sequence handlers, keyed by GQuark + based on the sequence name */ + + /* PTY handling data. */ + char *shell; /* shell we started */ + int pty_master; /* pty master descriptor */ + guint pty_input; /* master I/O channel */ + pid_t pty_pid; /* pid of child using pty slave */ + const char *encoding; /* the pty's encoding */ + + /* Input data queues. */ + iconv_t pending_conv; /* narrow/wide conversion state */ + wchar_t *pending; /* pending output characters */ + size_t n_pending; + char *narrow_pending; /* pending output characters */ + size_t n_narrow_pending; + iconv_t outgoing_conv; /* narrow/wide conversion state */ + + /* Defaults and settings to apply to new input data. */ + gboolean palette_initialized; + unsigned long palette[16]; /* palette of colors we use for drawing + text */ + + /* Metric and sizing data. */ + guint char_width, char_height; /* dimensions of character cells */ + guint char_ascent, char_descent;/* important font metrics */ + guint row_count, column_count; /* dimensions of the window */ + + /* Emulation state. */ + VteKeypad keypad; + + /* Screen data. We support the normal screen, and an alternate + * screen, which seems to be a DEC-specific feature. */ + XFontSet fontset; /* the font set to draw text with */ + struct _VteScreen { + GArray *row_data; /* row data, arranged as a GArray of + vte_charcell structures */ + struct { + gint row, col; + } cursor_current, cursor_saved; + /* the current and saved positions of + the [insertion] cursor */ + gboolean cursor_visible; + gboolean insert; /* insert mode */ + struct { + gint start, end; + } scrolling_region; /* the region we scroll in */ + gboolean scrolling_restricted; + long delta; /* cached Y offset (the saved cursor + position is relative to this) */ + struct vte_charcell defaults; /* default characteristics + for insertion of any new + characters */ + } normal_screen, alternate_screen, *screen; +}; + +/* The widget's class structure. */ +struct _VteTerminalClass { + /*< public > */ + /* Inherited parent class. */ + GtkWidgetClass parent_class; + + /*< private > */ + /* Signals we might omit. */ + guint eof_signal; + guint char_size_changed_signal; + guint set_window_title_signal; + guint set_icon_title_signal; +}; + +/* The widget's type. */ +GtkType vte_terminal_get_type(void); + +#define VTE_TYPE_TERMINAL (vte_terminal_get_type()) +#define VTE_TERMINAL(obj) (GTK_CHECK_CAST((obj),\ + VTE_TYPE_TERMINAL,\ + VteTerminal)) +#define VTE_TERMINAL_CLASS(klass) GTK_CHECK_CLASS_CAST((klass),\ + VTE_TYPE_TERMINAL,\ + VteTerminalClass) +#define VTE_IS_TERMINAL(obj) GTK_CHECK_TYPE((obj),\ + VTE_TYPE_TERMINAL) +#define VTE_IS_TERMINAL_CLASS(klass) GTK_CHECK_CLASS_TYPE((klass),\ + VTE_TYPE_TERMINAL) +#define VTE_TERMINAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VTE_TYPE_TERMINAL, VteTerminalClass)) + + +GtkWidget *vte_terminal_new(void); + +G_END_DECLS + +#endif diff --git a/src/vteapp.c b/src/vteapp.c new file mode 100644 index 0000000..485d84e --- /dev/null +++ b/src/vteapp.c @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2001,2002 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or modify it under + * the terms of the GNU Library General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ident "$Id$" +#include "../config.h" +#include <gtk/gtk.h> +#include <glib-object.h> +#include "vte.h" + +static void +set_window_title(GtkWidget *widget, const char *title, gpointer win) +{ + GtkWindow *window; + g_return_if_fail(GTK_IS_WINDOW(win)); + window = GTK_WINDOW(win); + gtk_window_set_title(window, title); +} + +static void +char_size_changed(GtkWidget *widget, guint width, guint height, gpointer win) +{ + VteTerminal *terminal; + GtkWindow *window; + GdkGeometry geometry; + g_return_if_fail(GTK_IS_WINDOW(win)); + g_return_if_fail(VTE_IS_TERMINAL(widget)); + terminal = VTE_TERMINAL(widget); + window = GTK_WINDOW(win); + geometry.base_width = 0; + geometry.base_height = 0; + geometry.min_width = terminal->char_width; + geometry.min_height = terminal->char_height; + geometry.width_inc = terminal->char_width; + geometry.height_inc = terminal->char_height; + gtk_window_set_geometry_hints(window, widget, &geometry, + GDK_HINT_RESIZE_INC | + GDK_HINT_BASE_SIZE | + GDK_HINT_MIN_SIZE); +} + +int +main(int argc, char **argv) +{ + GtkWidget *window, *hbox, *scrollbar, *widget; + + gtk_init(&argc, &argv); + + /* Create a window to hold the scrolling shell, and hook its + * delete event to the quit function.. */ + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + g_signal_connect(G_OBJECT(window), "delete_event", + GTK_SIGNAL_FUNC(gtk_main_quit), NULL); + + /* Create a box to hold everything. */ + hbox = gtk_hbox_new(0, FALSE); + gtk_container_add(GTK_CONTAINER(window), hbox); + + /* Create the terminal widget and add it to the scrolling shell. */ + widget = vte_terminal_new(); + char_size_changed(widget, + (VTE_TERMINAL(widget)->char_width), + (VTE_TERMINAL(widget)->char_height), + window); + gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0); + + /* Connect to the "char_size_changed" signal to set geometry hints + * whenever the font used by the terminal is changed. */ + g_signal_connect_object(G_OBJECT(widget), "char_size_changed", + G_CALLBACK(char_size_changed), window, 0); + + /* Connect to the "set_window_title" signal to set the main window's + * title. */ + g_signal_connect(G_OBJECT(widget), "set_window_title", + G_CALLBACK(set_window_title), window); + + /* Connect to the "eof" signal to quit when the session ends. */ + g_signal_connect(G_OBJECT(widget), "eof", + G_CALLBACK(gtk_main_quit), NULL); + + /* Create the scrollbar for the widget. */ + scrollbar = gtk_vscrollbar_new((VTE_TERMINAL(widget))->adjustment); + gtk_box_pack_start(GTK_BOX(hbox), scrollbar, FALSE, FALSE, 0); + + /* Go for it! */ + gtk_widget_show_all(window); + gtk_main(); + + return 0; +} diff --git a/stamp-h.in b/stamp-h.in new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/stamp-h.in @@ -0,0 +1 @@ +timestamp |