Initial Commit
[packages] / xemacs-packages / os-utils / os-utils.texi
1 @c -*-texinfo-*-
2 @c
3 @c Copyright (C) 2002, 2003 Free Software Foundation, Inc.
4 @c Copyright (C) 2003 Jake Colman
5 @c
6 @c @setfilename os-utils.info
7 @settitle Operating System Utilities for XEmacs
8 @ifinfo
9 @dircategory XEmacs Editor
10 @direntry
11 * OS Utilities: (os-utils).     Operating System Utilities for XEmacs.
12 @end direntry
13 @end ifinfo
14
15 @copying
16 This manual is part of XEmacs.
17
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)
21 any later version.
22
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.
27
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
31 02111-1307, USA.
32 @end copying
33
34 @node Top, Copying, (dir), (dir)
35 @chapter The Operating System Utilities Package
36
37 @ifinfo
38 This Info file contains the manual for the Operating System Utilities package.
39 @end ifinfo
40
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.
47
48 @menu
49 * Copying::                     Why this manual is GPL, and what that means
50
51 Archive Management
52 * tar-mode::                    Simple Editing of TAR Files
53 * arc-mode::                    Simple Editing of Archives
54
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
59
60 Communications
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
68
69 Miscellaneous
70 * spell::                       Spelling Correction
71 * background::                  Fun With Background Jobs
72 * inf-lisp::                    Inferior-Lisp Mode
73 * ledit::                       ledit
74
75 Appendices:
76 * XEmacs License::              The GNU General Public License
77 @end menu
78
79 @node Copying, tar-mode, Top, Top
80 @chapter Copying
81
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.
86
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?
93
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.
103
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.)
114
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
121 impossible to get.
122
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.)
130
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.
138
139 A bit of advocacy:
140
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
150 distribution).
151
152 I conclude it makes sense for XEmacs to reduce its restrictions, where
153 possible, to the ``least common denominator,'' the GNU General Public
154 License.
155
156 @node tar-mode, arc-mode, Copying, Top
157 @chapter Simple Editing of TAR Files
158
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
168 more info.
169
170 To configure this package, type:
171
172 @example
173   M-x customize-group RET tar RET
174 @end example
175
176 @node arc-mode, crypt, tar-mode, Top
177 @chapter Simple Editing of Archives
178
179 This library not documented.  Please contribute!
180
181 To configure this package, type:
182
183 @example
184   M-x customize-group RET archive RET
185 @end example
186
187 @node crypt, jka-compr, arc-mode, Top
188 @chapter Handling for Compressed and Encrypted Files
189
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.
196
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.
202
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
206 @code{compact}.
207
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.
214
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
223 the user is asked.
224
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).
233
234 NOTE: encryption users should set @code{crypt-encryption-type} to one of the
235 values in @code{crypt-encryption-alist}.
236
237 To configure this package, type:
238
239 @example
240   M-x customize-group RET compression RET
241 @end example
242
243 @node jka-compr, uncompress, crypt, Top
244 @chapter Reading/Writing/Loading Compressed Files
245
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.
252
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).
255
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.
259
260 To activate this package, add the following to your initialization file:
261
262 @example
263   (toggle-auto-compression 1 t)  ; enable compression/decompression
264 @end example
265
266 To configure this package, type:
267
268 @example
269   M-x customize-group RET jka-compr RET
270 @end example
271
272 @node uncompress, telnet, jka-compr, Top
273 @chapter Auto-Decompression Hook for Visiting .Z Files
274
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.
278
279 @code{M-x auto-compression-mode} is a more modern replacement for this
280 package.
281
282 @node telnet, ssh, uncompress, Top
283 @chapter Execute a Telnet Session From Within an Emacs Buffer
284
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.
288
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.
293
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.
298
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.
301
302 To configure this package, type:
303
304 @example
305   M-x customize-group RET telnet RET
306 @end example
307
308 @node ssh, ftelnet, telnet, Top
309 @chapter Remote Login Interface Using SSH
310
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.
315
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}.
320
321 To configure this package, type:
322
323 @example
324   M-x customize-group RET ssh RET
325 @end example
326
327 @node ftelnet, rlogin, ssh, Top
328 @chapter Remote Login Interface Using Telnet
329
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.
334
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}.
339
340 @node rlogin, mchat, ftelnet, Top
341 @chapter Remote Login Interface Using rlogin
342
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.
347
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}.
352
353 To configure this package, type:
354
355 @example
356   M-x customize-group RET rlogin RET
357 @end example
358
359 @node mchat, kermit, rlogin, Top
360 @chapter Multicast Chatting
361
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
368 incompatible ;-).
369
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.
373
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
379 do.
380
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
384 (see the todo list).
385
386 To configure this package, type:
387
388 @example
389   M-x customize-group RET mchat RET
390 @end example
391
392 @node kermit, terminal, mchat, Top
393 @chapter Using Shell Mode With Kermit
394
395 This library not documented.  Please contribute!
396
397 @node terminal, spell, kermit, Top
398 @chapter Terminal Emulator
399
400 This library not documented.  Please contribute!
401
402 @node spell, background, terminal, Top
403 @chapter Spelling Correction
404
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
408 manual.
409
410 @node background, inf-lisp, spell, Top
411 @chapter Fun With Background Jobs
412
413 This library not documented.  Please contribute!
414
415 To configure this package, type:
416
417 @example
418   M-x customize-group RET background RET
419 @end example
420
421 @node inf-lisp, ledit, background, Top
422 @chapter Inferior-Lisp Mode
423
424 This library not documented.  Please contribute!
425
426 @node ledit, XEmacs License, inf-lisp, Top
427 @chapter ledit
428
429 This library not documented.  Please contribute!
430
431 @node XEmacs License,  , ledit, Top
432 @chapter XEmacs License
433 @unnumbered GNU GENERAL PUBLIC LICENSE
434 @center Version 2, June 1991
435
436 @display
437 Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
438 675 Mass Ave, Cambridge, MA 02139, USA
439
440 Everyone is permitted to copy and distribute verbatim copies
441 of this license document, but changing it is not allowed.
442 @end display
443
444 @unnumberedsec Preamble
445
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
454 your programs, too.
455
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.
462
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.
467
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
472 rights.
473
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.
477
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.
484
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.
490
491   The precise terms and conditions for copying, distribution and
492 modification follow.
493
494 @iftex
495 @unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
496 @end iftex
497 @ifnottex
498 @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
499 @end ifnottex
500
501 @enumerate 0
502 @item
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''.
512
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.
519
520 @item
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.
528
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.
531
532 @item
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:
537
538 @enumerate a
539 @item
540 You must cause the modified files to carry prominent notices
541 stating that you changed the files and the date of any change.
542
543 @item
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.
548
549 @item
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.)
560 @end enumerate
561
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.
571
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.
576
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.
581
582 @item
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:
586
587 @enumerate a
588 @item
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,
592
593 @item
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,
600
601 @item
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.)
607 @end enumerate
608
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.
619
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.
625
626 @item
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.
634
635 @item
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.
644
645 @item
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
652 this License.
653
654 @item
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.
667
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
671 circumstances.
672
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
682 impose that choice.
683
684 This section is intended to make thoroughly clear what is believed to
685 be a consequence of the rest of this License.
686
687 @item
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.
695
696 @item
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.
701
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
708 Foundation.
709
710 @item
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.
718
719 @iftex
720 @heading NO WARRANTY
721 @end iftex
722 @ifnottex
723 @center NO WARRANTY
724 @end ifnottex
725
726 @item
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.
736
737 @item
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.
747 @end enumerate
748
749 @iftex
750 @heading END OF TERMS AND CONDITIONS
751 @end iftex
752 @ifnottex
753 @center END OF TERMS AND CONDITIONS
754 @end ifnottex
755
756 @page
757 @unnumberedsec How to Apply These Terms to Your New Programs
758
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.
762
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.
767
768 @smallexample
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}
771
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.
776
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.
781
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.
785 @end smallexample
786
787 Also add information on how to contact you by electronic and paper mail.
788
789 If the program is interactive, make it output a short notice like this
790 when it starts in an interactive mode:
791
792 @smallexample
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'
797 for details.
798 @end smallexample
799
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
804 suits your program.
805
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:
809
810 @smallexample
811 @group
812 Yoyodyne, Inc., hereby disclaims all copyright
813 interest in the program `Gnomovision'
814 (which makes passes at compilers) written
815 by James Hacker.
816
817 @var{signature of Ty Coon}, 1 April 1989
818 Ty Coon, President of Vice
819 @end group
820 @end smallexample
821
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.