1. xemacs
  2. os-utils

Commits

j_colman  committed e7731b4

added os-utils documentation

  • Participants
  • Parent commits e0d4063
  • Branches default

Comments (0)

Files changed (3)

File ChangeLog

View file
+2003-08-28  Jake Colman  <jake.colman@xemacs.org>
+
+	* Makefile (EXPLICIT_DOCS): New.  Added texi documentation.
+
 2003-06-01  Norbert Koch  <viteno@xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.31 released.

File Makefile

View file
 	jka-compr.elc kermit.elc ledit.elc mchat.elc rlogin.elc \
 	spell.elc ssh.elc tar-mode.elc telnet.elc terminal.elc uncompress.elc
 
+EXPLICIT_DOCS = $(PACKAGE).texi
+
 include ../../XEmacs.rules

File os-utils.texi

View file
+@c -*-texinfo-*-
+@c
+@c Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+@c Copyright (C) 2003 Jake Colman
+@c
+@c @setfilename os-utils.info
+@ifinfo
+@dircategory XEmacs Editor
+@direntry
+* OS Utilities: (os-utils).	Operating System utilities for XEmacs.
+@end direntry
+@end ifinfo
+
+@copying
+This manual is part of XEmacs.
+
+XEmacs 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, or (at your option)
+any later version.
+
+XEmacs 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 XEmacs; see the file COPYING.  If not, write to the Free
+Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
+@end copying
+
+@node Top, Copying, (dir), (dir)
+@chapter The Operating System Utilities Package
+
+@ifinfo
+This Info file contains the manual for the Operating System Utilities package.
+@end ifinfo
+
+The node name for each entry in the menu is the name of the elisp file
+containing the code that implements the functionality described.  It is
+highly recommended that you briefly peruse the elisp source code since it can
+provide valuable information on usage and technique.  This can easily be done
+by typing @code{C-x 4 l <filename> RET} where <filename> is the name of the
+elisp file to be loaded.
+
+@menu
+* Copying::                     Why this manual is GPL, and what that means
+
+Archive Management
+* tar-mode::                    Simple Editing of TAR Files
+* arc-mode::                    Simple Editing of Archives
+
+Compression/Decompression
+* crypt::                       Handling for Compressed and Encrypted Files
+* jka-compr::                   Reading/Writing/Loading Compressed Files
+* uncompress::                  Auto-Decompression Kook for Visiting .Z Files
+
+Communications
+* telnet::                      Execute a Telnet Session From Within an Emacs Buffer
+* ssh::                         Remote Login Interface Using SSH
+* ftelnet::                     Remote Login Interface Using Telnet
+* rlogin::                      Remote Login Interface Using rlogin
+* mchat::                       Multicast Chatting
+* kermit::                      Using Shell Mode With Kermit
+* terminal::                    Terminal Emulator
+
+Miscellaneous
+* spell::                       Spelling Correction
+* background::                  Fun With Background Jobs
+* inf-lisp::                    Inferior-Lisp Mode
+* ledit::                       ledit
+
+Appendices:
+* XEmacs License::              The GNU General Public License
+@end menu
+
+@node Copying, tar-mode, Top, Top
+@chapter Copying
+
+This document may be redistributed, verbatim or in modified form, under
+the terms of the GNU General Public License, version 2 or any later
+version.  The same terms apply to the libraries it documents.  A copy
+of the General Public License is provided as an Appendix.
+
+Most XEmacs documentation has its own license, which is an ancestor of
+the GNU Free Documentation License (@dfn{FDL}), and whose terms are
+quite similar to those imposed by GNU on Emacs documentation.  Why is
+this manual licensed differently (under the GNU General Public License,
+or @dfn{GPL}), and why does it have to be distributed separately from
+the XEmacs User's Guide and the XEmacs Lisp Reference Manual?
+
+Taking the second question first, XEmacs is @dfn{community-owned}
+software.  That is, unlike GNU Emacs, there is no monopoly copyright
+holder.  Many of us, including the original Lucid authors, have
+contributed our copyrights to the Free Software Foundation (FSF), and of
+course much content is derived from GNU Emacs, and therefore is held by
+the FSF.  Another large chunk is held by Sun Microsystems, and a few
+individual authors hold copyright to thousands of lines each.  But many
+individuals hold copyright to only a few dozen lines.  Like the Linux
+kernel, copyright ownership is distributed throughout a community.
+
+However, its license is ``copyleft,'' @emph{i.e.}, it @emph{requires}
+that you redistribute it under terms @emph{identical} to those under
+which you received it, unless you have explicit permission of the
+copyright holder.  Because of the multiple owners, determining the
+ownership of any given part of XEmacs is tedious, and perhaps
+impossible.  For practical purposes, then, the license of any
+substantial chunk of existing XEmacs content cannot be changed, except
+to a later version of the GPL, for those parts under GPL.  (That is due
+to the @emph{explicit} permission to change to a later version of the
+GPL, present in every file of XEmacs.)
+
+Unfortunately, this severe restriction means that the GPL, FDL, and the
+XEmacs documentation license (@dfn{XDL}) are @emph{mutually
+incompatible}.  That is, content licensed under any of the GPL, FDL, or
+XDL @emph{may not} be mixed with content licensed under either of the
+other two without changing the license of some of the content.  But this
+requires permission of the copyright holder, which is often difficult or
+impossible to get.
+
+For example, you @emph{may not} take comments or docstrings from XEmacs
+code and add them to the Lispref to mend a gap in the latter's coverage.
+You @emph{may not} copy text from the Lispref into docstrings in the
+code.  And you @emph{may not} copy text from the GNU Emacs Lisp
+Reference to the XEmacs Lisp Reference Manual.  (In this case it is at
+least trivial to ask permission, although it is rather unclear whether
+it would be granted.)
+
+In fact, parts of this document were derived by copying from XEmacs code
+under the GPL, without any further permission from the authors.  Thus,
+this document must be distributed under the GPL, as a ``volume''
+separate from the XEmacs documentation under the XDL.  Note that the
+``mere aggregation'' clauses allow us to distribute in the same
+tarball.  But incorporating it as a node in the Lispref is prohibited,
+even if done by inclusion.
+
+A bit of advocacy:
+
+If you look carefully at the additional restrictions imposed by the
+soi-disant "free" documentation licenses, you discover that they are
+simply proprietary restrictions guaranteeing a certain amount of
+@emph{unpaid} political advertising to the Free Software Foundation and
+GNU Project (and in the case of the FDL, this is extended to commercial
+advertising by authors of original or derived works).  Whether this is
+``ethically justified'' or not is a difficult question.  What is certain
+is that there is little social benefit to these terms (since the license
+documents themselves contain the advocacy and must be included with any
+distribution).
+
+I conclude it makes sense for XEmacs to reduce its restrictions, where
+possible, to the ``least common denominator,'' the GNU General Public
+License.
+
+@node tar-mode, arc-mode, Copying, Top
+@chapter Simple Editing of TAR Files
+
+This package attempts to make dealing with Unix 'tar' archives easier.  When
+this code is loaded, visiting a file whose name ends in '.tar' will cause the
+contents of that archive file to be displayed in a Dired-like listing.  It is
+then possible to use the customary Dired keybindings to extract sub-files
+from that archive, either by reading them into their own editor buffers, or
+by copying them directly to arbitrary files on disk.  It is also possible to
+delete sub-files from within the tar file and write the modified archive back
+to disk, or to edit sub-files within the archive and re-insert the modified
+files into the archive.  See the documentation string of @code{tar-mode} for
+more info.
+
+To configure this package, type:
+
+@example
+  M-x customize-group RET tar RET
+@end example
+
+@node arc-mode, crypt, tar-mode, Top
+@chapter Simple Editing of Archives
+
+This library not documented.  Please contribute!
+
+To configure this package, type:
+
+@example
+  M-x customize-group RET archive RET
+@end example
+
+@node crypt, jka-compr, arc-mode, Top
+@chapter Handling for Compressed and Encrypted Files
+
+The basic purpose of this package of Lisp functions is to recognize
+automatically encrypted and encoded (i.e., compressed) files when they are
+first visited or written.  The BUFFER corresponding to the file is decoded
+and/or decrypted before it is presented to the user.  The file itself is
+unchanged on the disk.  When the buffer is subsequently saved to disk, a hook
+function re-encodes the buffer before the actual disk write takes place.
+
+This package recognizes all sorts of compressed files by a magic number at
+the beginning of these files but uses a heuristic to detect encrypted files.
+If you are asked for an encryption key for a file that is in fact not
+encrypted, just hit RET and the file will be accepted as is, and the crypt
+minor mode will not be entered.
+
+Other types of encoding programs may be added to this package by using the
+variable @code{crypt-encoding-alist} which contains a table of encoding
+programs such as @code{compress}, @code{gzip} (GNU zip), @code{freeze}, and
+@code{compact}.
+
+This new extended version of crypt now monitors the filename extensions of
+buffers that are written out using @code{write-file} (@kbd{C-x C-w}).  If the
+filename extension matches one of the extensions listed in
+@code{crypt-encoding-alist}, then this package will write the file out using
+the corresponding encoding (compression) method. This is done whether or not
+the buffer originated from a previously encoded (compressed) file.
+
+Thus, if the user is editing a file that may or may not have been encoded
+originally (e.g., @file{foobar.Z} or @file{foobar}) and decides to write it
+to a different file (e.g., @file{barfoo} or @file{barfoo.z} or
+@file{barfoo.C}).  This package will examine the filename extension and write
+the buffer in plain format or an alternate encoding (compression) format by
+searching through the entries in the table of encoding methods
+@code{crypt-encoding-alist}.  This change in encoding state is done
+automatically if the variable @code{crypt-auto-write-buffer} is t otherwise
+the user is asked.
+
+To use this package, put the line @code{(require 'crypt)} in your
+initialization file.  Do not bother trying to autoload this file; this
+package uses @code{find-file} and @code{write-file} hooks and thus should be
+loaded the first time you visit any sort of file.  Any package loaded after
+this one that appends something to @code{write-file-hooks} will not be
+executed because this package writes out the file.  Other packages that
+append to @code{write-file-hooks} should either be modified to prepend to
+that hook or be loaded before this one (preferably the former).
+
+NOTE: encryption users should set @code{crypt-encryption-type} to one of the
+values in @code{crypt-encryption-alist}.
+
+To configure this package, type:
+
+@example
+  M-x customize-group RET compression RET
+@end example
+
+@node jka-compr, uncompress, crypt, Top
+@chapter Reading/Writing/Loading Compressed Files
+
+This package implements low-level support for reading, writing, and loading
+compressed files.  It hooks into the low-level file I/O functions (including
+@code{write-region} and @code{insert-file-contents}) so that they
+automatically compress or uncompress a file if the file appears to need it
+(based on the extension of the file name).  Packages like Rmail, VM, GNUS,
+and Info should be able to work with compressed files without modification.
+
+The operation of this package should be transparent to the user (except for
+messages appearing when a file is being compressed or uncompressed).
+
+The variable, @code{jka-compr-compression-info-list} can be used to customize
+@code{jka-compr} to work with other compression programs.  The default value
+of this variable allows @code{jka-compr} to work with Unix compress and gzip.
+
+To activate this package, add the following to your initialization file:
+
+@example
+  (toggle-auto-compression 1 t)  ; enable compression/decompression
+@end example
+
+To configure this package, type:
+
+@example
+  M-x customize-group RET jka-compr RET
+@end example
+
+@node uncompress, telnet, jka-compr, Top
+@chapter Auto-Decompression Kook for Visiting .Z Files
+
+This package can be used to arrange for automatic uncompress of compressed
+files when they are visited.  All that's necessary is to load it.  This can
+conveniently be done from your initialization file.
+
+@code{M-x auto-compression-mode} is a more modern replacement for this
+package.
+
+@node telnet, ssh, uncompress, Top
+@chapter Execute a Telnet Session From Within an Emacs Buffer
+
+This mode is intended to be used for telnet or rsh to a remote host;
+@code{telnet} and @code{rsh} are the two entry points.  Multiple telnet or
+rsh sessions are supported.
+
+Normally, input is sent to the remote telnet/rsh line-by-line, as you type
+@kbd{RET} or @kbd{LFD}.  @kbd{C-c C-c} sends a @kbd{C-c} to the remote
+immediately; @kbd{C-c C-z} sends @kbd{C-z} immediately.  @kbd{C-c C-q}
+followed by any character sends that character immediately.
+
+All @kbd{RET} characters are filtered out of the output coming back from the
+remote system.  The mode tries to do other useful translations based on what
+it sees coming back from the other system before the password query.  It
+knows about UNIX, ITS, TOPS-20 and Explorer systems.
+
+You can use the global @code{telnet-host-properties} to associate a telnet
+program and login name with each host you regularly telnet to.
+
+To configure this package, type:
+
+@example
+  M-x customize-group RET telnet RET
+@end example
+
+@node ssh, ftelnet, telnet, Top
+@chapter Remote Login Interface Using SSH
+
+This package provides support for remote logins using @code{ssh}.  The
+package is layered on top of shell.el; the code here only accounts for the
+variations needed to handle a remote process, e.g. directory tracking and the
+sending of some special characters.
+
+If you wish for ssh mode to prompt you in the minibuffer for passwords when a
+password prompt appears, just enter @code{M-x send-invisible} and type in
+your line, or add @code{comint-watch-for-password-prompt} to
+@code{comint-output-filter-functions}.
+
+To configure this package, type:
+
+@example
+  M-x customize-group RET ssh RET
+@end example
+
+@node ftelnet, rlogin, ssh, Top
+@chapter Remote Login Interface Using Telnet
+
+This package provides support for remote logins using @code{telnet}.  The
+package is layered on top of shell.el; the code here only accounts for the
+variations needed to handle a remote process, e.g. directory tracking and the
+sending of some special characters.
+
+If you wish for ftelnet mode to prompt you in the minibuffer for passwords
+when a password prompt appears, just enter @kbd{M-x send-invisible} and type
+in your line, or add @code{comint-watch-for-password-prompt} to
+@code{comint-output-filter-functions}.
+
+@node rlogin, mchat, ftelnet, Top
+@chapter Remote Login Interface Using rlogin
+
+This package provides support for remote logins using @code{rlogin}.  The
+package is layered on top of shell.el; the code here only accounts for the
+variations needed to handle a remote process, e.g. directory tracking and the
+sending of some special characters.
+
+If you wish for rlogin mode to prompt you in the minibuffer for passwords
+when a password prompt appears, just enter @kbd{M-x send-invisible} and type
+in your line, or add @code{comint-watch-for-password-prompt} to
+@code{comint-output-filter-functions}.
+
+To configure this package, type:
+
+@example
+  M-x customize-group RET rlogin RET
+@end example
+
+@node mchat, kermit, rlogin, Top
+@chapter Multicast Chatting
+
+MChat is a package allowing a conversation to take place between a
+potentially infinite number of people across the Internet. It uses the
+Multicast support that has been added to XEmacs in the early 21.0 days. At
+that time a rudimentary version of MChat was written, merely to illustrate
+the feature, and almost nobody knew it, appart from the other
+developpers. This version is much improved and completely backward
+incompatible ;-).
+
+NOTE: before using this package, you most likely have to customize the
+@code{mchat-nsl-method} first. It specifies a program like @code{nsl} or
+@code{nslookup} in order to retrieve the IP number of your machine.
+
+The main entry point to the package is the @code{mchat} function which allows
+you to open a multicast group based on the MChat protocol. There are a number
+a variables that can be customized and their doc-string should be
+self-explanatory. You might also want to look at the bindings (@kbd{C-h b})
+in MChat buffers, or at the menubar entries to get an idea of what you can
+do.
+
+WARNING: the current version (but there's also a limitation in the internals
+of XEmacs's processes) doesn't let you send messages longer than 500 octets
+or so, including the protocol header. I plan to change this in the future
+(see the todo list).
+
+To configure this package, type:
+
+@example
+  M-x customize-group RET mchat RET
+@end example
+
+@node kermit, terminal, mchat, Top
+@chapter Using Shell Mode With Kermit
+
+This library not documented.  Please contribute!
+
+@node terminal, spell, kermit, Top
+@chapter Terminal Emulator
+
+This library not documented.  Please contribute!
+
+@node spell, background, terminal, Top
+@chapter Spelling Correction
+
+This mode provides an Emacs interface to the UNIX spell(1) program.  Entry
+points are @code{spell-buffer}, @code{spell-word}, @code{spell-region} and
+@code{spell-string}.  These facilities are documented in the Emacs user's
+manual.
+
+@node background, inf-lisp, spell, Top
+@chapter Fun With Background Jobs
+
+This library not documented.  Please contribute!
+
+To configure this package, type:
+
+@example
+  M-x customize-group RET background RET
+@end example
+
+@node inf-lisp, ledit, background, Top
+@chapter Inferior-Lisp Mode
+
+This library not documented.  Please contribute!
+
+@node ledit, XEmacs License, inf-lisp, Top
+@chapter ledit
+
+This library not documented.  Please contribute!
+
+@node XEmacs License,  , ledit, Top
+@chapter XEmacs License
+@unnumbered GNU GENERAL PUBLIC LICENSE
+@center Version 2, June 1991
+
+@display
+Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
+675 Mass Ave, Cambridge, MA 02139, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@unnumberedsec Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software---to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, 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 software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, 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 redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+@iftex
+@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+@end iftex
+@ifinfo
+@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+@end ifinfo
+
+@enumerate 0
+@item
+This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The ``Program'', below,
+refers to any such program or work, and a ``work based on the Program''
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term ``modification''.)  Each licensee is addressed as ``you''.
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+@item
+You may copy and distribute verbatim copies of the Program's
+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 give any other recipients of the Program a copy of this License
+along with the Program.
+
+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.
+
+@item
+You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+@enumerate a
+@item
+You must cause the modified files to carry prominent notices
+stating that you changed the files and the date of any change.
+
+@item
+You must cause any work that you distribute or publish, that in
+whole or in part contains or is derived from the Program or any
+part thereof, to be licensed as a whole at no charge to all third
+parties under the terms of this License.
+
+@item
+If the modified program normally reads commands interactively
+when run, you must cause it, when started running for such
+interactive use in the most ordinary way, to print or display an
+announcement including an appropriate copyright notice and a
+notice that there is no warranty (or else, saying that you provide
+a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this
+License.  (Exception: if the Program itself is interactive but
+does not normally print such an announcement, your work based on
+the Program is not required to print an announcement.)
+@end enumerate
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+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 Program, 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 Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+@item
+You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+@enumerate a
+@item
+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; or,
+
+@item
+Accompany it with a written offer, valid for at least three
+years, to give any third party, for a charge no more than your
+cost of physically performing source distribution, a complete
+machine-readable copy of the corresponding source code, to be
+distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+
+@item
+Accompany it with the information you received as to the offer
+to distribute corresponding source code.  (This alternative is
+allowed only for noncommercial distribution and only if you
+received the program in object code or executable form with such
+an offer, in accord with Subsection b above.)
+@end enumerate
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, 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 executable.  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.
+
+If distribution of executable or 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 counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+@item
+You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program 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.
+
+@item
+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 Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+@item
+Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program 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.
+
+@item
+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 Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program 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 Program.
+
+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.
+
+@item
+If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program 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.
+
+@item
+The Free Software Foundation may publish revised and/or new versions
+of the 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 Program
+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 Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+@item
+If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, 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.
+
+@iftex
+@heading NO WARRANTY
+@end iftex
+@ifinfo
+@center NO WARRANTY
+@end ifinfo
+
+@item
+BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW@.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM ``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 PROGRAM IS WITH YOU@.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+@item
+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 PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+@end enumerate
+
+@iftex
+@heading END OF TERMS AND CONDITIONS
+@end iftex
+@ifinfo
+@center END OF TERMS AND CONDITIONS
+@end ifinfo
+
+@page
+@unnumberedsec How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  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.
+
+@smallexample
+@var{one line to give the program's name and an idea of what it does.}
+Copyright (C) 19@var{yy}  @var{name of author}
+
+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., 675 Mass Ave, Cambridge, MA 02139, USA.
+@end smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+@smallexample
+Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author}
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
+type `show w'.  This is free software, and you are welcome
+to redistribute it under certain conditions; type `show c'
+for details.
+@end smallexample
+
+The hypothetical commands @samp{show w} and @samp{show c} should show
+the appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than @samp{show w} and
+@samp{show c}; they could even be mouse-clicks or menu items---whatever
+suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a ``copyright disclaimer'' for the program, if
+necessary.  Here is a sample; alter the names:
+
+@smallexample
+@group
+Yoyodyne, Inc., hereby disclaims all copyright
+interest in the program `Gnomovision'
+(which makes passes at compilers) written
+by James Hacker.
+
+@var{signature of Ty Coon}, 1 April 1989
+Ty Coon, President of Vice
+@end group
+@end smallexample
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.