3 @c Copyright (C) 2002, 2003 Free Software Foundation, Inc.
4 @c Copyright (C) 2003 Jake Colman
6 @c @setfilename os-utils.info
7 @settitle Operating System Utilities for XEmacs
9 @dircategory XEmacs Editor
11 * OS Utilities: (os-utils). Operating System Utilities for XEmacs.
16 This manual is part of XEmacs.
18 XEmacs is free software; you can redistribute it and/or modify it
19 under the terms of the GNU General Public License as published by
20 the Free Software Foundation; either version 2, or (at your option)
23 XEmacs is distributed in the hope that it will be useful, but
24 WITHOUT ANY WARRANTY; without even the implied warranty of
25 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26 General Public License for more details.
28 You should have received a copy of the GNU General Public License
29 along with XEmacs; see the file COPYING. If not, write to the Free
30 Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
34 @node Top, Copying, (dir), (dir)
35 @chapter The Operating System Utilities Package
38 This Info file contains the manual for the Operating System Utilities package.
41 The node name for each entry in the menu is the name of the elisp file
42 containing the code that implements the functionality described. It is
43 highly recommended that you briefly peruse the elisp source code since it can
44 provide valuable information on usage and technique. This can easily be done
45 by typing @code{C-x 4 l <filename> RET} where <filename> is the name of the
46 elisp file to be loaded.
49 * Copying:: Why this manual is GPL, and what that means
52 * tar-mode:: Simple Editing of TAR Files
53 * arc-mode:: Simple Editing of Archives
55 Compression/Decompression
56 * crypt:: Handling for Compressed and Encrypted Files
57 * jka-compr:: Reading/Writing/Loading Compressed Files
58 * uncompress:: Auto-Decompression Hook for Visiting .Z Files
61 * telnet:: Execute a Telnet Session From Within an Emacs Buffer
62 * ssh:: Remote Login Interface Using SSH
63 * ftelnet:: Remote Login Interface Using Telnet
64 * rlogin:: Remote Login Interface Using rlogin
65 * mchat:: Multicast Chatting
66 * kermit:: Using Shell Mode With Kermit
67 * terminal:: Terminal Emulator
70 * spell:: Spelling Correction
71 * background:: Fun With Background Jobs
72 * inf-lisp:: Inferior-Lisp Mode
76 * XEmacs License:: The GNU General Public License
79 @node Copying, tar-mode, Top, Top
82 This document may be redistributed, verbatim or in modified form, under
83 the terms of the GNU General Public License, version 2 or any later
84 version. The same terms apply to the libraries it documents. A copy
85 of the General Public License is provided as an Appendix.
87 Most XEmacs documentation has its own license, which is an ancestor of
88 the GNU Free Documentation License (@dfn{FDL}), and whose terms are
89 quite similar to those imposed by GNU on Emacs documentation. Why is
90 this manual licensed differently (under the GNU General Public License,
91 or @dfn{GPL}), and why does it have to be distributed separately from
92 the XEmacs User's Guide and the XEmacs Lisp Reference Manual?
94 Taking the second question first, XEmacs is @dfn{community-owned}
95 software. That is, unlike GNU Emacs, there is no monopoly copyright
96 holder. Many of us, including the original Lucid authors, have
97 contributed our copyrights to the Free Software Foundation (FSF), and of
98 course much content is derived from GNU Emacs, and therefore is held by
99 the FSF. Another large chunk is held by Sun Microsystems, and a few
100 individual authors hold copyright to thousands of lines each. But many
101 individuals hold copyright to only a few dozen lines. Like the Linux
102 kernel, copyright ownership is distributed throughout a community.
104 However, its license is ``copyleft,'' @emph{i.e.}, it @emph{requires}
105 that you redistribute it under terms @emph{identical} to those under
106 which you received it, unless you have explicit permission of the
107 copyright holder. Because of the multiple owners, determining the
108 ownership of any given part of XEmacs is tedious, and perhaps
109 impossible. For practical purposes, then, the license of any
110 substantial chunk of existing XEmacs content cannot be changed, except
111 to a later version of the GPL, for those parts under GPL. (That is due
112 to the @emph{explicit} permission to change to a later version of the
113 GPL, present in every file of XEmacs.)
115 Unfortunately, this severe restriction means that the GPL, FDL, and the
116 XEmacs documentation license (@dfn{XDL}) are @emph{mutually
117 incompatible}. That is, content licensed under any of the GPL, FDL, or
118 XDL @emph{may not} be mixed with content licensed under either of the
119 other two without changing the license of some of the content. But this
120 requires permission of the copyright holder, which is often difficult or
123 For example, you @emph{may not} take comments or docstrings from XEmacs
124 code and add them to the Lispref to mend a gap in the latter's coverage.
125 You @emph{may not} copy text from the Lispref into docstrings in the
126 code. And you @emph{may not} copy text from the GNU Emacs Lisp
127 Reference to the XEmacs Lisp Reference Manual. (In this case it is at
128 least trivial to ask permission, although it is rather unclear whether
129 it would be granted.)
131 In fact, parts of this document were derived by copying from XEmacs code
132 under the GPL, without any further permission from the authors. Thus,
133 this document must be distributed under the GPL, as a ``volume''
134 separate from the XEmacs documentation under the XDL. Note that the
135 ``mere aggregation'' clauses allow us to distribute in the same
136 tarball. But incorporating it as a node in the Lispref is prohibited,
137 even if done by inclusion.
141 If you look carefully at the additional restrictions imposed by the
142 soi-disant "free" documentation licenses, you discover that they are
143 simply proprietary restrictions guaranteeing a certain amount of
144 @emph{unpaid} political advertising to the Free Software Foundation and
145 GNU Project (and in the case of the FDL, this is extended to commercial
146 advertising by authors of original or derived works). Whether this is
147 ``ethically justified'' or not is a difficult question. What is certain
148 is that there is little social benefit to these terms (since the license
149 documents themselves contain the advocacy and must be included with any
152 I conclude it makes sense for XEmacs to reduce its restrictions, where
153 possible, to the ``least common denominator,'' the GNU General Public
156 @node tar-mode, arc-mode, Copying, Top
157 @chapter Simple Editing of TAR Files
159 This package attempts to make dealing with Unix 'tar' archives easier. When
160 this code is loaded, visiting a file whose name ends in '.tar' will cause the
161 contents of that archive file to be displayed in a Dired-like listing. It is
162 then possible to use the customary Dired keybindings to extract sub-files
163 from that archive, either by reading them into their own editor buffers, or
164 by copying them directly to arbitrary files on disk. It is also possible to
165 delete sub-files from within the tar file and write the modified archive back
166 to disk, or to edit sub-files within the archive and re-insert the modified
167 files into the archive. See the documentation string of @code{tar-mode} for
170 To configure this package, type:
173 M-x customize-group RET tar RET
176 @node arc-mode, crypt, tar-mode, Top
177 @chapter Simple Editing of Archives
179 This library not documented. Please contribute!
181 To configure this package, type:
184 M-x customize-group RET archive RET
187 @node crypt, jka-compr, arc-mode, Top
188 @chapter Handling for Compressed and Encrypted Files
190 The basic purpose of this package of Lisp functions is to recognize
191 automatically encrypted and encoded (i.e., compressed) files when they are
192 first visited or written. The BUFFER corresponding to the file is decoded
193 and/or decrypted before it is presented to the user. The file itself is
194 unchanged on the disk. When the buffer is subsequently saved to disk, a hook
195 function re-encodes the buffer before the actual disk write takes place.
197 This package recognizes all sorts of compressed files by a magic number at
198 the beginning of these files but uses a heuristic to detect encrypted files.
199 If you are asked for an encryption key for a file that is in fact not
200 encrypted, just hit RET and the file will be accepted as is, and the crypt
201 minor mode will not be entered.
203 Other types of encoding programs may be added to this package by using the
204 variable @code{crypt-encoding-alist} which contains a table of encoding
205 programs such as @code{compress}, @code{gzip} (GNU zip), @code{freeze}, and
208 This new extended version of crypt now monitors the filename extensions of
209 buffers that are written out using @code{write-file} (@kbd{C-x C-w}). If the
210 filename extension matches one of the extensions listed in
211 @code{crypt-encoding-alist}, then this package will write the file out using
212 the corresponding encoding (compression) method. This is done whether or not
213 the buffer originated from a previously encoded (compressed) file.
215 Thus, if the user is editing a file that may or may not have been encoded
216 originally (e.g., @file{foobar.Z} or @file{foobar}) and decides to write it
217 to a different file (e.g., @file{barfoo} or @file{barfoo.z} or
218 @file{barfoo.C}). This package will examine the filename extension and write
219 the buffer in plain format or an alternate encoding (compression) format by
220 searching through the entries in the table of encoding methods
221 @code{crypt-encoding-alist}. This change in encoding state is done
222 automatically if the variable @code{crypt-auto-write-buffer} is t otherwise
225 To use this package, put the line @code{(require 'crypt)} in your
226 initialization file. Do not bother trying to autoload this file; this
227 package uses @code{find-file} and @code{write-file} hooks and thus should be
228 loaded the first time you visit any sort of file. Any package loaded after
229 this one that appends something to @code{write-file-hooks} will not be
230 executed because this package writes out the file. Other packages that
231 append to @code{write-file-hooks} should either be modified to prepend to
232 that hook or be loaded before this one (preferably the former).
234 NOTE: encryption users should set @code{crypt-encryption-type} to one of the
235 values in @code{crypt-encryption-alist}.
237 To configure this package, type:
240 M-x customize-group RET compression RET
243 @node jka-compr, uncompress, crypt, Top
244 @chapter Reading/Writing/Loading Compressed Files
246 This package implements low-level support for reading, writing, and loading
247 compressed files. It hooks into the low-level file I/O functions (including
248 @code{write-region} and @code{insert-file-contents}) so that they
249 automatically compress or uncompress a file if the file appears to need it
250 (based on the extension of the file name). Packages like Rmail, VM, GNUS,
251 and Info should be able to work with compressed files without modification.
253 The operation of this package should be transparent to the user (except for
254 messages appearing when a file is being compressed or uncompressed).
256 The variable, @code{jka-compr-compression-info-list} can be used to customize
257 @code{jka-compr} to work with other compression programs. The default value
258 of this variable allows @code{jka-compr} to work with Unix compress and gzip.
260 To activate this package, add the following to your initialization file:
263 (toggle-auto-compression 1 t) ; enable compression/decompression
266 To configure this package, type:
269 M-x customize-group RET jka-compr RET
272 @node uncompress, telnet, jka-compr, Top
273 @chapter Auto-Decompression Hook for Visiting .Z Files
275 This package can be used to arrange for automatic uncompress of compressed
276 files when they are visited. All that's necessary is to load it. This can
277 conveniently be done from your initialization file.
279 @code{M-x auto-compression-mode} is a more modern replacement for this
282 @node telnet, ssh, uncompress, Top
283 @chapter Execute a Telnet Session From Within an Emacs Buffer
285 This mode is intended to be used for telnet or rsh to a remote host;
286 @code{telnet} and @code{rsh} are the two entry points. Multiple telnet or
287 rsh sessions are supported.
289 Normally, input is sent to the remote telnet/rsh line-by-line, as you type
290 @kbd{RET} or @kbd{LFD}. @kbd{C-c C-c} sends a @kbd{C-c} to the remote
291 immediately; @kbd{C-c C-z} sends @kbd{C-z} immediately. @kbd{C-c C-q}
292 followed by any character sends that character immediately.
294 All @kbd{RET} characters are filtered out of the output coming back from the
295 remote system. The mode tries to do other useful translations based on what
296 it sees coming back from the other system before the password query. It
297 knows about UNIX, ITS, TOPS-20 and Explorer systems.
299 You can use the global @code{telnet-host-properties} to associate a telnet
300 program and login name with each host you regularly telnet to.
302 To configure this package, type:
305 M-x customize-group RET telnet RET
308 @node ssh, ftelnet, telnet, Top
309 @chapter Remote Login Interface Using SSH
311 This package provides support for remote logins using @code{ssh}. The
312 package is layered on top of shell.el; the code here only accounts for the
313 variations needed to handle a remote process, e.g. directory tracking and the
314 sending of some special characters.
316 If you wish for ssh mode to prompt you in the minibuffer for passwords when a
317 password prompt appears, just enter @code{M-x send-invisible} and type in
318 your line, or add @code{comint-watch-for-password-prompt} to
319 @code{comint-output-filter-functions}.
321 To configure this package, type:
324 M-x customize-group RET ssh RET
327 @node ftelnet, rlogin, ssh, Top
328 @chapter Remote Login Interface Using Telnet
330 This package provides support for remote logins using @code{telnet}. The
331 package is layered on top of shell.el; the code here only accounts for the
332 variations needed to handle a remote process, e.g. directory tracking and the
333 sending of some special characters.
335 If you wish for ftelnet mode to prompt you in the minibuffer for passwords
336 when a password prompt appears, just enter @kbd{M-x send-invisible} and type
337 in your line, or add @code{comint-watch-for-password-prompt} to
338 @code{comint-output-filter-functions}.
340 @node rlogin, mchat, ftelnet, Top
341 @chapter Remote Login Interface Using rlogin
343 This package provides support for remote logins using @code{rlogin}. The
344 package is layered on top of shell.el; the code here only accounts for the
345 variations needed to handle a remote process, e.g. directory tracking and the
346 sending of some special characters.
348 If you wish for rlogin mode to prompt you in the minibuffer for passwords
349 when a password prompt appears, just enter @kbd{M-x send-invisible} and type
350 in your line, or add @code{comint-watch-for-password-prompt} to
351 @code{comint-output-filter-functions}.
353 To configure this package, type:
356 M-x customize-group RET rlogin RET
359 @node mchat, kermit, rlogin, Top
360 @chapter Multicast Chatting
362 MChat is a package allowing a conversation to take place between a
363 potentially infinite number of people across the Internet. It uses the
364 Multicast support that has been added to XEmacs in the early 21.0 days. At
365 that time a rudimentary version of MChat was written, merely to illustrate
366 the feature, and almost nobody knew it, apart from the other
367 developers. This version is much improved and completely backwards
370 NOTE: before using this package, you most likely have to customize the
371 @code{mchat-nsl-method} first. It specifies a program like @code{nsl} or
372 @code{nslookup} in order to retrieve the IP number of your machine.
374 The main entry point to the package is the @code{mchat} function which allows
375 you to open a multicast group based on the MChat protocol. There are a number
376 a variables that can be customized and their doc-string should be
377 self-explanatory. You might also want to look at the bindings (@kbd{C-h b})
378 in MChat buffers, or at the menubar entries to get an idea of what you can
381 WARNING: the current version (but there's also a limitation in the internals
382 of XEmacs's processes) doesn't let you send messages longer than 500 octets
383 or so, including the protocol header. I plan to change this in the future
386 To configure this package, type:
389 M-x customize-group RET mchat RET
392 @node kermit, terminal, mchat, Top
393 @chapter Using Shell Mode With Kermit
395 This library not documented. Please contribute!
397 @node terminal, spell, kermit, Top
398 @chapter Terminal Emulator
400 This library not documented. Please contribute!
402 @node spell, background, terminal, Top
403 @chapter Spelling Correction
405 This mode provides an Emacs interface to the UNIX spell(1) program. Entry
406 points are @code{spell-buffer}, @code{spell-word}, @code{spell-region} and
407 @code{spell-string}. These facilities are documented in the Emacs user's
410 @node background, inf-lisp, spell, Top
411 @chapter Fun With Background Jobs
413 This library not documented. Please contribute!
415 To configure this package, type:
418 M-x customize-group RET background RET
421 @node inf-lisp, ledit, background, Top
422 @chapter Inferior-Lisp Mode
424 This library not documented. Please contribute!
426 @node ledit, XEmacs License, inf-lisp, Top
429 This library not documented. Please contribute!
431 @node XEmacs License, , ledit, Top
432 @chapter XEmacs License
433 @unnumbered GNU GENERAL PUBLIC LICENSE
434 @center Version 2, June 1991
437 Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
438 675 Mass Ave, Cambridge, MA 02139, USA
440 Everyone is permitted to copy and distribute verbatim copies
441 of this license document, but changing it is not allowed.
444 @unnumberedsec Preamble
446 The licenses for most software are designed to take away your
447 freedom to share and change it. By contrast, the GNU General Public
448 License is intended to guarantee your freedom to share and change free
449 software---to make sure the software is free for all its users. This
450 General Public License applies to most of the Free Software
451 Foundation's software and to any other program whose authors commit to
452 using it. (Some other Free Software Foundation software is covered by
453 the GNU Library General Public License instead.) You can apply it to
456 When we speak of free software, we are referring to freedom, not
457 price. Our General Public Licenses are designed to make sure that you
458 have the freedom to distribute copies of free software (and charge for
459 this service if you wish), that you receive source code or can get it
460 if you want it, that you can change the software or use pieces of it
461 in new free programs; and that you know you can do these things.
463 To protect your rights, we need to make restrictions that forbid
464 anyone to deny you these rights or to ask you to surrender the rights.
465 These restrictions translate to certain responsibilities for you if you
466 distribute copies of the software, or if you modify it.
468 For example, if you distribute copies of such a program, whether
469 gratis or for a fee, you must give the recipients all the rights that
470 you have. You must make sure that they, too, receive or can get the
471 source code. And you must show them these terms so they know their
474 We protect your rights with two steps: (1) copyright the software, and
475 (2) offer you this license which gives you legal permission to copy,
476 distribute and/or modify the software.
478 Also, for each author's protection and ours, we want to make certain
479 that everyone understands that there is no warranty for this free
480 software. If the software is modified by someone else and passed on, we
481 want its recipients to know that what they have is not the original, so
482 that any problems introduced by others will not reflect on the original
483 authors' reputations.
485 Finally, any free program is threatened constantly by software
486 patents. We wish to avoid the danger that redistributors of a free
487 program will individually obtain patent licenses, in effect making the
488 program proprietary. To prevent this, we have made it clear that any
489 patent must be licensed for everyone's free use or not licensed at all.
491 The precise terms and conditions for copying, distribution and
495 @unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
498 @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
503 This License applies to any program or other work which contains
504 a notice placed by the copyright holder saying it may be distributed
505 under the terms of this General Public License. The ``Program'', below,
506 refers to any such program or work, and a ``work based on the Program''
507 means either the Program or any derivative work under copyright law:
508 that is to say, a work containing the Program or a portion of it,
509 either verbatim or with modifications and/or translated into another
510 language. (Hereinafter, translation is included without limitation in
511 the term ``modification''.) Each licensee is addressed as ``you''.
513 Activities other than copying, distribution and modification are not
514 covered by this License; they are outside its scope. The act of
515 running the Program is not restricted, and the output from the Program
516 is covered only if its contents constitute a work based on the
517 Program (independent of having been made by running the Program).
518 Whether that is true depends on what the Program does.
521 You may copy and distribute verbatim copies of the Program's
522 source code as you receive it, in any medium, provided that you
523 conspicuously and appropriately publish on each copy an appropriate
524 copyright notice and disclaimer of warranty; keep intact all the
525 notices that refer to this License and to the absence of any warranty;
526 and give any other recipients of the Program a copy of this License
527 along with the Program.
529 You may charge a fee for the physical act of transferring a copy, and
530 you may at your option offer warranty protection in exchange for a fee.
533 You may modify your copy or copies of the Program or any portion
534 of it, thus forming a work based on the Program, and copy and
535 distribute such modifications or work under the terms of Section 1
536 above, provided that you also meet all of these conditions:
540 You must cause the modified files to carry prominent notices
541 stating that you changed the files and the date of any change.
544 You must cause any work that you distribute or publish, that in
545 whole or in part contains or is derived from the Program or any
546 part thereof, to be licensed as a whole at no charge to all third
547 parties under the terms of this License.
550 If the modified program normally reads commands interactively
551 when run, you must cause it, when started running for such
552 interactive use in the most ordinary way, to print or display an
553 announcement including an appropriate copyright notice and a
554 notice that there is no warranty (or else, saying that you provide
555 a warranty) and that users may redistribute the program under
556 these conditions, and telling the user how to view a copy of this
557 License. (Exception: if the Program itself is interactive but
558 does not normally print such an announcement, your work based on
559 the Program is not required to print an announcement.)
562 These requirements apply to the modified work as a whole. If
563 identifiable sections of that work are not derived from the Program,
564 and can be reasonably considered independent and separate works in
565 themselves, then this License, and its terms, do not apply to those
566 sections when you distribute them as separate works. But when you
567 distribute the same sections as part of a whole which is a work based
568 on the Program, the distribution of the whole must be on the terms of
569 this License, whose permissions for other licensees extend to the
570 entire whole, and thus to each and every part regardless of who wrote it.
572 Thus, it is not the intent of this section to claim rights or contest
573 your rights to work written entirely by you; rather, the intent is to
574 exercise the right to control the distribution of derivative or
575 collective works based on the Program.
577 In addition, mere aggregation of another work not based on the Program
578 with the Program (or with a work based on the Program) on a volume of
579 a storage or distribution medium does not bring the other work under
580 the scope of this License.
583 You may copy and distribute the Program (or a work based on it,
584 under Section 2) in object code or executable form under the terms of
585 Sections 1 and 2 above provided that you also do one of the following:
589 Accompany it with the complete corresponding machine-readable
590 source code, which must be distributed under the terms of Sections
591 1 and 2 above on a medium customarily used for software interchange; or,
594 Accompany it with a written offer, valid for at least three
595 years, to give any third party, for a charge no more than your
596 cost of physically performing source distribution, a complete
597 machine-readable copy of the corresponding source code, to be
598 distributed under the terms of Sections 1 and 2 above on a medium
599 customarily used for software interchange; or,
602 Accompany it with the information you received as to the offer
603 to distribute corresponding source code. (This alternative is
604 allowed only for noncommercial distribution and only if you
605 received the program in object code or executable form with such
606 an offer, in accord with Subsection b above.)
609 The source code for a work means the preferred form of the work for
610 making modifications to it. For an executable work, complete source
611 code means all the source code for all modules it contains, plus any
612 associated interface definition files, plus the scripts used to
613 control compilation and installation of the executable. However, as a
614 special exception, the source code distributed need not include
615 anything that is normally distributed (in either source or binary
616 form) with the major components (compiler, kernel, and so on) of the
617 operating system on which the executable runs, unless that component
618 itself accompanies the executable.
620 If distribution of executable or object code is made by offering
621 access to copy from a designated place, then offering equivalent
622 access to copy the source code from the same place counts as
623 distribution of the source code, even though third parties are not
624 compelled to copy the source along with the object code.
627 You may not copy, modify, sublicense, or distribute the Program
628 except as expressly provided under this License. Any attempt
629 otherwise to copy, modify, sublicense or distribute the Program is
630 void, and will automatically terminate your rights under this License.
631 However, parties who have received copies, or rights, from you under
632 this License will not have their licenses terminated so long as such
633 parties remain in full compliance.
636 You are not required to accept this License, since you have not
637 signed it. However, nothing else grants you permission to modify or
638 distribute the Program or its derivative works. These actions are
639 prohibited by law if you do not accept this License. Therefore, by
640 modifying or distributing the Program (or any work based on the
641 Program), you indicate your acceptance of this License to do so, and
642 all its terms and conditions for copying, distributing or modifying
643 the Program or works based on it.
646 Each time you redistribute the Program (or any work based on the
647 Program), the recipient automatically receives a license from the
648 original licensor to copy, distribute or modify the Program subject to
649 these terms and conditions. You may not impose any further
650 restrictions on the recipients' exercise of the rights granted herein.
651 You are not responsible for enforcing compliance by third parties to
655 If, as a consequence of a court judgment or allegation of patent
656 infringement or for any other reason (not limited to patent issues),
657 conditions are imposed on you (whether by court order, agreement or
658 otherwise) that contradict the conditions of this License, they do not
659 excuse you from the conditions of this License. If you cannot
660 distribute so as to satisfy simultaneously your obligations under this
661 License and any other pertinent obligations, then as a consequence you
662 may not distribute the Program at all. For example, if a patent
663 license would not permit royalty-free redistribution of the Program by
664 all those who receive copies directly or indirectly through you, then
665 the only way you could satisfy both it and this License would be to
666 refrain entirely from distribution of the Program.
668 If any portion of this section is held invalid or unenforceable under
669 any particular circumstance, the balance of the section is intended to
670 apply and the section as a whole is intended to apply in other
673 It is not the purpose of this section to induce you to infringe any
674 patents or other property right claims or to contest validity of any
675 such claims; this section has the sole purpose of protecting the
676 integrity of the free software distribution system, which is
677 implemented by public license practices. Many people have made
678 generous contributions to the wide range of software distributed
679 through that system in reliance on consistent application of that
680 system; it is up to the author/donor to decide if he or she is willing
681 to distribute software through any other system and a licensee cannot
684 This section is intended to make thoroughly clear what is believed to
685 be a consequence of the rest of this License.
688 If the distribution and/or use of the Program is restricted in
689 certain countries either by patents or by copyrighted interfaces, the
690 original copyright holder who places the Program under this License
691 may add an explicit geographical distribution limitation excluding
692 those countries, so that distribution is permitted only in or among
693 countries not thus excluded. In such case, this License incorporates
694 the limitation as if written in the body of this License.
697 The Free Software Foundation may publish revised and/or new versions
698 of the General Public License from time to time. Such new versions will
699 be similar in spirit to the present version, but may differ in detail to
700 address new problems or concerns.
702 Each version is given a distinguishing version number. If the Program
703 specifies a version number of this License which applies to it and ``any
704 later version'', you have the option of following the terms and conditions
705 either of that version or of any later version published by the Free
706 Software Foundation. If the Program does not specify a version number of
707 this License, you may choose any version ever published by the Free Software
711 If you wish to incorporate parts of the Program into other free
712 programs whose distribution conditions are different, write to the author
713 to ask for permission. For software which is copyrighted by the Free
714 Software Foundation, write to the Free Software Foundation; we sometimes
715 make exceptions for this. Our decision will be guided by the two goals
716 of preserving the free status of all derivatives of our free software and
717 of promoting the sharing and reuse of software generally.
727 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
728 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW@. EXCEPT WHEN
729 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
730 PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
731 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
732 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE@. THE ENTIRE RISK AS
733 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU@. SHOULD THE
734 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
735 REPAIR OR CORRECTION.
738 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
739 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
740 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
741 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
742 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
743 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
744 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
745 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
746 POSSIBILITY OF SUCH DAMAGES.
750 @heading END OF TERMS AND CONDITIONS
753 @center END OF TERMS AND CONDITIONS
757 @unnumberedsec How to Apply These Terms to Your New Programs
759 If you develop a new program, and you want it to be of the greatest
760 possible use to the public, the best way to achieve this is to make it
761 free software which everyone can redistribute and change under these terms.
763 To do so, attach the following notices to the program. It is safest
764 to attach them to the start of each source file to most effectively
765 convey the exclusion of warranty; and each file should have at least
766 the ``copyright'' line and a pointer to where the full notice is found.
769 @var{one line to give the program's name and an idea of what it does.}
770 Copyright (C) 19@var{yy} @var{name of author}
772 This program is free software; you can redistribute it and/or
773 modify it under the terms of the GNU General Public License
774 as published by the Free Software Foundation; either version 2
775 of the License, or (at your option) any later version.
777 This program is distributed in the hope that it will be useful,
778 but WITHOUT ANY WARRANTY; without even the implied warranty of
779 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE@. See the
780 GNU General Public License for more details.
782 You should have received a copy of the GNU General Public License
783 along with this program; if not, write to the Free Software
784 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
787 Also add information on how to contact you by electronic and paper mail.
789 If the program is interactive, make it output a short notice like this
790 when it starts in an interactive mode:
793 Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author}
794 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
795 type `show w'. This is free software, and you are welcome
796 to redistribute it under certain conditions; type `show c'
800 The hypothetical commands @samp{show w} and @samp{show c} should show
801 the appropriate parts of the General Public License. Of course, the
802 commands you use may be called something other than @samp{show w} and
803 @samp{show c}; they could even be mouse-clicks or menu items---whatever
806 You should also get your employer (if you work as a programmer) or your
807 school, if any, to sign a ``copyright disclaimer'' for the program, if
808 necessary. Here is a sample; alter the names:
812 Yoyodyne, Inc., hereby disclaims all copyright
813 interest in the program `Gnomovision'
814 (which makes passes at compilers) written
817 @var{signature of Ty Coon}, 1 April 1989
818 Ty Coon, President of Vice
822 This General Public License does not permit incorporating your program into
823 proprietary programs. If your program is a subroutine library, you may
824 consider it more useful to permit linking proprietary applications with the
825 library. If this is what you want to do, use the GNU Library General
826 Public License instead of this License.