From 31d6616c483359af431f4c33c3c5b237cd8d4426 Mon Sep 17 00:00:00 2001 From: kwget Date: Wed, 1 Dec 1999 23:42:23 -0800 Subject: [PATCH] [svn] Initial revision --- AUTHORS | 16 + COPYING | 339 +++ ChangeLog | 211 ++ INSTALL | 75 + MACHINES | 28 + MAILING-LIST | 16 + Makefile.in | 170 ++ NEWS | 238 ++ README | 80 + TODO | 78 + aclocal.m4 | 251 ++ config.guess | 693 +++++ config.sub | 927 +++++++ configure | 3093 +++++++++++++++++++++ configure.bat | 47 + configure.in | 209 ++ doc/ChangeLog | 245 ++ doc/Makefile.in | 145 + doc/ansi2knr.1 | 19 + doc/sample.wgetrc | 95 + doc/texinfo.tex | 5039 +++++++++++++++++++++++++++++++++++ doc/wget.info | 88 + doc/wget.info-1 | 1283 +++++++++ doc/wget.info-2 | 1079 ++++++++ doc/wget.info-3 | 534 ++++ doc/wget.texi | 3118 ++++++++++++++++++++++ install-sh | 250 ++ mkinstalldirs | 40 + po/Makefile.in.in | 212 ++ po/POTFILES.in | 26 + po/cs.gmo | Bin 0 -> 23285 bytes po/cs.po | 1155 ++++++++ po/de.gmo | Bin 0 -> 23819 bytes po/de.po | 1090 ++++++++ po/hr.gmo | Bin 0 -> 22566 bytes po/hr.po | 1040 ++++++++ po/it.gmo | Bin 0 -> 23570 bytes po/it.po | 1059 ++++++++ po/no.gmo | Bin 0 -> 22385 bytes po/no.po | 1045 ++++++++ po/pt_BR.gmo | Bin 0 -> 22072 bytes po/pt_BR.po | 1168 ++++++++ po/wget.pot | 921 +++++++ src/ChangeLog | 3206 ++++++++++++++++++++++ src/Makefile.in | 158 ++ src/alloca.c | 504 ++++ src/ansi2knr.c | 550 ++++ src/cmpt.c | 1191 +++++++++ src/config.h.in | 183 ++ src/connect.c | 308 +++ src/connect.h | 33 + src/fnmatch.c | 200 ++ src/fnmatch.h | 35 + src/ftp-basic.c | 539 ++++ src/ftp-ls.c | 388 +++ src/ftp-opie.c | 2179 +++++++++++++++ src/ftp.c | 1476 ++++++++++ src/ftp.h | 95 + src/getopt.c | 712 +++++ src/getopt.h | 129 + src/headers.c | 178 ++ src/headers.h | 35 + src/host.c | 560 ++++ src/host.h | 41 + src/html.c | 508 ++++ src/html.h | 39 + src/http.c | 1589 +++++++++++ src/init.c | 928 +++++++ src/init.h | 29 + src/log.c | 317 +++ src/main.c | 721 +++++ src/md5.c | 410 +++ src/md5.h | 140 + src/mswindows.c | 269 ++ src/mswindows.h | 109 + src/netrc.c | 490 ++++ src/netrc.h | 30 + src/options.h | 139 + src/rbuf.c | 102 + src/rbuf.h | 70 + src/recur.c | 820 ++++++ src/recur.h | 29 + src/retr.c | 484 ++++ src/retr.h | 37 + src/sysdep.h | 155 ++ src/url.c | 1500 +++++++++++ src/url.h | 98 + src/utils.c | 978 +++++++ src/utils.h | 73 + src/version.c | 1 + src/wget.h | 201 ++ stamp-h.in | 1 + util/Makefile.in | 37 + util/README | 28 + util/download-netscape.html | 114 + util/download.html | 106 + util/rmold.pl | 92 + util/wget.spec | 57 + windows/Makefile.doc | 42 + windows/Makefile.src | 91 + windows/Makefile.src.bor | 58 + windows/Makefile.top | 67 + windows/Makefile.top.bor | 65 + windows/Makefile.watcom | 101 + windows/README | 21 + windows/config.h.bor | 170 ++ windows/config.h.ms | 170 ++ windows/wget.dep | 25 + 108 files changed, 50333 insertions(+) create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 MACHINES create mode 100644 MAILING-LIST create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 README create mode 100644 TODO create mode 100644 aclocal.m4 create mode 100755 config.guess create mode 100755 config.sub create mode 100755 configure create mode 100644 configure.bat create mode 100644 configure.in create mode 100644 doc/ChangeLog create mode 100644 doc/Makefile.in create mode 100644 doc/ansi2knr.1 create mode 100644 doc/sample.wgetrc create mode 100644 doc/texinfo.tex create mode 100644 doc/wget.info create mode 100644 doc/wget.info-1 create mode 100644 doc/wget.info-2 create mode 100644 doc/wget.info-3 create mode 100644 doc/wget.texi create mode 100755 install-sh create mode 100755 mkinstalldirs create mode 100644 po/Makefile.in.in create mode 100644 po/POTFILES.in create mode 100644 po/cs.gmo create mode 100644 po/cs.po create mode 100644 po/de.gmo create mode 100644 po/de.po create mode 100644 po/hr.gmo create mode 100644 po/hr.po create mode 100644 po/it.gmo create mode 100644 po/it.po create mode 100644 po/no.gmo create mode 100644 po/no.po create mode 100644 po/pt_BR.gmo create mode 100644 po/pt_BR.po create mode 100644 po/wget.pot create mode 100644 src/ChangeLog create mode 100644 src/Makefile.in create mode 100644 src/alloca.c create mode 100644 src/ansi2knr.c create mode 100644 src/cmpt.c create mode 100644 src/config.h.in create mode 100644 src/connect.c create mode 100644 src/connect.h create mode 100644 src/fnmatch.c create mode 100644 src/fnmatch.h create mode 100644 src/ftp-basic.c create mode 100644 src/ftp-ls.c create mode 100644 src/ftp-opie.c create mode 100644 src/ftp.c create mode 100644 src/ftp.h create mode 100644 src/getopt.c create mode 100644 src/getopt.h create mode 100644 src/headers.c create mode 100644 src/headers.h create mode 100644 src/host.c create mode 100644 src/host.h create mode 100644 src/html.c create mode 100644 src/html.h create mode 100644 src/http.c create mode 100644 src/init.c create mode 100644 src/init.h create mode 100644 src/log.c create mode 100644 src/main.c create mode 100644 src/md5.c create mode 100644 src/md5.h create mode 100644 src/mswindows.c create mode 100644 src/mswindows.h create mode 100644 src/netrc.c create mode 100644 src/netrc.h create mode 100644 src/options.h create mode 100644 src/rbuf.c create mode 100644 src/rbuf.h create mode 100644 src/recur.c create mode 100644 src/recur.h create mode 100644 src/retr.c create mode 100644 src/retr.h create mode 100644 src/sysdep.h create mode 100644 src/url.c create mode 100644 src/url.h create mode 100644 src/utils.c create mode 100644 src/utils.h create mode 100644 src/version.c create mode 100644 src/wget.h create mode 100644 stamp-h.in create mode 100644 util/Makefile.in create mode 100644 util/README create mode 100644 util/download-netscape.html create mode 100644 util/download.html create mode 100755 util/rmold.pl create mode 100644 util/wget.spec create mode 100644 windows/Makefile.doc create mode 100644 windows/Makefile.src create mode 100644 windows/Makefile.src.bor create mode 100644 windows/Makefile.top create mode 100644 windows/Makefile.top.bor create mode 100644 windows/Makefile.watcom create mode 100644 windows/README create mode 100644 windows/config.h.bor create mode 100644 windows/config.h.ms create mode 100644 windows/wget.dep diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 00000000..505e99cc --- /dev/null +++ b/AUTHORS @@ -0,0 +1,16 @@ +Authors of GNU Wget. + +[ Note that this file does not attempt to list all the contributors to + Wget; look at the ChangeLog for that. This is a list of people who + contributed sizeable amounts of code and assigned the copyright to the + FSF. ] + +Hrvoje Niksic. Designed and implemented Wget. + +Gordon Matzigkeit. Wrote netrc.c and netrc.h. + +Darko Budor. Added Windows support, wrote wsstartup.c, wsstartup.h +and windecl.h. + +Junio Hamano. Added support for FTP Opie and HTTP digest +authentication. diff --git a/COPYING b/COPYING new file mode 100644 index 00000000..e77696ae --- /dev/null +++ b/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 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. + + 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. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. 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. + + 1. 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. + + 2. 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: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) 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. + + c) 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.) + +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. + + 3. 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: + + a) 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, + + b) 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, + + c) 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.) + +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. + + 4. 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. + + 5. 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. + + 6. 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. + + 7. 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. + + 8. 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. + + 9. 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. + + 10. 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. + + NO WARRANTY + + 11. 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. + + 12. 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 OF TERMS AND CONDITIONS + + 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. + + + Copyright (C) 19yy + + 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. + +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: + + Gnomovision version 69, Copyright (C) 19yy 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. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `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: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +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. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 00000000..58b899a2 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,211 @@ +1998-06-23 Dave Love + + * configure.in (exext): Define. + +1998-06-06 Hrvoje Niksic + + * configure.in: Check for access(). + +1998-05-20 Hrvoje Niksic + + * po/hr.po: Some fixes, as per suggestions by Francois Pinard. + +1998-05-19 Dominique Delamarre + + * po/fr.po: New file. + +1998-05-19 Toomas Soome + + * po/et.po: Updated. + +1998-05-11 Simos KSenitellis + + * po/el.po: New file. + +1998-05-09 Hrvoje Niksic + + * aclocal.m4 (WGET_WITH_NLS): Print available catalogs. + +1998-05-09 Toomas Soome + + * po/et.po: New file. + +1998-05-06 Douglas E. Wegscheid + + * configure.bat: set up for either Borland or Visual C + + * windows/wget.dep: new file + + * windows/Makefile.*: use wget.dep + + * rename windows/Makefile.bor to Makefile.src.bor + +1998-05-06 Douglas E. Wegscheid + + * windows/makefile.bor: Updated. + + * windows/Makefile.src: Ditto. + +1998-04-30 Douglas E. Wegscheid + + * windows/config.h.bor: New file. + + * windows/makefile.bor: New file. + +1998-04-27 John Burden + + * windows/Makefile.*: Cleanup. + +1998-04-27 Gregor Hoffleit + + * configure.in: Check for PID_T. + +1998-04-19 Giovanni Bortolozzo + + * po/it.po: Updated. + +1998-04-19 Jan Prikryl + + * po/cs.po: Updated. + +1998-04-19 Wanderlei Cavassin + + * po/pt_BR.po: Updated. + +1998-04-08 Stefan Hornburg + + * Makefile (dist): New target. + +1998-04-08 Wanderlei Cavassin + + * po/pt_BR.po: Updated. + +1998-04-04 Hrvoje Niksic + + * aclocal.m4 (WGET_WITH_NLS): Renamed USE_NLS to HAVE_NLS. + + * ABOUT-NLS: Removed. + + * Makefile.in (stamp-h): Clean up stamp-h-related dependencies. + Don't attempt to write to stamp-h.in. + + * aclocal.m4 (WGET_PROCESS_PO): Reset srcdir to ac_given_srcdir. + +1998-04-03 Hrvoje Niksic + + * Makefile.in (distclean-top): Remove stamp-h. + +1998-04-02 Robert Schmidt + + * po/no.po: New file. + +1998-04-01 Hrvoje Niksic + + * configure.in: New option `--disable-debug'. + +1998-03-31 Hrvoje Niksic + + * configure.in: Check for endianness. + +1998-03-29 Hrvoje Niksic + + * aclocal.m4 (WGET_PROCESS_PO): Use echo instead of AC_MSG_RESULT. + +1998-03-28 Hrvoje Niksic + + * aclocal.m4 (WGET_WITH_NLS): Disable USE_NLS if gettext is + unavailable. + + * aclocal.m4: Renamed AM_STRUCT_UTIMBUF to WGET_STRUCT_UTIMBUF; + renamed AM_WITH_NLS to WGET_WITH_NLS. + + * aclocal.m4: Eliminate POSUBS. + +1998-03-17 Hrvoje Niksic + + * Makefile.in: config.h* -> src/config.h* + + * configure.in: Check for vsnprintf(). + + * po/POTFILES.in: Updated. + +1998-03-16 Hrvoje Niksic + + * po/POTFILES.in: Removed extraneous newline at end of line, which + caused an error in `Makefile' which Sun make choked on. + +1998-03-16 Jan Prikryl + + * po/cs.po: New file. + +1998-03-12 Wanderlei Cavassin + + * po/pt_BR.po: New file. + +1998-03-07 Hrvoje Niksic + + * PROBLEMS: New file. + +1998-02-22 Karl Eichwalder + + * po/Makefile.in.in (install-data-yes): Fix creation of + directories for LC_MESSAGE files. + +1998-02-22 Hrvoje Niksic + + * configure.in: Removed `-Wno-switch' for gcc. + + * po/Makefile.in.in (install-data-yes): Use mkinstalldirs to + create the directory first. + +1998-02-21 Karl Eichwalder + + * po/de.po: Updated. + +1998-02-19 Hrvoje Niksic + + * Makefile.in (check): New empty target. + +1998-02-11 Hrvoje Niksic + + * po/it.po: New file, by Antonio Rosella. + +1998-02-08 Hrvoje Niksic + + * aclocal.m4: Cleaned up. + + * po/hr.po: Updated. + + * configure.in: Removed check for POSIXized ISC. + +1998-02-08 Karl Eichwalder + + * po/de.po: Updated. + +1998-02-07 Karl Eichwalder + + * Makefile.in (install.info uninstall.info install.man + uninstall.man install.wgetrc): Use it. + + * Makefile.in (install.mo): New target. + +1998-02-03 Karl Eichwalder + + * po/POTFILES.in: Touch it (needed for NLS); add src/ftp.c, + src/getopt.c, src/host.c, src/html.c, src/http.c, src/init.c, + src/main.c, src/mswindows.c, src/netrc.c, src/recur.c, src/retr.c, + src/url.c, and src/utils.c. + + * intl/po2tbl.sed.in: Add from gettext-0.10.32 (needed for NLS). + + * po/Makefile.in.in: Add from gettext-0.10.32. + + * Makefile.in (SUBDIRS): Add po/. + + * configure.in (ALL_LINGUAS): New variable. Add "de" and "hr". + (AM_GNU_GETTEXT): Add. + (AC_OUTPUT): Add po/Makefile.in; run the sed command. + + * aclocal.m4 (AM_WITH_NLS, AM_GNU_GETTEXT, AM_LC_MESSAGES, + AM_PATH_PROG_WITH_TEST): from gettext-0.10.32. + diff --git a/INSTALL b/INSTALL new file mode 100644 index 00000000..b9c56f13 --- /dev/null +++ b/INSTALL @@ -0,0 +1,75 @@ + -*- text -*- + Installation Procedure + +0) Preparation + +To build and install GNU Wget, you need to unpack the archive (which +you have presumably done, since you are reading this), and read on. +Like most GNU utilities, Wget uses the GNU Autoconf mechanism for +build and installation; those of you familiar with compiling GNU +software will feel at home. + +1) Configuration + +To configure Wget, run the configure script provided with the +distribution. You may use all the standard arguments configure +scripts take. The most important ones are: + + --help print help message + + --prefix=PREFIX install architecture-independent files in PREFIX + (/usr/local by default) + --bindir=DIR user executables in DIR (PREFIX/bin) + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] + +--enable and --with options recognized (mostly Wget-specific): + --with-socks use the socks library + --disable-opie disable support for opie or s/key FTP login + --disable-digest disable support for HTTP digest authorization + --disable-debug disable support for debugging output + --disable-nls do not use Native Language Support + +So, if you want to configure Wget for installation in your home +directory, you can type: +./configure --prefix=$HOME + +You can customize many default settings by editing Makefile and +config.h. The program will work very well without your touching these +files, but it is useful to have a look at things you can change there. + +If you use socks, it is useful to add -L/usr/local/lib (or wherever +the socks library is installed) to LDFLAGS in Makefile. + +To configure Wget on Windows, run configure.bat and follow the +instructions in the windows/ directory. If this doesn't work for any +reason, talk to the Windows developers listed in `windows/README'; I +do not maintain the port. + +2) Compilation + +To compile the program, type make and cross your fingers. If you do +not have an ANSI compiler, Wget will try to KNR-ize its sources "on +the fly". This should make GNU Wget compilable virtually anywhere. + +After the compilation a ready to use `wget' executable should reside +in the src directory. I do not have any kind of test-suite as of this +moment, but it should be easy enough to test whether the basic stuff +works. + +3) Installation + +Use `make install' to install GNU Wget to directories specified to +configure (/usr/local/* by default). + +The standard installation process will copy the wget binary to +/usr/local/bin, install the info pages (wget.info*) to +/usr/local/info. You can customize the directories either through the +configuration process or making the necessary changes in the Makefile. + +To delete the files created by Wget installation, you can use make +uninstall. diff --git a/MACHINES b/MACHINES new file mode 100644 index 00000000..eeca6220 --- /dev/null +++ b/MACHINES @@ -0,0 +1,28 @@ +This files lists the architectures on which this version of GNU Wget +was tried on. If you compile Wget on a new architecture, please drop +me a note, or send a patch to this file. + + +Sun SunOS, Solaris (sparc-sun-solaris*, sparc-sun-sunos*) + +GNU/Linux (i[3456]86-*-linux*) + +DEC Ultrix, Digital Unix (mips-dec-ultrix*, alpha-dec-osf*) + +HP BSD (m68k-hp-bsd) + +HP HPUX (hppa1.0-hp-hpux7.00, hppa1.1-hp-hpux9.01 and others) + +IBM AIX (powerpc-ibm-aix4.1.4.0) + +Amiga NetBSD (m68k-cbm-netbsd1.2) + +SGI IRIX (mips-sgi-irix4.0.5, mips-sgi-irix5.3) + +SCO Unix (i586-pc-sco3.2v5.0.4) + +NeXTStep 3.3 Intel (i386-next-nextstep3) + +FreeBSD (i386-unknown-freebsd2.2.6) + +Windows 95/NT (i[3456]86) diff --git a/MAILING-LIST b/MAILING-LIST new file mode 100644 index 00000000..e0fe8a6f --- /dev/null +++ b/MAILING-LIST @@ -0,0 +1,16 @@ + -*- text -*- + + Mailing List Info + + +Thanks to Karsten Thygesen, Wget has its own mailing list for +discussion and announcements. The list address is hosted at Sunsite +Denmark, . To subscribe, send mail to +. + +The list is fairly low-volume -- one or two messages per day and with +sporadic periods of intensive activity. If you are interested in +using or hacking Wget, or wish to read the important announcements, +you are very welcome to subscribe. + +The list is archived at . diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 00000000..c20287c6 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,170 @@ +# Makefile for `Wget' utility +# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + +# 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. + +# +# Version: @VERSION@ +# + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +VPATH = @srcdir@ + +# +# User configuration section +# + +# +# Install variables +# +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +infodir = @infodir@ +sysconfdir = @sysconfdir@ +mandir = @mandir@ +manext = 1 +localedir = $(prefix)/share/locale + +CC = @CC@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +DEFS = @DEFS@ -DSYSTEM_WGETRC=\"$(sysconfdir)/wgetrc\" -DLOCALEDIR=\"$(localedir)\" +LIBS = @LIBS@ +LDFLAGS = @LDFLAGS@ + +# +# End of user configuration section. There should be no need to change +# anything below this line. +# + +DISTNAME = wget-@VERSION@ +RM = rm -f + +# These are used for maintenance only, so they are safe without +# special autoconf cruft. +FIND = find +GZIP = gzip +TAR = tar + +# flags passed to recursive makes in subdirectories +MAKEDEFS = CC='$(CC)' CPPFLAGS='$(CPPFLAGS)' DEFS='$(DEFS)' \ +CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' LIBS='$(LIBS)' \ +prefix='$(prefix)' exec_prefix='$(exec_prefix)' bindir='$(bindir)' \ +infodir='$(infodir)' mandir='$(mandir)' manext='$(manext)' + +# subdirectories in the distribution +SUBDIRS = src doc po util + +# default target +all: src/config.h Makefile $(SUBDIRS) + +check: all + +$(SUBDIRS): FORCE + cd $@ && $(MAKE) $(MAKEDEFS) + +# install everything +install: install.bin install.info install.wgetrc install.mo # install.man + +# install/uninstall the binary +install.bin uninstall.bin: + cd src && $(MAKE) $(MAKEDEFS) $@ + +# install/uninstall the info/man pages +install.info uninstall.info install.man uninstall.man install.wgetrc: + cd doc && $(MAKE) $(MAKEDEFS) $@ + +# Install `.mo' files +install.mo: + cd po && $(MAKE) $(MAKEDEFS) $@ + +# create tag files for Emacs +TAGS: + cd src && $(MAKE) $@ + +dist: $(srcdir)/configure DISTFILES + mkdir $(DISTNAME) + for d in `$(FIND) . -type d ! -name RCS -print`; do \ + if [ "$$d" != "." -a "$$d" != "./$(DISTNAME)" ]; then \ + mkdir $(DISTNAME)/$$d; \ + fi; \ + done + for f in `cat DISTFILES`; do \ + ln $(srcdir)/$$f $(DISTNAME)/$$f || \ + { echo copying $$f; cp -p $(srcdir)/$$f $(DISTNAME)/$$f ; } \ + done + (cd $(DISTNAME); $(MAKE) distclean) + $(TAR) chvf - $(DISTNAME) | $(GZIP) -c --best >$(DISTNAME).tar.gz + $(RM) -r $(DISTNAME) + $(RM) DISTFILES + +DISTFILES: FORCE + rm -rf $(DISTNAME) + (cd $(srcdir); find . ! -type d -print) \ + | sed '/\/RCS\//d; \ + /$@/d; \ + /\.tar.*/d; \ + s/^.\///; /^\.$$/d;' \ + | sort | uniq > $@ + +# +# Cleanup dependencies +# + +clean: clean-recursive clean-top +distclean: distclean-recursive distclean-top +realclean: realclean-recursive realclean-top + +clean-top: + $(RM) *~ *.bak $(DISTNAME).tar.gz + +distclean-top: clean-top + $(RM) Makefile config.status config.log config.cache stamp-h + +realclean-top: distclean-top + +clean-recursive distclean-recursive realclean-recursive: + for subdir in $(SUBDIRS); do \ + target=`echo $@ | sed s/-recursive//`; \ + (cd $$subdir && $(MAKE) $(MAKEDEFS) $$target) || exit 1; \ + done + +# +# Dependencies for maintenance +# + +Makefile: Makefile.in config.status + CONFIG_HEADERS= ./config.status + +config.status: configure + ./config.status --recheck + +configure: configure.in aclocal.m4 + cd $(srcdir) && autoconf + +src/config.h: stamp-h +stamp-h: src/config.h.in config.status + CONFIG_FILES= CONFIG_HEADERS=src/config.h ./config.status + +src/config.h.in: stamp-h.in +stamp-h.in: configure.in aclocal.m4 + echo timestamp > $@ + +FORCE: + diff --git a/NEWS b/NEWS new file mode 100644 index 00000000..a3e31b33 --- /dev/null +++ b/NEWS @@ -0,0 +1,238 @@ +GNU Wget NEWS -- history of user-visible changes. + +Copyright (C) 1997, 1998 Free Software Foundation, Inc. +See the end for copying conditions. + +Please send GNU Wget bug reports to . + +* Wget 1.5.3 is a bugfix release with no user-visible changes. + +* Wget 1.5.2 is a bugfix release with no user-visible changes. + +* Wget 1.5.1 is a bugfix release with no user-visible changes. + +* Changes in Wget 1.5.0 + +** Wget speaks many languages! + +On systems with gettext(), Wget will output messages in the language +set by the current locale, if available. At this time we support +Czech, German, Croatian, Italian, Norwegian and Portuguese. + +** Opie (Skey) is now supported with FTP. + +** HTTP Digest Access Authentication (RFC2069) is now supported. + +** The new `-b' option makes Wget go to background automatically. + +** The `-I' and `-X' options now accept wildcard arguments. + +** The `-w' option now accepts suffixes `s' for seconds, `m' for +minutes, `h' for hours, `d' for days and `w' for weeks. + +** Upon getting SIGHUP, the whole previous log is now copied to +`wget-log'. + +** Wget now understands proxy settings with explicit usernames and +passwords, e.g. `http://user:password@proxy.foo.com/'. + +** You can use the new `--cut-dirs' option to make Wget create less +directories. + +** The `;type=a' appendix to FTP URLs is now recognized. For +instance, the following command will retrieve the welcoming message in +ASCII type transfer: + + wget "ftp://ftp.somewhere.com/welcome.msg;type=a" + +** `--help' and `--version' options have been redone to to conform to +standards set by other GNU utilities. + +** Wget should now be compilable under MS Windows environment. MS +Visual C++ and Watcom C have been used successfully. + +** If the file length is known, percentages are displayed during +download. + +** The manual page, now hopelessly out of date, is no longer +distributed with Wget. + +* Wget 1.4.5 is a bugfix release with no user-visible changes. + +* Wget 1.4.4 is a bugfix release with no user-visible changes. + +* Changes in Wget 1.4.3 + +** Wget is now a GNU utility. + +** Can do passive FTP. + +** Reads .netrc. + +** Info documentation expanded. + +** Compiles on pre-ANSI compilers. + +** Global wgetrc now goes to /usr/local/etc (i.e. $sysconfdir). + +** Lots of bugfixes. + +* Changes in Wget 1.4.2 + +** New mirror site at ftp://sunsite.auc.dk/pub/infosystems/wget/, +thanks to Karsten Thygesen. + +** Mailing list! Mail to wget-request@sunsite.auc.dk to subscribe. + +** New option --delete-after for proxy prefetching. + +** New option --retr-symlinks to retrieve symbolic links like plain +files. + +** rmold.pl -- script to remove files deleted on the remote server + +** --convert-links should work now. + +** Minor bugfixes. + +* Changes in Wget 1.4.1 + +** Minor bugfixes. + +** Added -I (the opposite of -X). + +** Dot tracing is now customizable; try wget --dot-style=binary + +* Changes in Wget 1.4.0 + +** Wget 1.4.0 [formerly known as Geturl] is an extensive rewrite of +Geturl. Although many things look suspiciously similar, most of the +stuff was rewritten, like recursive retrieval, HTTP, FTP and mostly +everything else. Wget should be now easier to debug, maintain and, +most importantly, use. + +** Recursive HTTP should now work without glitches, even with Location +changes, server-generated directory listings and other naughty stuff. + +** HTTP regetting is supported on servers that support Range +specification. WWW authorization is supported -- try +wget http://user:password@hostname/ + +** FTP support was rewritten and widely enhanced. Globbing should now +work flawlessly. Symbolic links are created locally. All the +information the Unix-style ls listing can give is now recognized. + +** Recursive FTP is supported, e.g. + wget -r ftp://gnjilux.cc.fer.hr/pub/unix/util/ + +** You can specify "rejected" directories, to which you do not want to +enter, e.g. with wget -X /pub + +** Time-stamping is supported, with both HTTP and FTP. Try wget -N URL. + +** A new texinfo reference manual is provided. It can be read with +Emacs, standalone info, or converted to HTML, dvi or postscript. + +** Fixed a long-standing bug, so that Wget now works over SLIP +connections. + +** You can have a system-wide wgetrc (/usr/local/lib/wgetrc by +default). Settings in $HOME/.wgetrc override the global ones, of +course :-) + +** You can set up quota in .wgetrc to prevent sucking too much +data. Try `quota = 5M' in .wgetrc (or quota = 100K if you want your +sysadmin to like you). + +** Download rate is printed after retrieval. + +** Wget now sends the `Referer' header when retrieving +recursively. + +** With the new --no-parent option Wget can retrieve FTP recursively +through a proxy server. + +** HTML parser, as well as the whole of Wget was rewritten to be much +faster and less memory-consuming (yes, both). + +** Absolute links can be converted to relative links locally. Check +wget -k. + +** Wget catches hangup, filtering the output to a log file and +resuming work. Try kill -HUP %?wget. + +** User-defined headers can be sent. Try + + wget http://fly.cc.her.hr/ --header='Accept-Charset: iso-8859-2' + +** Acceptance/Rejection lists may contain wildcards. + +** Wget can display HTTP headers and/or FTP server response with the +new `-S' option. It can save the original HTTP headers with `-s'. + +** socks library is now supported (thanks to Antonio Rosella +). Configure with --with-socks. + +** There is a nicer display of REST-ed output. + +** Many new options (like -x to force directory hierarchy, or -m to +turn on mirroring options). + +** Wget is now distributed under GNU General Public License (GPL). + +** Lots of small features I can't remember. :-) + +** A host of bugfixes. + +* Changes in Geturl 1.3 + +** Added FTP globbing support (ftp://fly.cc.fer.hr/*) + +** Added support for no_proxy + +** Added support for ftp://user:password@host/ + +** Added support for %xx in URL syntax + +** More natural command-line options + +** Added -e switch to execute .geturlrc commands from the command-line + +** Added support for robots.txt + +** Fixed some minor bugs + +* Geturl 1.2 is a bugfix release with no user-visible changes. + +* Changes in Geturl 1.1 + +** REST supported in FTP + +** Proxy servers supported + +** GNU getopt used, which enables command-line arguments to be ordered +as you wish, e.g. geturl http://fly.cc.fer.hr/ -vo log is the same as +geturl -vo log http://fly.cc.fer.hr/ + +** Netscape-compatible URL syntax for HTTP supported: host[:port]/dir/file + +** NcFTP-compatible colon URL syntax for FTP supported: host:/dir/file + +** supported + +** autoconf supported + +---------------------------------------------------------------------- +Copyright information: + +Copyright (C) 1997, 1998 Free Software Foundation, Inc. + + Permission is granted to anyone to make or distribute verbatim + copies of this document as received, in any medium, provided that + the copyright notice and this permission notice are preserved, thus + giving the recipient permission to redistribute in turn. + + Permission is granted to distribute modified versions of this + document, or of portions of it, under the above conditions, + provided also that they carry prominent notices stating who last + changed them. diff --git a/README b/README new file mode 100644 index 00000000..04821c92 --- /dev/null +++ b/README @@ -0,0 +1,80 @@ + -*- text -*- + GNU Wget README + +GNU Wget is a free network utility to retrieve files from the World +Wide Web using HTTP and FTP, the two most widely used Internet +protocols. It works non-interactively, thus enabling work in the +background, after having logged off. + +The recursive retrieval of HTML pages, as well as FTP sites is +supported -- you can use Wget to make mirrors of archives and home +pages, or traverse the web like a WWW robot (Wget understands +/robots.txt). + +Wget works exceedingly well on slow or unstable connections, keeping +getting the document until it is fully retrieved. Re-getting files +from where it left off works on servers (both HTTP and FTP) that +support it. Matching of wildcards and recursive mirroring of +directories are available when retrieving via FTP. Both HTTP and FTP +retrievals can be time-stamped, thus Wget can see if the remote file +has changed since last retrieval and automatically retrieve the new +version if it has. + +Wget supports proxy servers, which can lighten the network load, speed +up retrieval and provide access behind firewalls. If you are behind a +firewall that requires the use of a socks style gateway, you can get +the socks library and compile wget with support for socks. + +Most of the features are configurable, either through command-line +options, or via initialization file .wgetrc. Wget allows you to +install a global startup file (/usr/local/etc/wgetrc by default) for +site settings. + +Wget works under almost all modern Unix variants and, unlike many +other similar utilities, is written entirely in C, thus requiring no +additional software (like perl). As Wget uses the GNU Autoconf, it is +easily built on and ported to other Unix's. Installation procedure is +described in the INSTALL file. + +Like all GNU utilities, the latest version of Wget can be found at the +master GNU archive site prep.ai.mit.edu, and its mirrors. For +example, Wget 1.5.2 is at: +. + +The latest version is also available via FTP from the maintainer's +machine, at: +. + +This location is mirrored at: + and +. + +Please report bugs in Wget to . + +Wget has a own mailing list at . To subscribe, +mail to . + +Wget is free in all senses -- it is freely redistributable, and no +payment is required. If you still wish to donate money to the author, +or wish to sponsor implementation of specific features, please email +me at . + + +AUTHOR: Hrvoje Niksic + + +Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + +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. diff --git a/TODO b/TODO new file mode 100644 index 00000000..d16554a9 --- /dev/null +++ b/TODO @@ -0,0 +1,78 @@ + Hey Emacs, this is -*- outline -*- mode + +This is the todo list for Wget. I don't have any time-table of when I +plan to implement these features; this is just a list of things I'd +like to see in Wget. I'll work on some of them myself, and I will +accept patches in their direction. The items are not listed in any +particular order. Not all of them are user-visible changes. + +* Make `-k' convert too. + +* Add option to clobber existing file names (no `.N' suffixes). + +* Introduce a concept of "boolean" options. For instance, every + boolean option `--foo' would have a `--no-foo' equivalent for + turning it off. Get rid of `--foo=no' stuff. Short options would + be handled as `-x' vs. `-nx'. + +* Implement "thermometer" display (not all that hard; use an + alternative show_progress() if the output goes to a terminal.) + +* Add option to only list wildcard matches without doing the download. + +* Add case-insensitivity as an option. + +* Add option to download all files needed to display a web page + (images, etc.) + +* Handle MIME types correctly. There should be an option to (not) + retrieve files based on MIME types, e.g. `--accept-types=image/*'. + +* Implement "persistent" retrieving. In "persistent" mode Wget should + treat most of the errors as transient. + +* Allow time-stamping by arbitrary date. + +* Fix Unix directory parser to allow for spaces in file names. + +* Allow size limit to files. + +* -k should convert convert relative references to absolute if not + downloaded. + +* Recognize HTML comments correctly. Add more options for handling + bogus HTML found all over the 'net. + +* Implement breadth-first retrieval. + +* Download to .in* when mirroring. + +* Add an option to delete or move no-longer-existent files when + mirroring. + +* Implement a switch to avoid downloading multiple files (e.g. x and + x.gz). + +* Implement uploading (--upload URL?) in FTP and HTTP. + +* Rewrite FTP code to allow for easy addition of new commands. It + should probably be coded as a simple DFA engine. + +* Recognize more FTP servers (VMS). + +* Make HTTP timestamping use If-Modified-Since facility. + +* Implement better spider options. + +* Add more protocols (e.g. gopher and news), implementing them in a + modular fashion. + +* Implement a concept of "packages" a la mirror. + +* Implement correct RFC1808 URL parsing. + +* Implement HTTP cookies. + +* Implement more HTTP/1.1 bells and whistles (ETag, Content-MD5 etc.) + +* Support SSL encryption through SSLeay. diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 00000000..f5c979c1 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,251 @@ +AC_DEFUN(AM_C_PROTOTYPES, +[AC_REQUIRE([AM_PROG_CC_STDC]) +AC_BEFORE([$0], [AC_C_INLINE]) +AC_MSG_CHECKING([for function prototypes]) +if test "$am_cv_prog_cc_stdc" != no; then + AC_MSG_RESULT(yes) + AC_DEFINE(PROTOTYPES) + U= ANSI2KNR= +else + AC_MSG_RESULT(no) + U=_ ANSI2KNR=./ansi2knr + # Ensure some checks needed by ansi2knr itself. + AC_HEADER_STDC + AC_CHECK_HEADERS(string.h) +fi +AC_SUBST(U)dnl +AC_SUBST(ANSI2KNR)dnl +]) + + +# serial 1 + +# @defmac AC_PROG_CC_STDC +# @maindex PROG_CC_STDC +# @ovindex CC +# If the C compiler in not in ANSI C mode by default, try to add an option +# to output variable @code{CC} to make it so. This macro tries various +# options that select ANSI C on some system or another. It considers the +# compiler to be in ANSI C mode if it defines @code{__STDC__} to 1 and +# handles function prototypes correctly. +# +# If you use this macro, you should check after calling it whether the C +# compiler has been set to accept ANSI C; if not, the shell variable +# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source +# code in ANSI C, you can make an un-ANSIfied copy of it by using the +# program @code{ansi2knr}, which comes with Ghostscript. +# @end defmac + +AC_DEFUN(AM_PROG_CC_STDC, +[AC_REQUIRE([AC_PROG_CC]) +AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C) +AC_CACHE_VAL(am_cv_prog_cc_stdc, +[am_cv_prog_cc_stdc=no +ac_save_CC="$CC" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + AC_TRY_COMPILE( +[#if !defined(__STDC__) || __STDC__ != 1 +choke me +#endif +/* DYNIX/ptx V4.1.3 can't compile sys/stat.h with -Xc -D__EXTENSIONS__. */ +#ifdef _SEQUENT_ +# include +# include +#endif +], [ +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);};], +[am_cv_prog_cc_stdc="$ac_arg"; break]) +done +CC="$ac_save_CC" +]) +AC_MSG_RESULT($am_cv_prog_cc_stdc) +case "x$am_cv_prog_cc_stdc" in + x|xno) ;; + *) CC="$CC $am_cv_prog_cc_stdc" ;; +esac +]) + +AC_DEFUN(WGET_STRUCT_UTIMBUF, +[AC_MSG_CHECKING(for struct utimbuf) +if test x"$ac_cv_header_utime_h" = xyes; then + AC_EGREP_CPP([struct[ ]+utimbuf], + [#include ], + [AC_DEFINE(HAVE_STRUCT_UTIMBUF) + AC_MSG_RESULT(yes)], + AC_MSG_RESULT(no)) +else + AC_MSG_RESULT(no) +fi]) + + +# This code originates from Ulrich Drepper's AM_WITH_NLS. + +AC_DEFUN(WGET_WITH_NLS, + [AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + HAVE_NLS=$enableval, HAVE_NLS=yes) + AC_MSG_RESULT($HAVE_NLS) + + dnl If something goes wrong, we may still decide not to use NLS. + dnl For this reason, defer AC_SUBST'ing HAVE_NLS until the very + dnl last moment. + + if test x"$HAVE_NLS" = xyes; then + AC_MSG_RESULT("language catalogs: $ALL_LINGUAS") + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt) + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + AC_SUBST(MSGFMT) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + CATOBJEXT=.gmo + INSTOBJEXT=.mo + DATADIRNAME=share + + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + AC_MSG_RESULT( + [found xgettext programs is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + + AC_CHECK_HEADERS(locale.h libintl.h) + + AC_CHECK_FUNCS(gettext, [], [ + AC_CHECK_LIB(intl, gettext, [ + dnl gettext is in libintl; announce the fact manually. + LIBS="-lintl $LIBS" + AC_DEFINE(HAVE_GETTEXT) + ], [ + AC_MSG_RESULT( + [gettext not found; disabling NLS]) + HAVE_NLS=no + ]) + ]) + + dnl These rules are solely for the distribution goal. While doing this + dnl we only have to keep exactly one list of the available catalogs + dnl in configure.in. + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + dnl Construct list of names of catalog files to be constructed. + for lang in $ALL_LINGUAS; do + CATALOGS="$CATALOGS ${lang}${CATOBJEXT}" + done + + dnl Make all variables we use known to autoconf. + AC_SUBST(CATALOGS) + AC_SUBST(CATOBJEXT) + AC_SUBST(DATADIRNAME) + AC_SUBST(GMOFILES) + AC_SUBST(INSTOBJEXT) + AC_SUBST(INTLLIBS) + AC_SUBST(POFILES) + fi + AC_SUBST(HAVE_NLS) + dnl Some independently maintained files, such as po/Makefile.in, + dnl use `USE_NLS', so support it. + USE_NLS=$HAVE_NLS + AC_SUBST(USE_NLS) + if test "x$HAVE_NLS" = xyes; then + AC_DEFINE(HAVE_NLS) + fi + ]) + +dnl Generate list of files to be processed by xgettext which will +dnl be included in po/Makefile. +dnl +dnl This is not strictly an Autoconf macro, because it is run from +dnl within `config.status' rather than from within configure. This +dnl is why special rules must be applied for it. +AC_DEFUN(WGET_PROCESS_PO, + [srcdir=$ac_given_srcdir # Advanced autoconf hackery + dnl I wonder what the following several lines do... + if test "x$srcdir" != "x."; then + if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then + posrcprefix="$srcdir/" + else + posrcprefix="../$srcdir/" + fi + else + posrcprefix="../" + fi + rm -f po/POTFILES + dnl Use `echo' rather than AC_MSG_RESULT, because this is run from + dnl `config.status'. + echo "generating po/POTFILES from $srcdir/po/POTFILES.in" + sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," \ + -e "\$s/\(.*\) \\\\/\1/" \ + < $srcdir/po/POTFILES.in > po/POTFILES + echo "creating po/Makefile" + sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile + ]) + +# Search path for a program which passes the given test. +# Ulrich Drepper , 1996. +# +# This file may be copied and used freely without restrictions. It +# can be used in projects which are not available under the GNU Public +# License but which still want to provide support for the GNU gettext +# functionality. Please note that the actual code is *not* freely +# available. + +# serial 1 + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN(AM_PATH_PROG_WITH_TEST, +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test -n "[$]$1"; then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) diff --git a/config.guess b/config.guess new file mode 100755 index 00000000..e9e44559 --- /dev/null +++ b/config.guess @@ -0,0 +1,693 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner . +# The master version of this file is at the FSF in /home/gd/gnu/lib. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:*:*) + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'` + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-cbm-sysv4 + exit 0;; + amiga:NetBSD:*:*) + echo m68k-cbm-netbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-cbm-openbsd${UNAME_RELEASE} + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + Pyramid*:OSx*:*:*|MIS*:OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + atari*:NetBSD:*:*) + echo m68k-atari-netbsd${UNAME_RELEASE} + exit 0 ;; + atari*:OpenBSD:*:*) + echo m68k-atari-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:NetBSD:*:*) + echo m68k-sun-netbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-sun-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:NetBSD:*:*) + echo m68k-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-apple-openbsd${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + sed 's/^ //' << EOF >dummy.c + int main (argc, argv) int argc; char **argv; { + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + ${CC-cc} dummy.c -o dummy \ + && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i?86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + sed 's/^ //' << EOF >dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:4) + if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=4.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[3478]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;; + 9000/8?? ) HP_ARCH=hppa1.0 ;; + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i?86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:*:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + F300:UNIX_System_V:*:*) + FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + F301:UNIX_System_V:*:*) + echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + hp3[0-9][05]:OpenBSD:*:*) + echo m68k-hp-openbsd${UNAME_RELEASE} + exit 0 ;; + i?86:BSD/386:*:* | *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + i*:CYGWIN*:*) + echo i386-pc-cygwin32 + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin32 + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. + ld_help_string=`ld --help 2>&1` + if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then + echo "${UNAME_MACHINE}-pc-linux-gnu" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then + echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then + echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then + echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then + echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then + echo "powerpc-unknown-linux-gnu" ; exit 0 + elif test "${UNAME_MACHINE}" = "alpha" ; then + echo alpha-unknown-linux-gnu ; exit 0 + elif test "${UNAME_MACHINE}" = "sparc" ; then + echo sparc-unknown-linux-gnu ; exit 0 + else + # Either a pre-BFD a.out linker (linux-gnuoldld) or one that does not give us + # useful --help. Gcc wants to distinguish between linux-gnuoldld and linux-gnuaout. + test ! -d /usr/lib/ldscripts/. \ + && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + # Determine whether the default compiler is a.out or elf + cat >dummy.c </dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + fi ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i?86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i?86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i?86:LynxOS:2.*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +#if !defined (ultrix) + printf ("vax-dec-bsd\n"); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 +rm -f dummy.c dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 diff --git a/config.sub b/config.sub new file mode 100755 index 00000000..04325249 --- /dev/null +++ b/config.sub @@ -0,0 +1,927 @@ +#! /bin/sh +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +if [ x$1 = x ] +then + echo Configuration name missing. 1>&2 + echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 + echo "or $0 ALIAS" 1>&2 + echo where ALIAS is a recognized configuration type. 1>&2 + exit 1 +fi + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + linux-gnu*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple) + os= + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \ + | arme[lb] | pyramid \ + | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ + | alpha | we32k | ns16k | clipper | i370 | sh \ + | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \ + | pdp11 | mips64el | mips64orion | mips64orionel \ + | sparc | sparclet | sparclite | sparc64) + basic_machine=$basic_machine-unknown + ;; + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i[3456]86) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \ + | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ + | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ + | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ + | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ + | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* | f301-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-cbm + ;; + amigados) + basic_machine=m68k-cbm + os=-amigados + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [ctj]90-cray) + basic_machine=c90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + os=-mvs + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[3456]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i[3456]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i[3456]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i[3456]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + miniframe) + basic_machine=m68000-convergent + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + np1) + basic_machine=np1-gould + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5) + basic_machine=i586-intel + ;; + pentiumpro | p6) + basic_machine=i686-intel + ;; + pentium-* | p5-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + k5) + # We don't have specific support for AMD's K5 yet, so just call it a Pentium + basic_machine=i586-amd + ;; + nexen) + # We don't have specific support for Nexgen yet, so just call it a Pentium + basic_machine=i586-nexgen + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=rs6000-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + mips) + basic_machine=mips-mips + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -unixware* | svr4*) + os=-sysv4 + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -linux-gnu* | -uxpv*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -xenix) + os=-xenix + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-semi) + os=-aout + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-ibm) + os=-aix + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigados + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f301-fujitsu) + os=-uxpv + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -hpux*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os diff --git a/configure b/configure new file mode 100755 index 00000000..a7c3ccca --- /dev/null +++ b/configure @@ -0,0 +1,3093 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.12 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_help="$ac_help + --with-socks use the socks library" +ac_help="$ac_help + --disable-opie disable support for opie or s/key FTP login" +ac_help="$ac_help + --disable-digest disable support for HTTP digest authorization" +ac_help="$ac_help + --disable-debug disable support for debugging output" +ac_help="$ac_help + --disable-nls do not use Native Language Support" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.12" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=src/version.c + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + + + + +VERSION=`sed -e 's/^.*"\(.*\)";$/\1/' ${srcdir}/src/version.c` +echo "configuring for GNU Wget $VERSION" + +PACKAGE=wget + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + + +# Make sure we can run config.sub. +if $ac_config_sub sun4 >/dev/null 2>&1; then : +else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } +fi + +echo $ac_n "checking host system type""... $ac_c" 1>&6 +echo "configure:567: checking host system type" >&5 + +host_alias=$host +case "$host_alias" in +NONE) + case $nonopt in + NONE) + if host_alias=`$ac_config_guess`; then : + else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } + fi ;; + *) host_alias=$nonopt ;; + esac ;; +esac + +host=`$ac_config_sub $host_alias` +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$host" 1>&6 + +cat >> confdefs.h <> confdefs.h <<\EOF +#define HAVE_SOCKS 1 +EOF + +fi + + +# Check whether --enable-opie or --disable-opie was given. +if test "${enable_opie+set}" = set; then + enableval="$enable_opie" + USE_OPIE=$enableval +else + USE_OPIE=yes +fi + +test x"${USE_OPIE}" = xyes && cat >> confdefs.h <<\EOF +#define USE_OPIE 1 +EOF + + +# Check whether --enable-digest or --disable-digest was given. +if test "${enable_digest+set}" = set; then + enableval="$enable_digest" + USE_DIGEST=$enableval +else + USE_DIGEST=yes +fi + +test x"${USE_DIGEST}" = xyes && cat >> confdefs.h <<\EOF +#define USE_DIGEST 1 +EOF + + +# Check whether --enable-debug or --disable-debug was given. +if test "${enable_debug+set}" = set; then + enableval="$enable_debug" + DEBUG=$enableval +else + DEBUG=yes +fi + +test x"${DEBUG}" = xyes && cat >> confdefs.h <<\EOF +#define DEBUG 1 +EOF + + +case "${USE_OPIE}${USE_DIGEST}" in +*yes*) + MD5_OBJ='md5$o' +esac +if test x"$USE_OPIE" = xyes; then + OPIE_OBJ='ftp-opie$o' +fi + + + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:652: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:690: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + for ac_prog in ginstall installbsd scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + # OSF/1 installbsd also uses dspmsg, but is usable. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + +test -z "$CFLAGS" && CFLAGS= auto_cflags=1 +test -z "$CC" && cc_specified=yes + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:747: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:776: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + ac_prog_rejected=no + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:824: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:858: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:863: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes + ac_test_CFLAGS="${CFLAGS+set}" + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:887: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 + if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" + elif test $ac_cv_prog_cc_g = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-O2" + fi +else + GCC= + test "${CFLAGS+set}" = set || CFLAGS="-g" +fi + + +if test -n "$auto_cflags"; then + if test -n "$GCC"; then + CFLAGS="$CFLAGS -O2 -Wall -Wno-implicit" + else + case "$host_os" in + *hpux*) CFLAGS="$CFLAGS +O3" ;; + *ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;; + *) CFLAGS="$CFLAGS -O" ;; + esac + fi +fi + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:928: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:949: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:966: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +echo $ac_n "checking for AIX""... $ac_c" 1>&6 +echo "configure:989: checking for AIX" >&5 +cat > conftest.$ac_ext <&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF +#define _ALL_SOURCE 1 +EOF + +else + rm -rf conftest* + echo "$ac_t""no" 1>&6 +fi +rm -f conftest* + + + +case "$host_os" in + *win32) exeext='.exe';; + *) exeext='';; +esac + + + +echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 +echo "configure:1021: checking for ${CC-cc} option to accept ANSI C" >&5 +if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + am_cv_prog_cc_stdc=no +ac_save_CC="$CC" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + cat > conftest.$ac_ext < +# include +#endif + +int main() { + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +; return 0; } +EOF +if { (eval echo configure:1055: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + am_cv_prog_cc_stdc="$ac_arg"; break +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +done +CC="$ac_save_CC" + +fi + +echo "$ac_t""$am_cv_prog_cc_stdc" 1>&6 +case "x$am_cv_prog_cc_stdc" in + x|xno) ;; + *) CC="$CC $am_cv_prog_cc_stdc" ;; +esac + + + +echo $ac_n "checking for function prototypes""... $ac_c" 1>&6 +echo "configure:1077: checking for function prototypes" >&5 +if test "$am_cv_prog_cc_stdc" != no; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define PROTOTYPES 1 +EOF + + U= ANSI2KNR= +else + echo "$ac_t""no" 1>&6 + U=_ ANSI2KNR=./ansi2knr + # Ensure some checks needed by ansi2knr itself. + echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:1090: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +#include +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1103: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + ac_cv_header_stdc=yes +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : +else + cat > conftest.$ac_ext < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } + +EOF +if { (eval echo configure:1170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_stdc=no +fi +rm -fr conftest* +fi + +fi +fi + +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + + for ac_hdr in string.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:1197: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1207: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + +fi + + +echo $ac_n "checking for working const""... $ac_c" 1>&6 +echo "configure:1237: checking for working const" >&5 +if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <j = 5; +} +{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +} + +; return 0; } +EOF +if { (eval echo configure:1291: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_c_const=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_c_const" 1>&6 +if test $ac_cv_c_const = no; then + cat >> confdefs.h <<\EOF +#define const +EOF + +fi + +echo $ac_n "checking for size_t""... $ac_c" 1>&6 +echo "configure:1312: checking for size_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_size_t=yes +else + rm -rf conftest* + ac_cv_type_size_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_size_t" 1>&6 +if test $ac_cv_type_size_t = no; then + cat >> confdefs.h <<\EOF +#define size_t unsigned +EOF + +fi + +echo $ac_n "checking for pid_t""... $ac_c" 1>&6 +echo "configure:1345: checking for pid_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_pid_t=yes +else + rm -rf conftest* + ac_cv_type_pid_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_pid_t" 1>&6 +if test $ac_cv_type_pid_t = no; then + cat >> confdefs.h <<\EOF +#define pid_t int +EOF + +fi + +echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +echo "configure:1378: checking whether byte ordering is bigendian" >&5 +if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_c_bigendian=unknown +# See if sys/param.h defines the BYTE_ORDER macro. +cat > conftest.$ac_ext < +#include +int main() { + +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif +; return 0; } +EOF +if { (eval echo configure:1396: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # It does; now see whether it defined to BIG_ENDIAN or not. +cat > conftest.$ac_ext < +#include +int main() { + +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif +; return 0; } +EOF +if { (eval echo configure:1411: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_bigendian=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_c_bigendian=no +fi +rm -f conftest* +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +if test $ac_cv_c_bigendian = unknown; then +if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + ac_cv_c_bigendian=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_c_bigendian=yes +fi +rm -fr conftest* +fi + +fi +fi + +echo "$ac_t""$ac_cv_c_bigendian" 1>&6 +if test $ac_cv_c_bigendian = yes; then + cat >> confdefs.h <<\EOF +#define WORDS_BIGENDIAN 1 +EOF + +fi + + +for ac_hdr in string.h stdarg.h unistd.h sys/time.h utime.h sys/utime.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:1472: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1482: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + +for ac_hdr in sys/select.h sys/utsname.h pwd.h signal.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:1512: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1522: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + +echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +echo "configure:1549: checking whether time.h and sys/time.h may both be included" >&5 +if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +int main() { +struct tm *tp; +; return 0; } +EOF +if { (eval echo configure:1563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_header_time=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_time=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_header_time" 1>&6 +if test $ac_cv_header_time = yes; then + cat >> confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 +EOF + +fi + + +echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 +echo "configure:1585: checking return type of signal handlers" >&5 +if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +int main() { +int i; +; return 0; } +EOF +if { (eval echo configure:1607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_type_signal=void +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_type_signal=int +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_type_signal" 1>&6 +cat >> confdefs.h <&6 +echo "configure:1627: checking for struct utimbuf" >&5 +if test x"$ac_cv_header_utime_h" = xyes; then + cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "struct[ ]+utimbuf" >/dev/null 2>&1; then + rm -rf conftest* + cat >> confdefs.h <<\EOF +#define HAVE_STRUCT_UTIMBUF 1 +EOF + + echo "$ac_t""yes" 1>&6 +else + rm -rf conftest* + echo "$ac_t""no" 1>&6 +fi +rm -f conftest* + +else + echo "$ac_t""no" 1>&6 +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 +echo "configure:1655: checking for working alloca.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { +char *p = alloca(2 * sizeof(int)); +; return 0; } +EOF +if { (eval echo configure:1667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + ac_cv_header_alloca_h=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_alloca_h=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_header_alloca_h" 1>&6 +if test $ac_cv_header_alloca_h = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ALLOCA_H 1 +EOF + +fi + +echo $ac_n "checking for alloca""... $ac_c" 1>&6 +echo "configure:1688: checking for alloca" >&5 +if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +#endif + +int main() { +char *p = (char *) alloca(1); +; return 0; } +EOF +if { (eval echo configure:1716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + ac_cv_func_alloca_works=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_func_alloca_works=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_func_alloca_works" 1>&6 +if test $ac_cv_func_alloca_works = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ALLOCA 1 +EOF + +fi + +if test $ac_cv_func_alloca_works = no; then + # The SVR3 libPW and SVR4 libucb both contain incompatible functions + # that cause trouble. Some versions do not even contain alloca or + # contain a buggy version. If you still want to use their alloca, + # use ar to extract alloca.o from them instead of compiling alloca.c. + ALLOCA=alloca.o + cat >> confdefs.h <<\EOF +#define C_ALLOCA 1 +EOF + + +echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 +echo "configure:1748: checking whether alloca needs Cray hooks" >&5 +if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <&5 | + egrep "webecray" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_os_cray=yes +else + rm -rf conftest* + ac_cv_os_cray=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_os_cray" 1>&6 +if test $ac_cv_os_cray = yes; then +for ac_func in _getb67 GETB67 getb67; do + echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1778: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <&6 +fi + +done +fi + +echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 +echo "configure:1833: checking stack direction for C alloca" >&5 +if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat > conftest.$ac_ext < addr) ? 1 : -1; +} +main () +{ + exit (find_stack_direction() < 0); +} +EOF +if { (eval echo configure:1860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + ac_cv_c_stack_direction=1 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_c_stack_direction=-1 +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$ac_cv_c_stack_direction" 1>&6 +cat >> confdefs.h <&6 +echo "configure:1884: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + +for ac_func in gettimeofday mktime strptime +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1939: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + +for ac_func in strerror vsnprintf select signal symlink access isatty +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1994: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + +for ac_func in uname gethostname +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2049: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + +for ac_func in gethostbyname +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2105: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 +echo "configure:2155: checking for gethostbyname in -lnsl" >&5 +ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lnsl $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo nsl | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + + +fi +done + + + +echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 +echo "configure:2208: checking for socket in -lsocket" >&5 +ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + + +if test "x${with_socks}" = xyes +then + echo $ac_n "checking for main in -lresolv""... $ac_c" 1>&6 +echo "configure:2258: checking for main in -lresolv" >&5 +ac_lib_var=`echo resolv'_'main | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lresolv $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo resolv | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + + echo $ac_n "checking for Rconnect in -lsocks""... $ac_c" 1>&6 +echo "configure:2301: checking for Rconnect in -lsocks" >&5 +ac_lib_var=`echo socks'_'Rconnect | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocks $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo socks | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi + +ALL_LINGUAS="cs de hr no it pt_BR" + +echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 +echo "configure:2352: checking whether NLS is requested" >&5 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + HAVE_NLS=$enableval +else + HAVE_NLS=yes +fi + + echo "$ac_t""$HAVE_NLS" 1>&6 + + + if test x"$HAVE_NLS" = xyes; then + echo "$ac_t"""language catalogs: $ALL_LINGUAS"" 1>&6 + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2369: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="msgfmt" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test -n "$MSGFMT"; then + echo "$ac_t""$MSGFMT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2403: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test -n "$XGETTEXT"; then + echo "$ac_t""$XGETTEXT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2438: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$GMSGFMT" in + /*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_GMSGFMT="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT="$ac_cv_path_GMSGFMT" +if test -n "$GMSGFMT"; then + echo "$ac_t""$GMSGFMT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + CATOBJEXT=.gmo + INSTOBJEXT=.mo + DATADIRNAME=share + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + echo "$ac_t""found xgettext programs is not GNU xgettext; ignore it" 1>&6 + XGETTEXT=":" + fi + fi + + for ac_hdr in locale.h libintl.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:2484: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2494: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + + + for ac_func in gettext +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2524: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 +echo "configure:2574: checking for gettext in -lintl" >&5 +ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lintl $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + LIBS="-lintl $LIBS" + cat >> confdefs.h <<\EOF +#define HAVE_GETTEXT 1 +EOF + + +else + echo "$ac_t""no" 1>&6 + + echo "$ac_t""gettext not found; disabling NLS" 1>&6 + HAVE_NLS=no + +fi + + +fi +done + + + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + for lang in $ALL_LINGUAS; do + CATALOGS="$CATALOGS ${lang}${CATOBJEXT}" + done + + + + + + + + + fi + + USE_NLS=$HAVE_NLS + + if test "x$HAVE_NLS" = xyes; then + cat >> confdefs.h <<\EOF +#define HAVE_NLS 1 +EOF + + fi + + + +for ac_prog in makeinfo emacs xemacs +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2661: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$MAKEINFO"; then + ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_MAKEINFO="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +MAKEINFO="$ac_cv_prog_MAKEINFO" +if test -n "$MAKEINFO"; then + echo "$ac_t""$MAKEINFO" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$MAKEINFO" && break +done + + +case "${MAKEINFO}" in + *makeinfo) MAKEINFO="${MAKEINFO} \$(srcdir)/wget.texi" ;; + *emacs | *xemacs) MAKEINFO="${MAKEINFO} -batch -q -no-site-file -eval '(find-file \"\$(srcdir)/wget.texi\")' -l texinfmt -f texinfo-format-buffer -f save-buffer" ;; + *) MAKEINFO="makeinfo \$(srcdir)/wget.texi" ;; +esac + +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +DEFS=-DHAVE_CONFIG_H + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.12" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo "Makefile src/Makefile doc/Makefile util/Makefile po/Makefile.in src/config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@VERSION@%$VERSION%g +s%@PACKAGE@%$PACKAGE%g +s%@host@%$host%g +s%@host_alias@%$host_alias%g +s%@host_cpu@%$host_cpu%g +s%@host_vendor@%$host_vendor%g +s%@host_os@%$host_os%g +s%@MD5_OBJ@%$MD5_OBJ%g +s%@OPIE_OBJ@%$OPIE_OBJ%g +s%@SET_MAKE@%$SET_MAKE%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@CC@%$CC%g +s%@CPP@%$CPP%g +s%@exeext@%$exeext%g +s%@U@%$U%g +s%@ANSI2KNR@%$ANSI2KNR%g +s%@ALLOCA@%$ALLOCA%g +s%@MSGFMT@%$MSGFMT%g +s%@XGETTEXT@%$XGETTEXT%g +s%@GMSGFMT@%$GMSGFMT%g +s%@CATALOGS@%$CATALOGS%g +s%@CATOBJEXT@%$CATOBJEXT%g +s%@DATADIRNAME@%$DATADIRNAME%g +s%@GMOFILES@%$GMOFILES%g +s%@INSTOBJEXT@%$INSTOBJEXT%g +s%@INTLLIBS@%$INTLLIBS%g +s%@POFILES@%$POFILES%g +s%@HAVE_NLS@%$HAVE_NLS%g +s%@USE_NLS@%$USE_NLS%g +s%@MAKEINFO@%$MAKEINFO%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + +EOF + +# Transform confdefs.h into a sed script conftest.vals that substitutes +# the proper values into config.h.in to produce config.h. And first: +# Protect against being on the right side of a sed subst in config.status. +# Protect against being in an unquoted here document in config.status. +rm -f conftest.vals +cat > conftest.hdr <<\EOF +s/[\\&%]/\\&/g +s%[\\$`]%\\&%g +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp +s%ac_d%ac_u%gp +s%ac_u%ac_e%gp +EOF +sed -n -f conftest.hdr confdefs.h > conftest.vals +rm -f conftest.hdr + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >> conftest.vals <<\EOF +s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% +EOF + +# Break up conftest.vals because some shells have a limit on +# the size of here documents, and old seds have small limits too. + +rm -f conftest.tail +while : +do + ac_lines=`grep -c . conftest.vals` + # grep -c gives empty output for an empty file on some AIX systems. + if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi + # Write a limited-size here document to conftest.frag. + echo ' cat > conftest.frag <> $CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS + echo 'CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in +' >> $CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals +done +rm -f conftest.vals + +cat >> $CONFIG_STATUS <<\EOF + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +srcdir=$ac_given_srcdir # Advanced autoconf hackery + if test "x$srcdir" != "x."; then + if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then + posrcprefix="$srcdir/" + else + posrcprefix="../$srcdir/" + fi + else + posrcprefix="../" + fi + rm -f po/POTFILES + echo "generating po/POTFILES from $srcdir/po/POTFILES.in" + sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," \ + -e "\$s/\(.*\) \\\\/\1/" \ + < $srcdir/po/POTFILES.in > po/POTFILES + echo "creating po/Makefile" + sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile + +test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + diff --git a/configure.bat b/configure.bat new file mode 100644 index 00000000..4d19629f --- /dev/null +++ b/configure.bat @@ -0,0 +1,47 @@ +@echo off +rem Configure batch file for `Wget' utility +rem Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + +rem This program is free software; you can redistribute it and/or modify +rem it under the terms of the GNU General Public License as published by +rem the Free Software Foundation; either version 2 of the License, or +rem (at your option) any later version. + +rem This program is distributed in the hope that it will be useful, +rem but WITHOUT ANY WARRANTY; without even the implied warranty of +rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +rem GNU General Public License for more details. + +rem You should have received a copy of the GNU General Public License +rem along with this program; if not, write to the Free Software +rem Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +cls +if .%1 == .--borland goto :borland +if .%1 == .--msvc goto :msvc +if not .%BORPATH% == . goto :borland +if not .%1 == . goto :usage + +:msvc +copy windows\config.h.ms src\config.h > nul +copy windows\Makefile.top Makefile > nul +copy windows\Makefile.src src\Makefile > nul +copy windows\Makefile.doc doc\Makefile > nul + +echo Type NMAKE to start compiling. +echo If it doesn't work, try executing MSDEV\BIN\VCVARS32.BAT first, +echo and then NMAKE. +goto :end + +:borland +copy windows\config.h.bor src\config.h > nul +copy windows\Makefile.top.bor Makefile > nul +copy windows\Makefile.src.bor src\Makefile > nul +copy windows\Makefile.doc doc\Makefile > nul + +echo Type MAKE to start compiling. +goto :end + +:usage +echo Usage: Configure [--borland | --msvc] +:end diff --git a/configure.in b/configure.in new file mode 100644 index 00000000..c70eb4e6 --- /dev/null +++ b/configure.in @@ -0,0 +1,209 @@ +dnl Template file for GNU Autoconf +dnl Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. + +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +dnl +dnl Process this file with autoconf to produce a configure script. +dnl + +AC_INIT(src/version.c) +AC_PREREQ(2.12) +AC_CONFIG_HEADER(src/config.h) + +dnl +dnl What version of Wget are we building? +dnl +VERSION=`sed -e 's/^.*"\(.*\)";$/\1/' ${srcdir}/src/version.c` +echo "configuring for GNU Wget $VERSION" +AC_SUBST(VERSION) +PACKAGE=wget +AC_SUBST(PACKAGE) + +dnl +dnl Get cannonical host +dnl +AC_CANONICAL_HOST +AC_DEFINE_UNQUOTED(OS_TYPE, "$host_os") + +dnl +dnl Process features. +dnl +AC_ARG_WITH(socks, +[ --with-socks use the socks library], +[AC_DEFINE(HAVE_SOCKS)]) + +AC_ARG_ENABLE(opie, +[ --disable-opie disable support for opie or s/key FTP login], +USE_OPIE=$enableval, USE_OPIE=yes) +test x"${USE_OPIE}" = xyes && AC_DEFINE(USE_OPIE) + +AC_ARG_ENABLE(digest, +[ --disable-digest disable support for HTTP digest authorization], +USE_DIGEST=$enableval, USE_DIGEST=yes) +test x"${USE_DIGEST}" = xyes && AC_DEFINE(USE_DIGEST) + +AC_ARG_ENABLE(debug, +[ --disable-debug disable support for debugging output], +DEBUG=$enableval, DEBUG=yes) +test x"${DEBUG}" = xyes && AC_DEFINE(DEBUG) + +case "${USE_OPIE}${USE_DIGEST}" in +*yes*) + MD5_OBJ='md5$o' +esac +if test x"$USE_OPIE" = xyes; then + OPIE_OBJ='ftp-opie$o' +fi +AC_SUBST(MD5_OBJ) +AC_SUBST(OPIE_OBJ) + +dnl +dnl Whether make sets $(MAKE)... +dnl +AC_PROG_MAKE_SET + +dnl +dnl Find a good install +dnl +AC_PROG_INSTALL + +dnl +dnl Find the compiler +dnl + +dnl We want these before the checks, so the checks can modify their values. +test -z "$CFLAGS" && CFLAGS= auto_cflags=1 +test -z "$CC" && cc_specified=yes + +AC_PROG_CC + +dnl +dnl if the user hasn't specified CFLAGS, then +dnl if compiler is gcc, then use -O2 and some warning flags +dnl else use os-specific flags or -O +dnl +if test -n "$auto_cflags"; then + if test -n "$GCC"; then + CFLAGS="$CFLAGS -O2 -Wall -Wno-implicit" + else + case "$host_os" in + *hpux*) CFLAGS="$CFLAGS +O3" ;; + *ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;; + *) CFLAGS="$CFLAGS -O" ;; + esac + fi +fi + +dnl +dnl Handle AIX +dnl +AC_AIX + +dnl +dnl In case of {cyg,gnu}win32. Should be a _target_ test. +dnl Might also be erelevant for DJGPP. +dnl +case "$host_os" in + *win32) exeext='.exe';; + *) exeext='';; +esac +AC_SUBST(exeext) + +dnl +dnl Check if we can handle prototypes. +dnl +AM_C_PROTOTYPES + +dnl +dnl Checks for typedefs, structures, and compiler characteristics. +dnl +AC_C_CONST +AC_TYPE_SIZE_T +AC_TYPE_PID_T +dnl #### This generates a warning. What do I do to shut it up? +AC_C_BIGENDIAN + +dnl +dnl Checks for headers +dnl +AC_CHECK_HEADERS(string.h stdarg.h unistd.h sys/time.h utime.h sys/utime.h) +AC_CHECK_HEADERS(sys/select.h sys/utsname.h pwd.h signal.h) +AC_HEADER_TIME + +dnl +dnl Return type of signal-handlers +dnl +AC_TYPE_SIGNAL + +dnl +dnl Check for struct utimbuf +WGET_STRUCT_UTIMBUF + +dnl +dnl Checks for library functions. +dnl +AC_FUNC_ALLOCA +AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp) +AC_CHECK_FUNCS(gettimeofday mktime strptime) +AC_CHECK_FUNCS(strerror vsnprintf select signal symlink access isatty) +AC_CHECK_FUNCS(uname gethostname) + +AC_CHECK_FUNCS(gethostbyname, [], [ + AC_CHECK_LIB(nsl, gethostbyname) +]) + +dnl +dnl Checks for libraries. +dnl + +AC_CHECK_LIB(socket, socket) + +dnl #### This appears to be deficient with later versions of SOCKS. +if test "x${with_socks}" = xyes +then + AC_CHECK_LIB(resolv, main) + AC_CHECK_LIB(socks, Rconnect) +fi + +dnl Set of available languages. +dnl +dnl #### This kind of sucks. Shouldn't the configure process +dnl determine this automagically by scanning `.po' files in `po/' +dnl subdirectory? +ALL_LINGUAS="cs de hr no it pt_BR" + +dnl internationalization macros +WGET_WITH_NLS + +dnl +dnl Find makeinfo. If makeinfo is not found, look for Emacs. If +dnl Emacs cannot be found, look for XEmacs. +dnl + +AC_CHECK_PROGS(MAKEINFO, makeinfo emacs xemacs) + +case "${MAKEINFO}" in + *makeinfo) MAKEINFO="${MAKEINFO} \$(srcdir)/wget.texi" ;; + *emacs | *xemacs) MAKEINFO="${MAKEINFO} -batch -q -no-site-file -eval '(find-file \"\$(srcdir)/wget.texi\")' -l texinfmt -f texinfo-format-buffer -f save-buffer" ;; + *) MAKEINFO="makeinfo \$(srcdir)/wget.texi" ;; +esac + +dnl +dnl Create output +dnl +AC_OUTPUT([Makefile src/Makefile doc/Makefile util/Makefile po/Makefile.in], +[WGET_PROCESS_PO +test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h]) diff --git a/doc/ChangeLog b/doc/ChangeLog new file mode 100644 index 00000000..90f09436 --- /dev/null +++ b/doc/ChangeLog @@ -0,0 +1,245 @@ +1998-09-10 Hrvoje Niksic + + * wget.texi (HTTP Options): Warn against masquerading as Mozilla. + +1998-05-24 Hrvoje Niksic + + * Makefile.in (clean): Remove HTML files. + +1998-05-13 Hrvoje Niksic + + * wget.texi: Various updates. + (Proxies): New node. + +1998-05-09 Hrvoje Niksic + + * texinfo.tex: New file. + +1998-05-08 Hrvoje Niksic + + * Makefile.in (dvi): New target. + +1998-05-02 Hrvoje Niksic + + * wget.texi (Recursive Retrieval): Fix typo. Suggested by + Francois Pinard. + +1998-04-18 Hrvoje Niksic + + * wget.texi: Fixed @dircategory, courtesy Karl Eichwalder. + +1998-03-31 Hrvoje Niksic + + * Makefile.in: Don't attempt to (un)install the man-page. + +1998-03-30 Hrvoje Niksic + + * wget.1: Removed it. + +1998-03-29 Hrvoje Niksic + + * wget.texi (Invoking): Split into more sections, analogous to + output of `wget --help'. + (HTTP Options): Document --user-agent. + +1998-03-16 Hrvoje Niksic + + * wget.texi (Contributors): Updated with oodles of new names. + +1998-02-22 Karl Eichwalder + + * Makefile.in (install.info): only info files (no *info.orig, + etc.). + +1998-01-31 Hrvoje Niksic + + * Makefile.in (install.wgetrc): Don't use `!'. + +1998-01-28 Hrvoje Niksic + + * wget.texi (Advanced Options): Expanded. + +1998-01-25 Hrvoje Niksic + + * wget.texi (Advanced Options): Document `--cache'. + (Contributors): Added Brian. + +1997-07-26 Francois Pinard + + * Makefile.in (install.wgetrc): Print the sample.wgetrc warning + only if the files actually differ. + +1998-01-23 Hrvoje Niksic + + * Makefile.in: Use `test ...' rather than `[ ... ]'. + + * wget.texi (Advanced Options): Explained suffices. + +1998-01-23 Karl Heuer + + * wget.texi (Advanced Options): Updated. + +1997-12-18 Hrvoje Niksic + + * wget.texi (Mailing List): Update. + +1997-04-23 Hrvoje Niksic + + * wget.texi (Advanced Options): Document `--follow-ftp'. + +1997-02-17 Hrvoje Niksic + + * wget.texi (Advanced Options): Document --proxy-user and + --proxy-passwd. + +1997-02-14 Karl Eichwalder + + * Makefile.in (install.wgetrc): Never ever nuke an existing rc file. + +1997-02-02 Hrvoje Niksic + + * wget.texi: Updated and revised. + + * wget.texi (Contributors): Update. + (Advanced Options): Removed bogus **/* example. + + * wget.texi: Use ``...'' instead of "...". + +1997-02-01 Hrvoje Niksic + + * wget.texi (Domain Acceptance): Document --exclude-domains. + +1997-01-21 Hrvoje Niksic + + * wget.texi (Advanced Options): Document --ignore-length. + +1997-01-20 Hrvoje Niksic + + * wget.texi (Time-Stamping): New node. + +1997-01-12 Hrvoje Niksic + + * Makefile.in (distclean): Don't remove wget.info*. + +1997-01-08 Hrvoje Niksic + + * wget.texi (Mailing List): Update archive. + (Portability): Update the Windows port by Budor. + +1996-12-21 Hrvoje Niksic + + * wget.texi (Security Considerations): New node. + +1996-12-19 Hrvoje Niksic + + * wget.texi (Advanced Options): Document --passive. + +1996-12-12 Dieter Baron + + * wget.texi (Advanced Usage): Would reference prep instead of + wuarchive. + +1996-11-25 Hrvoje Niksic + + * wget.texi (Advanced Options): Documented --retr-symlinks. + +1996-11-23 Hrvoje Niksic + + * wget.texi (Advanced Options): Document --delete-after. + +1996-11-22 Hrvoje Niksic + + * wget.texi (Portability): Add IRIX and FreeBSD as the "regular" + platforms. + +1996-11-20 Hrvoje Niksic + + * wget.texi (Advanced Usage): Document dot-style. + +1996-11-18 Hrvoje Niksic + + * wget.texi (Advanced Usage): Dot customization example. + (Sample Wgetrc): Likewise. + +1996-11-16 Hrvoje Niksic + + * wget.texi (Wgetrc Syntax): Explained emptying lists. + +1996-11-13 Hrvoje Niksic + + * wget.texi (Advanced Options): Document includes/excludes. + (Wgetrc Commands): Likewise. + +1996-11-10 Hrvoje Niksic + + * wget.texi (Advanced Options): Document headers. + +1996-11-07 Hrvoje Niksic + + * sample.wgetrc: Added header examples. + +1996-11-06 Hrvoje Niksic + + * sample.wgetrc: Rewritten. + + * Makefile.in (install.wgetrc): Install sample.wgetrc. + (uninstall.info): Use $(RM). + +1996-11-06 Hrvoje Niksic + + * wget.texi: Docfixes. + +1996-11-03 Hrvoje Niksic + + * wget.texi: Proofread; *many* docfixes. + +1996-11-02 Hrvoje Niksic + + * wget.texi (Introduction): Updated robots mailing list address. + +1996-11-01 Hrvoje Niksic + + * wget.texi: Minor docfixes. + +1996-10-26 Hrvoje Niksic + + * wget.texi (Advanced Usage): Document passwords better. + + * Makefile.in (distclean): Remove wget.1 on make distclean. + + * wget.texi (Option Syntax): Explain --. + +1996-10-21 Hrvoje Niksic + + * fetch.texi (No Parent): update. + +1996-10-18 Hrvoje Niksic + + * fetch.texi (Advanced Options): Docfix. + +1996-10-17 Tage Stabell-Kulo + + * geturl.texi (Advanced Options): Sort alphabetically. + +1996-10-16 Hrvoje Niksic + + * geturl.texi (Advanced Options): Describe -nr. + (Advanced Usage): Moved -O pipelines to Guru Usage. + (Simple Usage): Update. + (Advanced Options): Docfix. + + * Makefile.in (RM): RM = rm -f. + +1996-10-15 Hrvoje Niksic + + * geturl.texi (Guru Usage): Add proxy-filling example. + +1996-10-12 Hrvoje Niksic + + * geturl.texi (Advanced Options): Added --spider. + +1996-10-08 Hrvoje Niksic + + * geturl.texi (Advanced Options): Added -X. + + * Makefile.in: Added $(srcdir) where appropriate (I hope). diff --git a/doc/Makefile.in b/doc/Makefile.in new file mode 100644 index 00000000..9f4fc5d0 --- /dev/null +++ b/doc/Makefile.in @@ -0,0 +1,145 @@ +# Makefile for `wget' utility +# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + +# 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. + +# +# Version: @VERSION@ +# + +SHELL = /bin/sh + +# Program to format Texinfo source into Info files. +MAKEINFO = @MAKEINFO@ +# Program to format Texinfo source into DVI files. +TEXI2DVI = texi2dvi +# Program to convert DVI files to PostScript +DVIPS = dvips -D 300 +# Program to convert texinfo files to html +TEXI2HTML = texi2html -expandinfo -split_chapter + +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +infodir = @infodir@ +mandir = @mandir@ +manext = 1 +sysconfdir = @sysconfdir@ + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +RM = rm -f + +MAN = wget.$(manext) +WGETRC = $(sysconfdir)/wgetrc + +# +# Dependencies for building +# + +all: wget.info # wget.cat + +everything: all wget_us.ps wget_a4.ps wget_toc.html + +wget.info: wget.texi + -$(MAKEINFO) + +#wget.cat: $(MAN) +# nroff -man $(srcdir)/$(MAN) > wget.cat + +dvi: wget.dvi + +wget.dvi: wget.texi + $(TEXI2DVI) $(srcdir)/wget.texi + +wget_us.ps: wget.dvi + $(DVIPS) -t letter -o $@ wget.dvi + +wget_a4.ps: wget.dvi + $(DVIPS) -t a4 -o $@ wget.dvi + +wget_toc.html: wget.texi + $(TEXI2HTML) $(srcdir)/wget.texi + +# +# Dependencies for installing +# + +# install all the documentation +install: install.info install.wgetrc # install.man + +# uninstall all the documentation +uninstall: uninstall.info # uninstall.man + +# install info pages, creating install directory if necessary +install.info: wget.info + $(top_srcdir)/mkinstalldirs $(infodir) + -for file in $(srcdir)/wget.info $(srcdir)/wget.info-*[0-9]; do \ + test -f "$$file" && $(INSTALL_DATA) $$file $(infodir) ; \ + done + +# install man page, creating install directory if necessary +#install.man: +# $(top_srcdir)/mkinstalldirs $(mandir)/man$(manext) +# $(INSTALL_DATA) $(srcdir)/$(MAN) $(mandir)/man$(manext)/$(MAN) + +# install sample.wgetrc +install.wgetrc: + $(top_srcdir)/mkinstalldirs $(sysconfdir) + @if test -f $(WGETRC); then \ + if cmp -s $(srcdir)/sample.wgetrc $(WGETRC); then echo ""; \ + else \ + echo ' $(INSTALL_DATA) $(srcdir)/sample.wgetrc $(WGETRC).new'; \ + $(INSTALL_DATA) $(srcdir)/sample.wgetrc $(WGETRC).new; \ + echo "WARNING: File \`$(WGETRC)' already exists and is spared."; \ + echo " You might want to consider \`$(WGETRC).new',"; \ + echo " and merge both into \`$(WGETRC)', for the best."; \ + fi; \ + else \ + $(INSTALL_DATA) $(srcdir)/sample.wgetrc $(WGETRC); \ + fi + +# uninstall info pages +uninstall.info: + $(RM) $(infodir)/wget.info* + +# uninstall man page +#uninstall.man: +# $(RM) $(mandir)/man$(manext)/$(MAN) + +# +# Dependencies for cleanup +# + +clean: + $(RM) *~ *.bak *.cat *.html + $(RM) *.dvi *.aux *.cp *.cps *.fn *.toc *.tp *.vr *.ps *.ky *.pg *.log + +distclean: clean + $(RM) Makefile + +realclean: distclean + $(RM) wget.info* + +# +# Dependencies for maintenance +# + +subdir = doc + +Makefile: Makefile.in ../config.status + cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status diff --git a/doc/ansi2knr.1 b/doc/ansi2knr.1 new file mode 100644 index 00000000..434ce8f0 --- /dev/null +++ b/doc/ansi2knr.1 @@ -0,0 +1,19 @@ +.TH ANSI2KNR 1 "31 December 1990" +.SH NAME +ansi2knr \- convert ANSI C to Kernighan & Ritchie C +.SH SYNOPSIS +.I ansi2knr +input_file output_file +.SH DESCRIPTION +If no output_file is supplied, output goes to stdout. +.br +There are no error messages. +.sp +.I ansi2knr +recognizes functions by seeing a non-keyword identifier at the left margin, followed by a left parenthesis, with a right parenthesis as the last character on the line. It will recognize a multi-line header if the last character on each line but the last is a left parenthesis or comma. These algorithms ignore whitespace and comments, except that the function name must be the first thing on the line. +.sp +The following constructs will confuse it: +.br + - Any other construct that starts at the left margin and follows the above syntax (such as a macro or function call). +.br + - Macros that tinker with the syntax of the function header. diff --git a/doc/sample.wgetrc b/doc/sample.wgetrc new file mode 100644 index 00000000..e2f9011a --- /dev/null +++ b/doc/sample.wgetrc @@ -0,0 +1,95 @@ +### +### Sample Wget initialization file .wgetrc +### + +## You can use this file to change the default behaviour of wget or to +## avoid having to type many many command-line options. This file does +## not contain a comprehensive list of commands -- look at the manual +## to find out what you can put into this file. +## +## Wget initialization file can reside in /usr/local/etc/wgetrc +## (global, for all users) or $HOME/.wgetrc (for a single user). +## +## To use any of the settings in this file, you will have to uncomment +## them (and probably change them). + + +## +## Global settings (useful for setting up in /usr/local/etc/wgetrc). +## Think well before you change them, since they may reduce wget's +## functionality, and make it behave contrary to the documentation: +## + +# You can set retrieve quota for beginners by specifying a value +# optionally followed by 'K' (kilobytes) or 'M' (megabytes). The +# default quota is unlimited. +#quota = inf + +# You can lower (or raise) the default number of retries when +# downloading a file (default is 20). +#tries = 20 + +# Lowering the maximum depth of the recursive retrieval is handy to +# prevent newbies from going too "deep" when they unwittingly start +# the recursive retrieval. The default is 5. +#reclevel = 5 + +# Many sites are behind firewalls that do not allow initiation of +# connections from the outside. On these sites you have to use the +# `passive' feature of FTP. If you are behind such a firewall, you +# can turn this on to make Wget use passive FTP by default. +#passive_ftp = off + + +## +## Local settings (for a user to set in his $HOME/.wgetrc). It is +## *highly* undesirable to put these settings in the global file, since +## they are potentially dangerous to "normal" users. +## +## Even when setting up your own ~/.wgetrc, you should know what you +## are doing before doing so. +## + +# Set this to on to use timestamping by default: +#timestamping = off + +# It is a good idea to make Wget send your email address in a `From:' +# header with your request (so that server administrators can contact +# you in case of errors). Wget does *not* send `From:' by default. +#header = From: Your Name + +# You can set up other headers, like Accept-Language. Accept-Language +# is *not* sent by default. +#header = Accept-Language: en + +# You can set the default proxy for Wget to use. It will override the +# value in the environment. +#http_proxy = http://proxy.yoyodyne.com:18023/ + +# If you do not want to use proxy at all, set this to off. +#use_proxy = on + +# You can customize the retrieval outlook. Valid options are default, +# binary, mega and micro. +#dot_style = default + +# Setting this to off makes Wget not download /robots.txt. Be sure to +# know *exactly* what /robots.txt is and how it is used before changing +# the default! +#robots = on + +# It can be useful to make Wget wait between connections. Set this to +# the number of seconds you want Wget to wait. +#wait = 0 + +# You can force creating directory structure, even if a single is being +# retrieved, by setting this to on. +#dirstruct = off + +# You can turn on recursive retrieving by default (don't do this if +# you are not sure you know what it means) by setting this to on. +#recursive = off + +# To have Wget follow FTP links from HTML files by default, set this +# to on: +#follow_ftp = off diff --git a/doc/texinfo.tex b/doc/texinfo.tex new file mode 100644 index 00000000..1f0a2437 --- /dev/null +++ b/doc/texinfo.tex @@ -0,0 +1,5039 @@ +% texinfo.tex -- TeX macros to handle Texinfo files. +% $Id: texinfo.tex 2 1999-12-02 07:42:23Z kwget $ +% +% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98 +% Free Software Foundation, Inc. +% +% This texinfo.tex file 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. +% +% This texinfo.tex file 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 texinfo.tex file; see the file COPYING. If not, write +% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +% Boston, MA 02111-1307, USA. +% +% In other words, you are welcome to use, share and improve this program. +% You are forbidden to forbid anyone else to use, share and improve +% what you give them. Help stamp out software-hoarding! +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% /home/gd/gnu/doc/texinfo.tex on the GNU machines. +% ftp://ftp.gnu.org/pub/gnu/texinfo.tex +% (and all GNU mirrors) +% ftp://tug.org/tex/texinfo.tex +% ftp://ctan.org/macros/texinfo/texinfo.tex +% (and all CTAN mirrors, finger ctan@tug.org for a list). +% +% Send bug reports to bug-texinfo@gnu.org. +% Please include a precise test case in each bug report, +% including a complete document with which we can reproduce the problem. +% +% Texinfo macros (with @macro) are *not* supported by texinfo.tex. You +% have to run makeinfo -E to expand macros first; the texi2dvi script +% does this. +% +% To process a Texinfo manual with TeX, it's most reliable to use the +% texi2dvi shell script that comes with the distribution. For simple +% manuals, you can get away with: +% tex foo.texi +% texindex foo.?? +% tex foo.texi +% tex foo.texi +% dvips foo.dvi -o # or whatever, to process the dvi file. +% The extra runs of TeX get the cross-reference information correct. +% Sometimes one run after texindex suffices, and sometimes you need more +% than two; texi2dvi does it as many times as necessary. + + +% Make it possible to create a .fmt file just by loading this file: +% if the underlying format is not loaded, start by loading it now. +% Added by gildea November 1993. +\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi + +% This automatically updates the version number based on RCS. +\def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}} +\deftexinfoversion$Revision: 2 $ +\message{Loading texinfo package [Version \texinfoversion]:} + +% If in a .fmt file, print the version number +% and turn on active characters that we couldn't do earlier because +% they might have appeared in the input file name. +\everyjob{\message{[Texinfo version \texinfoversion]}\message{} + \catcode`+=\active \catcode`\_=\active} + +% Save some parts of plain tex whose names we will redefine. + +\let\ptexb=\b +\let\ptexbullet=\bullet +\let\ptexc=\c +\let\ptexcomma=\, +\let\ptexdot=\. +\let\ptexdots=\dots +\let\ptexend=\end +\let\ptexequiv=\equiv +\let\ptexexclam=\! +\let\ptexi=\i +\let\ptexlbrace=\{ +\let\ptexrbrace=\} +\let\ptexstar=\* +\let\ptext=\t + +% We never want plain's outer \+ definition in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + + +\message{Basics,} +\chardef\other=12 + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% Set up fixed words for English if not already set. +\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi +\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi +\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi +\ifx\putwordInfo\undefined \gdef\putwordfile{Info}\fi +\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi +\ifx\putwordon\undefined \gdef\putwordon{on}\fi +\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi +\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi +\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi +\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi +\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi +\ifx\putwordShortContents\undefined \gdef\putwordShortContents{Short Contents}\fi +\ifx\putwordTableofContents\undefined\gdef\putwordTableofContents{Table of Contents}\fi + +% Ignore a token. +% +\def\gobble#1{} + +\hyphenation{ap-pen-dix} +\hyphenation{mini-buf-fer mini-buf-fers} +\hyphenation{eshell} +\hyphenation{white-space} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen \bindingoffset +\newdimen \normaloffset +\newdimen\pagewidth \newdimen\pageheight + +% Sometimes it is convenient to have everything in the transcript file +% and nothing on the terminal. We don't just call \tracingall here, +% since that produces some useless output on the terminal. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\def\loggingall{\tracingcommands2 \tracingstats2 + \tracingpages1 \tracingoutput1 \tracinglostchars1 + \tracingmacros2 \tracingparagraphs1 \tracingrestores1 + \showboxbreadth\maxdimen\showboxdepth\maxdimen +}% + +% For @cropmarks command. +% Do @cropmarks to get crop marks. +% +\newif\ifcropmarks +\let\cropmarks = \cropmarkstrue +% +% Dimensions to add cropmarks at corners. +% Added by P. A. MacKay, 12 Nov. 1986 +% +\newdimen\cornerlong \newdimen\cornerthick +\newdimen\topandbottommargin +\newdimen\outerhsize \newdimen\outervsize +\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks +\outerhsize=7in +%\outervsize=9.5in +% Alternative @smallbook page size is 9.25in +\outervsize=9.25in +\topandbottommargin=.75in + +% Main output routine. +\chardef\PAGE = 255 +\output = {\onepageout{\pagecontents\PAGE}} + +\newbox\headlinebox +\newbox\footlinebox + +% \onepageout takes a vbox as an argument. Note that \pagecontents +% does insertions, but you have to call it yourself. +\def\onepageout#1{% + \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% + \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% + % + {% + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \escapechar = `\\ % use backslash in output files. + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. + \shipout\vbox{% + \ifcropmarks \vbox to \outervsize\bgroup + \hsize = \outerhsize + \line{\ewtop\hfil\ewtop}% + \nointerlineskip + \line{% + \vbox{\moveleft\cornerthick\nstop}% + \hfill + \vbox{\moveright\cornerthick\nstop}% + }% + \vskip\topandbottommargin + \line\bgroup + \hfil % center the page within the outer (page) hsize. + \ifodd\pageno\hskip\bindingoffset\fi + \vbox\bgroup + \fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingxxx.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 2\baselineskip + \unvbox\footlinebox + \fi + % + \ifcropmarks + \egroup % end of \vbox\bgroup + \hfil\egroup % end of (centering) \line\bgroup + \vskip\topandbottommargin plus1fill minus1fill + \boxmaxdepth = \cornerthick + \line{% + \vbox{\moveleft\cornerthick\nsbot}% + \hfill + \vbox{\moveright\cornerthick\nsbot}% + }% + \nointerlineskip + \line{\ewbot\hfil\ewbot}% + \egroup % \vbox from first cropmarks clause + \fi + }% end of \shipout\vbox + }% end of group with \turnoffactive + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} + +\newinsert\margin \dimen\margin=\maxdimen + +\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} +{\catcode`\@ =11 +\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi +% marginal hacks, juha@viisa.uucp (Juha Takala) +\ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi +\dimen@=\dp#1 \unvbox#1 +\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi +\ifr@ggedbottom \kern-\dimen@ \vfil \fi} +} + +% Here are the rules for the cropmarks. Note that they are +% offset so that the space between them is truly \outerhsize or \outervsize +% (P. A. MacKay, 12 November, 1986) +% +\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} +\def\nstop{\vbox + {\hrule height\cornerthick depth\cornerlong width\cornerthick}} +\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} +\def\nsbot{\vbox + {\hrule height\cornerlong depth\cornerthick width\cornerthick}} + +% Parse an argument, then pass it to #1. The argument is the rest of +% the input line (except we remove a trailing comment). #1 should be a +% macro which expects an ordinary undelimited TeX argument. +% +\def\parsearg#1{% + \let\next = #1% + \begingroup + \obeylines + \futurelet\temp\parseargx +} + +% If the next token is an obeyed space (from an @example environment or +% the like), remove it and recurse. Otherwise, we're done. +\def\parseargx{% + % \obeyedspace is defined far below, after the definition of \sepspaces. + \ifx\obeyedspace\temp + \expandafter\parseargdiscardspace + \else + \expandafter\parseargline + \fi +} + +% Remove a single space (as the delimiter token to the macro call). +{\obeyspaces % + \gdef\parseargdiscardspace {\futurelet\temp\parseargx}} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + % + % First remove any @c comment, then any @comment. + % Result of each macro is put in \toks0. + \argremovec #1\c\relax % + \expandafter\argremovecomment \the\toks0 \comment\relax % + % + % Call the caller's macro, saved as \next in \parsearg. + \expandafter\next\expandafter{\the\toks0}% + }% +} + +% Since all \c{,omment} does is throw away the argument, we can let TeX +% do that for us. The \relax here is matched by the \relax in the call +% in \parseargline; it could be more or less anything, its purpose is +% just to delimit the argument to the \c. +\def\argremovec#1\c#2\relax{\toks0 = {#1}} +\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}} + +% \argremovec{,omment} might leave us with trailing spaces, though; e.g., +% @end itemize @c foo +% will have two active spaces as part of the argument with the +% `itemize'. Here we remove all active spaces from #1, and assign the +% result to \toks0. +% +% This loses if there are any *other* active characters besides spaces +% in the argument -- _ ^ +, for example -- since they get expanded. +% Fortunately, Texinfo does not define any such commands. (If it ever +% does, the catcode of the characters in questionwill have to be changed +% here.) But this means we cannot call \removeactivespaces as part of +% \argremovec{,omment}, since @c uses \parsearg, and thus the argument +% that \parsearg gets might well have any character at all in it. +% +\def\removeactivespaces#1{% + \begingroup + \ignoreactivespaces + \edef\temp{#1}% + \global\toks0 = \expandafter{\temp}% + \endgroup +} + +% Change the active space to expand to nothing. +% +\begingroup + \obeyspaces + \gdef\ignoreactivespaces{\obeyspaces\let =\empty} +\endgroup + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +%% These are used to keep @begin/@end levels from running away +%% Call \inENV within environments (after a \begingroup) +\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi} +\def\ENVcheck{% +\ifENV\errmessage{Still within an environment. Type Return to continue.} +\endgroup\fi} % This is not perfect, but it should reduce lossage + +% @begin foo is the same as @foo, for now. +\newhelp\EMsimple{Type to continue.} + +\outer\def\begin{\parsearg\beginxxx} + +\def\beginxxx #1{% +\expandafter\ifx\csname #1\endcsname\relax +{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else +\csname #1\endcsname\fi} + +% @end foo executes the definition of \Efoo. +% +\def\end{\parsearg\endxxx} +\def\endxxx #1{% + \removeactivespaces{#1}% + \edef\endthing{\the\toks0}% + % + \expandafter\ifx\csname E\endthing\endcsname\relax + \expandafter\ifx\csname \endthing\endcsname\relax + % There's no \foo, i.e., no ``environment'' foo. + \errhelp = \EMsimple + \errmessage{Undefined command `@end \endthing'}% + \else + \unmatchedenderror\endthing + \fi + \else + % Everything's ok; the right environment has been started. + \csname E\endthing\endcsname + \fi +} + +% There is an environment #1, but it hasn't been started. Give an error. +% +\def\unmatchedenderror#1{% + \errhelp = \EMsimple + \errmessage{This `@end #1' doesn't have a matching `@#1'}% +} + +% Define the control sequence \E#1 to give an unmatched @end error. +% +\def\defineunmatchedend#1{% + \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}% +} + + +% Single-spacing is done by various environments (specifically, in +% \nonfillstart and \quotations). +\newskip\singlespaceskip \singlespaceskip = 12.5pt +\def\singlespace{% + % Why was this kern here? It messes up equalizing space above and below + % environments. --karl, 6may93 + %{\advance \baselineskip by -\singlespaceskip + %\kern \baselineskip}% + \setleading \singlespaceskip +} + +%% Simple single-character @ commands + +% @@ prints an @ +% Kludge this until the fonts are right (grr). +\def\@{{\tt\char64}} + +% This is turned off because it was never documented +% and you can use @w{...} around a quote to suppress ligatures. +%% Define @` and @' to be the same as ` and ' +%% but suppressing ligatures. +%\def\`{{`}} +%\def\'{{'}} + +% Used to generate quoted braces. +\def\mylbrace {{\tt\char123}} +\def\myrbrace {{\tt\char125}} +\let\{=\mylbrace +\let\}=\myrbrace +\begingroup + % Definitions to produce actual \{ & \} command in an index. + \catcode`\{ = 12 \catcode`\} = 12 + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\@ = 0 \catcode`\\ = 12 + @gdef@lbracecmd[\{]% + @gdef@rbracecmd[\}]% +@endgroup + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H. +\let\, = \c +\let\dotaccent = \. +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \t +\let\ubaraccent = \b +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown +% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ptexi + \else\ifx\temp\jmacro \j + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% Be sure we're in horizontal mode when doing a tie, since we make space +% equivalent to this in @example-like environments. Otherwise, a space +% at the beginning of a line will start with \penalty -- and +% since \penalty is valid in vertical mode, we'd end up putting the +% penalty on the vertical list instead of in the new paragraph. +{\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } +} + +% @: forces normal size whitespace following. +\def\:{\spacefactor=1000 } + +% @* forces a line break. +\def\*{\hfil\break\hbox{}\ignorespaces} + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=3000 } + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=3000 } + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=3000 } + +% @w prevents a word break. Without the \leavevmode, @w at the +% beginning of a paragraph, when TeX is still in vertical mode, would +% produce a whole line of output instead of starting the paragraph. +\def\w#1{\leavevmode\hbox{#1}} + +% @group ... @end group forces ... to be all on one page, by enclosing +% it in a TeX vbox. We use \vtop instead of \vbox to construct the box +% to keep its height that of a normal line. According to the rules for +% \topskip (p.114 of the TeXbook), the glue inserted is +% max (\topskip - \ht (first item), 0). If that height is large, +% therefore, no glue is inserted, and the space between the headline and +% the text is small, which looks bad. +% +\def\group{\begingroup + \ifnum\catcode13=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + % + % The \vtop we start below produces a box with normal height and large + % depth; thus, TeX puts \baselineskip glue before it, and (when the + % next line of text is done) \lineskip glue after it. (See p.82 of + % the TeXbook.) Thus, space below is not quite equal to space + % above. But it's pretty close. + \def\Egroup{% + \egroup % End the \vtop. + \endgroup % End the \group. + }% + % + \vtop\bgroup + % We have to put a strut on the last line in case the @group is in + % the midst of an example, rather than completely enclosing it. + % Otherwise, the interline space between the last line of the group + % and the first line afterwards is too small. But we can't put the + % strut in \Egroup, since there it would be on a line by itself. + % Hence this just inserts a strut at the beginning of each line. + \everypar = {\strut}% + % + % Since we have a strut on every line, we don't need any of TeX's + % normal interline spacing. + \offinterlineskip + % + % OK, but now we have to do something about blank + % lines in the input in @example-like environments, which normally + % just turn into \lisppar, which will insert no space now that we've + % turned off the interline space. Simplest is to make them be an + % empty paragraph. + \ifx\par\lisppar + \edef\par{\leavevmode \par}% + % + % Reset ^^M's definition to new definition of \par. + \obeylines + \fi + % + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment +} +% +% TeX puts in an \escapechar (i.e., `@') at the beginning of the help +% message, so this ends up printing `@group can only ...'. +% +\newhelp\groupinvalidhelp{% +group can only be used in environments such as @example,^^J% +where each line of input produces a line of output.} + +% @need space-in-mils +% forces a page break if there is not space-in-mils remaining. + +\newdimen\mil \mil=0.001in + +\def\need{\parsearg\needx} + +% Old definition--didn't work. +%\def\needx #1{\par % +%% This method tries to make TeX break the page naturally +%% if the depth of the box does not fit. +%{\baselineskip=0pt% +%\vtop to #1\mil{\vfil}\kern -#1\mil\penalty 10000 +%\prevdepth=-1000pt +%}} + +\def\needx#1{% + % Go into vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % Don't add any leading before our big empty box, but allow a page + % break, since the best break might be right here. + \allowbreak + \nointerlineskip + \vtop to #1\mil{\vfil}% + % + % TeX does not even consider page breaks if a penalty added to the + % main vertical list is 10000 or more. But in order to see if the + % empty box we just added fits on the page, we must make it consider + % page breaks. On the other hand, we don't want to actually break the + % page after the empty box. So we use a penalty of 9999. + % + % There is an extremely small chance that TeX will actually break the + % page at this \penalty, if there are no other feasible breakpoints in + % sight. (If the user is using lots of big @group commands, which + % almost-but-not-quite fill up a page, TeX will have a hard time doing + % good page breaking, for example.) However, I could not construct an + % example where a page broke at this \penalty; if it happens in a real + % document, then we can reconsider our strategy. + \penalty9999 + % + % Back up by the size of the box, whether we did a page break or not. + \kern -#1\mil + % + % Do not allow a page break right after this kern. + \nobreak +} + +% @br forces paragraph break + +\let\br = \par + +% @dots{} output an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in a typewriter +% font as three actual period characters. +% +\def\dots{\hbox to 1.5em{% + \hskip 0pt plus 0.25fil minus 0.25fil + .\hss.\hss.% + \hskip 0pt plus 0.5fil minus 0.5fil +}} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \hbox to 2em{% + \hskip 0pt plus 0.25fil minus 0.25fil + .\hss.\hss.\hss.% + \hskip 0pt plus 0.5fil minus 0.5fil + }% + \spacefactor=3000 +} + + +% @page forces the start of a new page + +\def\page{\par\vfill\supereject} + +% @exdent text.... +% outputs text on separate line in roman font, starting at standard page margin + +% This records the amount of indent in the innermost environment. +% That's how much \exdent should take out. +\newskip\exdentamount + +% This defn is used inside fill environments such as @defun. +\def\exdent{\parsearg\exdentyyy} +\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}} + +% This defn is used inside nofill environments such as @example. +\def\nofillexdent{\parsearg\nofillexdentyyy} +\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount +\leftline{\hskip\leftskip{\rm#1}}}} + +% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph. + +\def\inmargin#1{% +\strut\vadjust{\nobreak\kern-\strutdepth + \vtop to \strutdepth{\baselineskip\strutdepth\vss + \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}} +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} + +%\hbox{{\rm#1}}\hfil\break}} + +% @include file insert text of that file as input. +% Allow normal characters that we make active in the argument (a file name). +\def\include{\begingroup + \catcode`\\=12 + \catcode`~=12 + \catcode`^=12 + \catcode`_=12 + \catcode`|=12 + \catcode`<=12 + \catcode`>=12 + \catcode`+=12 + \parsearg\includezzz} +% Restore active chars for included file. +\def\includezzz#1{\endgroup\begingroup + % Read the included file in a group so nested @include's work. + \def\thisfile{#1}% + \input\thisfile +\endgroup} + +\def\thisfile{} + +% @center line outputs that line, centered + +\def\center{\parsearg\centerzzz} +\def\centerzzz #1{{\advance\hsize by -\leftskip +\advance\hsize by -\rightskip +\centerline{#1}}} + +% @sp n outputs n lines of vertical space + +\def\sp{\parsearg\spxxx} +\def\spxxx #1{\vskip #1\baselineskip} + +% @comment ...line which is ignored... +% @c is the same as @comment +% @ignore ... @end ignore is another way to write a comment + +\def\comment{\catcode 64=\other \catcode 123=\other \catcode 125=\other% +\parsearg \commentxxx} + +\def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 } + +\let\c=\comment + +% @paragraphindent is defined for the Info formatting commands only. +\let\paragraphindent=\comment + +% Prevent errors for section commands. +% Used in @ignore and in failing conditionals. +\def\ignoresections{% +\let\chapter=\relax +\let\unnumbered=\relax +\let\top=\relax +\let\unnumberedsec=\relax +\let\unnumberedsection=\relax +\let\unnumberedsubsec=\relax +\let\unnumberedsubsection=\relax +\let\unnumberedsubsubsec=\relax +\let\unnumberedsubsubsection=\relax +\let\section=\relax +\let\subsec=\relax +\let\subsubsec=\relax +\let\subsection=\relax +\let\subsubsection=\relax +\let\appendix=\relax +\let\appendixsec=\relax +\let\appendixsection=\relax +\let\appendixsubsec=\relax +\let\appendixsubsection=\relax +\let\appendixsubsubsec=\relax +\let\appendixsubsubsection=\relax +\let\contents=\relax +\let\smallbook=\relax +\let\titlepage=\relax +} + +% Used in nested conditionals, where we have to parse the Texinfo source +% and so want to turn off most commands, in case they are used +% incorrectly. +% +\def\ignoremorecommands{% + \let\defcodeindex = \relax + \let\defcv = \relax + \let\deffn = \relax + \let\deffnx = \relax + \let\defindex = \relax + \let\defivar = \relax + \let\defmac = \relax + \let\defmethod = \relax + \let\defop = \relax + \let\defopt = \relax + \let\defspec = \relax + \let\deftp = \relax + \let\deftypefn = \relax + \let\deftypefun = \relax + \let\deftypevar = \relax + \let\deftypevr = \relax + \let\defun = \relax + \let\defvar = \relax + \let\defvr = \relax + \let\ref = \relax + \let\xref = \relax + \let\printindex = \relax + \let\pxref = \relax + \let\settitle = \relax + \let\setchapternewpage = \relax + \let\setchapterstyle = \relax + \let\everyheading = \relax + \let\evenheading = \relax + \let\oddheading = \relax + \let\everyfooting = \relax + \let\evenfooting = \relax + \let\oddfooting = \relax + \let\headings = \relax + \let\include = \relax + \let\lowersections = \relax + \let\down = \relax + \let\raisesections = \relax + \let\up = \relax + \let\set = \relax + \let\clear = \relax + \let\item = \relax +} + +% Ignore @ignore ... @end ignore. +% +\def\ignore{\doignore{ignore}} + +% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text. +% +\def\ifinfo{\doignore{ifinfo}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifnottex{\doignore{ifnottex}} +\def\html{\doignore{html}} +\def\menu{\doignore{menu}} +\def\direntry{\doignore{direntry}} + +% Also ignore @macro ... @end macro. The user must run texi2dvi, +% which runs makeinfo to do macro expansion. Ignore @unmacro, too. +\def\macro{\doignore{macro}} +\def\macrocsname{macro} +\let\unmacro = \comment + + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory = \comment + +% Ignore text until a line `@end #1'. +% +\def\doignore#1{\begingroup + % Don't complain about control sequences we have declared \outer. + \ignoresections + % + % Define a command to swallow text until we reach `@end #1'. + % This @ is a catcode 12 token (that is the normal catcode of @ in + % this texinfo.tex file). We change the catcode of @ below to match. + \long\def\doignoretext##1@end #1{\enddoignore}% + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \catcode32 = 10 + % + % Ignore braces, too, so mismatched braces don't cause trouble. + \catcode`\{ = 9 + \catcode`\} = 9 + % + % We must not have @c interpreted as a control sequence. + \catcode`\@ = 12 + % + % Make the letter c a comment character so that the rest of the line + % will be ignored. This way, the document can have (for example) + % @c @end ifinfo + % and the @end ifinfo will be properly ignored. + % (We've just changed @ to catcode 12.) + % + % But we can't do this if #1 is `macro', since that actually contains a c. + % Happily, none of the other conditionals have the letter `c' in their names! + \def\temp{#1}% + \ifx\temp\macrocsname \else + \catcode`\c = 14 + \fi + % + % And now expand that command. + \doignoretext +} + +% What we do to finish off ignored text. +% +\def\enddoignore{\endgroup\ignorespaces}% + +\newif\ifwarnedobs\warnedobsfalse +\def\obstexwarn{% + \ifwarnedobs\relax\else + % We need to warn folks that they may have trouble with TeX 3.0. + % This uses \immediate\write16 rather than \message to get newlines. + \immediate\write16{} + \immediate\write16{***WARNING*** for users of Unix TeX 3.0!} + \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} + \immediate\write16{If you are running another version of TeX, relax.} + \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} + \immediate\write16{ Then upgrade your TeX installation if you can.} + \immediate\write16{ (See ftp://ftp.gnu.ai.mit.edu/pub/gnu/TeX.README.)} + \immediate\write16{If you are stuck with version 3.0, run the} + \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} + \immediate\write16{ to use a workaround.} + \immediate\write16{} + \global\warnedobstrue + \fi +} + +% **In TeX 3.0, setting text in \nullfont hangs tex. For a +% workaround (which requires the file ``dummy.tfm'' to be installed), +% uncomment the following line: +%%%%%\font\nullfont=dummy\let\obstexwarn=\relax + +% Ignore text, except that we keep track of conditional commands for +% purposes of nesting, up to an `@end #1' command. +% +\def\nestedignore#1{% + \obstexwarn + % We must actually expand the ignored text to look for the @end + % command, so that nested ignore constructs work. Thus, we put the + % text into a \vbox and then do nothing with the result. To minimize + % the change of memory overflow, we follow the approach outlined on + % page 401 of the TeXbook: make the current font be a dummy font. + % + \setbox0 = \vbox\bgroup + % Don't complain about control sequences we have declared \outer. + \ignoresections + % + % Define `@end #1' to end the box, which will in turn undefine the + % @end command again. + \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% + % + % We are going to be parsing Texinfo commands. Most cause no + % trouble when they are used incorrectly, but some commands do + % complicated argument parsing or otherwise get confused, so we + % undefine them. + % + % We can't do anything about stray @-signs, unfortunately; + % they'll produce `undefined control sequence' errors. + \ignoremorecommands + % + % Set the current font to be \nullfont, a TeX primitive, and define + % all the font commands to also use \nullfont. We don't use + % dummy.tfm, as suggested in the TeXbook, because not all sites + % might have that installed. Therefore, math mode will still + % produce output, but that should be an extremely small amount of + % stuff compared to the main input. + % + \nullfont + \let\tenrm = \nullfont \let\tenit = \nullfont \let\tensl = \nullfont + \let\tenbf = \nullfont \let\tentt = \nullfont \let\smallcaps = \nullfont + \let\tensf = \nullfont + % Similarly for index fonts (mostly for their use in + % smallexample) + \let\indrm = \nullfont \let\indit = \nullfont \let\indsl = \nullfont + \let\indbf = \nullfont \let\indtt = \nullfont \let\indsc = \nullfont + \let\indsf = \nullfont + % + % Don't complain when characters are missing from the fonts. + \tracinglostchars = 0 + % + % Don't bother to do space factor calculations. + \frenchspacing + % + % Don't report underfull hboxes. + \hbadness = 10000 + % + % Do minimal line-breaking. + \pretolerance = 10000 + % + % Do not execute instructions in @tex + \def\tex{\doignore{tex}}% +} + +% @set VAR sets the variable VAR to an empty value. +% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. +% +% Since we want to separate VAR from REST-OF-LINE (which might be +% empty), we can't just use \parsearg; we have to insert a space of our +% own to delimit the rest of the line, and then take it out again if we +% didn't need it. Make sure the catcode of space is correct to avoid +% losing inside @example, for instance. +% +\def\set{\begingroup\catcode` =10 + \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. + \parsearg\setxxx} +\def\setxxx#1{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + \def\temp{#2}% + \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty + \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. + \fi + \endgroup +} +% Can't use \xdef to pre-expand #2 and save some time, since \temp or +% \next or other control sequences that we've defined might get us into +% an infinite loop. Consider `@set foo @cite{bar}'. +\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\def\clear{\parsearg\clearxxx} +\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} + +% @value{foo} gets the text saved in variable foo. +% +\def\value{\begingroup + \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. + \valuexxx} +\def\valuexxx#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {\{No value for ``#1''\}}% + \else + \csname SET#1\endcsname + \fi +\endgroup} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +\def\ifset{\parsearg\ifsetxxx} +\def\ifsetxxx #1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \expandafter\ifsetfail + \else + \expandafter\ifsetsucceed + \fi +} +\def\ifsetsucceed{\conditionalsucceed{ifset}} +\def\ifsetfail{\nestedignore{ifset}} +\defineunmatchedend{ifset} + +% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +\def\ifclear{\parsearg\ifclearxxx} +\def\ifclearxxx #1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \expandafter\ifclearsucceed + \else + \expandafter\ifclearfail + \fi +} +\def\ifclearsucceed{\conditionalsucceed{ifclear}} +\def\ifclearfail{\nestedignore{ifclear}} +\defineunmatchedend{ifclear} + +% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text +% following, through the first @end iftex (etc.). Make `@end iftex' +% (etc.) valid only after an @iftex. +% +\def\iftex{\conditionalsucceed{iftex}} +\def\ifnothtml{\conditionalsucceed{ifnothtml}} +\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} +\defineunmatchedend{iftex} +\defineunmatchedend{ifnothtml} +\defineunmatchedend{ifnotinfo} + +% We can't just want to start a group at @iftex (for example) and end it +% at @end iftex, since then @set commands inside the conditional have no +% effect (they'd get reverted at the end of the group). So we must +% define \Eiftex to redefine itself to be its previous value. (We can't +% just define it to fail again with an ``unmatched end'' error, since +% the @ifset might be nested.) +% +\def\conditionalsucceed#1{% + \edef\temp{% + % Remember the current value of \E#1. + \let\nece{prevE#1} = \nece{E#1}% + % + % At the `@end #1', redefine \E#1 to be its previous value. + \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% + }% + \temp +} + +% We need to expand lots of \csname's, but we don't want to expand the +% control sequences after we've constructed them. +% +\def\nece#1{\expandafter\noexpand\csname#1\endcsname} + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math means output in math mode. +% We don't use $'s directly in the definition of \math because control +% sequences like \math are expanded when the toc file is written. Then, +% we read the toc file back, the $'s will be normal characters (as they +% should be, according to the definition of Texinfo). So we must use a +% control sequence to switch into and out of math mode. +% +% This isn't quite enough for @math to work properly in indices, but it +% seems unlikely it will ever be needed there. +% +\let\implicitmath = $ +\def\math#1{\implicitmath #1\implicitmath} + +% @bullet and @minus need the same treatment as @math, just above. +\def\bullet{\implicitmath\ptexbullet\implicitmath} +\def\minus{\implicitmath-\implicitmath} + +\def\node{\ENVcheck\parsearg\nodezzz} +\def\nodezzz#1{\nodexxx [#1,]} +\def\nodexxx[#1,#2]{\gdef\lastnode{#1}} +\let\nwnode=\node +\let\lastnode=\relax + +\def\donoderef{\ifx\lastnode\relax\else +\expandafter\expandafter\expandafter\setref{\lastnode}\fi +\global\let\lastnode=\relax} + +\def\unnumbnoderef{\ifx\lastnode\relax\else +\expandafter\expandafter\expandafter\unnumbsetref{\lastnode}\fi +\global\let\lastnode=\relax} + +\def\appendixnoderef{\ifx\lastnode\relax\else +\expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi +\global\let\lastnode=\relax} + +% @refill is a no-op. +\let\refill=\relax + +% @setfilename is done at the beginning of every texinfo file. +% So open here the files we need to have open while reading the input. +% This makes it possible to make a .fmt file for texinfo. +\def\setfilename{% + \readauxfile + \opencontents + \openindices + \fixbackslash % Turn off hack to swallow `\input texinfo'. + \global\let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + % Just to be on the safe side, close the input stream before the \input. + \openin 1 texinfo.cnf + \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi + \closein1 + \temp + % + \comment % Ignore the actual filename. +} + +% @bye. +\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} + +% \def\macro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\macroxxx} +% \def\macroxxx#1#2 \end macro{% +% \expandafter\gdef\macrotemp#1{#2}% +% \endgroup} + +%\def\linemacro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\linemacroxxx} +%\def\linemacroxxx#1#2 \end linemacro{% +%\let\parsearg=\relax +%\edef\macrotempx{\csname M\butfirst\expandafter\string\macrotemp\endcsname}% +%\expandafter\xdef\macrotemp{\parsearg\macrotempx}% +%\expandafter\gdef\macrotempx#1{#2}% +%\endgroup} + +%\def\butfirst#1{} + + +\message{fonts,} + +% Font-change commands. + +% Texinfo supports the sans serif font style, which plain TeX does not. +% So we set up a \sf analogous to plain's \rm, etc. +\newfam\sffam +\def\sf{\fam=\sffam \tensf} +\let\li = \sf % Sometimes we call it \li, not \sf. + +% We don't need math for this one. +\def\ttsl{\tenttsl} + +% Use Computer Modern fonts at \magstephalf (11pt). +\newcount\mainmagstep +\mainmagstep=\magstephalf + +% Set the font macro #1 to the font named #2, adding on the +% specified font prefix (normally `cm'). +% #3 is the font's design size, #4 is a scale factor +\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} + +% Use cm as the default font prefix. +% To specify the font prefix, you must define \fontprefix +% before you read in texinfo.tex. +\ifx\fontprefix\undefined +\def\fontprefix{cm} +\fi +% Support font families that don't use the same naming scheme as CM. +\def\rmshape{r} +\def\rmbshape{bx} %where the normal face is bold +\def\bfshape{b} +\def\bxshape{bx} +\def\ttshape{tt} +\def\ttbshape{tt} +\def\ttslshape{sltt} +\def\itshape{ti} +\def\itbshape{bxti} +\def\slshape{sl} +\def\slbshape{bxsl} +\def\sfshape{ss} +\def\sfbshape{ss} +\def\scshape{csc} +\def\scbshape{csc} + +\ifx\bigger\relax +\let\mainmagstep=\magstep1 +\setfont\textrm\rmshape{12}{1000} +\setfont\texttt\ttshape{12}{1000} +\else +\setfont\textrm\rmshape{10}{\mainmagstep} +\setfont\texttt\ttshape{10}{\mainmagstep} +\fi +% Instead of cmb10, you many want to use cmbx10. +% cmbx10 is a prettier font on its own, but cmb10 +% looks better when embedded in a line with cmr10. +\setfont\textbf\bfshape{10}{\mainmagstep} +\setfont\textit\itshape{10}{\mainmagstep} +\setfont\textsl\slshape{10}{\mainmagstep} +\setfont\textsf\sfshape{10}{\mainmagstep} +\setfont\textsc\scshape{10}{\mainmagstep} +\setfont\textttsl\ttslshape{10}{\mainmagstep} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep + +% A few fonts for @defun, etc. +\setfont\defbf\bxshape{10}{\magstep1} %was 1314 +\setfont\deftt\ttshape{10}{\magstep1} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} + +% Fonts for indices and small examples (9pt). +% We actually use the slanted font rather than the italic, +% because texinfo normally uses the slanted fonts for that. +% Do not make many font distinctions in general in the index, since they +% aren't very useful. +\setfont\ninett\ttshape{9}{1000} +\setfont\indrm\rmshape{9}{1000} +\setfont\indit\slshape{9}{1000} +\let\indsl=\indit +\let\indtt=\ninett +\let\indttsl=\ninett +\let\indsf=\indrm +\let\indbf=\indrm +\setfont\indsc\scshape{10}{900} +\font\indi=cmmi9 +\font\indsy=cmsy9 + +% Fonts for title page: +\setfont\titlerm\rmbshape{12}{\magstep3} +\setfont\titleit\itbshape{10}{\magstep4} +\setfont\titlesl\slbshape{10}{\magstep4} +\setfont\titlett\ttbshape{12}{\magstep3} +\setfont\titlettsl\ttslshape{10}{\magstep4} +\setfont\titlesf\sfbshape{17}{\magstep1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\authorrm{\secrm} + +% Chapter (and unnumbered) fonts (17.28pt). +\setfont\chaprm\rmbshape{12}{\magstep2} +\setfont\chapit\itbshape{10}{\magstep3} +\setfont\chapsl\slbshape{10}{\magstep3} +\setfont\chaptt\ttbshape{12}{\magstep2} +\setfont\chapttsl\ttslshape{10}{\magstep3} +\setfont\chapsf\sfbshape{17}{1000} +\let\chapbf=\chaprm +\setfont\chapsc\scbshape{10}{\magstep3} +\font\chapi=cmmi12 scaled \magstep2 +\font\chapsy=cmsy10 scaled \magstep3 + +% Section fonts (14.4pt). +\setfont\secrm\rmbshape{12}{\magstep1} +\setfont\secit\itbshape{10}{\magstep2} +\setfont\secsl\slbshape{10}{\magstep2} +\setfont\sectt\ttbshape{12}{\magstep1} +\setfont\secttsl\ttslshape{10}{\magstep2} +\setfont\secsf\sfbshape{12}{\magstep1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2} +\font\seci=cmmi12 scaled \magstep1 +\font\secsy=cmsy10 scaled \magstep2 + +% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad. +% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded. +% \setfont\ssecsl\slshape{10}{\magstep1} +% \setfont\ssectt\ttshape{10}{\magstep1} +% \setfont\ssecsf\sfshape{10}{\magstep1} + +%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx. +%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than +%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1. +%\setfont\ssectt\ttshape{10}{1315} +%\setfont\ssecsf\sfshape{10}{1315} + +%\let\ssecbf=\ssecrm + +% Subsection fonts (13.15pt). +\setfont\ssecrm\rmbshape{12}{\magstephalf} +\setfont\ssecit\itbshape{10}{1315} +\setfont\ssecsl\slbshape{10}{1315} +\setfont\ssectt\ttbshape{12}{\magstephalf} +\setfont\ssecttsl\ttslshape{10}{1315} +\setfont\ssecsf\sfbshape{12}{\magstephalf} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{\magstep1} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 +% The smallcaps and symbol fonts should actually be scaled \magstep1.5, +% but that is not a standard magnification. + +% In order for the font changes to affect most math symbols and letters, +% we have to define the \textfont of the standard families. Since +% texinfo doesn't allow for producing subscripts and superscripts, we +% don't bother to reset \scriptfont and \scriptscriptfont (which would +% also require loading a lot more fonts). +% +\def\resetmathfonts{% + \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy + \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf + \textfont\ttfam = \tentt \textfont\sffam = \tensf +} + + +% The font-changing commands redefine the meanings of \tenSTYLE, instead +% of just \STYLE. We do this so that font changes will continue to work +% in math mode, where it is the current \fam that is relevant in most +% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam +% \tenbf}, for example. By redefining \tenbf, we obviate the need to +% redefine \bf itself. +\def\textfonts{% + \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl + \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc + \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl + \resetmathfonts} +\def\titlefonts{% + \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl + \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc + \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy + \let\tenttsl=\titlettsl + \resetmathfonts \setleading{25pt}} +\def\titlefont#1{{\titlefonts\rm #1}} +\def\chapfonts{% + \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl + \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc + \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl + \resetmathfonts \setleading{19pt}} +\def\secfonts{% + \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl + \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc + \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl + \resetmathfonts \setleading{16pt}} +\def\subsecfonts{% + \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl + \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc + \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl + \resetmathfonts \setleading{15pt}} +\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? +\def\indexfonts{% + \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl + \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc + \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy \let\tenttsl=\indttsl + \resetmathfonts \setleading{12pt}} + +% Set up the default fonts, so we can use them for creating boxes. +% +\textfonts + +% Define these so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + +% Count depth in font-changes, for error checks +\newcount\fontdepth \fontdepth=0 + +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000} +\setfont\shortcontbf\bxshape{12}{1000} +\setfont\shortcontsl\slshape{12}{1000} + +%% Add scribe-like font environments, plus @l for inline lisp (usually sans +%% serif) and @ii for TeX italic + +% \smartitalic{ARG} outputs arg in italics, followed by an italic correction +% unless the following character is such as not to need one. +\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} +\def\smartitalic#1{{\sl #1}\futurelet\next\smartitalicx} + +\let\i=\smartitalic +\let\var=\smartitalic +\let\dfn=\smartitalic +\let\emph=\smartitalic +\let\cite=\smartitalic + +\def\b#1{{\bf #1}} +\let\strong=\b + +% We can't just use \exhyphenpenalty, because that only has effect at +% the end of a paragraph. Restore normal hyphenation at the end of the +% group within which \nohyphenation is presumably called. +% +\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} +\def\restorehyphenation{\hyphenchar\font = `- } + +\def\t#1{% + {\tt \rawbackslash \frenchspacing #1}% + \null +} +\let\ttfont=\t +\def\samp#1{`\tclose{#1}'\null} +\setfont\smallrm\rmshape{8}{1000} +\font\smallsy=cmsy9 +\def\key#1{{\smallrm\textfont2=\smallsy \leavevmode\hbox{% + \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% + \vbox{\hrule\kern-0.4pt + \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% + \kern-0.4pt\hrule}% + \kern-.06em\raise0.4pt\hbox{\angleright}}}} +% The old definition, with no lozenge: +%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} +\def\ctrl #1{{\tt \rawbackslash \hat}#1} + +\let\file=\samp + +% @code is a modification of @t, +% which makes spaces the same size as normal in the surrounding text. +\def\tclose#1{% + {% + % Change normal interword space to be same as for the current font. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % But `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + % Turn off hyphenation. + \nohyphenation + % + \rawbackslash + \frenchspacing + #1% + }% + \null +} + +% We *must* turn on hyphenation at `-' and `_' in \code. +% Otherwise, it is too hard to avoid overfull hboxes +% in the Emacs manual, the Library manual, etc. + +% Unfortunately, TeX uses one parameter (\hyphenchar) to control +% both hyphenation at - and hyphenation within words. +% We must therefore turn them both off (\tclose does that) +% and arrange explicitly to hyphenate at a dash. +% -- rms. +{ +\catcode`\-=\active +\catcode`\_=\active +\catcode`\|=\active +\global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex} +% The following is used by \doprintindex to insure that long function names +% wrap around. It is necessary for - and _ to be active before the index is +% read from the file, as \entry parses the arguments long before \code is +% ever called. -- mycroft +% _ is always active; and it shouldn't be \let = to an _ that is a +% subscript character anyway. Then, @cindex @samp{_} (for example) +% fails. --karl +\global\def\indexbreaks{% + \catcode`\-=\active \let-\realdash +} +} + +\def\realdash{-} +\def\codedash{-\discretionary{}{}{}} +\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}} +\def\codex #1{\tclose{#1}\endgroup} + +%\let\exp=\tclose %Was temporary + +% @kbd is like @code, except that if the argument is just one @key command, +% then @kbd has no effect. + +% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), +% `example' (@kbd uses ttsl only inside of @example and friends), +% or `code' (@kbd uses normal tty font always). +\def\kbdinputstyle{\parsearg\kbdinputstylexxx} +\def\kbdinputstylexxx#1{% + \def\arg{#1}% + \ifx\arg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\arg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\arg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is kbdinputdistinct. (Too much of a hassle to call the macro, +% the catcodes are wrong for parsearg to work.) +\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl} + +\def\xkey{\key} +\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% +\ifx\one\xkey\ifx\threex\three \key{#2}% +\else{\tclose{\kbdfont\look}}\fi +\else{\tclose{\kbdfont\look}}\fi} + +% @url. Quotes do not seem necessary, so use \code. +\let\url=\code + +% @uref (abbreviation for `urlref') takes an optional second argument +% specifying the text to display. First (mandatory) arg is the url. +% Perhaps eventually put in a hypertex \special here. +% +\def\uref#1{\urefxxx #1,,\finish} +\def\urefxxx#1,#2,#3\finish{% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \unhbox0\ (\code{#1})% + \else + \code{#1}% + \fi +} + +% rms does not like the angle brackets --karl, 17may97. +% So now @email is just like @uref. +%\def\email#1{\angleleft{\tt #1}\angleright} +\let\email=\uref + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. +% +\def\ifmonospace{\ifdim\fontdimen3\font=0pt } + +% Typeset a dimension, e.g., `in' or `pt'. The only reason for the +% argument is to make the input look right: @dmn{pt} instead of +% @dmn{}pt. +% +\def\dmn#1{\thinspace #1} + +\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} + +% @l was never documented to mean ``switch to the Lisp font'', +% and it is not used as such in any manual I can find. We need it for +% Polish suppressed-l. --karl, 22sep96. +%\def\l#1{{\li #1}\null} + +\def\r#1{{\rm #1}} % roman font +% Use of \lowercase was suggested. +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @pounds{} is a sterling sign. +\def\pounds{{\it\$}} + + +\message{page headings,} + +\newskip\titlepagetopglue \titlepagetopglue = 1.5in +\newskip\titlepagebottomglue \titlepagebottomglue = 2pc + +% First the title page. Must do @settitle before @titlepage. +\newif\ifseenauthor +\newif\iffinishedtitlepage + +\def\shorttitlepage{\parsearg\shorttitlepagezzz} +\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + +\def\titlepage{\begingroup \parindent=0pt \textfonts + \let\subtitlerm=\tenrm +% I deinstalled the following change because \cmr12 is undefined. +% This change was not in the ChangeLog anyway. --rms. +% \let\subtitlerm=\cmr12 + \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% + % + \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}% + % + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % + % Now you can print the title using @title. + \def\title{\parsearg\titlezzz}% + \def\titlezzz##1{\leftline{\titlefonts\rm ##1} + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Now you can put text using @subtitle. + \def\subtitle{\parsearg\subtitlezzz}% + \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}% + % + % @author should come last, but may come many times. + \def\author{\parsearg\authorzzz}% + \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi + {\authorfont \leftline{##1}}}% + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \oldpage + \let\page = \oldpage + \hbox{}}% +% \def\page{\oldpage \hbox{}} +} + +\def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \endgroup + \HEADINGSon +} + +\def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue +} + +%%% Set up page headings and footings. + +\let\thispage=\folio + +\newtoks \evenheadline % Token sequence for heading line of even pages +\newtoks \oddheadline % Token sequence for heading line of odd pages +\newtoks \evenfootline % Token sequence for footing line of even pages +\newtoks \oddfootline % Token sequence for footing line of odd pages + +% Now make Tex use those variables +\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline + \else \the\evenheadline \fi}} +\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline + \else \the\evenfootline \fi}\HEADINGShook} +\let\HEADINGShook=\relax + +% Commands to set those variables. +% For example, this is what @headings on does +% @evenheading @thistitle|@thispage|@thischapter +% @oddheading @thischapter|@thispage|@thistitle +% @evenfooting @thisfile|| +% @oddfooting ||@thisfile + +\def\evenheading{\parsearg\evenheadingxxx} +\def\oddheading{\parsearg\oddheadingxxx} +\def\everyheading{\parsearg\everyheadingxxx} + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\oddfooting{\parsearg\oddfootingxxx} +\def\everyfooting{\parsearg\everyfootingxxx} + +{\catcode`\@=0 % + +\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish} +\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{% +\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish} +\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{% +\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish} +\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish} +\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\pageheight by -\baselineskip + \global\advance\vsize by -\baselineskip +} + +\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}} +% +}% unbind the catcode of @. + +% @headings double turns headings on for double-sided printing. +% @headings single turns headings on for single-sided printing. +% @headings off turns them off. +% @headings on same as @headings double, retained for compatibility. +% @headings after turns on double-sided headings after this page. +% @headings doubleafter turns on double-sided headings after this page. +% @headings singleafter turns on single-sided headings after this page. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. + +\def\headings #1 {\csname HEADINGS#1\endcsname} + +\def\HEADINGSoff{ +\global\evenheadline={\hfil} \global\evenfootline={\hfil} +\global\oddheadline={\hfil} \global\oddfootline={\hfil}} +\HEADINGSoff +% When we turn headings on, set the page number to 1. +% For double-sided printing, put current file name in lower left corner, +% chapter name on inside top of right hand pages, document +% title on inside top of left hand pages, and page numbers on outside top +% edge of all pages. +\def\HEADINGSdouble{ +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} +\let\contentsalignmacro = \chappager + +% For single-sided printing, chapter title goes across top left of page, +% page number on top right. +\def\HEADINGSsingle{ +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} +\def\HEADINGSon{\HEADINGSdouble} + +\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} +\let\HEADINGSdoubleafter=\HEADINGSafter +\def\HEADINGSdoublex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} + +\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} +\def\HEADINGSsinglex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% Subroutines used in generating headings +% Produces Day Month Year style of output. +\def\today{\number\day\space +\ifcase\month\or +January\or February\or March\or April\or May\or June\or +July\or August\or September\or October\or November\or December\fi +\space\number\year} + +% Use this if you want the Month Day, Year style of output. +%\def\today{\ifcase\month\or +%January\or February\or March\or April\or May\or June\or +%July\or August\or September\or October\or November\or December\fi +%\space\number\day, \number\year} + +% @settitle line... specifies the title of the document, for headings +% It generates no output of its own + +\def\thistitle{No Title} +\def\settitle{\parsearg\settitlezzz} +\def\settitlezzz #1{\gdef\thistitle{#1}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x). + +% default indentation of table text +\newdimen\tableindent \tableindent=.8in +% default indentation of @itemize and @enumerate text +\newdimen\itemindent \itemindent=.3in +% margin between end of table item and start of table text. +\newdimen\itemmargin \itemmargin=.1in + +% used internally for \itemindent minus \itemmargin +\newdimen\itemmax + +% Note @table, @vtable, and @vtable define @item, @itemx, etc., with +% these defs. +% They also define \itemindex +% to index the item name in whatever manner is desired (perhaps none). + +\newif\ifitemxneedsnegativevskip + +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + +\def\internalBitem{\smallbreak \parsearg\itemzzz} +\def\internalBitemx{\itemxpar \parsearg\itemzzz} + +\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz} +\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz} + +\def\internalBkitem{\smallbreak \parsearg\kitemzzz} +\def\internalBkitemx{\itemxpar \parsearg\kitemzzz} + +\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}% + \itemzzz {#1}} + +\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}% + \itemzzz {#1}} + +\def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemfont{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % Be sure we are not still in the middle of a paragraph. + %{\parskip = 0in + %\par + %}% + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. Unfortunately + % we can't prevent a possible page break at the following + % \baselineskip glue. + \nobreak + \endgroup + \itemxneedsnegativevskipfalse + \else + % The item text fits into the space. Start a paragraph, so that the + % following text (if any) will end up on the same line. Since that + % text will be indented by \tableindent, we make the item text be in + % a zero-width box. + \noindent + \rlap{\hskip -\tableindent\box0}\ignorespaces% + \endgroup% + \itemxneedsnegativevskiptrue% + \fi +} + +\def\item{\errmessage{@item while not in a table}} +\def\itemx{\errmessage{@itemx while not in a table}} +\def\kitem{\errmessage{@kitem while not in a table}} +\def\kitemx{\errmessage{@kitemx while not in a table}} +\def\xitem{\errmessage{@xitem while not in a table}} +\def\xitemx{\errmessage{@xitemx while not in a table}} + +%% Contains a kludge to get @end[description] to work +\def\description{\tablez{\dontindex}{1}{}{}{}{}} + +\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex} +{\obeylines\obeyspaces% +\gdef\tablex #1^^M{% +\tabley\dontindex#1 \endtabley}} + +\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex} +{\obeylines\obeyspaces% +\gdef\ftablex #1^^M{% +\tabley\fnitemindex#1 \endtabley +\def\Eftable{\endgraf\afterenvbreak\endgroup}% +\let\Etable=\relax}} + +\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex} +{\obeylines\obeyspaces% +\gdef\vtablex #1^^M{% +\tabley\vritemindex#1 \endtabley +\def\Evtable{\endgraf\afterenvbreak\endgroup}% +\let\Etable=\relax}} + +\def\dontindex #1{} +\def\fnitemindex #1{\doind {fn}{\code{#1}}}% +\def\vritemindex #1{\doind {vr}{\code{#1}}}% + +{\obeyspaces % +\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup% +\tablez{#1}{#2}{#3}{#4}{#5}{#6}}} + +\def\tablez #1#2#3#4#5#6{% +\aboveenvbreak % +\begingroup % +\def\Edescription{\Etable}% Necessary kludge. +\let\itemindex=#1% +\ifnum 0#3>0 \advance \leftskip by #3\mil \fi % +\ifnum 0#4>0 \tableindent=#4\mil \fi % +\ifnum 0#5>0 \advance \rightskip by #5\mil \fi % +\def\itemfont{#2}% +\itemmax=\tableindent % +\advance \itemmax by -\itemmargin % +\advance \leftskip by \tableindent % +\exdentamount=\tableindent +\parindent = 0pt +\parskip = \smallskipamount +\ifdim \parskip=0pt \parskip=2pt \fi% +\def\Etable{\endgraf\afterenvbreak\endgroup}% +\let\item = \internalBitem % +\let\itemx = \internalBitemx % +\let\kitem = \internalBkitem % +\let\kitemx = \internalBkitemx % +\let\xitem = \internalBxitem % +\let\xitemx = \internalBxitemx % +} + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\def\itemize{\parsearg\itemizezzz} + +\def\itemizezzz #1{% + \begingroup % ended by the @end itemsize + \itemizey {#1}{\Eitemize} +} + +\def\itemizey #1#2{% +\aboveenvbreak % +\itemmax=\itemindent % +\advance \itemmax by -\itemmargin % +\advance \leftskip by \itemindent % +\exdentamount=\itemindent +\parindent = 0pt % +\parskip = \smallskipamount % +\ifdim \parskip=0pt \parskip=2pt \fi% +\def#2{\endgraf\afterenvbreak\endgroup}% +\def\itemcontents{#1}% +\let\item=\itemizeitem} + +% Set sfcode to normal for the chars that usually have another value. +% These are `.?!:;,' +\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000 + \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 } + +% \splitoff TOKENS\endmark defines \first to be the first token in +% TOKENS, and \rest to be the remainder. +% +\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + +% Allow an optional argument of an uppercase letter, lowercase letter, +% or number, to specify the first label in the enumerated list. No +% argument is the same as `1'. +% +\def\enumerate{\parsearg\enumeratezzz} +\def\enumeratezzz #1{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + \begingroup % ended by the @end enumerate + % + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi +} + +% An @enumerate whose labels are integers. The starting integer is +% given in \thearg. +% +\def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% +} + +% The starting (lowercase) letter is in \thearg. +\def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% +} + +% The starting (uppercase) letter is in \thearg. +\def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% +} + +% Call itemizey, adding a period to the first argument and supplying the +% common last two arguments. Also subtract one from the initial value in +% \itemno, since @item increments \itemno. +% +\def\startenumeration#1{% + \advance\itemno by -1 + \itemizey{#1.}\Eenumerate\flushcr +} + +% @alphaenumerate and @capsenumerate are abbreviations for giving an arg +% to @enumerate. +% +\def\alphaenumerate{\enumerate{a}} +\def\capsenumerate{\enumerate{A}} +\def\Ealphaenumerate{\Eenumerate} +\def\Ecapsenumerate{\Eenumerate} + +% Definition of @item while inside @itemize. + +\def\itemizeitem{% +\advance\itemno by 1 +{\let\par=\endgraf \smallbreak}% +\ifhmode \errmessage{In hmode at itemizeitem}\fi +{\parskip=0in \hskip 0pt +\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% +\vadjust{\penalty 1200}}% +\flushcr} + +% @multitable macros +% Amy Hendrickson, 8/18/94, 3/6/96 +% +% @multitable ... @end multitable will make as many columns as desired. +% Contents of each column will wrap at width given in preamble. Width +% can be specified either with sample text given in a template line, +% or in percent of \hsize, the current width of text on page. + +% Table can continue over pages but will only break between lines. + +% To make preamble: +% +% Either define widths of columns in terms of percent of \hsize: +% @multitable @columnfractions .25 .3 .45 +% @item ... +% +% Numbers following @columnfractions are the percent of the total +% current hsize to be used for each column. You may use as many +% columns as desired. + + +% Or use a template: +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item ... +% using the widest term desired in each column. +% +% For those who want to use more than one line's worth of words in +% the preamble, break the line within one argument and it +% will parse correctly, i.e., +% +% @multitable {Column 1 template} {Column 2 template} {Column 3 +% template} +% Not: +% @multitable {Column 1 template} {Column 2 template} +% {Column 3 template} + +% Each new table line starts with @item, each subsequent new column +% starts with @tab. Empty columns may be produced by supplying @tab's +% with nothing between them for as many times as empty columns are needed, +% ie, @tab@tab@tab will produce two empty columns. + +% @item, @tab, @multitable or @end multitable do not need to be on their +% own lines, but it will not hurt if they are. + +% Sample multitable: + +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item first col stuff @tab second col stuff @tab third col +% @item +% first col stuff +% @tab +% second col stuff +% @tab +% third col +% @item first col stuff @tab second col stuff +% @tab Many paragraphs of text may be used in any column. +% +% They will wrap at the width determined by the template. +% @item@tab@tab This will be in third column. +% @end multitable + +% Default dimensions may be reset by user. +% @multitableparskip is vertical space between paragraphs in table. +% @multitableparindent is paragraph indent in table. +% @multitablecolmargin is horizontal space to be left between columns. +% @multitablelinespace is space to leave between table items, baseline +% to baseline. +% 0pt means it depends on current normal line spacing. +% +\newskip\multitableparskip +\newskip\multitableparindent +\newdimen\multitablecolspace +\newskip\multitablelinespace +\multitableparskip=0pt +\multitableparindent=6pt +\multitablecolspace=12pt +\multitablelinespace=0pt + +% Macros used to set up halign preamble: +% +\let\endsetuptable\relax +\def\xendsetuptable{\endsetuptable} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} +\newif\ifsetpercent + +% 2/1/96, to allow fractions to be given with more than one digit. +\def\pickupwholefraction#1 {\global\advance\colcount by1 % +\expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}% +\setuptable} + +\newcount\colcount +\def\setuptable#1{\def\firstarg{#1}% +\ifx\firstarg\xendsetuptable\let\go\relax% +\else + \ifx\firstarg\xcolumnfractions\global\setpercenttrue% + \else + \ifsetpercent + \let\go\pickupwholefraction % In this case arg of setuptable + % is the decimal point before the + % number given in percent of hsize. + % We don't need this so we don't use it. + \else + \global\advance\colcount by1 + \setbox0=\hbox{#1 }% Add a normal word space as a separator; + % typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi% + \fi% +\ifx\go\pickupwholefraction\else\let\go\setuptable\fi% +\fi\go} + +% multitable syntax +\def\tab{&\hskip1sp\relax} % 2/2/96 + % tiny skip here makes sure this column space is + % maintained, even if it is never used. + +% @multitable ... @end multitable definitions: + +\def\multitable{\parsearg\dotable} +\def\dotable#1{\bgroup + \vskip\parskip + \let\item\crcr + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}% + % + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % \everycr will reset column counter, \colcount, at the end of + % each line. Every column entry will cause \colcount to advance by one. + % The table preamble + % looks at the current \colcount to find the correct column width. + \everycr{\noalign{% + % + % \filbreak%% keeps underfull box messages off when table breaks over pages. + % Maybe so, but it also creates really weird page breaks when the table + % breaks over pages. Wouldn't \vfil be better? Wait until the problem + % manifests itself, so it can be fixed for real --karl. + \global\colcount=0\relax}}% + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup&\global\advance\colcount by 1\relax + \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname + % + % In order to keep entries from bumping into each other + % we will add a \leftskip of \multitablecolspace to all columns after + % the first one. + % + % If a template has been used, we will add \multitablecolspace + % to the width of each template entry. + % + % If the user has set preamble in terms of percent of \hsize we will + % use that dimension as the width of the column, and the \leftskip + % will keep entries from bumping into each other. Table will start at + % left margin and final column will justify at right margin. + % + % Make sure we don't inherit \rightskip from the outer environment. + \rightskip=0pt + \ifnum\colcount=1 + % The first column will be indented with the surrounding text. + \advance\hsize by\leftskip + \else + \ifsetpercent \else + % If user has not set preamble in terms of percent of \hsize + % we will advance \hsize by \multitablecolspace. + \advance\hsize by \multitablecolspace + \fi + % In either case we will make \leftskip=\multitablecolspace: + \leftskip=\multitablecolspace + \fi + % Ignoring space at the beginning and end avoids an occasional spurious + % blank line, when TeX decides to break the line at the space before the + % box from the multistrut, so the strut ends up on a line by itself. + % For example: + % @multitable @columnfractions .11 .89 + % @item @code{#} + % @tab Legal holiday which is valid in major parts of the whole country. + % Is automatically provided with highlighting sequences respectively marking + % characters. + \noindent\ignorespaces##\unskip\multistrut}\cr +} + +\def\setmultitablespacing{% test to see if user has set \multitablelinespace. +% If so, do nothing. If not, give it an appropriate dimension based on +% current baselineskip. +\ifdim\multitablelinespace=0pt +%% strut to put in table in case some entry doesn't have descenders, +%% to keep lines equally spaced +\let\multistrut = \strut +%% Test to see if parskip is larger than space between lines of +%% table. If not, do nothing. +%% If so, set to same dimension as multitablelinespace. +\else +\gdef\multistrut{\vrule height\multitablelinespace depth\dp0 +width0pt\relax} \fi +\ifdim\multitableparskip>\multitablelinespace +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. +\fi% +\ifdim\multitableparskip=0pt +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. +\fi} + + +\message{indexing,} +% Index generation facilities + +% Define \newwrite to be identical to plain tex's \newwrite +% except not \outer, so it can be used within \newindex. +{\catcode`\@=11 +\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}} + +% \newindex {foo} defines an index named foo. +% It automatically defines \fooindex such that +% \fooindex ...rest of line... puts an entry in the index foo. +% It also defines \fooindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is foo. +% The name of an index should be no more than 2 characters long +% for the sake of vms. + +\def\newindex #1{ +\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file +\openout \csname#1indfile\endcsname \jobname.#1 % Open the file +\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex +\noexpand\doindex {#1}} +} + +% @defindex foo == \newindex{foo} + +\def\defindex{\parsearg\newindex} + +% Define @defcodeindex, like @defindex except put all entries in @code. + +\def\newcodeindex #1{ +\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file +\openout \csname#1indfile\endcsname \jobname.#1 % Open the file +\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex +\noexpand\docodeindex {#1}} +} + +\def\defcodeindex{\parsearg\newcodeindex} + +% @synindex foo bar makes index foo feed into index bar. +% Do this instead of @defindex foo if you don't want it as a separate index. +% The \closeout helps reduce unnecessary open files; the limit on the +% Acorn RISC OS is a mere 16 files. +\def\synindex#1 #2 {% + \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname + \expandafter\closeout\csname#1indfile\endcsname + \expandafter\let\csname#1indfile\endcsname=\synindexfoo + \expandafter\xdef\csname#1index\endcsname{% define \xxxindex + \noexpand\doindex{#2}}% +} + +% @syncodeindex foo bar similar, but put all entries made for index foo +% inside @code. +\def\syncodeindex#1 #2 {% + \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname + \expandafter\closeout\csname#1indfile\endcsname + \expandafter\let\csname#1indfile\endcsname=\synindexfoo + \expandafter\xdef\csname#1index\endcsname{% define \xxxindex + \noexpand\docodeindex{#2}}% +} + +% Define \doindex, the driver for all \fooindex macros. +% Argument #1 is generated by the calling \fooindex macro, +% and it is "foo", the name of the index. + +% \doindex just uses \parsearg; it calls \doind for the actual work. +% This is because \doind is more useful to call from other macros. + +% There is also \dosubind {index}{topic}{subtopic} +% which makes an entry in a two-level index such as the operation index. + +\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} +\def\singleindexer #1{\doind{\indexname}{#1}} + +% like the previous two, but they put @code around the argument. +\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} +\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} + +\def\indexdummies{% +\def\ { }% +% Take care of the plain tex accent commands. +\def\"{\realbackslash "}% +\def\`{\realbackslash `}% +\def\'{\realbackslash '}% +\def\^{\realbackslash ^}% +\def\~{\realbackslash ~}% +\def\={\realbackslash =}% +\def\b{\realbackslash b}% +\def\c{\realbackslash c}% +\def\d{\realbackslash d}% +\def\u{\realbackslash u}% +\def\v{\realbackslash v}% +\def\H{\realbackslash H}% +% Take care of the plain tex special European modified letters. +\def\oe{\realbackslash oe}% +\def\ae{\realbackslash ae}% +\def\aa{\realbackslash aa}% +\def\OE{\realbackslash OE}% +\def\AE{\realbackslash AE}% +\def\AA{\realbackslash AA}% +\def\o{\realbackslash o}% +\def\O{\realbackslash O}% +\def\l{\realbackslash l}% +\def\L{\realbackslash L}% +\def\ss{\realbackslash ss}% +% Take care of texinfo commands likely to appear in an index entry. +% (Must be a way to avoid doing expansion at all, and thus not have to +% laboriously list every single command here.) +\def\@{@}% will be @@ when we switch to @ as escape char. +%\let\{ = \lbracecmd +%\let\} = \rbracecmd +\def\_{{\realbackslash _}}% +\def\w{\realbackslash w }% +\def\bf{\realbackslash bf }% +%\def\rm{\realbackslash rm }% +\def\sl{\realbackslash sl }% +\def\sf{\realbackslash sf}% +\def\tt{\realbackslash tt}% +\def\gtr{\realbackslash gtr}% +\def\less{\realbackslash less}% +\def\hat{\realbackslash hat}% +%\def\char{\realbackslash char}% +\def\TeX{\realbackslash TeX}% +\def\dots{\realbackslash dots }% +\def\result{\realbackslash result}% +\def\equiv{\realbackslash equiv}% +\def\expansion{\realbackslash expansion}% +\def\print{\realbackslash print}% +\def\error{\realbackslash error}% +\def\point{\realbackslash point}% +\def\copyright{\realbackslash copyright}% +\def\tclose##1{\realbackslash tclose {##1}}% +\def\code##1{\realbackslash code {##1}}% +\def\dotless##1{\realbackslash dotless {##1}}% +\def\samp##1{\realbackslash samp {##1}}% +\def\,##1{\realbackslash ,{##1}}% +\def\t##1{\realbackslash t {##1}}% +\def\r##1{\realbackslash r {##1}}% +\def\i##1{\realbackslash i {##1}}% +\def\b##1{\realbackslash b {##1}}% +\def\sc##1{\realbackslash sc {##1}}% +\def\cite##1{\realbackslash cite {##1}}% +\def\key##1{\realbackslash key {##1}}% +\def\file##1{\realbackslash file {##1}}% +\def\var##1{\realbackslash var {##1}}% +\def\kbd##1{\realbackslash kbd {##1}}% +\def\dfn##1{\realbackslash dfn {##1}}% +\def\emph##1{\realbackslash emph {##1}}% +\def\value##1{\realbackslash value {##1}}% +\unsepspaces +} + +% If an index command is used in an @example environment, any spaces +% therein should become regular spaces in the raw index file, not the +% expansion of \tie (\\leavevmode \penalty \@M \ ). +{\obeyspaces + \gdef\unsepspaces{\obeyspaces\let =\space}} + +% \indexnofonts no-ops all font-change commands. +% This is used when outputting the strings to sort the index by. +\def\indexdummyfont#1{#1} +\def\indexdummytex{TeX} +\def\indexdummydots{...} + +\def\indexnofonts{% +% Just ignore accents. +\let\,=\indexdummyfont +\let\"=\indexdummyfont +\let\`=\indexdummyfont +\let\'=\indexdummyfont +\let\^=\indexdummyfont +\let\~=\indexdummyfont +\let\==\indexdummyfont +\let\b=\indexdummyfont +\let\c=\indexdummyfont +\let\d=\indexdummyfont +\let\u=\indexdummyfont +\let\v=\indexdummyfont +\let\H=\indexdummyfont +\let\dotless=\indexdummyfont +% Take care of the plain tex special European modified letters. +\def\oe{oe}% +\def\ae{ae}% +\def\aa{aa}% +\def\OE{OE}% +\def\AE{AE}% +\def\AA{AA}% +\def\o{o}% +\def\O{O}% +\def\l{l}% +\def\L{L}% +\def\ss{ss}% +\let\w=\indexdummyfont +\let\t=\indexdummyfont +\let\r=\indexdummyfont +\let\i=\indexdummyfont +\let\b=\indexdummyfont +\let\emph=\indexdummyfont +\let\strong=\indexdummyfont +\let\cite=\indexdummyfont +\let\sc=\indexdummyfont +%Don't no-op \tt, since it isn't a user-level command +% and is used in the definitions of the active chars like <, >, |... +%\let\tt=\indexdummyfont +\let\tclose=\indexdummyfont +\let\code=\indexdummyfont +\let\file=\indexdummyfont +\let\samp=\indexdummyfont +\let\kbd=\indexdummyfont +\let\key=\indexdummyfont +\let\var=\indexdummyfont +\let\TeX=\indexdummytex +\let\dots=\indexdummydots +\def\@{@}% +} + +% To define \realbackslash, we must make \ not be an escape. +% We must first make another character (@) an escape +% so we do not become unable to do a definition. + +{\catcode`\@=0 \catcode`\\=\other +@gdef@realbackslash{\}} + +\let\indexbackslash=0 %overridden during \printindex. + +\let\SETmarginindex=\relax %initialize! +% workhorse for all \fooindexes +% #1 is name of index, #2 is stuff to put there +\def\doind #1#2{% + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% + \fi + {% + \count255=\lastpenalty + {% + \indexdummies % Must do this here, since \bf, etc expand at this stage + \escapechar=`\\ + {% + \let\folio=0% We will expand all macros now EXCEPT \folio. + \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now + % so it will be output as is; and it will print as backslash. + % + % First process the index-string with all font commands turned off + % to get the string to sort by. + {\indexnofonts \xdef\indexsorttmp{#2}}% + % + % Now produce the complete index entry, with both the sort key and the + % original text, including any font commands. + \toks0 = {#2}% + \edef\temp{% + \write\csname#1indfile\endcsname{% + \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% + }% + \temp + }% + }% + \penalty\count255 + }% +} + +\def\dosubind #1#2#3{% +{\count10=\lastpenalty % +{\indexdummies % Must do this here, since \bf, etc expand at this stage +\escapechar=`\\% +{\let\folio=0% +\def\rawbackslashxx{\indexbackslash}% +% +% Now process the index-string once, with all font commands turned off, +% to get the string to sort the index by. +{\indexnofonts +\xdef\temp1{#2 #3}% +}% +% Now produce the complete index entry. We process the index-string again, +% this time with font commands expanded, to get what to print in the index. +\edef\temp{% +\write \csname#1indfile\endcsname{% +\realbackslash entry {\temp1}{\folio}{#2}{#3}}}% +\temp }% +}\penalty\count10}} + +% The index entry written in the file actually looks like +% \entry {sortstring}{page}{topic} +% or +% \entry {sortstring}{page}{topic}{subtopic} +% The texindex program reads in these files and writes files +% containing these kinds of lines: +% \initial {c} +% before the first topic whose initial is c +% \entry {topic}{pagelist} +% for a topic that is used without subtopics +% \primary {topic} +% for the beginning of a topic that is used with subtopics +% \secondary {subtopic}{pagelist} +% for each subtopic. + +% Define the user-accessible indexing commands +% @findex, @vindex, @kindex, @cindex. + +\def\findex {\fnindex} +\def\kindex {\kyindex} +\def\cindex {\cpindex} +\def\vindex {\vrindex} +\def\tindex {\tpindex} +\def\pindex {\pgindex} + +\def\cindexsub {\begingroup\obeylines\cindexsub} +{\obeylines % +\gdef\cindexsub "#1" #2^^M{\endgroup % +\dosubind{cp}{#2}{#1}}} + +% Define the macros used in formatting output of the sorted index material. + +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% +\def\printindex{\parsearg\doprintindex} +\def\doprintindex#1{\begingroup + \dobreak \chapheadingskip{10000}% + % + \indexfonts \rm + \tolerance = 9500 + \indexbreaks + % + % See if the index file exists and is nonempty. + % Change catcode of @ here so that if the index file contains + % \initial {@} + % as its first line, TeX doesn't complain about mismatched braces + % (because it thinks @} is a control sequence). + \catcode`\@ = 11 + \openin 1 \jobname.#1s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % and it loses the chapter title and the aux file entries for the + % index. The easiest way to prevent this problem is to make sure + % there is some text. + (Index is nonexistent) + \else + % + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \temp + \ifeof 1 + (Index is empty) + \else + % Index files are almost Texinfo source, but we use \ as the escape + % character. It would be better to use @, but that's too big a change + % to make right now. + \def\indexbackslash{\rawbackslashxx}% + \catcode`\\ = 0 + \escapechar = `\\ + \begindoublecolumns + \input \jobname.#1s + \enddoublecolumns + \fi + \fi + \closein 1 +\endgroup} + +% These macros are used by the sorted index file itself. +% Change them to control the appearance of the index. + +% Same as \bigskipamount except no shrink. +% \balancecolumns gets confused if there is any shrink. +\newskip\initialskipamount \initialskipamount 12pt plus4pt + +\def\initial #1{% +{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt +\ifdim\lastskip<\initialskipamount +\removelastskip \penalty-200 \vskip \initialskipamount\fi +\line{\secbf#1\hfill}\kern 2pt\penalty10000}} + +% This typesets a paragraph consisting of #1, dot leaders, and then #2 +% flush to the right margin. It is used for index and table of contents +% entries. The paragraph is indented by \leftskip. +% +\def\entry #1#2{\begingroup + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % Do not fill out the last line with white space. + \parfillskip = 0in + % + % No extra space above this paragraph. + \parskip = 0in + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % \hangindent is only relevant when the entry text and page number + % don't both fit on one line. In that case, bob suggests starting the + % dots pretty far over on the line. Unfortunately, a large + % indentation looks wrong when the entry text itself is broken across + % lines. So we use a small indentation and put up with long leaders. + % + % \hangafter is reset to 1 (which is the value we want) at the start + % of each paragraph, so we need not do anything with that. + \hangindent=2em + % + % When the entry text needs to be broken, just fill out the first line + % with blank space. + \rightskip = 0pt plus1fil + % + % Start a ``paragraph'' for the index entry so the line breaking + % parameters we've set above will have an effect. + \noindent + % + % Insert the text of the index entry. TeX will do line-breaking on it. + #1% + % The following is kludged to not output a line of dots in the index if + % there are no page numbers. The next person who breaks this will be + % cursed by a Unix daemon. + \def\tempa{{\rm }}% + \def\tempb{#2}% + \edef\tempc{\tempa}% + \edef\tempd{\tempb}% + \ifx\tempc\tempd\ \else% + % + % If we must, put the page number on a line of its own, and fill out + % this line with blank space. (The \hfil is overwhelmed with the + % fill leaders glue in \indexdotfill if the page number does fit.) + \hfil\penalty50 + \null\nobreak\indexdotfill % Have leaders before the page number. + % + % The `\ ' here is removed by the implicit \unskip that TeX does as + % part of (the primitive) \par. Without it, a spurious underfull + % \hbox ensues. + \ #2% The page number ends the paragraph. + \fi% + \par +\endgroup} + +% Like \dotfill except takes at least 1 em. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill} + +\def\primary #1{\line{#1\hfil}} + +\newskip\secondaryindent \secondaryindent=0.5cm + +\def\secondary #1#2{ +{\parfillskip=0in \parskip=0in +\hangindent =1in \hangafter=1 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par +}} + +% Define two-column mode, which we use to typeset indexes. +% Adapted from the TeXbook, page 416, which is to say, +% the manmac.tex format used to print the TeXbook itself. +\catcode`\@=11 + +\newbox\partialpage +\newdimen\doublecolumnhsize + +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % Grab any single-column material above us. + \output = {\global\setbox\partialpage = \vbox{% + % + % Here is a possibility not foreseen in manmac: if we accumulate a + % whole lot of material, we might end up calling this \output + % routine twice in a row (see the doublecol-lose test, which is + % essentially a couple of indexes with @setchapternewpage off). In + % that case, we must prevent the second \partialpage from + % simply overwriting the first, causing us to lose the page. + % This will preserve it until a real output routine can ship it + % out. Generally, \partialpage will be empty when this runs and + % this will be a no-op. + \unvbox\partialpage + % + % Unvbox the main output page. + \unvbox255 + \kern-\topskip \kern\baselineskip + }}% + \eject + % + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Double the \vsize as well. (We don't need a separate register here, + % since nobody clobbers \vsize.) + \vsize = 2\vsize +} +\def\doublecolumnout{% + \splittopskip=\topskip \splitmaxdepth=\maxdepth + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 + \penalty\outputpenalty +} +\def\pagesofar{% + % Re-output the contents of the output page -- any previous material, + % followed by the two boxes we just split. + \unvbox\partialpage + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% +} +\def\enddoublecolumns{% + \output = {\balancecolumns}\eject % split what we have + \endgroup % started in \begindoublecolumns + % + % Back to normal single-column typesetting, but take account of the + % fact that we just accumulated some stuff on the output page. + \pagegoal = \vsize +} +\def\balancecolumns{% + % Called at the end of the double column material. + \setbox0 = \vbox{\unvbox255}% + \dimen@ = \ht0 + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \divide\dimen@ by 2 + \splittopskip = \topskip + % Loop until we get a decent breakpoint. + {\vbadness=10000 \loop + \global\setbox3=\copy0 + \global\setbox1=\vsplit3 to\dimen@ + \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt + \repeat}% + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + \pagesofar +} +\catcode`\@ = \other + + +\message{sectioning,} +% Define chapters, sections, etc. + +\newcount\chapno +\newcount\secno \secno=0 +\newcount\subsecno \subsecno=0 +\newcount\subsubsecno \subsubsecno=0 + +% This counter is funny since it counts through charcodes of letters A, B, ... +\newcount\appendixno \appendixno = `\@ +\def\appendixletter{\char\the\appendixno} + +\newwrite\contentsfile +% This is called from \setfilename. +\def\opencontents{\openout\contentsfile = \jobname.toc } + +% Each @chapter defines this as the name of the chapter. +% page headings and footings can use it. @section does likewise + +\def\thischapter{} \def\thissection{} +\def\seccheck#1{\ifnum \pageno<0 + \errmessage{@#1 not allowed after generating table of contents}% +\fi} + +\def\chapternofonts{% + \let\rawbackslash=\relax + \let\frenchspacing=\relax + \def\result{\realbackslash result}% + \def\equiv{\realbackslash equiv}% + \def\expansion{\realbackslash expansion}% + \def\print{\realbackslash print}% + \def\TeX{\realbackslash TeX}% + \def\dots{\realbackslash dots}% + \def\result{\realbackslash result}% + \def\equiv{\realbackslash equiv}% + \def\expansion{\realbackslash expansion}% + \def\print{\realbackslash print}% + \def\error{\realbackslash error}% + \def\point{\realbackslash point}% + \def\copyright{\realbackslash copyright}% + \def\tt{\realbackslash tt}% + \def\bf{\realbackslash bf}% + \def\w{\realbackslash w}% + \def\less{\realbackslash less}% + \def\gtr{\realbackslash gtr}% + \def\hat{\realbackslash hat}% + \def\char{\realbackslash char}% + \def\tclose##1{\realbackslash tclose{##1}}% + \def\code##1{\realbackslash code{##1}}% + \def\samp##1{\realbackslash samp{##1}}% + \def\r##1{\realbackslash r{##1}}% + \def\b##1{\realbackslash b{##1}}% + \def\key##1{\realbackslash key{##1}}% + \def\file##1{\realbackslash file{##1}}% + \def\kbd##1{\realbackslash kbd{##1}}% + % These are redefined because @smartitalic wouldn't work inside xdef. + \def\i##1{\realbackslash i{##1}}% + \def\cite##1{\realbackslash cite{##1}}% + \def\var##1{\realbackslash var{##1}}% + \def\emph##1{\realbackslash emph{##1}}% + \def\dfn##1{\realbackslash dfn{##1}}% +} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raise/lowersections modify this count + +% @raisesections: treat @section as chapter, @subsection as section, etc. +\def\raisesections{\global\advance\secbase by -1} +\let\up=\raisesections % original BFox name + +% @lowersections: treat @chapter as section, @section as subsection, etc. +\def\lowersections{\global\advance\secbase by 1} +\let\down=\lowersections % original BFox name + +% Choose a numbered-heading macro +% #1 is heading level if unmodified by @raisesections or @lowersections +% #2 is text for heading +\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 +\ifcase\absseclevel + \chapterzzz{#2} +\or + \seczzz{#2} +\or + \numberedsubseczzz{#2} +\or + \numberedsubsubseczzz{#2} +\else + \ifnum \absseclevel<0 + \chapterzzz{#2} + \else + \numberedsubsubseczzz{#2} + \fi +\fi +} + +% like \numhead, but chooses appendix heading levels +\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 +\ifcase\absseclevel + \appendixzzz{#2} +\or + \appendixsectionzzz{#2} +\or + \appendixsubseczzz{#2} +\or + \appendixsubsubseczzz{#2} +\else + \ifnum \absseclevel<0 + \appendixzzz{#2} + \else + \appendixsubsubseczzz{#2} + \fi +\fi +} + +% like \numhead, but chooses numberless heading levels +\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 +\ifcase\absseclevel + \unnumberedzzz{#2} +\or + \unnumberedseczzz{#2} +\or + \unnumberedsubseczzz{#2} +\or + \unnumberedsubsubseczzz{#2} +\else + \ifnum \absseclevel<0 + \unnumberedzzz{#2} + \else + \unnumberedsubsubseczzz{#2} + \fi +\fi +} + + +\def\thischaptername{No Chapter Title} +\outer\def\chapter{\parsearg\chapteryyy} +\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz #1{\seccheck{chapter}% +\secno=0 \subsecno=0 \subsubsecno=0 +\global\advance \chapno by 1 \message{\putwordChapter \the\chapno}% +\chapmacro {#1}{\the\chapno}% +\gdef\thissection{#1}% +\gdef\thischaptername{#1}% +% We don't substitute the actual chapter name into \thischapter +% because we don't want its macros evaluated now. +\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash chapentry{\the\toks0}{\the\chapno}{\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\donoderef % +\global\let\section = \numberedsec +\global\let\subsection = \numberedsubsec +\global\let\subsubsection = \numberedsubsubsec +}} + +\outer\def\appendix{\parsearg\appendixyyy} +\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz +\def\appendixzzz #1{\seccheck{appendix}% +\secno=0 \subsecno=0 \subsubsecno=0 +\global\advance \appendixno by 1 \message{Appendix \appendixletter}% +\chapmacro {#1}{\putwordAppendix{} \appendixletter}% +\gdef\thissection{#1}% +\gdef\thischaptername{#1}% +\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash chapentry{\the\toks0}% + {\putwordAppendix{} \appendixletter}{\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\appendixnoderef % +\global\let\section = \appendixsec +\global\let\subsection = \appendixsubsec +\global\let\subsubsection = \appendixsubsubsec +}} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\def\centerchap{\parsearg\centerchapyyy} +\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} + +\outer\def\top{\parsearg\unnumberedyyy} +\outer\def\unnumbered{\parsearg\unnumberedyyy} +\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz +\def\unnumberedzzz #1{\seccheck{unnumbered}% +\secno=0 \subsecno=0 \subsubsecno=0 +% +% This used to be simply \message{#1}, but TeX fully expands the +% argument to \message. Therefore, if #1 contained @-commands, TeX +% expanded them. For example, in `@unnumbered The @cite{Book}', TeX +% expanded @cite (which turns out to cause errors because \cite is meant +% to be executed, not expanded). +% +% Anyway, we don't want the fully-expanded definition of @cite to appear +% as a result of the \message, we just want `@cite' itself. We use +% \the to achieve this: TeX expands \the only once, +% simply yielding the contents of the . +\toks0 = {#1}\message{(\the\toks0)}% +% +\unnumbchapmacro {#1}% +\gdef\thischapter{#1}\gdef\thissection{#1}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash unnumbchapentry{\the\toks0}{\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\unnumbnoderef % +\global\let\section = \unnumberedsec +\global\let\subsection = \unnumberedsubsec +\global\let\subsubsection = \unnumberedsubsubsec +}} + +\outer\def\numberedsec{\parsearg\secyyy} +\def\secyyy #1{\numhead1{#1}} % normally calls seczzz +\def\seczzz #1{\seccheck{section}% +\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % +\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash secentry % +{\the\toks0}{\the\chapno}{\the\secno}{\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\donoderef % +\penalty 10000 % +}} + +\outer\def\appendixsection{\parsearg\appendixsecyyy} +\outer\def\appendixsec{\parsearg\appendixsecyyy} +\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz +\def\appendixsectionzzz #1{\seccheck{appendixsection}% +\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % +\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash secentry % +{\the\toks0}{\appendixletter}{\the\secno}{\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\appendixnoderef % +\penalty 10000 % +}} + +\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} +\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz +\def\unnumberedseczzz #1{\seccheck{unnumberedsec}% +\plainsecheading {#1}\gdef\thissection{#1}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash unnumbsecentry{\the\toks0}{\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\unnumbnoderef % +\penalty 10000 % +}} + +\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} +\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz +\def\numberedsubseczzz #1{\seccheck{subsection}% +\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % +\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash subsecentry % +{\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\donoderef % +\penalty 10000 % +}} + +\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy} +\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz +\def\appendixsubseczzz #1{\seccheck{appendixsubsec}% +\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % +\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash subsecentry % +{\the\toks0}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\appendixnoderef % +\penalty 10000 % +}} + +\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} +\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz +\def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}% +\plainsubsecheading {#1}\gdef\thissection{#1}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash unnumbsubsecentry{\the\toks0}{\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\unnumbnoderef % +\penalty 10000 % +}} + +\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} +\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz +\def\numberedsubsubseczzz #1{\seccheck{subsubsection}% +\gdef\thissection{#1}\global\advance \subsubsecno by 1 % +\subsubsecheading {#1} + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash subsubsecentry{\the\toks0} + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno} + {\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\donoderef % +\penalty 10000 % +}} + +\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy} +\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz +\def\appendixsubsubseczzz #1{\seccheck{appendixsubsubsec}% +\gdef\thissection{#1}\global\advance \subsubsecno by 1 % +\subsubsecheading {#1} + {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash subsubsecentry{\the\toks0}% + {\appendixletter} + {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\appendixnoderef % +\penalty 10000 % +}} + +\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} +\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz +\def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}% +\plainsubsubsecheading {#1}\gdef\thissection{#1}% +{\chapternofonts% +\toks0 = {#1}% +\edef\temp{{\realbackslash unnumbsubsubsecentry{\the\toks0}{\noexpand\folio}}}% +\escapechar=`\\% +\write \contentsfile \temp % +\unnumbnoderef % +\penalty 10000 % +}} + +% These are variants which are not "outer", so they can appear in @ifinfo. +% Actually, they should now be obsolete; ordinary section commands should work. +\def\infotop{\parsearg\unnumberedzzz} +\def\infounnumbered{\parsearg\unnumberedzzz} +\def\infounnumberedsec{\parsearg\unnumberedseczzz} +\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz} +\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz} + +\def\infoappendix{\parsearg\appendixzzz} +\def\infoappendixsec{\parsearg\appendixseczzz} +\def\infoappendixsubsec{\parsearg\appendixsubseczzz} +\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz} + +\def\infochapter{\parsearg\chapterzzz} +\def\infosection{\parsearg\sectionzzz} +\def\infosubsection{\parsearg\subsectionzzz} +\def\infosubsubsection{\parsearg\subsubsectionzzz} + +% These macros control what the section commands do, according +% to what kind of chapter we are in (ordinary, appendix, or unnumbered). +% Define them by default for a numbered chapter. +\global\let\section = \numberedsec +\global\let\subsection = \numberedsubsec +\global\let\subsubsection = \numberedsubsubsec + +% Define @majorheading, @heading and @subheading + +% NOTE on use of \vbox for chapter headings, section headings, and +% such: +% 1) We use \vbox rather than the earlier \line to permit +% overlong headings to fold. +% 2) \hyphenpenalty is set to 10000 because hyphenation in a +% heading is obnoxious; this forbids it. +% 3) Likewise, headings look best if no \parindent is used, and +% if justification is not attempted. Hence \raggedright. + + +\def\majorheading{\parsearg\majorheadingzzz} +\def\majorheadingzzz #1{% +{\advance\chapheadingskip by 10pt \chapbreak }% +{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\penalty 200} + +\def\chapheading{\parsearg\chapheadingzzz} +\def\chapheadingzzz #1{\chapbreak % +{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\penalty 200} + +% @heading, @subheading, @subsubheading. +\def\heading{\parsearg\plainsecheading} +\def\subheading{\parsearg\plainsubsecheading} +\def\subsubheading{\parsearg\plainsubsubsecheading} + +% These macros generate a chapter, section, etc. heading only +% (including whitespace, linebreaking, etc. around it), +% given all the information in convenient, parsed form. + +%%% Args are the skip and penalty (usually negative) +\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + +\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} + +%%% Define plain chapter starts, and page on/off switching for it +% Parameter controlling skip before chapter headings (if needed) + +\newskip\chapheadingskip + +\def\chapbreak{\dobreak \chapheadingskip {-4000}} +\def\chappager{\par\vfill\supereject} +\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} + +\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} + +\def\CHAPPAGoff{ +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chapbreak +\global\let\pagealignmacro=\chappager} + +\def\CHAPPAGon{ +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chappager +\global\let\pagealignmacro=\chappager +\global\def\HEADINGSon{\HEADINGSsingle}} + +\def\CHAPPAGodd{ +\global\let\contentsalignmacro = \chapoddpage +\global\let\pchapsepmacro=\chapoddpage +\global\let\pagealignmacro=\chapoddpage +\global\def\HEADINGSon{\HEADINGSdouble}} + +\CHAPPAGon + +\def\CHAPFplain{ +\global\let\chapmacro=\chfplain +\global\let\unnumbchapmacro=\unnchfplain +\global\let\centerchapmacro=\centerchfplain} + +% Plain chapter opening. +% #1 is the text, #2 the chapter number or empty if unnumbered. +\def\chfplain#1#2{% + \pchapsepmacro + {% + \chapfonts \rm + \def\chapnum{#2}% + \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent = \wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% Plain opening for unnumbered. +\def\unnchfplain#1{\chfplain{#1}{}} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerchfplain#1{{% + \def\centerparametersmaybe{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt + }% + \chfplain{#1}{}% +}} + +\CHAPFplain % The default + +\def\unnchfopen #1{% +\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\penalty 10000 % +} + +\def\chfopen #1#2{\chapoddpage {\chapfonts +\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% +\par\penalty 5000 % +} + +\def\centerchfopen #1{% +\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt + \hfill {\rm #1}\hfill}}\bigskip \par\penalty 10000 % +} + +\def\CHAPFopen{ +\global\let\chapmacro=\chfopen +\global\let\unnumbchapmacro=\unnchfopen +\global\let\centerchapmacro=\centerchfopen} + + +% Section titles. +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip {-1000}} +\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} +\def\plainsecheading#1{\sectionheading{sec}{}{#1}} + +% Subsection titles. +\newskip \subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} +\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} +\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} + +% Subsubsection titles. +\let\subsubsecheadingskip = \subsecheadingskip +\let\subsubsecheadingbreak = \subsecheadingbreak +\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} +\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} + + +% Print any size section title. +% +% #1 is the section type (sec/subsec/subsubsec), #2 is the section +% number (maybe empty), #3 the text. +\def\sectionheading#1#2#3{% + {% + \expandafter\advance\csname #1headingskip\endcsname by \parskip + \csname #1headingbreak\endcsname + }% + {% + % Switch to the right set of fonts. + \csname #1fonts\endcsname \rm + % + % Only insert the separating space if we have a section number. + \def\secnum{#2}% + \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% + % + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent = \wd0 % zero if no section number + \unhbox0 #3}% + }% + \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak +} + + +\message{toc printing,} +% Finish up the main text and prepare to read what we've written +% to \contentsfile. + +\newskip\contentsrightmargin \contentsrightmargin=1in +\def\startcontents#1{% + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. Thus, we maintain + % \contentsalignmacro in parallel with \pagealignmacro. + % From: Torbjorn Granlund + \contentsalignmacro + \immediate\closeout \contentsfile + \ifnum \pageno>0 + \pageno = -1 % Request roman numbered pages. + \fi + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \unnumbchapmacro{#1}\def\thischapter{}% + \begingroup % Set up to handle contents files properly. + \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 + % We can't do this, because then an actual ^ in a section + % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. + %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi + \raggedbottom % Worry more about breakpoints than the bottom. + \advance\hsize by -\contentsrightmargin % Don't use the full line length. +} + + +% Normal (long) toc. +\outer\def\contents{% + \startcontents{\putwordTableofContents}% + \input \jobname.toc + \endgroup + \vfill \eject +} + +% And just the chapters. +\outer\def\summarycontents{% + \startcontents{\putwordShortContents}% + % + \let\chapentry = \shortchapentry + \let\unnumbchapentry = \shortunnumberedentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\secentry ##1##2##3##4{} + \def\unnumbsecentry ##1##2{} + \def\subsecentry ##1##2##3##4##5{} + \def\unnumbsubsecentry ##1##2{} + \def\subsubsecentry ##1##2##3##4##5##6{} + \def\unnumbsubsubsecentry ##1##2{} + \input \jobname.toc + \endgroup + \vfill \eject +} +\let\shortcontents = \summarycontents + +% These macros generate individual entries in the table of contents. +% The first argument is the chapter or section name. +% The last argument is the page number. +% The arguments in between are the chapter number, section number, ... + +% Chapter-level things, for both the long and short contents. +\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} + +% See comments in \dochapentry re vbox and related settings +\def\shortchapentry#1#2#3{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno{#3}}% +} + +% Typeset the label for a chapter or appendix for the short contents. +% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter. +% We could simplify the code here by writing out an \appendixentry +% command in the toc file for appendices, instead of using \chapentry +% for both, but it doesn't seem worth it. +\setbox0 = \hbox{\shortcontrm \putwordAppendix } +\newdimen\shortappendixwidth \shortappendixwidth = \wd0 + +\def\shortchaplabel#1{% + % We typeset #1 in a box of constant width, regardless of the text of + % #1, so the chapter titles will come out aligned. + \setbox0 = \hbox{#1}% + \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi + % + % This space should be plenty, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % (This space doesn't include the extra space that gets added after + % the label; that gets put in by \shortchapentry above.) + \advance\dimen0 by 1.1em + \hbox to \dimen0{#1\hfil}% +} + +\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} +\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno{#2}}} + +% Sections. +\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} +\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}} + +% Subsections. +\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} +\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}} + +% And subsubsections. +\def\subsubsecentry#1#2#3#4#5#6{% + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} +\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} + +% This parameter controls the indentation of the various levels. +\newdimen\tocindent \tocindent = 3pc + +% Now for the actual typesetting. In all these, #1 is the text and #2 is the +% page number. +% +% If the toc has to be broken over pages, we want it to be at chapters +% if at all possible; hence the \penalty. +\def\dochapentry#1#2{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + \chapentryfonts + \tocentry{#1}{\dopageno{#2}}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip +} + +\def\dosecentry#1#2{\begingroup + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{\dopageno{#2}}% +\endgroup} + +\def\dosubsecentry#1#2{\begingroup + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{\dopageno{#2}}% +\endgroup} + +\def\dosubsubsecentry#1#2{\begingroup + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{\dopageno{#2}}% +\endgroup} + +% Final typesetting of a toc entry; we use the same \entry macro as for +% the index entries, but we want to suppress hyphenation here. (We +% can't do that in the \entry macro, since index entries might consist +% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) +\def\tocentry#1#2{\begingroup + \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks + % Do not use \turnoffactive in these arguments. Since the toc is + % typeset in cmr, so characters such as _ would come out wrong; we + % have to do the usual translation tricks. + \entry{#1}{#2}% +\endgroup} + +% Space between chapter (or whatever) number and the title. +\def\labelspace{\hskip1em \relax} + +\def\dopageno#1{{\rm #1}} +\def\doshortpageno#1{{\rm #1}} + +\def\chapentryfonts{\secfonts \rm} +\def\secentryfonts{\textfonts} +\let\subsecentryfonts = \textfonts +\let\subsubsecentryfonts = \textfonts + + +\message{environments,} + +% Since these characters are used in examples, it should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% Furthermore, these definitions must come after we define our fonts. +\newbox\dblarrowbox \newbox\longdblarrowbox +\newbox\pushcharbox \newbox\bullbox +\newbox\equivbox \newbox\errorbox + +%{\tentt +%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil} +%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil} +%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil} +%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil} +% Adapted from the manmac format (p.420 of TeXbook) +%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex +% depth .1ex\hfil} +%} + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +\def\point{$\star$} +\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% Adapted from the TeXbook's \boxit. +{\tentt \global\dimen0 = 3em}% Width of the box. +\dimen2 = .55pt % Thickness of rules +% The text. (`r' is open on the right, `e' somewhat less so on the left.) +\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} + +\global\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{ + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} + +% The @error{} command. +\def\error{\leavevmode\lower.7ex\copy\errorbox} + +% @tex ... @end tex escapes into raw Tex temporarily. +% One exception: @ is still an escape character, so that @end tex works. +% But \@ or @@ will get a plain tex @ character. + +\def\tex{\begingroup + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie + \catcode `\%=14 + \catcode 43=12 % plus + \catcode`\"=12 + \catcode`\==12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \escapechar=`\\ + % + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\*=\ptexstar + \let\t=\ptext + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +\let\Etex=\endgroup} + +% Define @lisp ... @endlisp. +% @lisp does a \begingroup so it can rebind things, +% including the definition of @endlisp (which normally is erroneous). + +% Amount to narrow the margins by for @lisp. +\newskip\lispnarrowing \lispnarrowing=0.4in + +% This is the definition that ^^M gets inside @lisp, @example, and other +% such environments. \null is better than a space, since it doesn't +% have any width. +\def\lisppar{\null\endgraf} + +% Make each space character in the input produce a normal interword +% space in the output. Don't allow a line break at this space, as this +% is used only in environments like @example, where each line of input +% should produce a line of output anyway. +% +{\obeyspaces % +\gdef\sepspaces{\obeyspaces\let =\tie}} + +% Define \obeyedspace to be our active space, whatever it is. This is +% for use in \parsearg. +{\sepspaces% +\global\let\obeyedspace= } + +% This space is always present above and below environments. +\newskip\envskipamount \envskipamount = 0pt + +% Make spacing and below environment symmetrical. We use \parskip here +% to help in doing that, since in @example-like environments \parskip +% is reset to zero; thus the \afterenvbreak inserts no space -- but the +% start of the next paragraph will insert \parskip +% +\def\aboveenvbreak{{\advance\envskipamount by \parskip +\endgraf \ifdim\lastskip<\envskipamount +\removelastskip \penalty-50 \vskip\envskipamount \fi}} + +\let\afterenvbreak = \aboveenvbreak + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. +\let\nonarrowing=\relax + +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. +\font\circle=lcircle10 +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip +\circthick=\fontdimen8\circle +% +\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth +\def\ctr{{\hskip 6pt\circle\char'010}} +\def\cbl{{\circle\char'012\hskip -6pt}} +\def\cbr{{\hskip 6pt\circle\char'011}} +\def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} +\def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} +% +\newskip\lskip\newskip\rskip + +\long\def\cartouche{% +\begingroup + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt %we want these *outside*. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \cartouter=\hsize + \advance\cartouter by 18.4pt % allow for 3pt kerns on either +% side, and for 6pt waste from +% each corner char, and rule thickness + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % Flag to tell @lisp, etc., not to narrow margin. + \let\nonarrowing=\comment + \vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \hsize=\cartinner + \kern3pt + \begingroup + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip +\def\Ecartouche{% + \endgroup + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup +\endgroup +}} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\def\nonfillstart{% + \aboveenvbreak + \inENV % This group ends at the end of the body + \hfuzz = 12pt % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \singlespace + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + \parindent = 0pt + \emergencystretch = 0pt % don't try to avoid overfull boxes + % @cartouche defines \nonarrowing to inhibit narrowing + % at next level down. + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \let\exdent=\nofillexdent + \let\nonarrowing=\relax + \fi +} + +% To ending an @example-like environment, we first end the paragraph +% (via \afterenvbreak's vertical glue), and then the group. That way we +% keep the zero \parskip that the environments set -- \parskip glue +% will be inserted at the beginning of the next paragraph in the +% document, after the environment. +% +\def\nonfillfinish{\afterenvbreak\endgroup}% + +\def\lisp{\begingroup + \nonfillstart + \let\Elisp = \nonfillfinish + \tt + % Make @kbd do something special, if requested. + \let\kbdfont\kbdexamplefont + \rawbackslash % have \ input char produce \ char from current font + \gobble +} + +% Define the \E... control sequence only if we are inside the +% environment, so the error checking in \end will work. +% +% We must call \lisp last in the definition, since it reads the +% return following the @example (or whatever) command. +% +\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} +\def\smallexample{\begingroup \def\Esmallexample{\nonfillfinish\endgroup}\lisp} +\def\smalllisp{\begingroup \def\Esmalllisp{\nonfillfinish\endgroup}\lisp} + +% @smallexample and @smalllisp. This is not used unless the @smallbook +% command is given. Originally contributed by Pavel@xerox. +% +\def\smalllispx{\begingroup + \nonfillstart + \let\Esmalllisp = \nonfillfinish + \let\Esmallexample = \nonfillfinish + % + % Smaller fonts for small examples. + \indexfonts \tt + \rawbackslash % make \ output the \ character from the current font (tt) + \gobble +} + +% This is @display; same as @lisp except use roman font. +% +\def\display{\begingroup + \nonfillstart + \let\Edisplay = \nonfillfinish + \gobble +} + +% This is @format; same as @display except don't narrow margins. +% +\def\format{\begingroup + \let\nonarrowing = t + \nonfillstart + \let\Eformat = \nonfillfinish + \gobble +} + +% @flushleft (same as @format) and @flushright. +% +\def\flushleft{\begingroup + \let\nonarrowing = t + \nonfillstart + \let\Eflushleft = \nonfillfinish + \gobble +} +\def\flushright{\begingroup + \let\nonarrowing = t + \nonfillstart + \let\Eflushright = \nonfillfinish + \advance\leftskip by 0pt plus 1fill + \gobble} + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. +% +\def\quotation{% + \begingroup\inENV %This group ends at the end of the @quotation body + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \singlespace + \parindent=0pt + % We have retained a nonzero parskip for the environment, since we're + % doing normal filling. So to avoid extra space below the environment... + \def\Equotation{\parskip = 0pt \nonfillfinish}% + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \advance\rightskip by \lispnarrowing + \exdentamount = \lispnarrowing + \let\nonarrowing = \relax + \fi +} + +\message{defuns,} +% Define formatter for defuns +% First, allow user to change definition object font (\df) internally +\def\setdeffont #1 {\csname DEF#1\endcsname} + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deftypemargin \deftypemargin=12pt +\newskip\deflastargmargin \deflastargmargin=18pt + +\newcount\parencount +% define \functionparens, which makes ( and ) and & do special things. +% \functionparens affects the group it is contained in. +\def\activeparens{% +\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active +\catcode`\[=\active \catcode`\]=\active} + +% Make control sequences which act like normal parenthesis chars. +\let\lparen = ( \let\rparen = ) + +{\activeparens % Now, smart parens don't turn on until &foo (see \amprm) + +% Be sure that we always have a definition for `(', etc. For example, +% if the fn name has parens in it, \boldbrax will not be in effect yet, +% so TeX would otherwise complain about undefined control sequence. +\global\let(=\lparen \global\let)=\rparen +\global\let[=\lbrack \global\let]=\rbrack + +\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 } +\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} +% This is used to turn on special parens +% but make & act ordinary (given that it's active). +\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr} + +% Definitions of (, ) and & used in args for functions. +% This is the definition of ( outside of all parentheses. +\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested + \global\advance\parencount by 1 +} +% +% This is the definition of ( when already inside a level of parens. +\gdef\opnested{\char`\(\global\advance\parencount by 1 } +% +\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. + % also in that case restore the outer-level definition of (. + \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi + \global\advance \parencount by -1 } +% If we encounter &foo, then turn on ()-hacking afterwards +\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } +% +\gdef\normalparens{\boldbrax\let&=\ampnr} +} % End of definition inside \activeparens +%% These parens (in \boldbrax) actually are a little bolder than the +%% contained text. This is especially needed for [ and ] +\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } +\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } +\def\ampnr{\&} +\def\lbrb{{\bf\char`\[}} +\def\rbrb{{\bf\char`\]}} + +% First, defname, which formats the header line itself. +% #1 should be the function name. +% #2 should be the type of definition, such as "Function". + +\def\defname #1#2{% +% Get the values of \leftskip and \rightskip as they were +% outside the @def... +\dimen2=\leftskip +\advance\dimen2 by -\defbodyindent +\dimen3=\rightskip +\advance\dimen3 by -\defbodyindent +\noindent % +\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}% +\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations +\parshape 2 0in \dimen0 \defargsindent \dimen1 % +% Now output arg 2 ("Function" or some such) +% ending at \deftypemargin from the right margin, +% but stuck inside a box of width 0 so it does not interfere with linebreaking +{% Adjust \hsize to exclude the ambient margins, +% so that \rightline will obey them. +\advance \hsize by -\dimen2 \advance \hsize by -\dimen3 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}}}% +% Make all lines underfull and no complaints: +\tolerance=10000 \hbadness=10000 +\advance\leftskip by -\defbodyindent +\exdentamount=\defbodyindent +{\df #1}\enskip % Generate function name +} + +% Actually process the body of a definition +% #1 should be the terminating control sequence, such as \Edefun. +% #2 should be the "another name" control sequence, such as \defunx. +% #3 should be the control sequence that actually processes the header, +% such as \defunheader. + +\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody +\medbreak % +% Define the end token that this defining construct specifies +% so that it will exit this group. +\def#1{\endgraf\endgroup\medbreak}% +\def#2{\begingroup\obeylines\activeparens\spacesplit#3}% +\parindent=0in +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\exdentamount=\defbodyindent +\begingroup % +\catcode 61=\active % 61 is `=' +\obeylines\activeparens\spacesplit#3} + +% #1 is the \E... control sequence to end the definition (which we define). +% #2 is the \...x control sequence for consecutive fns (which we define). +% #3 is the control sequence to call to resume processing. +% #4, delimited by the space, is the class name. +% +\def\defmethparsebody#1#2#3#4 {\begingroup\inENV % +\medbreak % +% Define the end token that this defining construct specifies +% so that it will exit this group. +\def#1{\endgraf\endgroup\medbreak}% +\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% +\parindent=0in +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\exdentamount=\defbodyindent +\begingroup\obeylines\activeparens\spacesplit{#3{#4}}} + +% @deftypemethod has an extra argument that nothing else does. Sigh. +% +\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV % +\medbreak % +% Define the end token that this defining construct specifies +% so that it will exit this group. +\def#1{\endgraf\endgroup\medbreak}% +\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% +\parindent=0in +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\exdentamount=\defbodyindent +\begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}} + +\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV % +\medbreak % +% Define the end token that this defining construct specifies +% so that it will exit this group. +\def#1{\endgraf\endgroup\medbreak}% +\def#2##1 ##2 {\def#4{##1}% +\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% +\parindent=0in +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\exdentamount=\defbodyindent +\begingroup\obeylines\activeparens\spacesplit{#3{#5}}} + +% These parsing functions are similar to the preceding ones +% except that they do not make parens into active characters. +% These are used for "variables" since they have no arguments. + +\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody +\medbreak % +% Define the end token that this defining construct specifies +% so that it will exit this group. +\def#1{\endgraf\endgroup\medbreak}% +\def#2{\begingroup\obeylines\spacesplit#3}% +\parindent=0in +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\exdentamount=\defbodyindent +\begingroup % +\catcode 61=\active % +\obeylines\spacesplit#3} + +% This is used for \def{tp,vr}parsebody. It could probably be used for +% some of the others, too, with some judicious conditionals. +% +\def\parsebodycommon#1#2#3{% + \begingroup\inENV % + \medbreak % + % Define the end token that this defining construct specifies + % so that it will exit this group. + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% + \parindent=0in + \advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines +} + +\def\defvrparsebody#1#2#3#4 {% + \parsebodycommon{#1}{#2}{#3}% + \spacesplit{#3{#4}}% +} + +% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the +% type is just `struct', because we lose the braces in `{struct +% termios}' when \spacesplit reads its undelimited argument. Sigh. +% \let\deftpparsebody=\defvrparsebody +% +% So, to get around this, we put \empty in with the type name. That +% way, TeX won't find exactly `{...}' as an undelimited argument, and +% won't strip off the braces. +% +\def\deftpparsebody #1#2#3#4 {% + \parsebodycommon{#1}{#2}{#3}% + \spacesplit{\parsetpheaderline{#3{#4}}}\empty +} + +% Fine, but then we have to eventually remove the \empty *and* the +% braces (if any). That's what this does. +% +\def\removeemptybraces\empty#1\relax{#1} + +% After \spacesplit has done its work, this is called -- #1 is the final +% thing to call, #2 the type name (which starts with \empty), and #3 +% (which might be empty) the arguments. +% +\def\parsetpheaderline#1#2#3{% + #1{\removeemptybraces#2\relax}{#3}% +}% + +\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % +\medbreak % +% Define the end token that this defining construct specifies +% so that it will exit this group. +\def#1{\endgraf\endgroup\medbreak}% +\def#2##1 ##2 {\def#4{##1}% +\begingroup\obeylines\spacesplit{#3{##2}}}% +\parindent=0in +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent +\exdentamount=\defbodyindent +\begingroup\obeylines\spacesplit{#3{#5}}} + +% Split up #2 at the first space token. +% call #1 with two arguments: +% the first is all of #2 before the space token, +% the second is all of #2 after that space token. +% If #2 contains no space token, all of it is passed as the first arg +% and the second is passed as empty. + +{\obeylines +\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}% +\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{% +\ifx\relax #3% +#1{#2}{}\else #1{#2}{#3#4}\fi}} + +% So much for the things common to all kinds of definitions. + +% Define @defun. + +% First, define the processing that is wanted for arguments of \defun +% Use this to expand the args and terminate the paragraph they make up + +\def\defunargs #1{\functionparens \sl +% Expand, preventing hyphenation at `-' chars. +% Note that groups don't affect changes in \hyphenchar. +\hyphenchar\tensl=0 +#1% +\hyphenchar\tensl=45 +\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% +\interlinepenalty=10000 +\advance\rightskip by 0pt plus 1fil +\endgraf\penalty 10000\vskip -\parskip\penalty 10000% +} + +\def\deftypefunargs #1{% +% Expand, preventing hyphenation at `-' chars. +% Note that groups don't affect changes in \hyphenchar. +% Use \boldbraxnoamp, not \functionparens, so that & is not special. +\boldbraxnoamp +\tclose{#1}% avoid \code because of side effects on active chars +\interlinepenalty=10000 +\advance\rightskip by 0pt plus 1fil +\endgraf\penalty 10000\vskip -\parskip\penalty 10000% +} + +% Do complete processing of one @defun or @defunx line already parsed. + +% @deffn Command forward-char nchars + +\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader} + +\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}% +\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% @defun == @deffn Function + +\def\defun{\defparsebody\Edefun\defunx\defunheader} + +\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index +\begingroup\defname {#1}{Function}% +\defunargs {#2}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% @deftypefun int foobar (int @var{foo}, float @var{bar}) + +\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader} + +% #1 is the data type. #2 is the name and args. +\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax} +% #1 is the data type, #2 the name, #3 the args. +\def\deftypefunheaderx #1#2 #3\relax{% +\doind {fn}{\code{#2}}% Make entry in function index +\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}% +\deftypefunargs {#3}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) + +\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} + +% \defheaderxcond#1\relax$$$ +% puts #1 in @code, followed by a space, but does nothing if #1 is null. +\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi} + +% #1 is the classification. #2 is the data type. #3 is the name and args. +\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} +% #1 is the classification, #2 the data type, #3 the name, #4 the args. +\def\deftypefnheaderx #1#2#3 #4\relax{% +\doind {fn}{\code{#3}}% Make entry in function index +\begingroup +\normalparens % notably, turn off `&' magic, which prevents +% at least some C++ text from working +\defname {\defheaderxcond#2\relax$$$#3}{#1}% +\deftypefunargs {#4}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% @defmac == @deffn Macro + +\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} + +\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index +\begingroup\defname {#1}{Macro}% +\defunargs {#2}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% @defspec == @deffn Special Form + +\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader} + +\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index +\begingroup\defname {#1}{Special Form}% +\defunargs {#2}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% This definition is run if you use @defunx +% anywhere other than immediately after a @defun or @defunx. + +\def\deffnx #1 {\errmessage{@deffnx in invalid context}} +\def\defunx #1 {\errmessage{@defunx in invalid context}} +\def\defmacx #1 {\errmessage{@defmacx in invalid context}} +\def\defspecx #1 {\errmessage{@defspecx in invalid context}} +\def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}} +\def\deftypemethodx #1 {\errmessage{@deftypemethodx in invalid context}} +\def\deftypeunx #1 {\errmessage{@deftypeunx in invalid context}} + +% @defmethod, and so on + +% @defop CATEGORY CLASS OPERATION ARG... + +\def\defop #1 {\def\defoptype{#1}% +\defopparsebody\Edefop\defopx\defopheader\defoptype} + +\def\defopheader #1#2#3{% +\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index +\begingroup\defname {#2}{\defoptype{} on #1}% +\defunargs {#3}\endgroup % +} + +% @deftypemethod CLASS RETURN-TYPE METHOD ARG... +% +\def\deftypemethod{% + \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} +% +% #1 is the class name, #2 the data type, #3 the method name, #4 the args. +\def\deftypemethodheader#1#2#3#4{% + \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}% + \deftypefunargs{#4}% + \endgroup +} + +% @defmethod == @defop Method +% +\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} +% +% #1 is the class name, #2 the method name, #3 the args. +\def\defmethodheader#1#2#3{% + \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{#2}{\putwordMethodon\ \code{#1}}% + \defunargs{#3}% + \endgroup +} + +% @defcv {Class Option} foo-class foo-flag + +\def\defcv #1 {\def\defcvtype{#1}% +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype} + +\def\defcvarheader #1#2#3{% +\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index +\begingroup\defname {#2}{\defcvtype{} of #1}% +\defvarargs {#3}\endgroup % +} + +% @defivar == @defcv {Instance Variable} + +\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader} + +\def\defivarheader #1#2#3{% +\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index +\begingroup\defname {#2}{Instance Variable of #1}% +\defvarargs {#3}\endgroup % +} + +% These definitions are run if you use @defmethodx, etc., +% anywhere other than immediately after a @defmethod, etc. + +\def\defopx #1 {\errmessage{@defopx in invalid context}} +\def\defmethodx #1 {\errmessage{@defmethodx in invalid context}} +\def\defcvx #1 {\errmessage{@defcvx in invalid context}} +\def\defivarx #1 {\errmessage{@defivarx in invalid context}} + +% Now @defvar + +% First, define the processing that is wanted for arguments of @defvar. +% This is actually simple: just print them in roman. +% This must expand the args and terminate the paragraph they make up +\def\defvarargs #1{\normalparens #1% +\interlinepenalty=10000 +\endgraf\penalty 10000\vskip -\parskip\penalty 10000} + +% @defvr Counter foo-count + +\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader} + +\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}% +\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup} + +% @defvar == @defvr Variable + +\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader} + +\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index +\begingroup\defname {#1}{Variable}% +\defvarargs {#2}\endgroup % +} + +% @defopt == @defvr {User Option} + +\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader} + +\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index +\begingroup\defname {#1}{User Option}% +\defvarargs {#2}\endgroup % +} + +% @deftypevar int foobar + +\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} + +% #1 is the data type. #2 is the name, perhaps followed by text that +% is actually part of the data type, which should not be put into the index. +\def\deftypevarheader #1#2{% +\dovarind#2 \relax% Make entry in variables index +\begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}% +\interlinepenalty=10000 +\endgraf\penalty 10000\vskip -\parskip\penalty 10000 +\endgroup} +\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} + +% @deftypevr {Global Flag} int enable + +\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} + +\def\deftypevrheader #1#2#3{\dovarind#3 \relax% +\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} +\interlinepenalty=10000 +\endgraf\penalty 10000\vskip -\parskip\penalty 10000 +\endgroup} + +% This definition is run if you use @defvarx +% anywhere other than immediately after a @defvar or @defvarx. + +\def\defvrx #1 {\errmessage{@defvrx in invalid context}} +\def\defvarx #1 {\errmessage{@defvarx in invalid context}} +\def\defoptx #1 {\errmessage{@defoptx in invalid context}} +\def\deftypevarx #1 {\errmessage{@deftypevarx in invalid context}} +\def\deftypevrx #1 {\errmessage{@deftypevrx in invalid context}} + +% Now define @deftp +% Args are printed in bold, a slight difference from @defvar. + +\def\deftpargs #1{\bf \defvarargs{#1}} + +% @deftp Class window height width ... + +\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader} + +\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}% +\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup} + +% This definition is run if you use @deftpx, etc +% anywhere other than immediately after a @deftp, etc. + +\def\deftpx #1 {\errmessage{@deftpx in invalid context}} + + +\message{cross reference,} +\newwrite\auxfile + +\newif\ifhavexrefs % True if xref values are known. +\newif\ifwarnedxrefs % True if we warned once that they aren't known. + +% @inforef is relatively simple. +\def\inforef #1{\inforefzzz #1,,,,**} +\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + +% @setref{foo} defines a cross-reference point named foo. + +\def\setref#1{% +\dosetq{#1-title}{Ytitle}% +\dosetq{#1-pg}{Ypagenumber}% +\dosetq{#1-snt}{Ysectionnumberandtype}} + +\def\unnumbsetref#1{% +\dosetq{#1-title}{Ytitle}% +\dosetq{#1-pg}{Ypagenumber}% +\dosetq{#1-snt}{Ynothing}} + +\def\appendixsetref#1{% +\dosetq{#1-title}{Ytitle}% +\dosetq{#1-pg}{Ypagenumber}% +\dosetq{#1-snt}{Yappendixletterandtype}} + +% \xref, \pxref, and \ref generate cross-references to specified points. +% For \xrefX, #1 is the node name, #2 the name of the Info +% cross-reference, #3 the printed node name, #4 the name of the Info +% file, #5 the name of the printed manual. All but the node name can be +% omitted. +% +\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} +\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} +\def\ref#1{\xrefX[#1,,,,,,,]} +\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \def\printedmanual{\ignorespaces #5}% + \def\printednodename{\ignorespaces #3}% + \setbox1=\hbox{\printedmanual}% + \setbox0=\hbox{\printednodename}% + \ifdim \wd0 = 0pt + % No printed node name was explicitly given. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax + % Use the node name inside the square brackets. + \def\printednodename{\ignorespaces #1}% + \else + % Use the actual chapter/section title appear inside + % the square brackets. Use the real section title if we have it. + \ifdim \wd1>0pt% + % It is in another manual, so we don't have it. + \def\printednodename{\ignorespaces #1}% + \else + \ifhavexrefs + % We know the real title if we have the xref values. + \def\printednodename{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printednodename{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not + % insert empty discretionaries after hyphens, which means that it will + % not find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, this + % is a loss. Therefore, we give the text of the node name again, so it + % is as if TeX is seeing it for the first time. + \ifdim \wd1 > 0pt + \putwordsection{} ``\printednodename'' in \cite{\printedmanual}% + \else + % _ (for example) has to be the character _ for the purposes of the + % control sequence corresponding to the node, but it has to expand + % into the usual \leavevmode...\vrule stuff for purposes of + % printing. So we \turnoffactive for the \refx-snt, back on for the + % printing, back off for the \refx-pg. + {\normalturnoffactive \refx{#1-snt}{}}% + \space [\printednodename],\space + \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + \fi +\endgroup} + +% \dosetq is the interface for calls from other macros + +% Use \normalturnoffactive so that punctuation chars such as underscore +% and backslash work in node names. (\turnoffactive doesn't do \.) +\def\dosetq#1#2{% + {\let\folio=0 + \normalturnoffactive + \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% + \next + }% +} + +% \internalsetq {foo}{page} expands into +% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...} +% When the aux file is read, ' is the escape character + +\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}} + +% Things to be expanded by \internalsetq + +\def\Ypagenumber{\folio} + +\def\Ytitle{\thissection} + +\def\Ynothing{} + +\def\Ysectionnumberandtype{% +\ifnum\secno=0 \putwordChapter\xreftie\the\chapno % +\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno % +\else \ifnum \subsubsecno=0 % +\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno % +\else % +\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno % +\fi \fi \fi } + +\def\Yappendixletterandtype{% +\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}% +\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno % +\else \ifnum \subsubsecno=0 % +\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno % +\else % +\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % +\fi \fi \fi } + +\gdef\xreftie{'tie} + +% Use TeX 3.0's \inputlineno to get the line number, for better error +% messages, but if we're using an old version of TeX, don't do anything. +% +\ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Non-3.0. +\else + \def\linenumber{\the\inputlineno:\space} +\fi + +% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. +% If its value is nonempty, SUFFIX is output afterward. + +\def\refx#1#2{% + \expandafter\ifx\csname X#1\endcsname\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \ifhavexrefs + \message{\linenumber Undefined cross reference `#1'.}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \else + % It's defined, so just use it. + \csname X#1\endcsname + \fi + #2% Output the suffix in any case. +} + +% This is the macro invoked by entries in the aux file. +% +\def\xrdef#1{\begingroup + % Reenable \ as an escape while reading the second argument. + \catcode`\\ = 0 + \afterassignment\endgroup + \expandafter\gdef\csname X#1\endcsname +} + +% Read the last existing aux file, if any. No error if none exists. +\def\readauxfile{\begingroup + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + \catcode`\@=\other + \catcode`\^=\other + % It was suggested to define this as 7, which would allow ^^e4 etc. + % in xref tags, i.e., node names. But since ^^e4 notation isn't + % supported in the main text, it doesn't seem desirable. Furthermore, + % that is not enough: for node names that actually contain a ^ + % character, we would end up writing a line like this: 'xrdef {'hat + % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first + % argument, and \hat is not an expandable control sequence. It could + % all be worked out, but why? Either we support ^^ or we don't. + % + % The other change necessary for this was to define \auxhat: + % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter + % and then to call \auxhat in \setq. + % + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % Make the characters 128-255 be printing characters + {% + \count 1=128 + \def\loop{% + \catcode\count 1=\other + \advance\count 1 by 1 + \ifnum \count 1<256 \loop \fi + }% + }% + % The aux file uses ' as the escape (for now). + % Turn off \ as an escape so we do not lose on + % entries which were dumped with control sequences in their names. + % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ + % Reference to such entries still does not work the way one would wish, + % but at least they do not bomb out when the aux file is read in. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\%=\other + \catcode`\'=0 + \catcode`\\=\other + % + \openin 1 \jobname.aux + \ifeof 1 \else + \closein 1 + \input \jobname.aux + \global\havexrefstrue + \global\warnedobstrue + \fi + % Open the new aux file. TeX will close it automatically at exit. + \openout\auxfile=\jobname.aux +\endgroup} + + +% Footnotes. + +\newcount \footnoteno + +% The trailing space in the following definition for supereject is +% vital for proper filling; pages come out unaligned when you do a +% pagealignmacro call if that space before the closing brace is +% removed. (Generally, numeric constants should always be followed by a +% space to prevent strange expansion errors.) +\def\supereject{\par\penalty -20000\footnoteno =0 } + +% @footnotestyle is meaningful for info output only. +\let\footnotestyle=\comment + +\let\ptexfootnote=\footnote + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \footnotezzz +}% + +% Don't bother with the trickery in plain.tex to not require the +% footnote text as a parameter. Our footnotes don't need to be so general. +% +% Oh yes, they do; otherwise, @ifset and anything else that uses +% \parseargline fail inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\long\gdef\footnotezzz{\insert\footins\bgroup + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + % Hang the footnote text off the number. + \hang + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut + \futurelet\next\fo@t +} +\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t + \else\let\next\f@t\fi \next} +\def\f@@t{\bgroup\aftergroup\@foot\let\next} +\def\f@t#1{#1\@foot} +\def\@foot{\strut\egroup} + +}%end \catcode `\@=11 + +% Set the baselineskip to #1, and the lineskip and strut size +% correspondingly. There is no deep meaning behind these magic numbers +% used as factors; they just match (closely enough) what Knuth defined. +% +\def\lineskipfactor{.08333} +\def\strutheightpercent{.70833} +\def\strutdepthpercent {.29167} +% +\def\setleading#1{% + \normalbaselineskip = #1\relax + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% +} + +% @| inserts a changebar to the left of the current line. It should +% surround any changed text. This approach does *not* work if the +% change spans more than two lines of output. To handle that, we would +% have adopt a much more difficult approach (putting marks into the main +% vertical list for the beginning and end of each change). +% +\def\|{% + % \vadjust can only be used in horizontal mode. + \leavevmode + % + % Append this vertical mode material after the current line in the output. + \vadjust{% + % We want to insert a rule with the height and depth of the current + % leading; that is exactly what \strutbox is supposed to record. + \vskip-\baselineskip + % + % \vadjust-items are inserted at the left edge of the type. So + % the \llap here moves out into the left-hand margin. + \llap{% + % + % For a thicker or thinner bar, change the `1pt'. + \vrule height\baselineskip width1pt + % + % This is the space between the bar and the text. + \hskip 12pt + }% + }% +} + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt} + +% @image. We use the macros from epsf.tex to support this. +% If epsf.tex is not installed and @image is used, we complain. +% +% Check for and read epsf.tex up front. If we read it only at @image +% time, we might be inside a group, and then its definitions would get +% undone and the next image would fail. +\openin 1 = epsf.tex +\ifeof 1 \else + \closein 1 + \def\epsfannounce{\toks0 = }% do not bother showing banner + \input epsf.tex +\fi +% +\newif\ifwarnednoepsf +\newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from ftp://ftp.tug.org/tex/epsf.tex.} +% +% Only complain once about lack of epsf.tex. +\def\image#1{% + \ifx\epsfbox\undefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,\finish + \fi +} +% +% Arguments to @image: +% #1 is (mandatory) image filename; we tack on .eps extension. +% #2 is (optional) width, #3 is (optional) height. +% #4 is just the usual extra ignored arg for parsing this stuff. +\def\imagexxx#1,#2,#3,#4\finish{% + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% +} + +% End of control word definitions. + + +\message{and turning on texinfo input format.} + +\def\openindices{% + \newindex{cp}% + \newcodeindex{fn}% + \newcodeindex{vr}% + \newcodeindex{tp}% + \newcodeindex{ky}% + \newcodeindex{pg}% +} + +% Set some numeric style parameters, for 8.5 x 11 format. + +\hsize = 6in +\hoffset = .25in +\newdimen\defaultparindent \defaultparindent = 15pt +\parindent = \defaultparindent +\parskip 3pt plus 2pt minus 1pt +\setleading{13.2pt} +\advance\topskip by 1.2cm + +\chapheadingskip = 15pt plus 4pt minus 2pt +\secheadingskip = 12pt plus 3pt minus 2pt +\subsecheadingskip = 9pt plus 2pt minus 2pt + +% Prevent underfull vbox error messages. +\vbadness=10000 + +% Following George Bush, just get rid of widows and orphans. +\widowpenalty=10000 +\clubpenalty=10000 + +% Use TeX 3.0's \emergencystretch to help line breaking, but if we're +% using an old version of TeX, don't do anything. We want the amount of +% stretch added to depend on the line length, hence the dependence on +% \hsize. This makes it come to about 9pt for the 8.5x11 format. +% +\ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% +\else + \emergencystretch = \hsize + \divide\emergencystretch by 45 +\fi + +% Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25) +\def\smallbook{ + \global\chapheadingskip = 15pt plus 4pt minus 2pt + \global\secheadingskip = 12pt plus 3pt minus 2pt + \global\subsecheadingskip = 9pt plus 2pt minus 2pt + % + \global\lispnarrowing = 0.3in + \setleading{12pt} + \advance\topskip by -1cm + \global\parskip 2pt plus 1pt + \global\hsize = 5in + \global\vsize=7.5in + \global\tolerance=700 + \global\hfuzz=1pt + \global\contentsrightmargin=0pt + \global\deftypemargin=0pt + \global\defbodyindent=.5cm + % + \global\pagewidth=\hsize + \global\pageheight=\vsize + % + \global\let\smalllisp=\smalllispx + \global\let\smallexample=\smalllispx + \global\def\Esmallexample{\Esmalllisp} +} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{ +\global\tolerance=700 +\global\hfuzz=1pt +\setleading{12pt} +\global\parskip 15pt plus 1pt + +\global\vsize= 53\baselineskip +\advance\vsize by \topskip +%\global\hsize= 5.85in % A4 wide 10pt +\global\hsize= 6.5in +\global\outerhsize=\hsize +\global\advance\outerhsize by 0.5in +\global\outervsize=\vsize +\global\advance\outervsize by 0.6in + +\global\pagewidth=\hsize +\global\pageheight=\vsize +} + +\bindingoffset=0pt +\normaloffset=\hoffset +\pagewidth=\hsize +\pageheight=\vsize + +% Allow control of the text dimensions. Parameters in order: textheight; +% textwidth; voffset; hoffset; binding offset; topskip. +% All require a dimension; +% header is additional; added length extends the bottom of the page. + +\def\changepagesizes#1#2#3#4#5#6{ + \global\vsize= #1 + \global\topskip= #6 + \advance\vsize by \topskip + \global\voffset= #3 + \global\hsize= #2 + \global\outerhsize=\hsize + \global\advance\outerhsize by 0.5in + \global\outervsize=\vsize + \global\advance\outervsize by 0.6in + \global\pagewidth=\hsize + \global\pageheight=\vsize + \global\normaloffset= #4 + \global\bindingoffset= #5} + +% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin +% 29mm, hence bottom margin 28mm, nominal side margin 3cm. +\def\afourlatex + {\global\tolerance=700 + \global\hfuzz=1pt + \setleading{12pt} + \global\parskip 15pt plus 1pt + \advance\baselineskip by 1.6pt + \changepagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm} + } + +% Use @afourwide to print on European A4 paper in wide format. +\def\afourwide{\afourpaper +\changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}} + +% Define macros to output various characters with catcode for normal text. +\catcode`\"=\other +\catcode`\~=\other +\catcode`\^=\other +\catcode`\_=\other +\catcode`\|=\other +\catcode`\<=\other +\catcode`\>=\other +\catcode`\+=\other +\def\normaldoublequote{"} +\def\normaltilde{~} +\def\normalcaret{^} +\def\normalunderscore{_} +\def\normalverticalbar{|} +\def\normalless{<} +\def\normalgreater{>} +\def\normalplus{+} + +% This macro is used to make a character print one way in ttfont +% where it can probably just be output, and another way in other fonts, +% where something hairier probably needs to be done. +% +% #1 is what to print if we are indeed using \tt; #2 is what to print +% otherwise. Since all the Computer Modern typewriter fonts have zero +% interword stretch (and shrink), and it is reasonable to expect all +% typewriter fonts to have this, we can check that font parameter. +% +\def\ifusingtt#1#2{\ifdim \fontdimen3\the\font=0pt #1\else #2\fi} + +% Turn off all special characters except @ +% (and those which the user can use as if they were ordinary). +% Most of these we simply print from the \tt font, but for some, we can +% use math or other variants that look better in normal text. + +\catcode`\"=\active +\def\activedoublequote{{\tt\char34}} +\let"=\activedoublequote +\catcode`\~=\active +\def~{{\tt\char126}} +\chardef\hat=`\^ +\catcode`\^=\active +\def^{{\tt \hat}} + +\catcode`\_=\active +\def_{\ifusingtt\normalunderscore\_} +% Subroutine for the previous macro. +\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} + +\catcode`\|=\active +\def|{{\tt\char124}} +\chardef \less=`\< +\catcode`\<=\active +\def<{{\tt \less}} +\chardef \gtr=`\> +\catcode`\>=\active +\def>{{\tt \gtr}} +\catcode`\+=\active +\def+{{\tt \char 43}} +%\catcode 27=\active +%\def^^[{$\diamondsuit$} + +% Set up an active definition for =, but don't enable it most of the time. +{\catcode`\==\active +\global\def={{\tt \char 61}}} + +\catcode`+=\active +\catcode`\_=\active + +% If a .fmt file is being used, characters that might appear in a file +% name cannot be active until we have parsed the command line. +% So turn them off again, and have \everyjob (or @setfilename) turn them on. +% \otherifyactive is called near the end of this file. +\def\otherifyactive{\catcode`+=\other \catcode`\_=\other} + +\catcode`\@=0 + +% \rawbackslashxx output one backslash character in current font +\global\chardef\rawbackslashxx=`\\ +%{\catcode`\\=\other +%@gdef@rawbackslashxx{\}} + +% \rawbackslash redefines \ as input to do \rawbackslashxx. +{\catcode`\\=\active +@gdef@rawbackslash{@let\=@rawbackslashxx }} + +% \normalbackslash outputs one backslash in fixed width font. +\def\normalbackslash{{\tt\rawbackslashxx}} + +% Say @foo, not \foo, in error messages. +\escapechar=`\@ + +% \catcode 17=0 % Define control-q +\catcode`\\=\active + +% Used sometimes to turn off (effectively) the active characters +% even after parsing them. +@def@turnoffactive{@let"=@normaldoublequote +@let\=@realbackslash +@let~=@normaltilde +@let^=@normalcaret +@let_=@normalunderscore +@let|=@normalverticalbar +@let<=@normalless +@let>=@normalgreater +@let+=@normalplus} + +@def@normalturnoffactive{@let"=@normaldoublequote +@let\=@normalbackslash +@let~=@normaltilde +@let^=@normalcaret +@let_=@normalunderscore +@let|=@normalverticalbar +@let<=@normalless +@let>=@normalgreater +@let+=@normalplus} + +% Make _ and + \other characters, temporarily. +% This is canceled by @fixbackslash. +@otherifyactive + +% If a .fmt file is being used, we don't want the `\input texinfo' to show up. +% That is what \eatinput is for; after that, the `\' should revert to printing +% a backslash. +% +@gdef@eatinput input texinfo{@fixbackslash} +@global@let\ = @eatinput + +% On the other hand, perhaps the file did not have a `\input texinfo'. Then +% the first `\{ in the file would cause an error. This macro tries to fix +% that, assuming it is called before the first `\' could plausibly occur. +% Also back turn on active characters that might appear in the input +% file name, in case not using a pre-dumped format. +% +@gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi + @catcode`+=@active @catcode`@_=@active} + +% These look ok in all fonts, so just make them not special. The @rm below +% makes sure that the current font starts out as the newly loaded cmr10 +@catcode`@$=@other @catcode`@%=@other @catcode`@&=@other @catcode`@#=@other + +@textfonts +@rm + +@c Local variables: +@c page-delimiter: "^\\\\message" +@c End: diff --git a/doc/wget.info b/doc/wget.info new file mode 100644 index 00000000..1796307c --- /dev/null +++ b/doc/wget.info @@ -0,0 +1,88 @@ +This is Info file wget.info, produced by Makeinfo version 1.67 from the +input file ./wget.texi. + +INFO-DIR-SECTION Net Utilities +INFO-DIR-SECTION World Wide Web +START-INFO-DIR-ENTRY +* Wget: (wget). The non-interactive network downloader. +END-INFO-DIR-ENTRY + + This file documents the the GNU Wget utility for downloading network +data. + + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + + Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + + Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided also +that the sections entitled "Copying" and "GNU General Public License" +are included exactly as in the original, and provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + + +Indirect: +wget.info-1: 955 +wget.info-2: 50818 +wget.info-3: 88475 + +Tag Table: +(Indirect) +Node: Top955 +Node: Overview1832 +Node: Invoking5006 +Node: URL Format5815 +Node: Option Syntax8147 +Node: Basic Startup Options9571 +Node: Logging and Input File Options10271 +Node: Download Options12665 +Node: Directory Options18450 +Node: HTTP Options20928 +Node: FTP Options24524 +Node: Recursive Retrieval Options25717 +Node: Recursive Accept/Reject Options27493 +Node: Recursive Retrieval29575 +Node: Following Links31871 +Node: Relative Links32903 +Node: Host Checking33417 +Node: Domain Acceptance35450 +Node: All Hosts37120 +Node: Types of Files37547 +Node: Directory-Based Limits39997 +Node: FTP Links42637 +Node: Time-Stamping43507 +Node: Time-Stamping Usage45144 +Node: HTTP Time-Stamping Internals46713 +Node: FTP Time-Stamping Internals47922 +Node: Startup File49130 +Node: Wgetrc Location50003 +Node: Wgetrc Syntax50818 +Node: Wgetrc Commands51533 +Node: Sample Wgetrc58229 +Node: Examples62521 +Node: Simple Usage63128 +Node: Advanced Usage65522 +Node: Guru Usage68273 +Node: Various69935 +Node: Proxies70459 +Node: Distribution73224 +Node: Mailing List73566 +Node: Reporting Bugs74265 +Node: Portability76050 +Node: Signals77425 +Node: Appendices78079 +Node: Robots78494 +Node: Introduction to RES79641 +Node: RES Format81534 +Node: User-Agent Field82638 +Node: Disallow Field83402 +Node: Norobots Examples84013 +Node: Security Considerations84967 +Node: Contributors85963 +Node: Copying88475 +Node: Concept Index107638 + +End Tag Table diff --git a/doc/wget.info-1 b/doc/wget.info-1 new file mode 100644 index 00000000..cf42b15e --- /dev/null +++ b/doc/wget.info-1 @@ -0,0 +1,1283 @@ +This is Info file wget.info, produced by Makeinfo version 1.67 from the +input file ./wget.texi. + +INFO-DIR-SECTION Net Utilities +INFO-DIR-SECTION World Wide Web +START-INFO-DIR-ENTRY +* Wget: (wget). The non-interactive network downloader. +END-INFO-DIR-ENTRY + + This file documents the the GNU Wget utility for downloading network +data. + + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + + Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + + Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided also +that the sections entitled "Copying" and "GNU General Public License" +are included exactly as in the original, and provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + + +File: wget.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir) + +Wget 1.5.3 +********** + + This manual documents version 1.5.3 of GNU Wget, the freely +available utility for network download. + + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + +* Menu: + +* Overview:: Features of Wget. +* Invoking:: Wget command-line arguments. +* Recursive Retrieval:: Description of recursive retrieval. +* Following Links:: The available methods of chasing links. +* Time-Stamping:: Mirroring according to time-stamps. +* Startup File:: Wget's initialization file. +* Examples:: Examples of usage. +* Various:: The stuff that doesn't fit anywhere else. +* Appendices:: Some useful references. +* Copying:: You may give out copies of Wget. +* Concept Index:: Topics covered by this manual. + + +File: wget.info, Node: Overview, Next: Invoking, Prev: Top, Up: Top + +Overview +******** + + GNU Wget is a freely available network utility to retrieve files from +the World Wide Web, using HTTP (Hyper Text Transfer Protocol) and FTP +(File Transfer Protocol), the two most widely used Internet protocols. +It has many useful features to make downloading easier, some of them +being: + + * Wget is non-interactive, meaning that it can work in the + background, while the user is not logged on. This allows you to + start a retrieval and disconnect from the system, letting Wget + finish the work. By contrast, most of the Web browsers require + constant user's presence, which can be a great hindrance when + transferring a lot of data. + + * Wget is capable of descending recursively through the structure of + HTML documents and FTP directory trees, making a local copy of the + directory hierarchy similar to the one on the remote server. This + feature can be used to mirror archives and home pages, or traverse + the web in search of data, like a WWW robot (*Note Robots::). In + that spirit, Wget understands the `norobots' convention. + + * File name wildcard matching and recursive mirroring of directories + are available when retrieving via FTP. Wget can read the + time-stamp information given by both HTTP and FTP servers, and + store it locally. Thus Wget can see if the remote file has + changed since last retrieval, and automatically retrieve the new + version if it has. This makes Wget suitable for mirroring of FTP + sites, as well as home pages. + + * Wget works exceedingly well on slow or unstable connections, + retrying the document until it is fully retrieved, or until a + user-specified retry count is surpassed. It will try to resume the + download from the point of interruption, using `REST' with FTP and + `Range' with HTTP servers that support them. + + * By default, Wget supports proxy servers, which can lighten the + network load, speed up retrieval and provide access behind + firewalls. However, if you are behind a firewall that requires + that you use a socks style gateway, you can get the socks library + and build wget with support for socks. Wget also supports the + passive FTP downloading as an option. + + * Builtin features offer mechanisms to tune which links you wish to + follow (*Note Following Links::). + + * The retrieval is conveniently traced with printing dots, each dot + representing a fixed amount of data received (1KB by default). + These representations can be customized to your preferences. + + * Most of the features are fully configurable, either through + command line options, or via the initialization file `.wgetrc' + (*Note Startup File::). Wget allows you to define "global" + startup files (`/usr/local/etc/wgetrc' by default) for site + settings. + + * Finally, GNU Wget is free software. This means that everyone may + use it, redistribute it and/or modify it under the terms of the + GNU General Public License, as published by the Free Software + Foundation (*Note Copying::). + + +File: wget.info, Node: Invoking, Next: Recursive Retrieval, Prev: Overview, Up: Top + +Invoking +******** + + By default, Wget is very simple to invoke. The basic syntax is: + + wget [OPTION]... [URL]... + + Wget will simply download all the URLs specified on the command +line. URL is a "Uniform Resource Locator", as defined below. + + However, you may wish to change some of the default parameters of +Wget. You can do it two ways: permanently, adding the appropriate +command to `.wgetrc' (*Note Startup File::), or specifying it on the +command line. + +* Menu: + +* URL Format:: +* Option Syntax:: +* Basic Startup Options:: +* Logging and Input File Options:: +* Download Options:: +* Directory Options:: +* HTTP Options:: +* FTP Options:: +* Recursive Retrieval Options:: +* Recursive Accept/Reject Options:: + + +File: wget.info, Node: URL Format, Next: Option Syntax, Prev: Invoking, Up: Invoking + +URL Format +========== + + "URL" is an acronym for Uniform Resource Locator. A uniform +resource locator is a compact string representation for a resource +available via the Internet. Wget recognizes the URL syntax as per +RFC1738. This is the most widely used form (square brackets denote +optional parts): + + http://host[:port]/directory/file + ftp://host[:port]/directory/file + + You can also encode your username and password within a URL: + + ftp://user:password@host/path + http://user:password@host/path + + Either USER or PASSWORD, or both, may be left out. If you leave out +either the HTTP username or password, no authentication will be sent. +If you leave out the FTP username, `anonymous' will be used. If you +leave out the FTP password, your email address will be supplied as a +default password.(1) + + You can encode unsafe characters in a URL as `%xy', `xy' being the +hexadecimal representation of the character's ASCII value. Some common +unsafe characters include `%' (quoted as `%25'), `:' (quoted as `%3A'), +and `@' (quoted as `%40'). Refer to RFC1738 for a comprehensive list +of unsafe characters. + + Wget also supports the `type' feature for FTP URLs. By default, FTP +documents are retrieved in the binary mode (type `i'), which means that +they are downloaded unchanged. Another useful mode is the `a' +("ASCII") mode, which converts the line delimiters between the +different operating systems, and is thus useful for text files. Here +is an example: + + ftp://host/directory/file;type=a + + Two alternative variants of URL specification are also supported, +because of historical (hysterical?) reasons and their wide-spreadedness. + + FTP-only syntax (supported by `NcFTP'): + host:/dir/file + + HTTP-only syntax (introduced by `Netscape'): + host[:port]/dir/file + + These two alternative forms are deprecated, and may cease being +supported in the future. + + If you do not understand the difference between these notations, or +do not know which one to use, just use the plain ordinary format you use +with your favorite browser, like `Lynx' or `Netscape'. + + ---------- Footnotes ---------- + + (1) If you have a `.netrc' file in your home directory, password +will also be searched for there. + + +File: wget.info, Node: Option Syntax, Next: Basic Startup Options, Prev: URL Format, Up: Invoking + +Option Syntax +============= + + Since Wget uses GNU getopts to process its arguments, every option +has a short form and a long form. Long options are more convenient to +remember, but take time to type. You may freely mix different option +styles, or specify options after the command-line arguments. Thus you +may write: + + wget -r --tries=10 http://fly.cc.fer.hr/ -o log + + The space between the option accepting an argument and the argument +may be omitted. Instead `-o log' you can write `-olog'. + + You may put several options that do not require arguments together, +like: + + wget -drc URL + + This is a complete equivalent of: + + wget -d -r -c URL + + Since the options can be specified after the arguments, you may +terminate them with `--'. So the following will try to download URL +`-x', reporting failure to `log': + + wget -o log -- -x + + The options that accept comma-separated lists all respect the +convention that specifying an empty list clears its value. This can be +useful to clear the `.wgetrc' settings. For instance, if your `.wgetrc' +sets `exclude_directories' to `/cgi-bin', the following example will +first reset it, and then set it to exclude `/~nobody' and `/~somebody'. +You can also clear the lists in `.wgetrc' (*Note Wgetrc Syntax::). + + wget -X '' -X /~nobody,/~somebody + + +File: wget.info, Node: Basic Startup Options, Next: Logging and Input File Options, Prev: Option Syntax, Up: Invoking + +Basic Startup Options +===================== + +`-V' +`--version' + Display the version of Wget. + +`-h' +`--help' + Print a help message describing all of Wget's command-line options. + +`-b' +`--background' + Go to background immediately after startup. If no output file is + specified via the `-o', output is redirected to `wget-log'. + +`-e COMMAND' +`--execute COMMAND' + Execute COMMAND as if it were a part of `.wgetrc' (*Note Startup + File::). A command thus invoked will be executed *after* the + commands in `.wgetrc', thus taking precedence over them. + + +File: wget.info, Node: Logging and Input File Options, Next: Download Options, Prev: Basic Startup Options, Up: Invoking + +Logging and Input File Options +============================== + +`-o LOGFILE' +`--output-file=LOGFILE' + Log all messages to LOGFILE. The messages are normally reported + to standard error. + +`-a LOGFILE' +`--append-output=LOGFILE' + Append to LOGFILE. This is the same as `-o', only it appends to + LOGFILE instead of overwriting the old log file. If LOGFILE does + not exist, a new file is created. + +`-d' +`--debug' + Turn on debug output, meaning various information important to the + developers of Wget if it does not work properly. Your system + administrator may have chosen to compile Wget without debug + support, in which case `-d' will not work. Please note that + compiling with debug support is always safe--Wget compiled with + the debug support will *not* print any debug info unless requested + with `-d'. *Note Reporting Bugs:: for more information on how to + use `-d' for sending bug reports. + +`-q' +`--quiet' + Turn off Wget's output. + +`-v' +`--verbose' + Turn on verbose output, with all the available data. The default + output is verbose. + +`-nv' +`--non-verbose' + Non-verbose output--turn off verbose without being completely quiet + (use `-q' for that), which means that error messages and basic + information still get printed. + +`-i FILE' +`--input-file=FILE' + Read URLs from FILE, in which case no URLs need to be on the + command line. If there are URLs both on the command line and in + an input file, those on the command lines will be the first ones to + be retrieved. The FILE need not be an HTML document (but no harm + if it is)--it is enough if the URLs are just listed sequentially. + + However, if you specify `--force-html', the document will be + regarded as `html'. In that case you may have problems with + relative links, which you can solve either by adding `' to the documents or by specifying `--base=URL' on the + command line. + +`-F' +`--force-html' + When input is read from a file, force it to be treated as an HTML + file. This enables you to retrieve relative links from existing + HTML files on your local disk, by adding `' to + HTML, or using the `--base' command-line option. + + +File: wget.info, Node: Download Options, Next: Directory Options, Prev: Logging and Input File Options, Up: Invoking + +Download Options +================ + +`-t NUMBER' +`--tries=NUMBER' + Set number of retries to NUMBER. Specify 0 or `inf' for infinite + retrying. + +`-O FILE' +`--output-document=FILE' + The documents will not be written to the appropriate files, but + all will be concatenated together and written to FILE. If FILE + already exists, it will be overwritten. If the FILE is `-', the + documents will be written to standard output. Including this + option automatically sets the number of tries to 1. + +`-nc' +`--no-clobber' + Do not clobber existing files when saving to directory hierarchy + within recursive retrieval of several files. This option is + *extremely* useful when you wish to continue where you left off + with retrieval of many files. If the files have the `.html' or + (yuck) `.htm' suffix, they will be loaded from the local disk, and + parsed as if they have been retrieved from the Web. + +`-c' +`--continue' + Continue getting an existing file. This is useful when you want to + finish up the download started by another program, or a previous + instance of Wget. Thus you can write: + + wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z + + If there is a file name `ls-lR.Z' in the current directory, Wget + will assume that it is the first portion of the remote file, and + will require the server to continue the retrieval from an offset + equal to the length of the local file. + + Note that you need not specify this option if all you want is Wget + to continue retrieving where it left off when the connection is + lost--Wget does this by default. You need this option only when + you want to continue retrieval of a file already halfway + retrieved, saved by another FTP client, or left by Wget being + killed. + + Without `-c', the previous example would just begin to download the + remote file to `ls-lR.Z.1'. The `-c' option is also applicable + for HTTP servers that support the `Range' header. + +`--dot-style=STYLE' + Set the retrieval style to STYLE. Wget traces the retrieval of + each document by printing dots on the screen, each dot + representing a fixed amount of retrieved data. Any number of dots + may be separated in a "cluster", to make counting easier. This + option allows you to choose one of the pre-defined styles, + determining the number of bytes represented by a dot, the number + of dots in a cluster, and the number of dots on the line. + + With the `default' style each dot represents 1K, there are ten dots + in a cluster and 50 dots in a line. The `binary' style has a more + "computer"-like orientation--8K dots, 16-dots clusters and 48 dots + per line (which makes for 384K lines). The `mega' style is + suitable for downloading very large files--each dot represents 64K + retrieved, there are eight dots in a cluster, and 48 dots on each + line (so each line contains 3M). The `micro' style is exactly the + reverse; it is suitable for downloading small files, with 128-byte + dots, 8 dots per cluster, and 48 dots (6K) per line. + +`-N' +`--timestamping' + Turn on time-stamping. *Note Time-Stamping:: for details. + +`-S' +`--server-response' + Print the headers sent by HTTP servers and responses sent by FTP + servers. + +`--spider' + When invoked with this option, Wget will behave as a Web "spider", + which means that it will not download the pages, just check that + they are there. You can use it to check your bookmarks, e.g. with: + + wget --spider --force-html -i bookmarks.html + + This feature needs much more work for Wget to get close to the + functionality of real WWW spiders. + +`-T seconds' +`--timeout=SECONDS' + Set the read timeout to SECONDS seconds. Whenever a network read + is issued, the file descriptor is checked for a timeout, which + could otherwise leave a pending connection (uninterrupted read). + The default timeout is 900 seconds (fifteen minutes). Setting + timeout to 0 will disable checking for timeouts. + + Please do not lower the default timeout value with this option + unless you know what you are doing. + +`-w SECONDS' +`--wait=SECONDS' + Wait the specified number of seconds between the retrievals. Use + of this option is recommended, as it lightens the server load by + making the requests less frequent. Instead of in seconds, the + time can be specified in minutes using the `m' suffix, in hours + using `h' suffix, or in days using `d' suffix. + + Specifying a large value for this option is useful if the network + or the destination host is down, so that Wget can wait long enough + to reasonably expect the network error to be fixed before the + retry. + +`-Y on/off' +`--proxy=on/off' + Turn proxy support on or off. The proxy is on by default if the + appropriate environmental variable is defined. + +`-Q QUOTA' +`--quota=QUOTA' + Specify download quota for automatic retrievals. The value can be + specified in bytes (default), kilobytes (with `k' suffix), or + megabytes (with `m' suffix). + + Note that quota will never affect downloading a single file. So + if you specify `wget -Q10k ftp://wuarchive.wustl.edu/ls-lR.gz', + all of the `ls-lR.gz' will be downloaded. The same goes even when + several URLs are specified on the command-line. However, quota is + respected when retrieving either recursively, or from an input + file. Thus you may safely type `wget -Q2m -i sites'--download + will be aborted when the quota is exceeded. + + Setting quota to 0 or to `inf' unlimits the download quota. + + +File: wget.info, Node: Directory Options, Next: HTTP Options, Prev: Download Options, Up: Invoking + +Directory Options +================= + +`-nd' +`--no-directories' + Do not create a hierarchy of directories when retrieving + recursively. With this option turned on, all files will get saved + to the current directory, without clobbering (if a name shows up + more than once, the filenames will get extensions `.n'). + +`-x' +`--force-directories' + The opposite of `-nd'--create a hierarchy of directories, even if + one would not have been created otherwise. E.g. `wget -x + http://fly.cc.fer.hr/robots.txt' will save the downloaded file to + `fly.cc.fer.hr/robots.txt'. + +`-nH' +`--no-host-directories' + Disable generation of host-prefixed directories. By default, + invoking Wget with `-r http://fly.cc.fer.hr/' will create a + structure of directories beginning with `fly.cc.fer.hr/'. This + option disables such behavior. + +`--cut-dirs=NUMBER' + Ignore NUMBER directory components. This is useful for getting a + fine-grained control over the directory where recursive retrieval + will be saved. + + Take, for example, the directory at + `ftp://ftp.xemacs.org/pub/xemacs/'. If you retrieve it with `-r', + it will be saved locally under `ftp.xemacs.org/pub/xemacs/'. + While the `-nH' option can remove the `ftp.xemacs.org/' part, you + are still stuck with `pub/xemacs'. This is where `--cut-dirs' + comes in handy; it makes Wget not "see" NUMBER remote directory + components. Here are several examples of how `--cut-dirs' option + works. + + No options -> ftp.xemacs.org/pub/xemacs/ + -nH -> pub/xemacs/ + -nH --cut-dirs=1 -> xemacs/ + -nH --cut-dirs=2 -> . + + --cut-dirs=1 -> ftp.xemacs.org/xemacs/ + ... + + If you just want to get rid of the directory structure, this + option is similar to a combination of `-nd' and `-P'. However, + unlike `-nd', `--cut-dirs' does not lose with subdirectories--for + instance, with `-nH --cut-dirs=1', a `beta/' subdirectory will be + placed to `xemacs/beta', as one would expect. + +`-P PREFIX' +`--directory-prefix=PREFIX' + Set directory prefix to PREFIX. The "directory prefix" is the + directory where all other files and subdirectories will be saved + to, i.e. the top of the retrieval tree. The default is `.' (the + current directory). + + +File: wget.info, Node: HTTP Options, Next: FTP Options, Prev: Directory Options, Up: Invoking + +HTTP Options +============ + +`--http-user=USER' +`--http-passwd=PASSWORD' + Specify the username USER and password PASSWORD on an HTTP server. + According to the type of the challenge, Wget will encode them + using either the `basic' (insecure) or the `digest' authentication + scheme. + + Another way to specify username and password is in the URL itself + (*Note URL Format::). For more information about security issues + with Wget, *Note Security Considerations::. + +`-C on/off' +`--cache=on/off' + When set to off, disable server-side cache. In this case, Wget + will send the remote server an appropriate directive (`Pragma: + no-cache') to get the file from the remote service, rather than + returning the cached version. This is especially useful for + retrieving and flushing out-of-date documents on proxy servers. + + Caching is allowed by default. + +`--ignore-length' + Unfortunately, some HTTP servers (CGI programs, to be more + precise) send out bogus `Content-Length' headers, which makes Wget + go wild, as it thinks not all the document was retrieved. You can + spot this syndrome if Wget retries getting the same document again + and again, each time claiming that the (otherwise normal) + connection has closed on the very same byte. + + With this option, Wget will ignore the `Content-Length' header--as + if it never existed. + +`--header=ADDITIONAL-HEADER' + Define an ADDITIONAL-HEADER to be passed to the HTTP servers. + Headers must contain a `:' preceded by one or more non-blank + characters, and must not contain newlines. + + You may define more than one additional header by specifying + `--header' more than once. + + wget --header='Accept-Charset: iso-8859-2' \ + --header='Accept-Language: hr' \ + http://fly.cc.fer.hr/ + + Specification of an empty string as the header value will clear all + previous user-defined headers. + +`--proxy-user=USER' +`--proxy-passwd=PASSWORD' + Specify the username USER and password PASSWORD for authentication + on a proxy server. Wget will encode them using the `basic' + authentication scheme. + +`-s' +`--save-headers' + Save the headers sent by the HTTP server to the file, preceding the + actual contents, with an empty line as the separator. + +`-U AGENT-STRING' +`--user-agent=AGENT-STRING' + Identify as AGENT-STRING to the HTTP server. + + The HTTP protocol allows the clients to identify themselves using a + `User-Agent' header field. This enables distinguishing the WWW + software, usually for statistical purposes or for tracing of + protocol violations. Wget normally identifies as `Wget/VERSION', + VERSION being the current version number of Wget. + + However, some sites have been known to impose the policy of + tailoring the output according to the `User-Agent'-supplied + information. While conceptually this is not such a bad idea, it + has been abused by servers denying information to clients other + than `Mozilla' or Microsoft `Internet Explorer'. This option + allows you to change the `User-Agent' line issued by Wget. Use of + this option is discouraged, unless you really know what you are + doing. + + *NOTE* that Netscape Communications Corp. has claimed that false + transmissions of `Mozilla' as the `User-Agent' are a copyright + infringement, which will be prosecuted. *DO NOT* misrepresent + Wget as Mozilla. + + +File: wget.info, Node: FTP Options, Next: Recursive Retrieval Options, Prev: HTTP Options, Up: Invoking + +FTP Options +=========== + +`--retr-symlinks' + Retrieve symbolic links on FTP sites as if they were plain files, + i.e. don't just create links locally. + +`-g on/off' +`--glob=on/off' + Turn FTP globbing on or off. Globbing means you may use the + shell-like special characters ("wildcards"), like `*', `?', `[' + and `]' to retrieve more than one file from the same directory at + once, like: + + wget ftp://gnjilux.cc.fer.hr/*.msg + + By default, globbing will be turned on if the URL contains a + globbing character. This option may be used to turn globbing on + or off permanently. + + You may have to quote the URL to protect it from being expanded by + your shell. Globbing makes Wget look for a directory listing, + which is system-specific. This is why it currently works only + with Unix FTP servers (and the ones emulating Unix `ls' output). + +`--passive-ftp' + Use the "passive" FTP retrieval scheme, in which the client + initiates the data connection. This is sometimes required for FTP + to work behind firewalls. + + +File: wget.info, Node: Recursive Retrieval Options, Next: Recursive Accept/Reject Options, Prev: FTP Options, Up: Invoking + +Recursive Retrieval Options +=========================== + +`-r' +`--recursive' + Turn on recursive retrieving. *Note Recursive Retrieval:: for more + details. + +`-l DEPTH' +`--level=DEPTH' + Specify recursion maximum depth level DEPTH (*Note Recursive + Retrieval::). The default maximum depth is 5. + +`--delete-after' + This option tells Wget to delete every single file it downloads, + *after* having done so. It is useful for pre-fetching popular + pages through proxy, e.g.: + + wget -r -nd --delete-after http://whatever.com/~popular/page/ + + The `-r' option is to retrieve recursively, and `-nd' not to + create directories. + +`-k' +`--convert-links' + Convert the non-relative links to relative ones locally. Only the + references to the documents actually downloaded will be converted; + the rest will be left unchanged. + + Note that only at the end of the download can Wget know which + links have been downloaded. Because of that, much of the work + done by `-k' will be performed at the end of the downloads. + +`-m' +`--mirror' + Turn on options suitable for mirroring. This option turns on + recursion and time-stamping, sets infinite recursion depth and + keeps FTP directory listings. It is currently equivalent to `-r + -N -l inf -nr'. + +`-nr' +`--dont-remove-listing' + Don't remove the temporary `.listing' files generated by FTP + retrievals. Normally, these files contain the raw directory + listings received from FTP servers. Not removing them can be + useful to access the full remote file list when running a mirror, + or for debugging purposes. + + +File: wget.info, Node: Recursive Accept/Reject Options, Prev: Recursive Retrieval Options, Up: Invoking + +Recursive Accept/Reject Options +=============================== + +`-A ACCLIST --accept ACCLIST' +`-R REJLIST --reject REJLIST' + Specify comma-separated lists of file name suffixes or patterns to + accept or reject (*Note Types of Files:: for more details). + +`-D DOMAIN-LIST' +`--domains=DOMAIN-LIST' + Set domains to be accepted and DNS looked-up, where DOMAIN-LIST is + a comma-separated list. Note that it does *not* turn on `-H'. + This option speeds things up, even if only one host is spanned + (*Note Domain Acceptance::). + +`--exclude-domains DOMAIN-LIST' + Exclude the domains given in a comma-separated DOMAIN-LIST from + DNS-lookup (*Note Domain Acceptance::). + +`-L' +`--relative' + Follow relative links only. Useful for retrieving a specific home + page without any distractions, not even those from the same hosts + (*Note Relative Links::). + +`--follow-ftp' + Follow FTP links from HTML documents. Without this option, Wget + will ignore all the FTP links. + +`-H' +`--span-hosts' + Enable spanning across hosts when doing recursive retrieving + (*Note All Hosts::). + +`-I LIST' +`--include-directories=LIST' + Specify a comma-separated list of directories you wish to follow + when downloading (*Note Directory-Based Limits:: for more + details.) Elements of LIST may contain wildcards. + +`-X LIST' +`--exclude-directories=LIST' + Specify a comma-separated list of directories you wish to exclude + from download (*Note Directory-Based Limits:: for more details.) + Elements of LIST may contain wildcards. + +`-nh' +`--no-host-lookup' + Disable the time-consuming DNS lookup of almost all hosts (*Note + Host Checking::). + +`-np' +`--no-parent' + Do not ever ascend to the parent directory when retrieving + recursively. This is a useful option, since it guarantees that + only the files *below* a certain hierarchy will be downloaded. + *Note Directory-Based Limits:: for more details. + + +File: wget.info, Node: Recursive Retrieval, Next: Following Links, Prev: Invoking, Up: Top + +Recursive Retrieval +******************* + + GNU Wget is capable of traversing parts of the Web (or a single HTTP +or FTP server), depth-first following links and directory structure. +This is called "recursive" retrieving, or "recursion". + + With HTTP URLs, Wget retrieves and parses the HTML from the given +URL, documents, retrieving the files the HTML document was referring +to, through markups like `href', or `src'. If the freshly downloaded +file is also of type `text/html', it will be parsed and followed +further. + + The maximum "depth" to which the retrieval may descend is specified +with the `-l' option (the default maximum depth is five layers). *Note +Recursive Retrieval::. + + When retrieving an FTP URL recursively, Wget will retrieve all the +data from the given directory tree (including the subdirectories up to +the specified depth) on the remote server, creating its mirror image +locally. FTP retrieval is also limited by the `depth' parameter. + + By default, Wget will create a local directory tree, corresponding to +the one found on the remote server. + + Recursive retrieving can find a number of applications, the most +important of which is mirroring. It is also useful for WWW +presentations, and any other opportunities where slow network +connections should be bypassed by storing the files locally. + + You should be warned that invoking recursion may cause grave +overloading on your system, because of the fast exchange of data +through the network; all of this may hamper other users' work. The +same stands for the foreign server you are mirroring--the more requests +it gets in a rows, the greater is its load. + + Careless retrieving can also fill your file system unctrollably, +which can grind the machine to a halt. + + The load can be minimized by lowering the maximum recursion level +(`-l') and/or by lowering the number of retries (`-t'). You may also +consider using the `-w' option to slow down your requests to the remote +servers, as well as the numerous options to narrow the number of +followed links (*Note Following Links::). + + Recursive retrieval is a good thing when used properly. Please take +all precautions not to wreak havoc through carelessness. + + +File: wget.info, Node: Following Links, Next: Time-Stamping, Prev: Recursive Retrieval, Up: Top + +Following Links +*************** + + When retrieving recursively, one does not wish to retrieve the loads +of unnecessary data. Most of the time the users bear in mind exactly +what they want to download, and want Wget to follow only specific links. + + For example, if you wish to download the music archive from +`fly.cc.fer.hr', you will not want to download all the home pages that +happen to be referenced by an obscure part of the archive. + + Wget possesses several mechanisms that allows you to fine-tune which +links it will follow. + +* Menu: + +* Relative Links:: Follow relative links only. +* Host Checking:: Follow links on the same host. +* Domain Acceptance:: Check on a list of domains. +* All Hosts:: No host restrictions. +* Types of Files:: Getting only certain files. +* Directory-Based Limits:: Getting only certain directories. +* FTP Links:: Following FTP links. + + +File: wget.info, Node: Relative Links, Next: Host Checking, Prev: Following Links, Up: Following Links + +Relative Links +============== + + When only relative links are followed (option `-L'), recursive +retrieving will never span hosts. No time-expensive DNS-lookups will +be performed, and the process will be very fast, with the minimum +strain of the network. This will suit your needs often, especially when +mirroring the output of various `x2html' converters, since they +generally output relative links. + + +File: wget.info, Node: Host Checking, Next: Domain Acceptance, Prev: Relative Links, Up: Following Links + +Host Checking +============= + + The drawback of following the relative links solely is that humans +often tend to mix them with absolute links to the very same host, and +the very same page. In this mode (which is the default mode for +following links) all URLs the that refer to the same host will be +retrieved. + + The problem with this option are the aliases of the hosts and +domains. Thus there is no way for Wget to know that `regoc.srce.hr' and +`www.srce.hr' are the same host, or that `fly.cc.fer.hr' is the same as +`fly.cc.etf.hr'. Whenever an absolute link is encountered, the host is +DNS-looked-up with `gethostbyname' to check whether we are maybe +dealing with the same hosts. Although the results of `gethostbyname' +are cached, it is still a great slowdown, e.g. when dealing with large +indices of home pages on different hosts (because each of the hosts +must be and DNS-resolved to see whether it just *might* an alias of the +starting host). + + To avoid the overhead you may use `-nh', which will turn off +DNS-resolving and make Wget compare hosts literally. This will make +things run much faster, but also much less reliable (e.g. `www.srce.hr' +and `regoc.srce.hr' will be flagged as different hosts). + + Note that modern HTTP servers allows one IP address to host several +"virtual servers", each having its own directory hieratchy. Such +"servers" are distinguished by their hostnames (all of which point to +the same IP address); for this to work, a client must send a `Host' +header, which is what Wget does. However, in that case Wget *must not* +try to divine a host's "real" address, nor try to use the same hostname +for each access, i.e. `-nh' must be turned on. + + In other words, the `-nh' option must be used to enabling the +retrieval from virtual servers distinguished by their hostnames. As the +number of such server setups grow, the behavior of `-nh' may become the +default in the future. + + +File: wget.info, Node: Domain Acceptance, Next: All Hosts, Prev: Host Checking, Up: Following Links + +Domain Acceptance +================= + + With the `-D' option you may specify the domains that will be +followed. The hosts the domain of which is not in this list will not be +DNS-resolved. Thus you can specify `-Dmit.edu' just to make sure that +*nothing outside of MIT gets looked up*. This is very important and +useful. It also means that `-D' does *not* imply `-H' (span all +hosts), which must be specified explicitly. Feel free to use this +options since it will speed things up, with almost all the reliability +of checking for all hosts. Thus you could invoke + + wget -r -D.hr http://fly.cc.fer.hr/ + + to make sure that only the hosts in `.hr' domain get DNS-looked-up +for being equal to `fly.cc.fer.hr'. So `fly.cc.etf.hr' will be checked +(only once!) and found equal, but `www.gnu.ai.mit.edu' will not even be +checked. + + Of course, domain acceptance can be used to limit the retrieval to +particular domains with spanning of hosts in them, but then you must +specify `-H' explicitly. E.g.: + + wget -r -H -Dmit.edu,stanford.edu http://www.mit.edu/ + + will start with `http://www.mit.edu/', following links across MIT +and Stanford. + + If there are domains you want to exclude specifically, you can do it +with `--exclude-domains', which accepts the same type of arguments of +`-D', but will *exclude* all the listed domains. For example, if you +want to download all the hosts from `foo.edu' domain, with the +exception of `sunsite.foo.edu', you can do it like this: + + wget -rH -Dfoo.edu --exclude-domains sunsite.foo.edu http://www.foo.edu/ + + +File: wget.info, Node: All Hosts, Next: Types of Files, Prev: Domain Acceptance, Up: Following Links + +All Hosts +========= + + When `-H' is specified without `-D', all hosts are freely spanned. +There are no restrictions whatsoever as to what part of the net Wget +will go to fetch documents, other than maximum retrieval depth. If a +page references `www.yahoo.com', so be it. Such an option is rarely +useful for itself. + + +File: wget.info, Node: Types of Files, Next: Directory-Based Limits, Prev: All Hosts, Up: Following Links + +Types of Files +============== + + When downloading material from the web, you will often want to +restrict the retrieval to only certain file types. For example, if you +are interested in downloading GIFS, you will not be overjoyed to get +loads of Postscript documents, and vice versa. + + Wget offers two options to deal with this problem. Each option +description lists a short name, a long name, and the equivalent command +in `.wgetrc'. + +`-A ACCLIST' +`--accept ACCLIST' +`accept = ACCLIST' + The argument to `--accept' option is a list of file suffixes or + patterns that Wget will download during recursive retrieval. A + suffix is the ending part of a file, and consists of "normal" + letters, e.g. `gif' or `.jpg'. A matching pattern contains + shell-like wildcards, e.g. `books*' or `zelazny*196[0-9]*'. + + So, specifying `wget -A gif,jpg' will make Wget download only the + files ending with `gif' or `jpg', i.e. GIFs and JPEGs. On the + other hand, `wget -A "zelazny*196[0-9]*"' will download only files + beginning with `zelazny' and containing numbers from 1960 to 1969 + anywhere within. Look up the manual of your shell for a + description of how pattern matching works. + + Of course, any number of suffixes and patterns can be combined + into a comma-separated list, and given as an argument to `-A'. + +`-R REJLIST' +`--reject REJLIST' +`reject = REJLIST' + The `--reject' option works the same way as `--accept', only its + logic is the reverse; Wget will download all files *except* the + ones matching the suffixes (or patterns) in the list. + + So, if you want to download a whole page except for the cumbersome + MPEGs and .AU files, you can use `wget -R mpg,mpeg,au'. + Analogously, to download all files except the ones beginning with + `bjork', use `wget -R "bjork*"'. The quotes are to prevent + expansion by the shell. + + The `-A' and `-R' options may be combined to achieve even better +fine-tuning of which files to retrieve. E.g. `wget -A "*zelazny*" -R +.ps' will download all the files having `zelazny' as a part of their +name, but *not* the postscript files. + + Note that these two options do not affect the downloading of HTML +files; Wget must load all the HTMLs to know where to go at +all--recursive retrieval would make no sense otherwise. + + +File: wget.info, Node: Directory-Based Limits, Next: FTP Links, Prev: Types of Files, Up: Following Links + +Directory-Based Limits +====================== + + Regardless of other link-following facilities, it is often useful to +place the restriction of what files to retrieve based on the directories +those files are placed in. There can be many reasons for this--the +home pages may be organized in a reasonable directory structure; or some +directories may contain useless information, e.g. `/cgi-bin' or `/dev' +directories. + + Wget offers three different options to deal with this requirement. +Each option description lists a short name, a long name, and the +equivalent command in `.wgetrc'. + +`-I LIST' +`--include LIST' +`include_directories = LIST' + `-I' option accepts a comma-separated list of directories included + in the retrieval. Any other directories will simply be ignored. + The directories are absolute paths. + + So, if you wish to download from `http://host/people/bozo/' + following only links to bozo's colleagues in the `/people' + directory and the bogus scripts in `/cgi-bin', you can specify: + + wget -I /people,/cgi-bin http://host/people/bozo/ + +`-X LIST' +`--exclude LIST' +`exclude_directories = LIST' + `-X' option is exactly the reverse of `-I'--this is a list of + directories *excluded* from the download. E.g. if you do not want + Wget to download things from `/cgi-bin' directory, specify `-X + /cgi-bin' on the command line. + + The same as with `-A'/`-R', these two options can be combined to + get a better fine-tuning of downloading subdirectories. E.g. if + you want to load all the files from `/pub' hierarchy except for + `/pub/worthless', specify `-I/pub -X/pub/worthless'. + +`-np' +`--no-parent' +`no_parent = on' + The simplest, and often very useful way of limiting directories is + disallowing retrieval of the links that refer to the hierarchy + "upper" than the beginning directory, i.e. disallowing ascent to + the parent directory/directories. + + The `--no-parent' option (short `-np') is useful in this case. + Using it guarantees that you will never leave the existing + hierarchy. Supposing you issue Wget with: + + wget -r --no-parent http://somehost/~luzer/my-archive/ + + You may rest assured that none of the references to + `/~his-girls-homepage/' or `/~luzer/all-my-mpegs/' will be + followed. Only the archive you are interested in will be + downloaded. Essentially, `--no-parent' is similar to + `-I/~luzer/my-archive', only it handles redirections in a more + intelligent fashion. + + +File: wget.info, Node: FTP Links, Prev: Directory-Based Limits, Up: Following Links + +Following FTP Links +=================== + + The rules for FTP are somewhat specific, as it is necessary for them +to be. FTP links in HTML documents are often included for purposes of +reference, and it is often inconvenient to download them by default. + + To have FTP links followed from HTML documents, you need to specify +the `--follow-ftp' option. Having done that, FTP links will span hosts +regardless of `-H' setting. This is logical, as FTP links rarely point +to the same host where the HTTP server resides. For similar reasons, +the `-L' options has no effect on such downloads. On the other hand, +domain acceptance (`-D') and suffix rules (`-A' and `-R') apply +normally. + + Also note that followed links to FTP directories will not be +retrieved recursively further. + + +File: wget.info, Node: Time-Stamping, Next: Startup File, Prev: Following Links, Up: Top + +Time-Stamping +************* + + One of the most important aspects of mirroring information from the +Internet is updating your archives. + + Downloading the whole archive again and again, just to replace a few +changed files is expensive, both in terms of wasted bandwidth and money, +and the time to do the update. This is why all the mirroring tools +offer the option of incremental updating. + + Such an updating mechanism means that the remote server is scanned in +search of "new" files. Only those new files will be downloaded in the +place of the old ones. + + A file is considered new if one of these two conditions are met: + + 1. A file of that name does not already exist locally. + + 2. A file of that name does exist, but the remote file was modified + more recently than the local file. + + To implement this, the program needs to be aware of the time of last +modification of both remote and local files. Such information are +called the "time-stamps". + + The time-stamping in GNU Wget is turned on using `--timestamping' +(`-N') option, or through `timestamping = on' directive in `.wgetrc'. +With this option, for each file it intends to download, Wget will check +whether a local file of the same name exists. If it does, and the +remote file is older, Wget will not download it. + + If the local file does not exist, or the sizes of the files do not +match, Wget will download the remote file no matter what the time-stamps +say. + +* Menu: + +* Time-Stamping Usage:: +* HTTP Time-Stamping Internals:: +* FTP Time-Stamping Internals:: + + +File: wget.info, Node: Time-Stamping Usage, Next: HTTP Time-Stamping Internals, Prev: Time-Stamping, Up: Time-Stamping + +Time-Stamping Usage +=================== + + The usage of time-stamping is simple. Say you would like to +download a file so that it keeps its date of modification. + + wget -S http://www.gnu.ai.mit.edu/ + + A simple `ls -l' shows that the time stamp on the local file equals +the state of the `Last-Modified' header, as returned by the server. As +you can see, the time-stamping info is preserved locally, even without +`-N'. + + Several days later, you would like Wget to check if the remote file +has changed, and download it if it has. + + wget -N http://www.gnu.ai.mit.edu/ + + Wget will ask the server for the last-modified date. If the local +file is newer, the remote file will not be re-fetched. However, if the +remote file is more recent, Wget will proceed fetching it normally. + + The same goes for FTP. For example: + + wget ftp://ftp.ifi.uio.no/pub/emacs/gnus/* + + `ls' will show that the timestamps are set according to the state on +the remote server. Reissuing the command with `-N' will make Wget +re-fetch *only* the files that have been modified. + + In both HTTP and FTP retrieval Wget will time-stamp the local file +correctly (with or without `-N') if it gets the stamps, i.e. gets the +directory listing for FTP or the `Last-Modified' header for HTTP. + + If you wished to mirror the GNU archive every week, you would use the +following command every week: + + wget --timestamping -r ftp://prep.ai.mit.edu/pub/gnu/ + + +File: wget.info, Node: HTTP Time-Stamping Internals, Next: FTP Time-Stamping Internals, Prev: Time-Stamping Usage, Up: Time-Stamping + +HTTP Time-Stamping Internals +============================ + + Time-stamping in HTTP is implemented by checking of the +`Last-Modified' header. If you wish to retrieve the file `foo.html' +through HTTP, Wget will check whether `foo.html' exists locally. If it +doesn't, `foo.html' will be retrieved unconditionally. + + If the file does exist locally, Wget will first check its local +time-stamp (similar to the way `ls -l' checks it), and then send a +`HEAD' request to the remote server, demanding the information on the +remote file. + + The `Last-Modified' header is examined to find which file was +modified more recently (which makes it "newer"). If the remote file is +newer, it will be downloaded; if it is older, Wget will give up.(1) + + Arguably, HTTP time-stamping should be implemented using the +`If-Modified-Since' request. + + ---------- Footnotes ---------- + + (1) As an additional check, Wget will look at the `Content-Length' +header, and compare the sizes; if they are not the same, the remote +file will be downloaded no matter what the time-stamp says. + + +File: wget.info, Node: FTP Time-Stamping Internals, Prev: HTTP Time-Stamping Internals, Up: Time-Stamping + +FTP Time-Stamping Internals +=========================== + + In theory, FTP time-stamping works much the same as HTTP, only FTP +has no headers--time-stamps must be received from the directory +listings. + + For each directory files must be retrieved from, Wget will use the +`LIST' command to get the listing. It will try to analyze the listing, +assuming that it is a Unix `ls -l' listing, and extract the +time-stamps. The rest is exactly the same as for HTTP. + + Assumption that every directory listing is a Unix-style listing may +sound extremely constraining, but in practice it is not, as many +non-Unix FTP servers use the Unixoid listing format because most (all?) +of the clients understand it. Bear in mind that RFC959 defines no +standard way to get a file list, let alone the time-stamps. We can +only hope that a future standard will define this. + + Another non-standard solution includes the use of `MDTM' command +that is supported by some FTP servers (including the popular +`wu-ftpd'), which returns the exact time of the specified file. Wget +may support this command in the future. + + +File: wget.info, Node: Startup File, Next: Examples, Prev: Time-Stamping, Up: Top + +Startup File +************ + + Once you know how to change default settings of Wget through command +line arguments, you may wish to make some of those settings permanent. +You can do that in a convenient way by creating the Wget startup +file--`.wgetrc'. + + Besides `.wgetrc' is the "main" initialization file, it is +convenient to have a special facility for storing passwords. Thus Wget +reads and interprets the contents of `$HOME/.netrc', if it finds it. +You can find `.netrc' format in your system manuals. + + Wget reads `.wgetrc' upon startup, recognizing a limited set of +commands. + +* Menu: + +* Wgetrc Location:: Location of various wgetrc files. +* Wgetrc Syntax:: Syntax of wgetrc. +* Wgetrc Commands:: List of available commands. +* Sample Wgetrc:: A wgetrc example. + + +File: wget.info, Node: Wgetrc Location, Next: Wgetrc Syntax, Prev: Startup File, Up: Startup File + +Wgetrc Location +=============== + + When initializing, Wget will look for a "global" startup file, +`/usr/local/etc/wgetrc' by default (or some prefix other than +`/usr/local', if Wget was not installed there) and read commands from +there, if it exists. + + Then it will look for the user's file. If the environmental variable +`WGETRC' is set, Wget will try to load that file. Failing that, no +further attempts will be made. + + If `WGETRC' is not set, Wget will try to load `$HOME/.wgetrc'. + + The fact that user's settings are loaded after the system-wide ones +means that in case of collision user's wgetrc *overrides* the +system-wide wgetrc (in `/usr/local/etc/wgetrc' by default). Fascist +admins, away! + diff --git a/doc/wget.info-2 b/doc/wget.info-2 new file mode 100644 index 00000000..d59c89f2 --- /dev/null +++ b/doc/wget.info-2 @@ -0,0 +1,1079 @@ +This is Info file wget.info, produced by Makeinfo version 1.67 from the +input file ./wget.texi. + +INFO-DIR-SECTION Net Utilities +INFO-DIR-SECTION World Wide Web +START-INFO-DIR-ENTRY +* Wget: (wget). The non-interactive network downloader. +END-INFO-DIR-ENTRY + + This file documents the the GNU Wget utility for downloading network +data. + + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + + Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + + Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided also +that the sections entitled "Copying" and "GNU General Public License" +are included exactly as in the original, and provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + + +File: wget.info, Node: Wgetrc Syntax, Next: Wgetrc Commands, Prev: Wgetrc Location, Up: Startup File + +Wgetrc Syntax +============= + + The syntax of a wgetrc command is simple: + + variable = value + + The "variable" will also be called "command". Valid "values" are +different for different commands. + + The commands are case-insensitive and underscore-insensitive. Thus +`DIr__PrefiX' is the same as `dirprefix'. Empty lines, lines beginning +with `#' and lines containing white-space only are discarded. + + Commands that expect a comma-separated list will clear the list on an +empty command. So, if you wish to reset the rejection list specified in +global `wgetrc', you can do it with: + + reject = + + +File: wget.info, Node: Wgetrc Commands, Next: Sample Wgetrc, Prev: Wgetrc Syntax, Up: Startup File + +Wgetrc Commands +=============== + + The complete set of commands is listed below, the letter after `=' +denoting the value the command takes. It is `on/off' for `on' or `off' +(which can also be `1' or `0'), STRING for any non-empty string or N +for a positive integer. For example, you may specify `use_proxy = off' +to disable use of proxy servers by default. You may use `inf' for +infinite values, where appropriate. + + Most of the commands have their equivalent command-line option +(*Note Invoking::), except some more obscure or rarely used ones. + +accept/reject = STRING + Same as `-A'/`-R' (*Note Types of Files::). + +add_hostdir = on/off + Enable/disable host-prefixed file names. `-nH' disables it. + +continue = on/off + Enable/disable continuation of the retrieval, the same as `-c' + (which enables it). + +background = on/off + Enable/disable going to background, the same as `-b' (which enables + it). + +base = STRING + Set base for relative URLs, the same as `-B'. + +cache = on/off + When set to off, disallow server-caching. See the `-C' option. + +convert links = on/off + Convert non-relative links locally. The same as `-k'. + +cut_dirs = N + Ignore N remote directory components. + +debug = on/off + Debug mode, same as `-d'. + +delete_after = on/off + Delete after download, the same as `--delete-after'. + +dir_prefix = STRING + Top of directory tree, the same as `-P'. + +dirstruct = on/off + Turning dirstruct on or off, the same as `-x' or `-nd', + respectively. + +domains = STRING + Same as `-D' (*Note Domain Acceptance::). + +dot_bytes = N + Specify the number of bytes "contained" in a dot, as seen + throughout the retrieval (1024 by default). You can postfix the + value with `k' or `m', representing kilobytes and megabytes, + respectively. With dot settings you can tailor the dot retrieval + to suit your needs, or you can use the predefined "styles" (*Note + Download Options::). + +dots_in_line = N + Specify the number of dots that will be printed in each line + throughout the retrieval (50 by default). + +dot_spacing = N + Specify the number of dots in a single cluster (10 by default). + +dot_style = STRING + Specify the dot retrieval "style", as with `--dot-style'. + +exclude_directories = STRING + Specify a comma-separated list of directories you wish to exclude + from download, the same as `-X' (*Note Directory-Based Limits::). + +exclude_domains = STRING + Same as `--exclude-domains' (*Note Domain Acceptance::). + +follow_ftp = on/off + Follow FTP links from HTML documents, the same as `-f'. + +force_html = on/off + If set to on, force the input filename to be regarded as an HTML + document, the same as `-F'. + +ftp_proxy = STRING + Use STRING as FTP proxy, instead of the one specified in + environment. + +glob = on/off + Turn globbing on/off, the same as `-g'. + +header = STRING + Define an additional header, like `--header'. + +http_passwd = STRING + Set HTTP password. + +http_proxy = STRING + Use STRING as HTTP proxy, instead of the one specified in + environment. + +http_user = STRING + Set HTTP user to STRING. + +ignore_length = on/off + When set to on, ignore `Content-Length' header; the same as + `--ignore-length'. + +include_directories = STRING + Specify a comma-separated list of directories you wish to follow + when downloading, the same as `-I'. + +input = STRING + Read the URLs from STRING, like `-i'. + +kill_longer = on/off + Consider data longer than specified in content-length header as + invalid (and retry getting it). The default behaviour is to save + as much data as there is, provided there is more than or equal to + the value in `Content-Length'. + +logfile = STRING + Set logfile, the same as `-o'. + +login = STRING + Your user name on the remote machine, for FTP. Defaults to + `anonymous'. + +mirror = on/off + Turn mirroring on/off. The same as `-m'. + +netrc = on/off + Turn reading netrc on or off. + +noclobber = on/off + Same as `-nc'. + +no_parent = on/off + Disallow retrieving outside the directory hierarchy, like + `--no-parent' (*Note Directory-Based Limits::). + +no_proxy = STRING + Use STRING as the comma-separated list of domains to avoid in + proxy loading, instead of the one specified in environment. + +output_document = STRING + Set the output filename, the same as `-O'. + +passive_ftp = on/off + Set passive FTP, the same as `--passive-ftp'. + +passwd = STRING + Set your FTP password to PASSWORD. Without this setting, the + password defaults to `username@hostname.domainname'. + +proxy_user = STRING + Set proxy authentication user name to STRING, like `--proxy-user'. + +proxy_passwd = STRING + Set proxy authentication password to STRING, like `--proxy-passwd'. + +quiet = on/off + Quiet mode, the same as `-q'. + +quota = QUOTA + Specify the download quota, which is useful to put in global + wgetrc. When download quota is specified, Wget will stop retrieving + after the download sum has become greater than quota. The quota + can be specified in bytes (default), kbytes `k' appended) or mbytes + (`m' appended). Thus `quota = 5m' will set the quota to 5 mbytes. + Note that the user's startup file overrides system settings. + +reclevel = N + Recursion level, the same as `-l'. + +recursive = on/off + Recursive on/off, the same as `-r'. + +relative_only = on/off + Follow only relative links, the same as `-L' (*Note Relative + Links::). + +remove_listing = on/off + If set to on, remove FTP listings downloaded by Wget. Setting it + to off is the same as `-nr'. + +retr_symlinks = on/off + When set to on, retrieve symbolic links as if they were plain + files; the same as `--retr-symlinks'. + +robots = on/off + Use (or not) `/robots.txt' file (*Note Robots::). Be sure to know + what you are doing before changing the default (which is `on'). + +server_response = on/off + Choose whether or not to print the HTTP and FTP server responses, + the same as `-S'. + +simple_host_check = on/off + Same as `-nh' (*Note Host Checking::). + +span_hosts = on/off + Same as `-H'. + +timeout = N + Set timeout value, the same as `-T'. + +timestamping = on/off + Turn timestamping on/off. The same as `-N' (*Note Time-Stamping::). + +tries = N + Set number of retries per URL, the same as `-t'. + +use_proxy = on/off + Turn proxy support on/off. The same as `-Y'. + +verbose = on/off + Turn verbose on/off, the same as `-v'/`-nv'. + +wait = N + Wait N seconds between retrievals, the same as `-w'. + + +File: wget.info, Node: Sample Wgetrc, Prev: Wgetrc Commands, Up: Startup File + +Sample Wgetrc +============= + + This is the sample initialization file, as given in the distribution. +It is divided in two section--one for global usage (suitable for global +startup file), and one for local usage (suitable for `$HOME/.wgetrc'). +Be careful about the things you change. + + Note that all the lines are commented out. For any line to have +effect, you must remove the `#' prefix at the beginning of line. + + ### + ### Sample Wget initialization file .wgetrc + ### + + ## You can use this file to change the default behaviour of wget or to + ## avoid having to type many many command-line options. This file does + ## not contain a comprehensive list of commands -- look at the manual + ## to find out what you can put into this file. + ## + ## Wget initialization file can reside in /usr/local/etc/wgetrc + ## (global, for all users) or $HOME/.wgetrc (for a single user). + ## + ## To use any of the settings in this file, you will have to uncomment + ## them (and probably change them). + + + ## + ## Global settings (useful for setting up in /usr/local/etc/wgetrc). + ## Think well before you change them, since they may reduce wget's + ## functionality, and make it behave contrary to the documentation: + ## + + # You can set retrieve quota for beginners by specifying a value + # optionally followed by 'K' (kilobytes) or 'M' (megabytes). The + # default quota is unlimited. + #quota = inf + + # You can lower (or raise) the default number of retries when + # downloading a file (default is 20). + #tries = 20 + + # Lowering the maximum depth of the recursive retrieval is handy to + # prevent newbies from going too "deep" when they unwittingly start + # the recursive retrieval. The default is 5. + #reclevel = 5 + + # Many sites are behind firewalls that do not allow initiation of + # connections from the outside. On these sites you have to use the + # `passive' feature of FTP. If you are behind such a firewall, you + # can turn this on to make Wget use passive FTP by default. + #passive_ftp = off + + + ## + ## Local settings (for a user to set in his $HOME/.wgetrc). It is + ## *highly* undesirable to put these settings in the global file, since + ## they are potentially dangerous to "normal" users. + ## + ## Even when setting up your own ~/.wgetrc, you should know what you + ## are doing before doing so. + ## + + # Set this to on to use timestamping by default: + #timestamping = off + + # It is a good idea to make Wget send your email address in a `From:' + # header with your request (so that server administrators can contact + # you in case of errors). Wget does *not* send `From:' by default. + #header = From: Your Name + + # You can set up other headers, like Accept-Language. Accept-Language + # is *not* sent by default. + #header = Accept-Language: en + + # You can set the default proxy for Wget to use. It will override the + # value in the environment. + #http_proxy = http://proxy.yoyodyne.com:18023/ + + # If you do not want to use proxy at all, set this to off. + #use_proxy = on + + # You can customize the retrieval outlook. Valid options are default, + # binary, mega and micro. + #dot_style = default + + # Setting this to off makes Wget not download /robots.txt. Be sure to + # know *exactly* what /robots.txt is and how it is used before changing + # the default! + #robots = on + + # It can be useful to make Wget wait between connections. Set this to + # the number of seconds you want Wget to wait. + #wait = 0 + + # You can force creating directory structure, even if a single is being + # retrieved, by setting this to on. + #dirstruct = off + + # You can turn on recursive retrieving by default (don't do this if + # you are not sure you know what it means) by setting this to on. + #recursive = off + + # To have Wget follow FTP links from HTML files by default, set this + # to on: + #follow_ftp = off + + +File: wget.info, Node: Examples, Next: Various, Prev: Startup File, Up: Top + +Examples +******** + + The examples are classified into three sections, because of clarity. +The first section is a tutorial for beginners. The second section +explains some of the more complex program features. The third section +contains advice for mirror administrators, as well as even more complex +features (that some would call perverted). + +* Menu: + +* Simple Usage:: Simple, basic usage of the program. +* Advanced Usage:: Advanced techniques of usage. +* Guru Usage:: Mirroring and the hairy stuff. + + +File: wget.info, Node: Simple Usage, Next: Advanced Usage, Prev: Examples, Up: Examples + +Simple Usage +============ + + * Say you want to download a URL. Just type: + + wget http://fly.cc.fer.hr/ + + The response will be something like: + + --13:30:45-- http://fly.cc.fer.hr:80/en/ + => `index.html' + Connecting to fly.cc.fer.hr:80... connected! + HTTP request sent, awaiting response... 200 OK + Length: 4,694 [text/html] + + 0K -> .... [100%] + + 13:30:46 (23.75 KB/s) - `index.html' saved [4694/4694] + + * But what will happen if the connection is slow, and the file is + lengthy? The connection will probably fail before the whole file + is retrieved, more than once. In this case, Wget will try getting + the file until it either gets the whole of it, or exceeds the + default number of retries (this being 20). It is easy to change + the number of tries to 45, to insure that the whole file will + arrive safely: + + wget --tries=45 http://fly.cc.fer.hr/jpg/flyweb.jpg + + * Now let's leave Wget to work in the background, and write its + progress to log file `log'. It is tiring to type `--tries', so we + shall use `-t'. + + wget -t 45 -o log http://fly.cc.fer.hr/jpg/flyweb.jpg & + + The ampersand at the end of the line makes sure that Wget works in + the background. To unlimit the number of retries, use `-t inf'. + + * The usage of FTP is as simple. Wget will take care of login and + password. + + $ wget ftp://gnjilux.cc.fer.hr/welcome.msg + --10:08:47-- ftp://gnjilux.cc.fer.hr:21/welcome.msg + => `welcome.msg' + Connecting to gnjilux.cc.fer.hr:21... connected! + Logging in as anonymous ... Logged in! + ==> TYPE I ... done. ==> CWD not needed. + ==> PORT ... done. ==> RETR welcome.msg ... done. + Length: 1,340 (unauthoritative) + + 0K -> . [100%] + + 10:08:48 (1.28 MB/s) - `welcome.msg' saved [1340] + + * If you specify a directory, Wget will retrieve the directory + listing, parse it and convert it to HTML. Try: + + wget ftp://prep.ai.mit.edu/pub/gnu/ + lynx index.html + + +File: wget.info, Node: Advanced Usage, Next: Guru Usage, Prev: Simple Usage, Up: Examples + +Advanced Usage +============== + + * You would like to read the list of URLs from a file? Not a problem + with that: + + wget -i file + + If you specify `-' as file name, the URLs will be read from + standard input. + + * Create a mirror image of GNU WWW site (with the same directory + structure the original has) with only one try per document, saving + the log of the activities to `gnulog': + + wget -r -t1 http://www.gnu.ai.mit.edu/ -o gnulog + + * Retrieve the first layer of yahoo links: + + wget -r -l1 http://www.yahoo.com/ + + * Retrieve the index.html of `www.lycos.com', showing the original + server headers: + + wget -S http://www.lycos.com/ + + * Save the server headers with the file: + wget -s http://www.lycos.com/ + more index.html + + * Retrieve the first two levels of `wuarchive.wustl.edu', saving them + to /tmp. + + wget -P/tmp -l2 ftp://wuarchive.wustl.edu/ + + * You want to download all the GIFs from an HTTP directory. `wget + http://host/dir/*.gif' doesn't work, since HTTP retrieval does not + support globbing. In that case, use: + + wget -r -l1 --no-parent -A.gif http://host/dir/ + + It is a bit of a kludge, but it works. `-r -l1' means to retrieve + recursively (*Note Recursive Retrieval::), with maximum depth of 1. + `--no-parent' means that references to the parent directory are + ignored (*Note Directory-Based Limits::), and `-A.gif' means to + download only the GIF files. `-A "*.gif"' would have worked too. + + * Suppose you were in the middle of downloading, when Wget was + interrupted. Now you do not want to clobber the files already + present. It would be: + + wget -nc -r http://www.gnu.ai.mit.edu/ + + * If you want to encode your own username and password to HTTP or + FTP, use the appropriate URL syntax (*Note URL Format::). + + wget ftp://hniksic:mypassword@jagor.srce.hr/.emacs + + * If you do not like the default retrieval visualization (1K dots + with 10 dots per cluster and 50 dots per line), you can customize + it through dot settings (*Note Wgetrc Commands::). For example, + many people like the "binary" style of retrieval, with 8K dots and + 512K lines: + + wget --dot-style=binary ftp://prep.ai.mit.edu/pub/gnu/README + + You can experiment with other styles, like: + + wget --dot-style=mega ftp://ftp.xemacs.org/pub/xemacs/xemacs-20.4/xemacs-20.4.tar.gz + wget --dot-style=micro http://fly.cc.fer.hr/ + + To make these settings permanent, put them in your `.wgetrc', as + described before (*Note Sample Wgetrc::). + + +File: wget.info, Node: Guru Usage, Prev: Advanced Usage, Up: Examples + +Guru Usage +========== + + * If you wish Wget to keep a mirror of a page (or FTP + subdirectories), use `--mirror' (`-m'), which is the shorthand for + `-r -N'. You can put Wget in the crontab file asking it to + recheck a site each Sunday: + + crontab + 0 0 * * 0 wget --mirror ftp://ftp.xemacs.org/pub/xemacs/ -o /home/me/weeklog + + * You may wish to do the same with someone's home page. But you do + not want to download all those images--you're only interested in + HTML. + + wget --mirror -A.html http://www.w3.org/ + + * But what about mirroring the hosts networkologically close to you? + It seems so awfully slow because of all that DNS resolving. Just + use `-D' (*Note Domain Acceptance::). + + wget -rN -Dsrce.hr http://www.srce.hr/ + + Now Wget will correctly find out that `regoc.srce.hr' is the same + as `www.srce.hr', but will not even take into consideration the + link to `www.mit.edu'. + + * You have a presentation and would like the dumb absolute links to + be converted to relative? Use `-k': + + wget -k -r URL + + * You would like the output documents to go to standard output + instead of to files? OK, but Wget will automatically shut up + (turn on `--quiet') to prevent mixing of Wget output and the + retrieved documents. + + wget -O - http://jagor.srce.hr/ http://www.srce.hr/ + + You can also combine the two options and make weird pipelines to + retrieve the documents from remote hotlists: + + wget -O - http://cool.list.com/ | wget --force-html -i - + + +File: wget.info, Node: Various, Next: Appendices, Prev: Examples, Up: Top + +Various +******* + + This chapter contains all the stuff that could not fit anywhere else. + +* Menu: + +* Proxies:: Support for proxy servers +* Distribution:: Getting the latest version. +* Mailing List:: Wget mailing list for announcements and discussion. +* Reporting Bugs:: How and where to report bugs. +* Portability:: The systems Wget works on. +* Signals:: Signal-handling performed by Wget. + + +File: wget.info, Node: Proxies, Next: Distribution, Prev: Various, Up: Various + +Proxies +======= + + "Proxies" are special-purpose HTTP servers designed to transfer data +from remote servers to local clients. One typical use of proxies is +lightening network load for users behind a slow connection. This is +achieved by channeling all HTTP and FTP requests through the proxy +which caches the transferred data. When a cached resource is requested +again, proxy will return the data from cache. Another use for proxies +is for companies that separate (for security reasons) their internal +networks from the rest of Internet. In order to obtain information +from the Web, their users connect and retrieve remote data using an +authorized proxy. + + Wget supports proxies for both HTTP and FTP retrievals. The +standard way to specify proxy location, which Wget recognizes, is using +the following environment variables: + +`http_proxy' + This variable should contain the URL of the proxy for HTTP + connections. + +`ftp_proxy' + This variable should contain the URL of the proxy for HTTP + connections. It is quite common that HTTP_PROXY and FTP_PROXY are + set to the same URL. + +`no_proxy' + This variable should contain a comma-separated list of domain + extensions proxy should *not* be used for. For instance, if the + value of `no_proxy' is `.mit.edu', proxy will not be used to + retrieve documents from MIT. + + In addition to the environment variables, proxy location and settings +may be specified from within Wget itself. + +`-Y on/off' +`--proxy=on/off' +`proxy = on/off' + This option may be used to turn the proxy support on or off. Proxy + support is on by default, provided that the appropriate environment + variables are set. + +`http_proxy = URL' +`ftp_proxy = URL' +`no_proxy = STRING' + These startup file variables allow you to override the proxy + settings specified by the environment. + + Some proxy servers require authorization to enable you to use them. +The authorization consists of "username" and "password", which must be +sent by Wget. As with HTTP authorization, several authentication +schemes exist. For proxy authorization only the `Basic' authentication +scheme is currently implemented. + + You may specify your username and password either through the proxy +URL or through the command-line options. Assuming that the company's +proxy is located at `proxy.srce.hr' at port 8001, a proxy URL location +containing authorization data might look like this: + + http://hniksic:mypassword@proxy.company.com:8001/ + + Alternatively, you may use the `proxy-user' and `proxy-password' +options, and the equivalent `.wgetrc' settings `proxy_user' and +`proxy_passwd' to set the proxy username and password. + + +File: wget.info, Node: Distribution, Next: Mailing List, Prev: Proxies, Up: Various + +Distribution +============ + + Like all GNU utilities, the latest version of Wget can be found at +the master GNU archive site prep.ai.mit.edu, and its mirrors. For +example, Wget 1.5.3 can be found at +`ftp://prep.ai.mit.edu/pub/gnu/wget-1.5.3.tar.gz' + + +File: wget.info, Node: Mailing List, Next: Reporting Bugs, Prev: Distribution, Up: Various + +Mailing List +============ + + Wget has its own mailing list at , thanks to +Karsten Thygesen. The mailing list is for discussion of Wget features +and web, reporting Wget bugs (those that you think may be of interest +to the public) and mailing announcements. You are welcome to +subscribe. The more people on the list, the better! + + To subscribe, send mail to . the +magic word `subscribe' in the subject line. Unsubscribe by mailing to +. + + The mailing list is archived at `http://fly.cc.fer.hr/archive/wget'. + + +File: wget.info, Node: Reporting Bugs, Next: Portability, Prev: Mailing List, Up: Various + +Reporting Bugs +============== + + You are welcome to send bug reports about GNU Wget to +. The bugs that you think are of the interest to the +public (i.e. more people should be informed about them) can be Cc-ed to +the mailing list at . + + Before actually submitting a bug report, please try to follow a few +simple guidelines. + + 1. Please try to ascertain that the behaviour you see really is a + bug. If Wget crashes, it's a bug. If Wget does not behave as + documented, it's a bug. If things work strange, but you are not + sure about the way they are supposed to work, it might well be a + bug. + + 2. Try to repeat the bug in as simple circumstances as possible. + E.g. if Wget crashes on `wget -rLl0 -t5 -Y0 http://yoyodyne.com -o + /tmp/log', you should try to see if it will crash with a simpler + set of options. + + Also, while I will probably be interested to know the contents of + your `.wgetrc' file, just dumping it into the debug message is + probably a bad idea. Instead, you should first try to see if the + bug repeats with `.wgetrc' moved out of the way. Only if it turns + out that `.wgetrc' settings affect the bug, should you mail me the + relevant parts of the file. + + 3. Please start Wget with `-d' option and send the log (or the + relevant parts of it). If Wget was compiled without debug support, + recompile it. It is *much* easier to trace bugs with debug support + on. + + 4. If Wget has crashed, try to run it in a debugger, e.g. `gdb `which + wget` core' and type `where' to get the backtrace. + + 5. Find where the bug is, fix it and send me the patches. :-) + + +File: wget.info, Node: Portability, Next: Signals, Prev: Reporting Bugs, Up: Various + +Portability +=========== + + Since Wget uses GNU Autoconf for building and configuring, and avoids +using "special" ultra-mega-cool features of any particular Unix, it +should compile (and work) on all common Unix flavors. + + Various Wget versions have been compiled and tested under many kinds +of Unix systems, including Solaris, Linux, SunOS, OSF (aka Digital +Unix), Ultrix, *BSD, IRIX, and others; refer to the file `MACHINES' in +the distribution directory for a comprehensive list. If you compile it +on an architecture not listed there, please let me know so I can update +it. + + Wget should also compile on the other Unix systems, not listed in +`MACHINES'. If it doesn't, please let me know. + + Thanks to kind contributors, this version of Wget compiles and works +on Microsoft Windows 95 and Windows NT platforms. It has been compiled +successfully using MS Visual C++ 4.0, Watcom, and Borland C compilers, +with Winsock as networking software. Naturally, it is crippled of some +features available on Unix, but it should work as a substitute for +people stuck with Windows. Note that the Windows port is *neither +tested nor maintained* by me--all questions and problems should be +reported to Wget mailing list at where the +maintainers will look at them. + + +File: wget.info, Node: Signals, Prev: Portability, Up: Various + +Signals +======= + + Since the purpose of Wget is background work, it catches the hangup +signal (`SIGHUP') and ignores it. If the output was on standard +output, it will be redirected to a file named `wget-log'. Otherwise, +`SIGHUP' is ignored. This is convenient when you wish to redirect the +output of Wget after having started it. + + $ wget http://www.ifi.uio.no/~larsi/gnus.tar.gz & + $ kill -HUP %% # Redirect the output to wget-log + + Other than that, Wget will not try to interfere with signals in any +way. `C-c', `kill -TERM' and `kill -KILL' should kill it alike. + + +File: wget.info, Node: Appendices, Next: Copying, Prev: Various, Up: Top + +Appendices +********** + + This chapter contains some references I consider useful, like the +Robots Exclusion Standard specification, as well as a list of +contributors to GNU Wget. + +* Menu: + +* Robots:: Wget as a WWW robot. +* Security Considerations:: Security with Wget. +* Contributors:: People who helped. + + +File: wget.info, Node: Robots, Next: Security Considerations, Prev: Appendices, Up: Appendices + +Robots +====== + + Since Wget is able to traverse the web, it counts as one of the Web +"robots". Thus Wget understands "Robots Exclusion Standard" +(RES)--contents of `/robots.txt', used by server administrators to +shield parts of their systems from wanderings of Wget. + + Norobots support is turned on only when retrieving recursively, and +*never* for the first page. Thus, you may issue: + + wget -r http://fly.cc.fer.hr/ + + First the index of fly.cc.fer.hr will be downloaded. If Wget finds +anything worth downloading on the same host, only *then* will it load +the robots, and decide whether or not to load the links after all. +`/robots.txt' is loaded only once per host. Wget does not support the +robots `META' tag. + + The description of the norobots standard was written, and is +maintained by Martijn Koster . With his +permission, I contribute a (slightly modified) texified version of the +RES. + +* Menu: + +* Introduction to RES:: +* RES Format:: +* User-Agent Field:: +* Disallow Field:: +* Norobots Examples:: + + +File: wget.info, Node: Introduction to RES, Next: RES Format, Prev: Robots, Up: Robots + +Introduction to RES +------------------- + + "WWW Robots" (also called "wanderers" or "spiders") are programs +that traverse many pages in the World Wide Web by recursively +retrieving linked pages. For more information see the robots page. + + In 1993 and 1994 there have been occasions where robots have visited +WWW servers where they weren't welcome for various reasons. Sometimes +these reasons were robot specific, e.g. certain robots swamped servers +with rapid-fire requests, or retrieved the same files repeatedly. In +other situations robots traversed parts of WWW servers that weren't +suitable, e.g. very deep virtual trees, duplicated information, +temporary information, or cgi-scripts with side-effects (such as +voting). + + These incidents indicated the need for established mechanisms for +WWW servers to indicate to robots which parts of their server should +not be accessed. This standard addresses this need with an operational +solution. + + This document represents a consensus on 30 June 1994 on the robots +mailing list (`robots@webcrawler.com'), between the majority of robot +authors and other people with an interest in robots. It has also been +open for discussion on the Technical World Wide Web mailing list +(`www-talk@info.cern.ch'). This document is based on a previous working +draft under the same title. + + It is not an official standard backed by a standards body, or owned +by any commercial organization. It is not enforced by anybody, and there +no guarantee that all current and future robots will use it. Consider +it a common facility the majority of robot authors offer the WWW +community to protect WWW server against unwanted accesses by their +robots. + + The latest version of this document can be found at +`http://info.webcrawler.com/mak/projects/robots/norobots.html'. + + +File: wget.info, Node: RES Format, Next: User-Agent Field, Prev: Introduction to RES, Up: Robots + +RES Format +---------- + + The format and semantics of the `/robots.txt' file are as follows: + + The file consists of one or more records separated by one or more +blank lines (terminated by `CR', `CR/NL', or `NL'). Each record +contains lines of the form: + + : + + The field name is case insensitive. + + Comments can be included in file using UNIX bourne shell conventions: +the `#' character is used to indicate that preceding space (if any) and +the remainder of the line up to the line termination is discarded. +Lines containing only a comment are discarded completely, and therefore +do not indicate a record boundary. + + The record starts with one or more User-agent lines, followed by one +or more Disallow lines, as detailed below. Unrecognized headers are +ignored. + + The presence of an empty `/robots.txt' file has no explicit +associated semantics, it will be treated as if it was not present, i.e. +all robots will consider themselves welcome. + + +File: wget.info, Node: User-Agent Field, Next: Disallow Field, Prev: RES Format, Up: Robots + +User-Agent Field +---------------- + + The value of this field is the name of the robot the record is +describing access policy for. + + If more than one User-agent field is present the record describes an +identical access policy for more than one robot. At least one field +needs to be present per record. + + The robot should be liberal in interpreting this field. A case +insensitive substring match of the name without version information is +recommended. + + If the value is `*', the record describes the default access policy +for any robot that has not matched any of the other records. It is not +allowed to have multiple such records in the `/robots.txt' file. + + +File: wget.info, Node: Disallow Field, Next: Norobots Examples, Prev: User-Agent Field, Up: Robots + +Disallow Field +-------------- + + The value of this field specifies a partial URL that is not to be +visited. This can be a full path, or a partial path; any URL that +starts with this value will not be retrieved. For example, +`Disallow: /help' disallows both `/help.html' and `/help/index.html', +whereas `Disallow: /help/' would disallow `/help/index.html' but allow +`/help.html'. + + Any empty value, indicates that all URLs can be retrieved. At least +one Disallow field needs to be present in a record. + + +File: wget.info, Node: Norobots Examples, Prev: Disallow Field, Up: Robots + +Norobots Examples +----------------- + + The following example `/robots.txt' file specifies that no robots +should visit any URL starting with `/cyberworld/map/' or `/tmp/': + + # robots.txt for http://www.site.com/ + + User-agent: * + Disallow: /cyberworld/map/ # This is an infinite virtual URL space + Disallow: /tmp/ # these will soon disappear + + This example `/robots.txt' file specifies that no robots should +visit any URL starting with `/cyberworld/map/', except the robot called +`cybermapper': + + # robots.txt for http://www.site.com/ + + User-agent: * + Disallow: /cyberworld/map/ # This is an infinite virtual URL space + + # Cybermapper knows where to go. + User-agent: cybermapper + Disallow: + + This example indicates that no robots should visit this site further: + + # go away + User-agent: * + Disallow: / + + +File: wget.info, Node: Security Considerations, Next: Contributors, Prev: Robots, Up: Appendices + +Security Considerations +======================= + + When using Wget, you must be aware that it sends unencrypted +passwords through the network, which may present a security problem. +Here are the main issues, and some solutions. + + 1. The passwords on the command line are visible using `ps'. If this + is a problem, avoid putting passwords from the command line--e.g. + you can use `.netrc' for this. + + 2. Using the insecure "basic" authentication scheme, unencrypted + passwords are transmitted through the network routers and gateways. + + 3. The FTP passwords are also in no way encrypted. There is no good + solution for this at the moment. + + 4. Although the "normal" output of Wget tries to hide the passwords, + debugging logs show them, in all forms. This problem is avoided by + being careful when you send debug logs (yes, even when you send + them to me). + + +File: wget.info, Node: Contributors, Prev: Security Considerations, Up: Appendices + +Contributors +============ + + GNU Wget was written by Hrvoje Niksic . However, +its development could never have gone as far as it has, were it not for +the help of many people, either with bug reports, feature proposals, +patches, or letters saying "Thanks!". + + Special thanks goes to the following people (no particular order): + + * Karsten Thygesen--donated the mailing list and the initial FTP + space. + + * Shawn McHorse--bug reports and patches. + + * Kaveh R. Ghazi--on-the-fly `ansi2knr'-ization. + + * Gordon Matzigkeit--`.netrc' support. + + * Zlatko Calusic, Tomislav Vujec and Drazen Kacar--feature + suggestions and "philosophical" discussions. + + * Darko Budor--initial port to Windows. + + * Antonio Rosella--help and suggestions, plust the Italian + translation. + + * Tomislav Petrovic, Mario Mikocevic--many bug reports and + suggestions. + + * Francois Pinard--many thorough bug reports and discussions. + + * Karl Eichwalder--lots of help with internationalization and other + things. + + * Junio Hamano--donated support for Opie and HTTP `Digest' + authentication. + + * Brian Gough--a generous donation. + + The following people have provided patches, bug/build reports, useful +suggestions, beta testing services, fan mail and all the other things +that make maintenance so much fun: + + Tim Adam, Martin Baehr, Dieter Baron, Roger Beeman and the Gurus at +Cisco, Mark Boyns, John Burden, Wanderlei Cavassin, Gilles Cedoc, Tim +Charron, Noel Cragg, Kristijan Conkas, Damir Dzeko, Andrew Davison, +Ulrich Drepper, Marc Duponcheel, Aleksandar Erkalovic, Andy Eskilsson, +Masashi Fujita, Howard Gayle, Marcel Gerrits, Hans Grobler, Mathieu +Guillaume, Karl Heuer, Gregor Hoffleit, Erik Magnus Hulthen, Richard +Huveneers, Simon Josefsson, Mario Juric, Goran Kezunovic, Robert Kleine, +Fila Kolodny, Alexander Kourakos, Martin Kraemer, Simos KSenitellis, +Tage Stabell-Kulo, Hrvoje Lacko, Dave Love, Jordan Mendelson, Lin Zhe +Min, Charlie Negyesi, Andrew Pollock, Steve Pothier, Marin Purgar, Jan +Prikryl, Keith Refson, Tobias Ringstrom, Juan Jose Rodrigues, Heinz +Salzmann, Robert Schmidt, Toomas Soome, Sven Sternberger, Markus +Strasser, Szakacsits Szabolcs, Mike Thomas, Russell Vincent, Douglas E. +Wegscheid, Jasmin Zainul, Bojan Zdrnja, Kristijan Zimmer. + + Apologies to all who I accidentally left out, and many thanks to all +the subscribers of the Wget mailing list. + diff --git a/doc/wget.info-3 b/doc/wget.info-3 new file mode 100644 index 00000000..d049422b --- /dev/null +++ b/doc/wget.info-3 @@ -0,0 +1,534 @@ +This is Info file wget.info, produced by Makeinfo version 1.67 from the +input file ./wget.texi. + +INFO-DIR-SECTION Net Utilities +INFO-DIR-SECTION World Wide Web +START-INFO-DIR-ENTRY +* Wget: (wget). The non-interactive network downloader. +END-INFO-DIR-ENTRY + + This file documents the the GNU Wget utility for downloading network +data. + + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + + Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + + Permission is granted to copy and distribute modified versions of +this manual under the conditions for verbatim copying, provided also +that the sections entitled "Copying" and "GNU General Public License" +are included exactly as in the original, and provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + + +File: wget.info, Node: Copying, Next: Concept Index, Prev: Appendices, Up: Top + +GNU GENERAL PUBLIC LICENSE +************************** + + Version 2, June 1991 + + Copyright (C) 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. + +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. + + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 1. 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. + + 2. 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. + + 3. 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: + + a. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b. 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. + + c. 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.) + + 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. + + 4. 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: + + a. 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, + + b. 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, + + c. 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.) + + 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. + + 5. 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. + + 6. 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. + + 7. 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. + + 8. 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. + + 9. 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. + + 10. 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. + + 11. 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. + + NO WARRANTY + + 12. 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. + + 13. 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 OF TERMS AND CONDITIONS + +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. + + ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES. + Copyright (C) 19YY 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. + + 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: + + Gnomovision version 69, Copyright (C) 19YY 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. + + The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `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: + + Yoyodyne, Inc., hereby disclaims all copyright + interest in the program `Gnomovision' + (which makes passes at compilers) written + by James Hacker. + + SIGNATURE OF TY COON, 1 April 1989 + Ty Coon, President of Vice + + 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. + + +File: wget.info, Node: Concept Index, Prev: Copying, Up: Top + +Concept Index +************* + +* Menu: + +* .netrc: Startup File. +* .wgetrc: Startup File. +* accept directories: Directory-Based Limits. +* accept suffixes: Types of Files. +* accept wildcards: Types of Files. +* all hosts: All Hosts. +* append to log: Logging and Input File Options. +* arguments: Invoking. +* authentication: HTTP Options. +* bug reports: Reporting Bugs. +* bugs: Reporting Bugs. +* cache: HTTP Options. +* command line: Invoking. +* Content-Length, ignore: HTTP Options. +* continue retrieval: Download Options. +* contributors: Contributors. +* conversion of links: Recursive Retrieval Options. +* copying: Copying. +* cut directories: Directory Options. +* debug: Logging and Input File Options. +* delete after retrieval: Recursive Retrieval Options. +* directories: Directory-Based Limits. +* directories, exclude: Directory-Based Limits. +* directories, include: Directory-Based Limits. +* directory limits: Directory-Based Limits. +* directory prefix: Directory Options. +* DNS lookup: Host Checking. +* dot style: Download Options. +* examples: Examples. +* exclude directories: Directory-Based Limits. +* execute wgetrc command: Basic Startup Options. +* features: Overview. +* filling proxy cache: Recursive Retrieval Options. +* follow FTP links: Recursive Accept/Reject Options. +* following ftp links: FTP Links. +* following links: Following Links. +* force html: Logging and Input File Options. +* ftp time-stamping: FTP Time-Stamping Internals. +* globbing, toggle: FTP Options. +* GPL: Copying. +* hangup: Signals. +* header, add: HTTP Options. +* host checking: Host Checking. +* host lookup: Host Checking. +* http password: HTTP Options. +* http time-stamping: HTTP Time-Stamping Internals. +* http user: HTTP Options. +* ignore length: HTTP Options. +* include directories: Directory-Based Limits. +* incremental updating: Time-Stamping. +* input-file: Logging and Input File Options. +* invoking: Invoking. +* latest version: Distribution. +* links: Following Links. +* links conversion: Recursive Retrieval Options. +* list: Mailing List. +* location of wgetrc: Wgetrc Location. +* log file: Logging and Input File Options. +* mailing list: Mailing List. +* mirroring: Guru Usage. +* no parent: Directory-Based Limits. +* no warranty: Copying. +* no-clobber: Download Options. +* nohup: Invoking. +* norobots disallow: Disallow Field. +* norobots examples: Norobots Examples. +* norobots format: RES Format. +* norobots introduction: Introduction to RES. +* norobots user-agent: User-Agent Field. +* number of retries: Download Options. +* operating systems: Portability. +* option syntax: Option Syntax. +* output file: Logging and Input File Options. +* overview: Overview. +* passive ftp: FTP Options. +* pause: Download Options. +* portability: Portability. +* proxies: Proxies. +* proxy <1>: Download Options. +* proxy: HTTP Options. +* proxy authentication: HTTP Options. +* proxy filling: Recursive Retrieval Options. +* proxy password: HTTP Options. +* proxy user: HTTP Options. +* quiet: Logging and Input File Options. +* quota: Download Options. +* recursion: Recursive Retrieval. +* recursive retrieval: Recursive Retrieval. +* redirecting output: Guru Usage. +* reject directories: Directory-Based Limits. +* reject suffixes: Types of Files. +* reject wildcards: Types of Files. +* relative links: Relative Links. +* reporting bugs: Reporting Bugs. +* retries: Download Options. +* retrieval tracing style: Download Options. +* retrieve symbolic links: FTP Options. +* retrieving: Recursive Retrieval. +* robots: Robots. +* robots.txt: Robots. +* sample wgetrc: Sample Wgetrc. +* security: Security Considerations. +* server maintenance: Robots. +* server response, print: Download Options. +* server response, save: HTTP Options. +* signal handling: Signals. +* span hosts: All Hosts. +* spider: Download Options. +* startup: Startup File. +* startup file: Startup File. +* suffixes, accept: Types of Files. +* suffixes, reject: Types of Files. +* syntax of options: Option Syntax. +* syntax of wgetrc: Wgetrc Syntax. +* time-stamping: Time-Stamping. +* time-stamping usage: Time-Stamping Usage. +* timeout: Download Options. +* timestamping: Time-Stamping. +* tries: Download Options. +* types of files: Types of Files. +* updating the archives: Time-Stamping. +* URL: URL Format. +* URL syntax: URL Format. +* usage, time-stamping: Time-Stamping Usage. +* user-agent: HTTP Options. +* various: Various. +* verbose: Logging and Input File Options. +* wait: Download Options. +* Wget as spider: Download Options. +* wgetrc: Startup File. +* wgetrc commands: Wgetrc Commands. +* wgetrc location: Wgetrc Location. +* wgetrc syntax: Wgetrc Syntax. +* wildcards, accept: Types of Files. +* wildcards, reject: Types of Files. + + diff --git a/doc/wget.texi b/doc/wget.texi new file mode 100644 index 00000000..26f624ae --- /dev/null +++ b/doc/wget.texi @@ -0,0 +1,3118 @@ +\input texinfo @c -*-texinfo-*- + +@c %**start of header +@setfilename wget.info +@settitle GNU Wget Manual +@c Disable the monstrous rectangles beside overfull hbox-es. +@finalout +@c Use `odd' to print double-sided. +@setchapternewpage on +@c %**end of header + +@iftex +@c Remove this if you don't use A4 paper. +@afourpaper +@end iftex + +@set VERSION 1.5.3 +@set UPDATED Sep 1998 + +@dircategory Net Utilities +@dircategory World Wide Web +@direntry +* Wget: (wget). The non-interactive network downloader. +@end direntry + +@ifinfo +This file documents the the GNU Wget utility for downloading network +data. + +Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +@ignore +Permission is granted to process this file through TeX and print the +results, provided the printed document carries a copying permission +notice identical to this one except for the removal of this paragraph +(this paragraph not being relevant to the printed manual). +@end ignore +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +sections entitled ``Copying'' and ``GNU General Public License'' are +included exactly as in the original, and provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. +@end ifinfo + +@titlepage +@title GNU Wget +@subtitle The noninteractive downloading utility +@subtitle Updated for Wget @value{VERSION}, @value{UPDATED} +@author by Hrvoje Nik@v{s}i@'{c} + +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 1996, 1997, 1998 Free Software Foundation, Inc. + +Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided also that the +sections entitled ``Copying'' and ``GNU General Public License'' are +included exactly as in the original, and provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation +approved by the Free Software Foundation. +@end titlepage + +@ifinfo +@node Top, Overview, (dir), (dir) +@top Wget @value{VERSION} + +This manual documents version @value{VERSION} of GNU Wget, the freely +available utility for network download. + +Copyright @copyright{} 1996, 1997, 1998 Free Software Foundation, Inc. + +@menu +* Overview:: Features of Wget. +* Invoking:: Wget command-line arguments. +* Recursive Retrieval:: Description of recursive retrieval. +* Following Links:: The available methods of chasing links. +* Time-Stamping:: Mirroring according to time-stamps. +* Startup File:: Wget's initialization file. +* Examples:: Examples of usage. +* Various:: The stuff that doesn't fit anywhere else. +* Appendices:: Some useful references. +* Copying:: You may give out copies of Wget. +* Concept Index:: Topics covered by this manual. +@end menu +@end ifinfo + +@node Overview, Invoking, Top, Top +@chapter Overview +@cindex overview +@cindex features + +GNU Wget is a freely available network utility to retrieve files from +the World Wide Web, using @sc{http} (Hyper Text Transfer Protocol) and +@sc{ftp} (File Transfer Protocol), the two most widely used Internet +protocols. It has many useful features to make downloading easier, some +of them being: + +@itemize @bullet +@item +Wget is non-interactive, meaning that it can work in the background, +while the user is not logged on. This allows you to start a retrieval +and disconnect from the system, letting Wget finish the work. By +contrast, most of the Web browsers require constant user's presence, +which can be a great hindrance when transferring a lot of data. + +@sp 1 +@item +Wget is capable of descending recursively through the structure of +@sc{html} documents and @sc{ftp} directory trees, making a local copy of +the directory hierarchy similar to the one on the remote server. This +feature can be used to mirror archives and home pages, or traverse the +web in search of data, like a @sc{www} robot (@xref{Robots}). In that +spirit, Wget understands the @code{norobots} convention. + +@sp 1 +@item +File name wildcard matching and recursive mirroring of directories are +available when retrieving via @sc{ftp}. Wget can read the time-stamp +information given by both @sc{http} and @sc{ftp} servers, and store it +locally. Thus Wget can see if the remote file has changed since last +retrieval, and automatically retrieve the new version if it has. This +makes Wget suitable for mirroring of @sc{ftp} sites, as well as home +pages. + +@sp 1 +@item +Wget works exceedingly well on slow or unstable connections, +retrying the document until it is fully retrieved, or until a +user-specified retry count is surpassed. It will try to resume the +download from the point of interruption, using @code{REST} with @sc{ftp} +and @code{Range} with @sc{http} servers that support them. + +@sp 1 +@item +By default, Wget supports proxy servers, which can lighten the network +load, speed up retrieval and provide access behind firewalls. However, +if you are behind a firewall that requires that you use a socks style +gateway, you can get the socks library and build wget with support for +socks. Wget also supports the passive @sc{ftp} downloading as an +option. + +@sp 1 +@item +Builtin features offer mechanisms to tune which links you wish to follow +(@xref{Following Links}). + +@sp 1 +@item +The retrieval is conveniently traced with printing dots, each dot +representing a fixed amount of data received (1KB by default). These +representations can be customized to your preferences. + +@sp 1 +@item +Most of the features are fully configurable, either through command line +options, or via the initialization file @file{.wgetrc} (@xref{Startup +File}). Wget allows you to define @dfn{global} startup files +(@file{/usr/local/etc/wgetrc} by default) for site settings. + +@sp 1 +@item +Finally, GNU Wget is free software. This means that everyone may use +it, redistribute it and/or modify it under the terms of the GNU General +Public License, as published by the Free Software Foundation +(@xref{Copying}). +@end itemize + +@node Invoking, Recursive Retrieval, Overview, Top +@chapter Invoking +@cindex invoking +@cindex command line +@cindex arguments +@cindex nohup + +By default, Wget is very simple to invoke. The basic syntax is: + +@example +wget [@var{option}]@dots{} [@var{URL}]@dots{} +@end example + +Wget will simply download all the @sc{url}s specified on the command +line. @var{URL} is a @dfn{Uniform Resource Locator}, as defined below. + +However, you may wish to change some of the default parameters of +Wget. You can do it two ways: permanently, adding the appropriate +command to @file{.wgetrc} (@xref{Startup File}), or specifying it on +the command line. + +@menu +* URL Format:: +* Option Syntax:: +* Basic Startup Options:: +* Logging and Input File Options:: +* Download Options:: +* Directory Options:: +* HTTP Options:: +* FTP Options:: +* Recursive Retrieval Options:: +* Recursive Accept/Reject Options:: +@end menu + +@node URL Format, Option Syntax, Invoking, Invoking +@section URL Format +@cindex URL +@cindex URL syntax + +@dfn{URL} is an acronym for Uniform Resource Locator. A uniform +resource locator is a compact string representation for a resource +available via the Internet. Wget recognizes the @sc{url} syntax as per +@sc{rfc1738}. This is the most widely used form (square brackets denote +optional parts): + +@example +http://host[:port]/directory/file +ftp://host[:port]/directory/file +@end example + +You can also encode your username and password within a @sc{url}: + +@example +ftp://user:password@@host/path +http://user:password@@host/path +@end example + +Either @var{user} or @var{password}, or both, may be left out. If you +leave out either the @sc{http} username or password, no authentication +will be sent. If you leave out the @sc{ftp} username, @samp{anonymous} +will be used. If you leave out the @sc{ftp} password, your email +address will be supplied as a default password.@footnote{If you have a +@file{.netrc} file in your home directory, password will also be +searched for there.} + +You can encode unsafe characters in a @sc{url} as @samp{%xy}, @code{xy} +being the hexadecimal representation of the character's @sc{ascii} +value. Some common unsafe characters include @samp{%} (quoted as +@samp{%25}), @samp{:} (quoted as @samp{%3A}), and @samp{@@} (quoted as +@samp{%40}). Refer to @sc{rfc1738} for a comprehensive list of unsafe +characters. + +Wget also supports the @code{type} feature for @sc{ftp} @sc{url}s. By +default, @sc{ftp} documents are retrieved in the binary mode (type +@samp{i}), which means that they are downloaded unchanged. Another +useful mode is the @samp{a} (@dfn{ASCII}) mode, which converts the line +delimiters between the different operating systems, and is thus useful +for text files. Here is an example: + +@example +ftp://host/directory/file;type=a +@end example + +Two alternative variants of @sc{url} specification are also supported, +because of historical (hysterical?) reasons and their wide-spreadedness. + +@sc{ftp}-only syntax (supported by @code{NcFTP}): +@example +host:/dir/file +@end example + +@sc{http}-only syntax (introduced by @code{Netscape}): +@example +host[:port]/dir/file +@end example + +These two alternative forms are deprecated, and may cease being +supported in the future. + +If you do not understand the difference between these notations, or do +not know which one to use, just use the plain ordinary format you use +with your favorite browser, like @code{Lynx} or @code{Netscape}. + +@node Option Syntax, Basic Startup Options, URL Format, Invoking +@section Option Syntax +@cindex option syntax +@cindex syntax of options + +Since Wget uses GNU getopts to process its arguments, every option has a +short form and a long form. Long options are more convenient to +remember, but take time to type. You may freely mix different option +styles, or specify options after the command-line arguments. Thus you +may write: + +@example +wget -r --tries=10 http://fly.cc.fer.hr/ -o log +@end example + +The space between the option accepting an argument and the argument may +be omitted. Instead @samp{-o log} you can write @samp{-olog}. + +You may put several options that do not require arguments together, +like: + +@example +wget -drc @var{URL} +@end example + +This is a complete equivalent of: + +@example +wget -d -r -c @var{URL} +@end example + +Since the options can be specified after the arguments, you may +terminate them with @samp{--}. So the following will try to download +@sc{url} @samp{-x}, reporting failure to @file{log}: + +@example +wget -o log -- -x +@end example + +The options that accept comma-separated lists all respect the convention +that specifying an empty list clears its value. This can be useful to +clear the @file{.wgetrc} settings. For instance, if your @file{.wgetrc} +sets @code{exclude_directories} to @file{/cgi-bin}, the following +example will first reset it, and then set it to exclude @file{/~nobody} +and @file{/~somebody}. You can also clear the lists in @file{.wgetrc} +(@xref{Wgetrc Syntax}). + +@example +wget -X '' -X /~nobody,/~somebody +@end example + +@node Basic Startup Options, Logging and Input File Options, Option Syntax, Invoking +@section Basic Startup Options + +@table @samp +@item -V +@itemx --version +Display the version of Wget. + +@item -h +@itemx --help +Print a help message describing all of Wget's command-line options. + +@item -b +@itemx --background +Go to background immediately after startup. If no output file is +specified via the @samp{-o}, output is redirected to @file{wget-log}. + +@cindex execute wgetrc command +@item -e @var{command} +@itemx --execute @var{command} +Execute @var{command} as if it were a part of @file{.wgetrc} +(@xref{Startup File}). A command thus invoked will be executed +@emph{after} the commands in @file{.wgetrc}, thus taking precedence over +them. +@end table + +@node Logging and Input File Options, Download Options, Basic Startup Options, Invoking +@section Logging and Input File Options + +@table @samp +@cindex output file +@cindex log file +@item -o @var{logfile} +@itemx --output-file=@var{logfile} +Log all messages to @var{logfile}. The messages are normally reported +to standard error. + +@cindex append to log +@item -a @var{logfile} +@itemx --append-output=@var{logfile} +Append to @var{logfile}. This is the same as @samp{-o}, only it appends +to @var{logfile} instead of overwriting the old log file. If +@var{logfile} does not exist, a new file is created. + +@cindex debug +@item -d +@itemx --debug +Turn on debug output, meaning various information important to the +developers of Wget if it does not work properly. Your system +administrator may have chosen to compile Wget without debug support, in +which case @samp{-d} will not work. Please note that compiling with +debug support is always safe---Wget compiled with the debug support will +@emph{not} print any debug info unless requested with @samp{-d}. +@xref{Reporting Bugs} for more information on how to use @samp{-d} for +sending bug reports. + +@cindex quiet +@item -q +@itemx --quiet +Turn off Wget's output. + +@cindex verbose +@item -v +@itemx --verbose +Turn on verbose output, with all the available data. The default output +is verbose. + +@item -nv +@itemx --non-verbose +Non-verbose output---turn off verbose without being completely quiet +(use @samp{-q} for that), which means that error messages and basic +information still get printed. + +@cindex input-file +@item -i @var{file} +@itemx --input-file=@var{file} +Read @sc{url}s from @var{file}, in which case no @sc{url}s need to be on +the command line. If there are @sc{url}s both on the command line and +in an input file, those on the command lines will be the first ones to +be retrieved. The @var{file} need not be an @sc{html} document (but no +harm if it is)---it is enough if the @sc{url}s are just listed +sequentially. + +However, if you specify @samp{--force-html}, the document will be +regarded as @samp{html}. In that case you may have problems with +relative links, which you can solve either by adding @code{} to the documents or by specifying +@samp{--base=@var{url}} on the command line. + +@cindex force html +@item -F +@itemx --force-html +When input is read from a file, force it to be treated as an @sc{html} +file. This enables you to retrieve relative links from existing +@sc{html} files on your local disk, by adding @code{} to @sc{html}, or using the @samp{--base} command-line +option. +@end table + +@node Download Options, Directory Options, Logging and Input File Options, Invoking +@section Download Options + +@table @samp +@cindex retries +@cindex tries +@cindex number of retries +@item -t @var{number} +@itemx --tries=@var{number} +Set number of retries to @var{number}. Specify 0 or @samp{inf} for +infinite retrying. + +@item -O @var{file} +@itemx --output-document=@var{file} +The documents will not be written to the appropriate files, but all will +be concatenated together and written to @var{file}. If @var{file} +already exists, it will be overwritten. If the @var{file} is @samp{-}, +the documents will be written to standard output. Including this option +automatically sets the number of tries to 1. + +@cindex no-clobber +@item -nc +@itemx --no-clobber +Do not clobber existing files when saving to directory hierarchy within +recursive retrieval of several files. This option is @emph{extremely} +useful when you wish to continue where you left off with retrieval of +many files. If the files have the @samp{.html} or (yuck) @samp{.htm} +suffix, they will be loaded from the local disk, and parsed as if they +have been retrieved from the Web. + +@cindex continue retrieval +@item -c +@itemx --continue +Continue getting an existing file. This is useful when you want to +finish up the download started by another program, or a previous +instance of Wget. Thus you can write: + +@example +wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z +@end example + +If there is a file name @file{ls-lR.Z} in the current directory, Wget +will assume that it is the first portion of the remote file, and will +require the server to continue the retrieval from an offset equal to the +length of the local file. + +Note that you need not specify this option if all you want is Wget to +continue retrieving where it left off when the connection is lost---Wget +does this by default. You need this option only when you want to +continue retrieval of a file already halfway retrieved, saved by another +@sc{ftp} client, or left by Wget being killed. + +Without @samp{-c}, the previous example would just begin to download the +remote file to @file{ls-lR.Z.1}. The @samp{-c} option is also +applicable for @sc{http} servers that support the @code{Range} header. + +@cindex dot style +@cindex retrieval tracing style +@item --dot-style=@var{style} +Set the retrieval style to @var{style}. Wget traces the retrieval of +each document by printing dots on the screen, each dot representing a +fixed amount of retrieved data. Any number of dots may be separated in +a @dfn{cluster}, to make counting easier. This option allows you to +choose one of the pre-defined styles, determining the number of bytes +represented by a dot, the number of dots in a cluster, and the number of +dots on the line. + +With the @code{default} style each dot represents 1K, there are ten dots +in a cluster and 50 dots in a line. The @code{binary} style has a more +``computer''-like orientation---8K dots, 16-dots clusters and 48 dots +per line (which makes for 384K lines). The @code{mega} style is +suitable for downloading very large files---each dot represents 64K +retrieved, there are eight dots in a cluster, and 48 dots on each line +(so each line contains 3M). The @code{micro} style is exactly the +reverse; it is suitable for downloading small files, with 128-byte dots, +8 dots per cluster, and 48 dots (6K) per line. + +@item -N +@itemx --timestamping +Turn on time-stamping. @xref{Time-Stamping} for details. + +@cindex server response, print +@item -S +@itemx --server-response +Print the headers sent by @sc{http} servers and responses sent by +@sc{ftp} servers. + +@cindex Wget as spider +@cindex spider +@item --spider +When invoked with this option, Wget will behave as a Web @dfn{spider}, +which means that it will not download the pages, just check that they +are there. You can use it to check your bookmarks, e.g. with: + +@example +wget --spider --force-html -i bookmarks.html +@end example + +This feature needs much more work for Wget to get close to the +functionality of real @sc{www} spiders. + +@cindex timeout +@item -T seconds +@itemx --timeout=@var{seconds} +Set the read timeout to @var{seconds} seconds. Whenever a network read +is issued, the file descriptor is checked for a timeout, which could +otherwise leave a pending connection (uninterrupted read). The default +timeout is 900 seconds (fifteen minutes). Setting timeout to 0 will +disable checking for timeouts. + +Please do not lower the default timeout value with this option unless +you know what you are doing. + +@cindex pause +@cindex wait +@item -w @var{seconds} +@itemx --wait=@var{seconds} +Wait the specified number of seconds between the retrievals. Use of +this option is recommended, as it lightens the server load by making the +requests less frequent. Instead of in seconds, the time can be +specified in minutes using the @code{m} suffix, in hours using @code{h} +suffix, or in days using @code{d} suffix. + +Specifying a large value for this option is useful if the network or the +destination host is down, so that Wget can wait long enough to +reasonably expect the network error to be fixed before the retry. + +@cindex proxy +@item -Y on/off +@itemx --proxy=on/off +Turn proxy support on or off. The proxy is on by default if the +appropriate environmental variable is defined. + +@cindex quota +@item -Q @var{quota} +@itemx --quota=@var{quota} +Specify download quota for automatic retrievals. The value can be +specified in bytes (default), kilobytes (with @samp{k} suffix), or +megabytes (with @samp{m} suffix). + +Note that quota will never affect downloading a single file. So if you +specify @samp{wget -Q10k ftp://wuarchive.wustl.edu/ls-lR.gz}, all of the +@file{ls-lR.gz} will be downloaded. The same goes even when several +@sc{url}s are specified on the command-line. However, quota is +respected when retrieving either recursively, or from an input file. +Thus you may safely type @samp{wget -Q2m -i sites}---download will be +aborted when the quota is exceeded. + +Setting quota to 0 or to @samp{inf} unlimits the download quota. +@end table + +@node Directory Options, HTTP Options, Download Options, Invoking +@section Directory Options + +@table @samp +@item -nd +@itemx --no-directories +Do not create a hierarchy of directories when retrieving +recursively. With this option turned on, all files will get saved to the +current directory, without clobbering (if a name shows up more than +once, the filenames will get extensions @samp{.n}). + +@item -x +@itemx --force-directories +The opposite of @samp{-nd}---create a hierarchy of directories, even if +one would not have been created otherwise. E.g. @samp{wget -x +http://fly.cc.fer.hr/robots.txt} will save the downloaded file to +@file{fly.cc.fer.hr/robots.txt}. + +@item -nH +@itemx --no-host-directories +Disable generation of host-prefixed directories. By default, invoking +Wget with @samp{-r http://fly.cc.fer.hr/} will create a structure of +directories beginning with @file{fly.cc.fer.hr/}. This option disables +such behavior. + +@cindex cut directories +@item --cut-dirs=@var{number} +Ignore @var{number} directory components. This is useful for getting a +fine-grained control over the directory where recursive retrieval will +be saved. + +Take, for example, the directory at +@samp{ftp://ftp.xemacs.org/pub/xemacs/}. If you retrieve it with +@samp{-r}, it will be saved locally under +@file{ftp.xemacs.org/pub/xemacs/}. While the @samp{-nH} option can +remove the @file{ftp.xemacs.org/} part, you are still stuck with +@file{pub/xemacs}. This is where @samp{--cut-dirs} comes in handy; it +makes Wget not ``see'' @var{number} remote directory components. Here +are several examples of how @samp{--cut-dirs} option works. + +@example +@group +No options -> ftp.xemacs.org/pub/xemacs/ +-nH -> pub/xemacs/ +-nH --cut-dirs=1 -> xemacs/ +-nH --cut-dirs=2 -> . + +--cut-dirs=1 -> ftp.xemacs.org/xemacs/ +... +@end group +@end example + +If you just want to get rid of the directory structure, this option is +similar to a combination of @samp{-nd} and @samp{-P}. However, unlike +@samp{-nd}, @samp{--cut-dirs} does not lose with subdirectories---for +instance, with @samp{-nH --cut-dirs=1}, a @file{beta/} subdirectory will +be placed to @file{xemacs/beta}, as one would expect. + +@cindex directory prefix +@item -P @var{prefix} +@itemx --directory-prefix=@var{prefix} +Set directory prefix to @var{prefix}. The @dfn{directory prefix} is the +directory where all other files and subdirectories will be saved to, +i.e. the top of the retrieval tree. The default is @samp{.} (the +current directory). +@end table + +@node HTTP Options, FTP Options, Directory Options, Invoking +@section HTTP Options + +@table @samp +@cindex http user +@cindex http password +@cindex authentication +@item --http-user=@var{user} +@itemx --http-passwd=@var{password} +Specify the username @var{user} and password @var{password} on an +@sc{http} server. According to the type of the challenge, Wget will +encode them using either the @code{basic} (insecure) or the +@code{digest} authentication scheme. + +Another way to specify username and password is in the @sc{url} itself +(@xref{URL Format}). For more information about security issues with +Wget, @xref{Security Considerations}. + +@cindex proxy +@cindex cache +@item -C on/off +@itemx --cache=on/off +When set to off, disable server-side cache. In this case, Wget will +send the remote server an appropriate directive (@samp{Pragma: +no-cache}) to get the file from the remote service, rather than +returning the cached version. This is especially useful for retrieving +and flushing out-of-date documents on proxy servers. + +Caching is allowed by default. + +@cindex Content-Length, ignore +@cindex ignore length +@item --ignore-length +Unfortunately, some @sc{http} servers (@sc{cgi} programs, to be more +precise) send out bogus @code{Content-Length} headers, which makes Wget +go wild, as it thinks not all the document was retrieved. You can spot +this syndrome if Wget retries getting the same document again and again, +each time claiming that the (otherwise normal) connection has closed on +the very same byte. + +With this option, Wget will ignore the @code{Content-Length} header---as +if it never existed. + +@cindex header, add +@item --header=@var{additional-header} +Define an @var{additional-header} to be passed to the @sc{http} servers. +Headers must contain a @samp{:} preceded by one or more non-blank +characters, and must not contain newlines. + +You may define more than one additional header by specifying +@samp{--header} more than once. + +@example +@group +wget --header='Accept-Charset: iso-8859-2' \ + --header='Accept-Language: hr' \ + http://fly.cc.fer.hr/ +@end group +@end example + +Specification of an empty string as the header value will clear all +previous user-defined headers. + +@cindex proxy user +@cindex proxy password +@cindex proxy authentication +@item --proxy-user=@var{user} +@itemx --proxy-passwd=@var{password} +Specify the username @var{user} and password @var{password} for +authentication on a proxy server. Wget will encode them using the +@code{basic} authentication scheme. + +@cindex server response, save +@item -s +@itemx --save-headers +Save the headers sent by the @sc{http} server to the file, preceding the +actual contents, with an empty line as the separator. + +@cindex user-agent +@item -U @var{agent-string} +@itemx --user-agent=@var{agent-string} +Identify as @var{agent-string} to the @sc{http} server. + +The @sc{http} protocol allows the clients to identify themselves using a +@code{User-Agent} header field. This enables distinguishing the +@sc{www} software, usually for statistical purposes or for tracing of +protocol violations. Wget normally identifies as +@samp{Wget/@var{version}}, @var{version} being the current version +number of Wget. + +However, some sites have been known to impose the policy of tailoring +the output according to the @code{User-Agent}-supplied information. +While conceptually this is not such a bad idea, it has been abused by +servers denying information to clients other than @code{Mozilla} or +Microsoft @code{Internet Explorer}. This option allows you to change +the @code{User-Agent} line issued by Wget. Use of this option is +discouraged, unless you really know what you are doing. + +@strong{NOTE} that Netscape Communications Corp. has claimed that false +transmissions of @samp{Mozilla} as the @code{User-Agent} are a copyright +infringement, which will be prosecuted. @strong{DO NOT} misrepresent +Wget as Mozilla. +@end table + +@node FTP Options, Recursive Retrieval Options, HTTP Options, Invoking +@section FTP Options + +@table @samp +@cindex retrieve symbolic links +@item --retr-symlinks +Retrieve symbolic links on @sc{ftp} sites as if they were plain files, +i.e. don't just create links locally. + +@cindex globbing, toggle +@item -g on/off +@itemx --glob=on/off +Turn @sc{ftp} globbing on or off. Globbing means you may use the +shell-like special characters (@dfn{wildcards}), like @samp{*}, +@samp{?}, @samp{[} and @samp{]} to retrieve more than one file from the +same directory at once, like: + +@example +wget ftp://gnjilux.cc.fer.hr/*.msg +@end example + +By default, globbing will be turned on if the @sc{url} contains a +globbing character. This option may be used to turn globbing on or off +permanently. + +You may have to quote the @sc{url} to protect it from being expanded by +your shell. Globbing makes Wget look for a directory listing, which is +system-specific. This is why it currently works only with Unix @sc{ftp} +servers (and the ones emulating Unix @code{ls} output). + +@cindex passive ftp +@item --passive-ftp +Use the @dfn{passive} @sc{ftp} retrieval scheme, in which the client +initiates the data connection. This is sometimes required for @sc{ftp} +to work behind firewalls. +@end table + +@node Recursive Retrieval Options, Recursive Accept/Reject Options, FTP Options, Invoking +@section Recursive Retrieval Options + +@table @samp +@item -r +@itemx --recursive +Turn on recursive retrieving. @xref{Recursive Retrieval} for more +details. + +@item -l @var{depth} +@itemx --level=@var{depth} +Specify recursion maximum depth level @var{depth} (@xref{Recursive +Retrieval}). The default maximum depth is 5. + +@cindex proxy filling +@cindex delete after retrieval +@cindex filling proxy cache +@item --delete-after +This option tells Wget to delete every single file it downloads, +@emph{after} having done so. It is useful for pre-fetching popular +pages through proxy, e.g.: + +@example +wget -r -nd --delete-after http://whatever.com/~popular/page/ +@end example + +The @samp{-r} option is to retrieve recursively, and @samp{-nd} not to +create directories. + +@cindex conversion of links +@cindex links conversion +@item -k +@itemx --convert-links +Convert the non-relative links to relative ones locally. Only the +references to the documents actually downloaded will be converted; the +rest will be left unchanged. + +Note that only at the end of the download can Wget know which links have +been downloaded. Because of that, much of the work done by @samp{-k} +will be performed at the end of the downloads. + +@item -m +@itemx --mirror +Turn on options suitable for mirroring. This option turns on recursion +and time-stamping, sets infinite recursion depth and keeps @sc{ftp} +directory listings. It is currently equivalent to +@samp{-r -N -l inf -nr}. + +@item -nr +@itemx --dont-remove-listing +Don't remove the temporary @file{.listing} files generated by @sc{ftp} +retrievals. Normally, these files contain the raw directory listings +received from @sc{ftp} servers. Not removing them can be useful to +access the full remote file list when running a mirror, or for debugging +purposes. +@end table + +@node Recursive Accept/Reject Options, , Recursive Retrieval Options, Invoking +@section Recursive Accept/Reject Options + +@table @samp +@item -A @var{acclist} --accept @var{acclist} +@itemx -R @var{rejlist} --reject @var{rejlist} +Specify comma-separated lists of file name suffixes or patterns to +accept or reject (@xref{Types of Files} for more details). + +@item -D @var{domain-list} +@itemx --domains=@var{domain-list} +Set domains to be accepted and @sc{dns} looked-up, where +@var{domain-list} is a comma-separated list. Note that it does +@emph{not} turn on @samp{-H}. This option speeds things up, even if +only one host is spanned (@xref{Domain Acceptance}). + +@item --exclude-domains @var{domain-list} +Exclude the domains given in a comma-separated @var{domain-list} from +@sc{dns}-lookup (@xref{Domain Acceptance}). + +@item -L +@itemx --relative +Follow relative links only. Useful for retrieving a specific home page +without any distractions, not even those from the same hosts +(@xref{Relative Links}). + +@cindex follow FTP links +@item --follow-ftp +Follow @sc{ftp} links from @sc{html} documents. Without this option, +Wget will ignore all the @sc{ftp} links. + +@item -H +@itemx --span-hosts +Enable spanning across hosts when doing recursive retrieving (@xref{All +Hosts}). + +@item -I @var{list} +@itemx --include-directories=@var{list} +Specify a comma-separated list of directories you wish to follow when +downloading (@xref{Directory-Based Limits} for more details.) Elements +of @var{list} may contain wildcards. + +@item -X @var{list} +@itemx --exclude-directories=@var{list} +Specify a comma-separated list of directories you wish to exclude from +download (@xref{Directory-Based Limits} for more details.) Elements of +@var{list} may contain wildcards. + +@item -nh +@itemx --no-host-lookup +Disable the time-consuming @sc{dns} lookup of almost all hosts +(@xref{Host Checking}). + +@item -np +@item --no-parent +Do not ever ascend to the parent directory when retrieving recursively. +This is a useful option, since it guarantees that only the files +@emph{below} a certain hierarchy will be downloaded. +@xref{Directory-Based Limits} for more details. +@end table + +@node Recursive Retrieval, Following Links, Invoking, Top +@chapter Recursive Retrieval +@cindex recursion +@cindex retrieving +@cindex recursive retrieval + +GNU Wget is capable of traversing parts of the Web (or a single +@sc{http} or @sc{ftp} server), depth-first following links and directory +structure. This is called @dfn{recursive} retrieving, or +@dfn{recursion}. + +With @sc{http} @sc{url}s, Wget retrieves and parses the @sc{html} from +the given @sc{url}, documents, retrieving the files the @sc{html} +document was referring to, through markups like @code{href}, or +@code{src}. If the freshly downloaded file is also of type +@code{text/html}, it will be parsed and followed further. + +The maximum @dfn{depth} to which the retrieval may descend is specified +with the @samp{-l} option (the default maximum depth is five layers). +@xref{Recursive Retrieval}. + +When retrieving an @sc{ftp} @sc{url} recursively, Wget will retrieve all +the data from the given directory tree (including the subdirectories up +to the specified depth) on the remote server, creating its mirror image +locally. @sc{ftp} retrieval is also limited by the @code{depth} +parameter. + +By default, Wget will create a local directory tree, corresponding to +the one found on the remote server. + +Recursive retrieving can find a number of applications, the most +important of which is mirroring. It is also useful for @sc{www} +presentations, and any other opportunities where slow network +connections should be bypassed by storing the files locally. + +You should be warned that invoking recursion may cause grave overloading +on your system, because of the fast exchange of data through the +network; all of this may hamper other users' work. The same stands for +the foreign server you are mirroring---the more requests it gets in a +rows, the greater is its load. + +Careless retrieving can also fill your file system unctrollably, which +can grind the machine to a halt. + +The load can be minimized by lowering the maximum recursion level +(@samp{-l}) and/or by lowering the number of retries (@samp{-t}). You +may also consider using the @samp{-w} option to slow down your requests +to the remote servers, as well as the numerous options to narrow the +number of followed links (@xref{Following Links}). + +Recursive retrieval is a good thing when used properly. Please take all +precautions not to wreak havoc through carelessness. + +@node Following Links, Time-Stamping, Recursive Retrieval, Top +@chapter Following Links +@cindex links +@cindex following links + +When retrieving recursively, one does not wish to retrieve the loads of +unnecessary data. Most of the time the users bear in mind exactly what +they want to download, and want Wget to follow only specific links. + +For example, if you wish to download the music archive from +@samp{fly.cc.fer.hr}, you will not want to download all the home pages +that happen to be referenced by an obscure part of the archive. + +Wget possesses several mechanisms that allows you to fine-tune which +links it will follow. + +@menu +* Relative Links:: Follow relative links only. +* Host Checking:: Follow links on the same host. +* Domain Acceptance:: Check on a list of domains. +* All Hosts:: No host restrictions. +* Types of Files:: Getting only certain files. +* Directory-Based Limits:: Getting only certain directories. +* FTP Links:: Following FTP links. +@end menu + +@node Relative Links, Host Checking, Following Links, Following Links +@section Relative Links +@cindex relative links + +When only relative links are followed (option @samp{-L}), recursive +retrieving will never span hosts. No time-expensive @sc{dns}-lookups +will be performed, and the process will be very fast, with the minimum +strain of the network. This will suit your needs often, especially when +mirroring the output of various @code{x2html} converters, since they +generally output relative links. + +@node Host Checking, Domain Acceptance, Relative Links, Following Links +@section Host Checking +@cindex DNS lookup +@cindex host lookup +@cindex host checking + +The drawback of following the relative links solely is that humans often +tend to mix them with absolute links to the very same host, and the very +same page. In this mode (which is the default mode for following links) +all @sc{url}s the that refer to the same host will be retrieved. + +The problem with this option are the aliases of the hosts and domains. +Thus there is no way for Wget to know that @samp{regoc.srce.hr} and +@samp{www.srce.hr} are the same host, or that @samp{fly.cc.fer.hr} is +the same as @samp{fly.cc.etf.hr}. Whenever an absolute link is +encountered, the host is @sc{dns}-looked-up with @code{gethostbyname} to +check whether we are maybe dealing with the same hosts. Although the +results of @code{gethostbyname} are cached, it is still a great +slowdown, e.g. when dealing with large indices of home pages on different +hosts (because each of the hosts must be and @sc{dns}-resolved to see +whether it just @emph{might} an alias of the starting host). + +To avoid the overhead you may use @samp{-nh}, which will turn off +@sc{dns}-resolving and make Wget compare hosts literally. This will +make things run much faster, but also much less reliable +(e.g. @samp{www.srce.hr} and @samp{regoc.srce.hr} will be flagged as +different hosts). + +Note that modern @sc{http} servers allows one IP address to host several +@dfn{virtual servers}, each having its own directory hieratchy. Such +``servers'' are distinguished by their hostnames (all of which point to +the same IP address); for this to work, a client must send a @code{Host} +header, which is what Wget does. However, in that case Wget @emph{must +not} try to divine a host's ``real'' address, nor try to use the same +hostname for each access, i.e. @samp{-nh} must be turned on. + +In other words, the @samp{-nh} option must be used to enabling the +retrieval from virtual servers distinguished by their hostnames. As the +number of such server setups grow, the behavior of @samp{-nh} may become +the default in the future. + +@node Domain Acceptance, All Hosts, Host Checking, Following Links +@section Domain Acceptance + +With the @samp{-D} option you may specify the domains that will be +followed. The hosts the domain of which is not in this list will not be +@sc{dns}-resolved. Thus you can specify @samp{-Dmit.edu} just to make +sure that @strong{nothing outside of @sc{mit} gets looked up}. This is +very important and useful. It also means that @samp{-D} does @emph{not} +imply @samp{-H} (span all hosts), which must be specified explicitly. +Feel free to use this options since it will speed things up, with almost +all the reliability of checking for all hosts. Thus you could invoke + +@example +wget -r -D.hr http://fly.cc.fer.hr/ +@end example + +to make sure that only the hosts in @samp{.hr} domain get +@sc{dns}-looked-up for being equal to @samp{fly.cc.fer.hr}. So +@samp{fly.cc.etf.hr} will be checked (only once!) and found equal, but +@samp{www.gnu.ai.mit.edu} will not even be checked. + +Of course, domain acceptance can be used to limit the retrieval to +particular domains with spanning of hosts in them, but then you must +specify @samp{-H} explicitly. E.g.: + +@example +wget -r -H -Dmit.edu,stanford.edu http://www.mit.edu/ +@end example + +will start with @samp{http://www.mit.edu/}, following links across +@sc{mit} and Stanford. + +If there are domains you want to exclude specifically, you can do it +with @samp{--exclude-domains}, which accepts the same type of arguments +of @samp{-D}, but will @emph{exclude} all the listed domains. For +example, if you want to download all the hosts from @samp{foo.edu} +domain, with the exception of @samp{sunsite.foo.edu}, you can do it like +this: + +@example +wget -rH -Dfoo.edu --exclude-domains sunsite.foo.edu http://www.foo.edu/ +@end example + +@node All Hosts, Types of Files, Domain Acceptance, Following Links +@section All Hosts +@cindex all hosts +@cindex span hosts + +When @samp{-H} is specified without @samp{-D}, all hosts are freely +spanned. There are no restrictions whatsoever as to what part of the +net Wget will go to fetch documents, other than maximum retrieval depth. +If a page references @samp{www.yahoo.com}, so be it. Such an option is +rarely useful for itself. + +@node Types of Files, Directory-Based Limits, All Hosts, Following Links +@section Types of Files +@cindex types of files + +When downloading material from the web, you will often want to restrict +the retrieval to only certain file types. For example, if you are +interested in downloading @sc{gifs}, you will not be overjoyed to get +loads of Postscript documents, and vice versa. + +Wget offers two options to deal with this problem. Each option +description lists a short name, a long name, and the equivalent command +in @file{.wgetrc}. + +@cindex accept wildcards +@cindex accept suffixes +@cindex wildcards, accept +@cindex suffixes, accept +@table @samp +@item -A @var{acclist} +@itemx --accept @var{acclist} +@itemx accept = @var{acclist} +The argument to @samp{--accept} option is a list of file suffixes or +patterns that Wget will download during recursive retrieval. A suffix +is the ending part of a file, and consists of ``normal'' letters, +e.g. @samp{gif} or @samp{.jpg}. A matching pattern contains shell-like +wildcards, e.g. @samp{books*} or @samp{zelazny*196[0-9]*}. + +So, specifying @samp{wget -A gif,jpg} will make Wget download only the +files ending with @samp{gif} or @samp{jpg}, i.e. @sc{gif}s and +@sc{jpeg}s. On the other hand, @samp{wget -A "zelazny*196[0-9]*"} will +download only files beginning with @samp{zelazny} and containing numbers +from 1960 to 1969 anywhere within. Look up the manual of your shell for +a description of how pattern matching works. + +Of course, any number of suffixes and patterns can be combined into a +comma-separated list, and given as an argument to @samp{-A}. + +@cindex reject wildcards +@cindex reject suffixes +@cindex wildcards, reject +@cindex suffixes, reject +@item -R @var{rejlist} +@itemx --reject @var{rejlist} +@itemx reject = @var{rejlist} +The @samp{--reject} option works the same way as @samp{--accept}, only +its logic is the reverse; Wget will download all files @emph{except} the +ones matching the suffixes (or patterns) in the list. + +So, if you want to download a whole page except for the cumbersome +@sc{mpeg}s and @sc{.au} files, you can use @samp{wget -R mpg,mpeg,au}. +Analogously, to download all files except the ones beginning with +@samp{bjork}, use @samp{wget -R "bjork*"}. The quotes are to prevent +expansion by the shell. +@end table + +The @samp{-A} and @samp{-R} options may be combined to achieve even +better fine-tuning of which files to retrieve. E.g. @samp{wget -A +"*zelazny*" -R .ps} will download all the files having @samp{zelazny} as +a part of their name, but @emph{not} the postscript files. + +Note that these two options do not affect the downloading of @sc{html} +files; Wget must load all the @sc{html}s to know where to go at +all---recursive retrieval would make no sense otherwise. + +@node Directory-Based Limits, FTP Links, Types of Files, Following Links +@section Directory-Based Limits +@cindex directories +@cindex directory limits + +Regardless of other link-following facilities, it is often useful to +place the restriction of what files to retrieve based on the directories +those files are placed in. There can be many reasons for this---the +home pages may be organized in a reasonable directory structure; or some +directories may contain useless information, e.g. @file{/cgi-bin} or +@file{/dev} directories. + +Wget offers three different options to deal with this requirement. Each +option description lists a short name, a long name, and the equivalent +command in @file{.wgetrc}. + +@cindex directories, include +@cindex include directories +@cindex accept directories +@table @samp +@item -I @var{list} +@itemx --include @var{list} +@itemx include_directories = @var{list} +@samp{-I} option accepts a comma-separated list of directories included +in the retrieval. Any other directories will simply be ignored. The +directories are absolute paths. + +So, if you wish to download from @samp{http://host/people/bozo/} +following only links to bozo's colleagues in the @file{/people} +directory and the bogus scripts in @file{/cgi-bin}, you can specify: + +@example +wget -I /people,/cgi-bin http://host/people/bozo/ +@end example + +@cindex directories, exclude +@cindex exclude directories +@cindex reject directories +@item -X @var{list} +@itemx --exclude @var{list} +@itemx exclude_directories = @var{list} +@samp{-X} option is exactly the reverse of @samp{-I}---this is a list of +directories @emph{excluded} from the download. E.g. if you do not want +Wget to download things from @file{/cgi-bin} directory, specify @samp{-X +/cgi-bin} on the command line. + +The same as with @samp{-A}/@samp{-R}, these two options can be combined +to get a better fine-tuning of downloading subdirectories. E.g. if you +want to load all the files from @file{/pub} hierarchy except for +@file{/pub/worthless}, specify @samp{-I/pub -X/pub/worthless}. + +@cindex no parent +@item -np +@itemx --no-parent +@itemx no_parent = on +The simplest, and often very useful way of limiting directories is +disallowing retrieval of the links that refer to the hierarchy +@dfn{upper} than the beginning directory, i.e. disallowing ascent to the +parent directory/directories. + +The @samp{--no-parent} option (short @samp{-np}) is useful in this case. +Using it guarantees that you will never leave the existing hierarchy. +Supposing you issue Wget with: + +@example +wget -r --no-parent http://somehost/~luzer/my-archive/ +@end example + +You may rest assured that none of the references to +@file{/~his-girls-homepage/} or @file{/~luzer/all-my-mpegs/} will be +followed. Only the archive you are interested in will be downloaded. +Essentially, @samp{--no-parent} is similar to +@samp{-I/~luzer/my-archive}, only it handles redirections in a more +intelligent fashion. +@end table + +@node FTP Links, , Directory-Based Limits, Following Links +@section Following FTP Links +@cindex following ftp links + +The rules for @sc{ftp} are somewhat specific, as it is necessary for +them to be. @sc{ftp} links in @sc{html} documents are often included +for purposes of reference, and it is often inconvenient to download them +by default. + +To have @sc{ftp} links followed from @sc{html} documents, you need to +specify the @samp{--follow-ftp} option. Having done that, @sc{ftp} +links will span hosts regardless of @samp{-H} setting. This is logical, +as @sc{ftp} links rarely point to the same host where the @sc{http} +server resides. For similar reasons, the @samp{-L} options has no +effect on such downloads. On the other hand, domain acceptance +(@samp{-D}) and suffix rules (@samp{-A} and @samp{-R}) apply normally. + +Also note that followed links to @sc{ftp} directories will not be +retrieved recursively further. + +@node Time-Stamping, Startup File, Following Links, Top +@chapter Time-Stamping +@cindex time-stamping +@cindex timestamping +@cindex updating the archives +@cindex incremental updating + +One of the most important aspects of mirroring information from the +Internet is updating your archives. + +Downloading the whole archive again and again, just to replace a few +changed files is expensive, both in terms of wasted bandwidth and money, +and the time to do the update. This is why all the mirroring tools +offer the option of incremental updating. + +Such an updating mechanism means that the remote server is scanned in +search of @dfn{new} files. Only those new files will be downloaded in +the place of the old ones. + +A file is considered new if one of these two conditions are met: + +@enumerate +@item +A file of that name does not already exist locally. + +@item +A file of that name does exist, but the remote file was modified more +recently than the local file. +@end enumerate + +To implement this, the program needs to be aware of the time of last +modification of both remote and local files. Such information are +called the @dfn{time-stamps}. + +The time-stamping in GNU Wget is turned on using @samp{--timestamping} +(@samp{-N}) option, or through @code{timestamping = on} directive in +@file{.wgetrc}. With this option, for each file it intends to download, +Wget will check whether a local file of the same name exists. If it +does, and the remote file is older, Wget will not download it. + +If the local file does not exist, or the sizes of the files do not +match, Wget will download the remote file no matter what the time-stamps +say. + +@menu +* Time-Stamping Usage:: +* HTTP Time-Stamping Internals:: +* FTP Time-Stamping Internals:: +@end menu + +@node Time-Stamping Usage, HTTP Time-Stamping Internals, Time-Stamping, Time-Stamping +@section Time-Stamping Usage +@cindex time-stamping usage +@cindex usage, time-stamping + +The usage of time-stamping is simple. Say you would like to download a +file so that it keeps its date of modification. + +@example +wget -S http://www.gnu.ai.mit.edu/ +@end example + +A simple @code{ls -l} shows that the time stamp on the local file equals +the state of the @code{Last-Modified} header, as returned by the server. +As you can see, the time-stamping info is preserved locally, even +without @samp{-N}. + +Several days later, you would like Wget to check if the remote file has +changed, and download it if it has. + +@example +wget -N http://www.gnu.ai.mit.edu/ +@end example + +Wget will ask the server for the last-modified date. If the local file +is newer, the remote file will not be re-fetched. However, if the remote +file is more recent, Wget will proceed fetching it normally. + +The same goes for @sc{ftp}. For example: + +@example +wget ftp://ftp.ifi.uio.no/pub/emacs/gnus/* +@end example + +@code{ls} will show that the timestamps are set according to the state +on the remote server. Reissuing the command with @samp{-N} will make +Wget re-fetch @emph{only} the files that have been modified. + +In both @sc{http} and @sc{ftp} retrieval Wget will time-stamp the local +file correctly (with or without @samp{-N}) if it gets the stamps, +i.e. gets the directory listing for @sc{ftp} or the @code{Last-Modified} +header for @sc{http}. + +If you wished to mirror the GNU archive every week, you would use the +following command every week: + +@example +wget --timestamping -r ftp://prep.ai.mit.edu/pub/gnu/ +@end example + +@node HTTP Time-Stamping Internals, FTP Time-Stamping Internals, Time-Stamping Usage, Time-Stamping +@section HTTP Time-Stamping Internals +@cindex http time-stamping + +Time-stamping in @sc{http} is implemented by checking of the +@code{Last-Modified} header. If you wish to retrieve the file +@file{foo.html} through @sc{http}, Wget will check whether +@file{foo.html} exists locally. If it doesn't, @file{foo.html} will be +retrieved unconditionally. + +If the file does exist locally, Wget will first check its local +time-stamp (similar to the way @code{ls -l} checks it), and then send a +@code{HEAD} request to the remote server, demanding the information on +the remote file. + +The @code{Last-Modified} header is examined to find which file was +modified more recently (which makes it ``newer''). If the remote file +is newer, it will be downloaded; if it is older, Wget will give +up.@footnote{As an additional check, Wget will look at the +@code{Content-Length} header, and compare the sizes; if they are not the +same, the remote file will be downloaded no matter what the time-stamp +says.} + +Arguably, @sc{http} time-stamping should be implemented using the +@code{If-Modified-Since} request. + +@node FTP Time-Stamping Internals, , HTTP Time-Stamping Internals, Time-Stamping +@section FTP Time-Stamping Internals +@cindex ftp time-stamping + +In theory, @sc{ftp} time-stamping works much the same as @sc{http}, only +@sc{ftp} has no headers---time-stamps must be received from the +directory listings. + +For each directory files must be retrieved from, Wget will use the +@code{LIST} command to get the listing. It will try to analyze the +listing, assuming that it is a Unix @code{ls -l} listing, and extract +the time-stamps. The rest is exactly the same as for @sc{http}. + +Assumption that every directory listing is a Unix-style listing may +sound extremely constraining, but in practice it is not, as many +non-Unix @sc{ftp} servers use the Unixoid listing format because most +(all?) of the clients understand it. Bear in mind that @sc{rfc959} +defines no standard way to get a file list, let alone the time-stamps. +We can only hope that a future standard will define this. + +Another non-standard solution includes the use of @code{MDTM} command +that is supported by some @sc{ftp} servers (including the popular +@code{wu-ftpd}), which returns the exact time of the specified file. +Wget may support this command in the future. + +@node Startup File, Examples, Time-Stamping, Top +@chapter Startup File +@cindex startup file +@cindex wgetrc +@cindex .wgetrc +@cindex startup +@cindex .netrc + +Once you know how to change default settings of Wget through command +line arguments, you may wish to make some of those settings permanent. +You can do that in a convenient way by creating the Wget startup +file---@file{.wgetrc}. + +Besides @file{.wgetrc} is the ``main'' initialization file, it is +convenient to have a special facility for storing passwords. Thus Wget +reads and interprets the contents of @file{$HOME/.netrc}, if it finds +it. You can find @file{.netrc} format in your system manuals. + +Wget reads @file{.wgetrc} upon startup, recognizing a limited set of +commands. + +@menu +* Wgetrc Location:: Location of various wgetrc files. +* Wgetrc Syntax:: Syntax of wgetrc. +* Wgetrc Commands:: List of available commands. +* Sample Wgetrc:: A wgetrc example. +@end menu + +@node Wgetrc Location, Wgetrc Syntax, Startup File, Startup File +@section Wgetrc Location +@cindex wgetrc location +@cindex location of wgetrc + +When initializing, Wget will look for a @dfn{global} startup file, +@file{/usr/local/etc/wgetrc} by default (or some prefix other than +@file{/usr/local}, if Wget was not installed there) and read commands +from there, if it exists. + +Then it will look for the user's file. If the environmental variable +@code{WGETRC} is set, Wget will try to load that file. Failing that, no +further attempts will be made. + +If @code{WGETRC} is not set, Wget will try to load @file{$HOME/.wgetrc}. + +The fact that user's settings are loaded after the system-wide ones +means that in case of collision user's wgetrc @emph{overrides} the +system-wide wgetrc (in @file{/usr/local/etc/wgetrc} by default). +Fascist admins, away! + +@node Wgetrc Syntax, Wgetrc Commands, Wgetrc Location, Startup File +@section Wgetrc Syntax +@cindex wgetrc syntax +@cindex syntax of wgetrc + +The syntax of a wgetrc command is simple: + +@example +variable = value +@end example + +The @dfn{variable} will also be called @dfn{command}. Valid +@dfn{values} are different for different commands. + +The commands are case-insensitive and underscore-insensitive. Thus +@samp{DIr__PrefiX} is the same as @samp{dirprefix}. Empty lines, lines +beginning with @samp{#} and lines containing white-space only are +discarded. + +Commands that expect a comma-separated list will clear the list on an +empty command. So, if you wish to reset the rejection list specified in +global @file{wgetrc}, you can do it with: + +@example +reject = +@end example + +@node Wgetrc Commands, Sample Wgetrc, Wgetrc Syntax, Startup File +@section Wgetrc Commands +@cindex wgetrc commands + +The complete set of commands is listed below, the letter after @samp{=} +denoting the value the command takes. It is @samp{on/off} for @samp{on} +or @samp{off} (which can also be @samp{1} or @samp{0}), @var{string} for +any non-empty string or @var{n} for a positive integer. For example, +you may specify @samp{use_proxy = off} to disable use of proxy servers +by default. You may use @samp{inf} for infinite values, where +appropriate. + +Most of the commands have their equivalent command-line option +(@xref{Invoking}), except some more obscure or rarely used ones. + +@table @asis +@item accept/reject = @var{string} +Same as @samp{-A}/@samp{-R} (@xref{Types of Files}). + +@item add_hostdir = on/off +Enable/disable host-prefixed file names. @samp{-nH} disables it. + +@item continue = on/off +Enable/disable continuation of the retrieval, the same as @samp{-c} +(which enables it). + +@item background = on/off +Enable/disable going to background, the same as @samp{-b} (which enables +it). + +@c @item backups = @var{number} +@c #### Document me! +@item base = @var{string} +Set base for relative @sc{url}s, the same as @samp{-B}. + +@item cache = on/off +When set to off, disallow server-caching. See the @samp{-C} option. + +@item convert links = on/off +Convert non-relative links locally. The same as @samp{-k}. + +@item cut_dirs = @var{n} +Ignore @var{n} remote directory components. + +@item debug = on/off +Debug mode, same as @samp{-d}. + +@item delete_after = on/off +Delete after download, the same as @samp{--delete-after}. + +@item dir_prefix = @var{string} +Top of directory tree, the same as @samp{-P}. + +@item dirstruct = on/off +Turning dirstruct on or off, the same as @samp{-x} or @samp{-nd}, +respectively. + +@item domains = @var{string} +Same as @samp{-D} (@xref{Domain Acceptance}). + +@item dot_bytes = @var{n} +Specify the number of bytes ``contained'' in a dot, as seen throughout +the retrieval (1024 by default). You can postfix the value with +@samp{k} or @samp{m}, representing kilobytes and megabytes, +respectively. With dot settings you can tailor the dot retrieval to +suit your needs, or you can use the predefined @dfn{styles} +(@xref{Download Options}). + +@item dots_in_line = @var{n} +Specify the number of dots that will be printed in each line throughout +the retrieval (50 by default). + +@item dot_spacing = @var{n} +Specify the number of dots in a single cluster (10 by default). + +@item dot_style = @var{string} +Specify the dot retrieval @dfn{style}, as with @samp{--dot-style}. + +@item exclude_directories = @var{string} +Specify a comma-separated list of directories you wish to exclude from +download, the same as @samp{-X} (@xref{Directory-Based Limits}). + +@item exclude_domains = @var{string} +Same as @samp{--exclude-domains} (@xref{Domain Acceptance}). + +@item follow_ftp = on/off +Follow @sc{ftp} links from @sc{html} documents, the same as @samp{-f}. + +@item force_html = on/off +If set to on, force the input filename to be regarded as an @sc{html} +document, the same as @samp{-F}. + +@item ftp_proxy = @var{string} +Use @var{string} as @sc{ftp} proxy, instead of the one specified in +environment. + +@item glob = on/off +Turn globbing on/off, the same as @samp{-g}. + +@item header = @var{string} +Define an additional header, like @samp{--header}. + +@item http_passwd = @var{string} +Set @sc{http} password. + +@item http_proxy = @var{string} +Use @var{string} as @sc{http} proxy, instead of the one specified in +environment. + +@item http_user = @var{string} +Set @sc{http} user to @var{string}. + +@item ignore_length = on/off +When set to on, ignore @code{Content-Length} header; the same as +@samp{--ignore-length}. + +@item include_directories = @var{string} +Specify a comma-separated list of directories you wish to follow when +downloading, the same as @samp{-I}. + +@item input = @var{string} +Read the @sc{url}s from @var{string}, like @samp{-i}. + +@item kill_longer = on/off +Consider data longer than specified in content-length header +as invalid (and retry getting it). The default behaviour is to save +as much data as there is, provided there is more than or equal +to the value in @code{Content-Length}. + +@item logfile = @var{string} +Set logfile, the same as @samp{-o}. + +@item login = @var{string} +Your user name on the remote machine, for @sc{ftp}. Defaults to +@samp{anonymous}. + +@item mirror = on/off +Turn mirroring on/off. The same as @samp{-m}. + +@item netrc = on/off +Turn reading netrc on or off. + +@item noclobber = on/off +Same as @samp{-nc}. + +@item no_parent = on/off +Disallow retrieving outside the directory hierarchy, like +@samp{--no-parent} (@xref{Directory-Based Limits}). + +@item no_proxy = @var{string} +Use @var{string} as the comma-separated list of domains to avoid in +proxy loading, instead of the one specified in environment. + +@item output_document = @var{string} +Set the output filename, the same as @samp{-O}. + +@item passive_ftp = on/off +Set passive @sc{ftp}, the same as @samp{--passive-ftp}. + +@item passwd = @var{string} +Set your @sc{ftp} password to @var{password}. Without this setting, the +password defaults to @samp{username@@hostname.domainname}. + +@item proxy_user = @var{string} +Set proxy authentication user name to @var{string}, like +@samp{--proxy-user}. + +@item proxy_passwd = @var{string} +Set proxy authentication password to @var{string}, like +@samp{--proxy-passwd}. + +@item quiet = on/off +Quiet mode, the same as @samp{-q}. + +@item quota = @var{quota} +Specify the download quota, which is useful to put in global +wgetrc. When download quota is specified, Wget will stop retrieving +after the download sum has become greater than quota. The quota can be +specified in bytes (default), kbytes @samp{k} appended) or mbytes +(@samp{m} appended). Thus @samp{quota = 5m} will set the quota to 5 +mbytes. Note that the user's startup file overrides system settings. + +@item reclevel = @var{n} +Recursion level, the same as @samp{-l}. + +@item recursive = on/off +Recursive on/off, the same as @samp{-r}. + +@item relative_only = on/off +Follow only relative links, the same as @samp{-L} (@xref{Relative +Links}). + +@item remove_listing = on/off +If set to on, remove @sc{ftp} listings downloaded by Wget. Setting it +to off is the same as @samp{-nr}. + +@item retr_symlinks = on/off +When set to on, retrieve symbolic links as if they were plain files; the +same as @samp{--retr-symlinks}. + +@item robots = on/off +Use (or not) @file{/robots.txt} file (@xref{Robots}). Be sure to know +what you are doing before changing the default (which is @samp{on}). + +@item server_response = on/off +Choose whether or not to print the @sc{http} and @sc{ftp} server +responses, the same as @samp{-S}. + +@item simple_host_check = on/off +Same as @samp{-nh} (@xref{Host Checking}). + +@item span_hosts = on/off +Same as @samp{-H}. + +@item timeout = @var{n} +Set timeout value, the same as @samp{-T}. + +@item timestamping = on/off +Turn timestamping on/off. The same as @samp{-N} (@xref{Time-Stamping}). + +@item tries = @var{n} +Set number of retries per @sc{url}, the same as @samp{-t}. + +@item use_proxy = on/off +Turn proxy support on/off. The same as @samp{-Y}. + +@item verbose = on/off +Turn verbose on/off, the same as @samp{-v}/@samp{-nv}. + +@item wait = @var{n} +Wait @var{n} seconds between retrievals, the same as @samp{-w}. +@end table + +@node Sample Wgetrc, , Wgetrc Commands, Startup File +@section Sample Wgetrc +@cindex sample wgetrc + +This is the sample initialization file, as given in the distribution. +It is divided in two section---one for global usage (suitable for global +startup file), and one for local usage (suitable for +@file{$HOME/.wgetrc}). Be careful about the things you change. + +Note that all the lines are commented out. For any line to have effect, +you must remove the @samp{#} prefix at the beginning of line. + +@example +### +### Sample Wget initialization file .wgetrc +### + +## You can use this file to change the default behaviour of wget or to +## avoid having to type many many command-line options. This file does +## not contain a comprehensive list of commands -- look at the manual +## to find out what you can put into this file. +## +## Wget initialization file can reside in /usr/local/etc/wgetrc +## (global, for all users) or $HOME/.wgetrc (for a single user). +## +## To use any of the settings in this file, you will have to uncomment +## them (and probably change them). + + +## +## Global settings (useful for setting up in /usr/local/etc/wgetrc). +## Think well before you change them, since they may reduce wget's +## functionality, and make it behave contrary to the documentation: +## + +# You can set retrieve quota for beginners by specifying a value +# optionally followed by 'K' (kilobytes) or 'M' (megabytes). The +# default quota is unlimited. +#quota = inf + +# You can lower (or raise) the default number of retries when +# downloading a file (default is 20). +#tries = 20 + +# Lowering the maximum depth of the recursive retrieval is handy to +# prevent newbies from going too "deep" when they unwittingly start +# the recursive retrieval. The default is 5. +#reclevel = 5 + +# Many sites are behind firewalls that do not allow initiation of +# connections from the outside. On these sites you have to use the +# `passive' feature of FTP. If you are behind such a firewall, you +# can turn this on to make Wget use passive FTP by default. +#passive_ftp = off + + +## +## Local settings (for a user to set in his $HOME/.wgetrc). It is +## *highly* undesirable to put these settings in the global file, since +## they are potentially dangerous to "normal" users. +## +## Even when setting up your own ~/.wgetrc, you should know what you +## are doing before doing so. +## + +# Set this to on to use timestamping by default: +#timestamping = off + +# It is a good idea to make Wget send your email address in a `From:' +# header with your request (so that server administrators can contact +# you in case of errors). Wget does *not* send `From:' by default. +#header = From: Your Name + +# You can set up other headers, like Accept-Language. Accept-Language +# is *not* sent by default. +#header = Accept-Language: en + +# You can set the default proxy for Wget to use. It will override the +# value in the environment. +#http_proxy = http://proxy.yoyodyne.com:18023/ + +# If you do not want to use proxy at all, set this to off. +#use_proxy = on + +# You can customize the retrieval outlook. Valid options are default, +# binary, mega and micro. +#dot_style = default + +# Setting this to off makes Wget not download /robots.txt. Be sure to +# know *exactly* what /robots.txt is and how it is used before changing +# the default! +#robots = on + +# It can be useful to make Wget wait between connections. Set this to +# the number of seconds you want Wget to wait. +#wait = 0 + +# You can force creating directory structure, even if a single is being +# retrieved, by setting this to on. +#dirstruct = off + +# You can turn on recursive retrieving by default (don't do this if +# you are not sure you know what it means) by setting this to on. +#recursive = off + +# To have Wget follow FTP links from HTML files by default, set this +# to on: +#follow_ftp = off +@end example + +@node Examples, Various, Startup File, Top +@chapter Examples +@cindex examples + +The examples are classified into three sections, because of clarity. +The first section is a tutorial for beginners. The second section +explains some of the more complex program features. The third section +contains advice for mirror administrators, as well as even more complex +features (that some would call perverted). + +@menu +* Simple Usage:: Simple, basic usage of the program. +* Advanced Usage:: Advanced techniques of usage. +* Guru Usage:: Mirroring and the hairy stuff. +@end menu + +@node Simple Usage, Advanced Usage, Examples, Examples +@section Simple Usage + +@itemize @bullet +@item +Say you want to download a @sc{url}. Just type: + +@example +wget http://fly.cc.fer.hr/ +@end example + +The response will be something like: + +@example +@group +--13:30:45-- http://fly.cc.fer.hr:80/en/ + => `index.html' +Connecting to fly.cc.fer.hr:80... connected! +HTTP request sent, awaiting response... 200 OK +Length: 4,694 [text/html] + + 0K -> .... [100%] + +13:30:46 (23.75 KB/s) - `index.html' saved [4694/4694] +@end group +@end example + +@item +But what will happen if the connection is slow, and the file is lengthy? +The connection will probably fail before the whole file is retrieved, +more than once. In this case, Wget will try getting the file until it +either gets the whole of it, or exceeds the default number of retries +(this being 20). It is easy to change the number of tries to 45, to +insure that the whole file will arrive safely: + +@example +wget --tries=45 http://fly.cc.fer.hr/jpg/flyweb.jpg +@end example + +@item +Now let's leave Wget to work in the background, and write its progress +to log file @file{log}. It is tiring to type @samp{--tries}, so we +shall use @samp{-t}. + +@example +wget -t 45 -o log http://fly.cc.fer.hr/jpg/flyweb.jpg & +@end example + +The ampersand at the end of the line makes sure that Wget works in the +background. To unlimit the number of retries, use @samp{-t inf}. + +@item +The usage of @sc{ftp} is as simple. Wget will take care of login and +password. + +@example +@group +$ wget ftp://gnjilux.cc.fer.hr/welcome.msg +--10:08:47-- ftp://gnjilux.cc.fer.hr:21/welcome.msg + => `welcome.msg' +Connecting to gnjilux.cc.fer.hr:21... connected! +Logging in as anonymous ... Logged in! +==> TYPE I ... done. ==> CWD not needed. +==> PORT ... done. ==> RETR welcome.msg ... done. +Length: 1,340 (unauthoritative) + + 0K -> . [100%] + +10:08:48 (1.28 MB/s) - `welcome.msg' saved [1340] +@end group +@end example + +@item +If you specify a directory, Wget will retrieve the directory listing, +parse it and convert it to @sc{html}. Try: + +@example +wget ftp://prep.ai.mit.edu/pub/gnu/ +lynx index.html +@end example +@end itemize + +@node Advanced Usage, Guru Usage, Simple Usage, Examples +@section Advanced Usage + +@itemize @bullet +@item +You would like to read the list of @sc{url}s from a file? Not a problem +with that: + +@example +wget -i file +@end example + +If you specify @samp{-} as file name, the @sc{url}s will be read from +standard input. + +@item +Create a mirror image of GNU @sc{www} site (with the same directory structure +the original has) with only one try per document, saving the log of the +activities to @file{gnulog}: + +@example +wget -r -t1 http://www.gnu.ai.mit.edu/ -o gnulog +@end example + +@item +Retrieve the first layer of yahoo links: + +@example +wget -r -l1 http://www.yahoo.com/ +@end example + +@item +Retrieve the index.html of @samp{www.lycos.com}, showing the original +server headers: + +@example +wget -S http://www.lycos.com/ +@end example + +@item +Save the server headers with the file: +@example +wget -s http://www.lycos.com/ +more index.html +@end example + +@item +Retrieve the first two levels of @samp{wuarchive.wustl.edu}, saving them +to /tmp. + +@example +wget -P/tmp -l2 ftp://wuarchive.wustl.edu/ +@end example + +@item +You want to download all the @sc{gif}s from an @sc{http} directory. +@samp{wget http://host/dir/*.gif} doesn't work, since @sc{http} +retrieval does not support globbing. In that case, use: + +@example +wget -r -l1 --no-parent -A.gif http://host/dir/ +@end example + +It is a bit of a kludge, but it works. @samp{-r -l1} means to retrieve +recursively (@xref{Recursive Retrieval}), with maximum depth of 1. +@samp{--no-parent} means that references to the parent directory are +ignored (@xref{Directory-Based Limits}), and @samp{-A.gif} means to +download only the @sc{gif} files. @samp{-A "*.gif"} would have worked +too. + +@item +Suppose you were in the middle of downloading, when Wget was +interrupted. Now you do not want to clobber the files already present. +It would be: + +@example +wget -nc -r http://www.gnu.ai.mit.edu/ +@end example + +@item +If you want to encode your own username and password to @sc{http} or +@sc{ftp}, use the appropriate @sc{url} syntax (@xref{URL Format}). + +@example +wget ftp://hniksic:mypassword@@jagor.srce.hr/.emacs +@end example + +@item +If you do not like the default retrieval visualization (1K dots with 10 +dots per cluster and 50 dots per line), you can customize it through dot +settings (@xref{Wgetrc Commands}). For example, many people like the +``binary'' style of retrieval, with 8K dots and 512K lines: + +@example +wget --dot-style=binary ftp://prep.ai.mit.edu/pub/gnu/README +@end example + +You can experiment with other styles, like: + +@example +wget --dot-style=mega ftp://ftp.xemacs.org/pub/xemacs/xemacs-20.4/xemacs-20.4.tar.gz +wget --dot-style=micro http://fly.cc.fer.hr/ +@end example + +To make these settings permanent, put them in your @file{.wgetrc}, as +described before (@xref{Sample Wgetrc}). +@end itemize + +@node Guru Usage, , Advanced Usage, Examples +@section Guru Usage + +@cindex mirroring +@itemize @bullet +@item +If you wish Wget to keep a mirror of a page (or @sc{ftp} +subdirectories), use @samp{--mirror} (@samp{-m}), which is the shorthand +for @samp{-r -N}. You can put Wget in the crontab file asking it to +recheck a site each Sunday: + +@example +crontab +0 0 * * 0 wget --mirror ftp://ftp.xemacs.org/pub/xemacs/ -o /home/me/weeklog +@end example + +@item +You may wish to do the same with someone's home page. But you do not +want to download all those images---you're only interested in @sc{html}. + +@example +wget --mirror -A.html http://www.w3.org/ +@end example + +@item +But what about mirroring the hosts networkologically close to you? It +seems so awfully slow because of all that @sc{dns} resolving. Just use +@samp{-D} (@xref{Domain Acceptance}). + +@example +wget -rN -Dsrce.hr http://www.srce.hr/ +@end example + +Now Wget will correctly find out that @samp{regoc.srce.hr} is the same +as @samp{www.srce.hr}, but will not even take into consideration the +link to @samp{www.mit.edu}. + +@item +You have a presentation and would like the dumb absolute links to be +converted to relative? Use @samp{-k}: + +@example +wget -k -r @var{URL} +@end example + +@cindex redirecting output +@item +You would like the output documents to go to standard output instead of +to files? OK, but Wget will automatically shut up (turn on +@samp{--quiet}) to prevent mixing of Wget output and the retrieved +documents. + +@example +wget -O - http://jagor.srce.hr/ http://www.srce.hr/ +@end example + +You can also combine the two options and make weird pipelines to +retrieve the documents from remote hotlists: + +@example +wget -O - http://cool.list.com/ | wget --force-html -i - +@end example +@end itemize + +@node Various, Appendices, Examples, Top +@chapter Various +@cindex various + +This chapter contains all the stuff that could not fit anywhere else. + +@menu +* Proxies:: Support for proxy servers +* Distribution:: Getting the latest version. +* Mailing List:: Wget mailing list for announcements and discussion. +* Reporting Bugs:: How and where to report bugs. +* Portability:: The systems Wget works on. +* Signals:: Signal-handling performed by Wget. +@end menu + +@node Proxies, Distribution, Various, Various +@section Proxies +@cindex proxies + +@dfn{Proxies} are special-purpose @sc{http} servers designed to transfer +data from remote servers to local clients. One typical use of proxies +is lightening network load for users behind a slow connection. This is +achieved by channeling all @sc{http} and @sc{ftp} requests through the +proxy which caches the transferred data. When a cached resource is +requested again, proxy will return the data from cache. Another use for +proxies is for companies that separate (for security reasons) their +internal networks from the rest of Internet. In order to obtain +information from the Web, their users connect and retrieve remote data +using an authorized proxy. + +Wget supports proxies for both @sc{http} and @sc{ftp} retrievals. The +standard way to specify proxy location, which Wget recognizes, is using +the following environment variables: + +@table @code +@item http_proxy +This variable should contain the @sc{url} of the proxy for @sc{http} +connections. + +@item ftp_proxy +This variable should contain the @sc{url} of the proxy for @sc{http} +connections. It is quite common that @sc{http_proxy} and @sc{ftp_proxy} +are set to the same @sc{url}. + +@item no_proxy +This variable should contain a comma-separated list of domain extensions +proxy should @emph{not} be used for. For instance, if the value of +@code{no_proxy} is @samp{.mit.edu}, proxy will not be used to retrieve +documents from MIT. +@end table + +In addition to the environment variables, proxy location and settings +may be specified from within Wget itself. + +@table @samp +@item -Y on/off +@itemx --proxy=on/off +@itemx proxy = on/off +This option may be used to turn the proxy support on or off. Proxy +support is on by default, provided that the appropriate environment +variables are set. + +@item http_proxy = @var{URL} +@itemx ftp_proxy = @var{URL} +@itemx no_proxy = @var{string} +These startup file variables allow you to override the proxy settings +specified by the environment. +@end table + +Some proxy servers require authorization to enable you to use them. The +authorization consists of @dfn{username} and @dfn{password}, which must +be sent by Wget. As with @sc{http} authorization, several +authentication schemes exist. For proxy authorization only the +@code{Basic} authentication scheme is currently implemented. + +You may specify your username and password either through the proxy +@sc{url} or through the command-line options. Assuming that the +company's proxy is located at @samp{proxy.srce.hr} at port 8001, a proxy +@sc{url} location containing authorization data might look like this: + +@example +http://hniksic:mypassword@@proxy.company.com:8001/ +@end example + +Alternatively, you may use the @samp{proxy-user} and +@samp{proxy-password} options, and the equivalent @file{.wgetrc} +settings @code{proxy_user} and @code{proxy_passwd} to set the proxy +username and password. + +@node Distribution, Mailing List, Proxies, Various +@section Distribution +@cindex latest version + +Like all GNU utilities, the latest version of Wget can be found at the +master GNU archive site prep.ai.mit.edu, and its mirrors. For example, +Wget @value{VERSION} can be found at +@url{ftp://prep.ai.mit.edu/pub/gnu/wget-@value{VERSION}.tar.gz} + +@node Mailing List, Reporting Bugs, Distribution, Various +@section Mailing List +@cindex mailing list +@cindex list + +Wget has its own mailing list at @email{wget@@sunsite.auc.dk}, thanks +to Karsten Thygesen. The mailing list is for discussion of Wget +features and web, reporting Wget bugs (those that you think may be of +interest to the public) and mailing announcements. You are welcome to +subscribe. The more people on the list, the better! + +To subscribe, send mail to @email{wget-subscribe@@sunsite.auc.dk}. +the magic word @samp{subscribe} in the subject line. Unsubscribe by +mailing to @email{wget-unsubscribe@@sunsite.auc.dk}. + +The mailing list is archived at @url{http://fly.cc.fer.hr/archive/wget}. + +@node Reporting Bugs, Portability, Mailing List, Various +@section Reporting Bugs +@cindex bugs +@cindex reporting bugs +@cindex bug reports + +You are welcome to send bug reports about GNU Wget to +@email{bug-wget@@gnu.org}. The bugs that you think are of the +interest to the public (i.e. more people should be informed about them) +can be Cc-ed to the mailing list at @email{wget@@sunsite.auc.dk}. + +Before actually submitting a bug report, please try to follow a few +simple guidelines. + +@enumerate +@item +Please try to ascertain that the behaviour you see really is a bug. If +Wget crashes, it's a bug. If Wget does not behave as documented, +it's a bug. If things work strange, but you are not sure about the way +they are supposed to work, it might well be a bug. + +@item +Try to repeat the bug in as simple circumstances as possible. E.g. if +Wget crashes on @samp{wget -rLl0 -t5 -Y0 http://yoyodyne.com -o +/tmp/log}, you should try to see if it will crash with a simpler set of +options. + +Also, while I will probably be interested to know the contents of your +@file{.wgetrc} file, just dumping it into the debug message is probably +a bad idea. Instead, you should first try to see if the bug repeats +with @file{.wgetrc} moved out of the way. Only if it turns out that +@file{.wgetrc} settings affect the bug, should you mail me the relevant +parts of the file. + +@item +Please start Wget with @samp{-d} option and send the log (or the +relevant parts of it). If Wget was compiled without debug support, +recompile it. It is @emph{much} easier to trace bugs with debug support +on. + +@item +If Wget has crashed, try to run it in a debugger, e.g. @code{gdb `which +wget` core} and type @code{where} to get the backtrace. + +@item +Find where the bug is, fix it and send me the patches. :-) +@end enumerate + +@node Portability, Signals, Reporting Bugs, Various +@section Portability +@cindex portability +@cindex operating systems + +Since Wget uses GNU Autoconf for building and configuring, and avoids +using ``special'' ultra--mega--cool features of any particular Unix, it +should compile (and work) on all common Unix flavors. + +Various Wget versions have been compiled and tested under many kinds of +Unix systems, including Solaris, Linux, SunOS, OSF (aka Digital Unix), +Ultrix, *BSD, IRIX, and others; refer to the file @file{MACHINES} in the +distribution directory for a comprehensive list. If you compile it on +an architecture not listed there, please let me know so I can update it. + +Wget should also compile on the other Unix systems, not listed in +@file{MACHINES}. If it doesn't, please let me know. + +Thanks to kind contributors, this version of Wget compiles and works on +Microsoft Windows 95 and Windows NT platforms. It has been compiled +successfully using MS Visual C++ 4.0, Watcom, and Borland C compilers, +with Winsock as networking software. Naturally, it is crippled of some +features available on Unix, but it should work as a substitute for +people stuck with Windows. Note that the Windows port is +@strong{neither tested nor maintained} by me---all questions and +problems should be reported to Wget mailing list at +@email{wget@@sunsite.auc.dk} where the maintainers will look at them. + +@node Signals, , Portability, Various +@section Signals +@cindex signal handling +@cindex hangup + +Since the purpose of Wget is background work, it catches the hangup +signal (@code{SIGHUP}) and ignores it. If the output was on standard +output, it will be redirected to a file named @file{wget-log}. +Otherwise, @code{SIGHUP} is ignored. This is convenient when you wish +to redirect the output of Wget after having started it. + +@example +$ wget http://www.ifi.uio.no/~larsi/gnus.tar.gz & +$ kill -HUP %% # Redirect the output to wget-log +@end example + +Other than that, Wget will not try to interfere with signals in any +way. @kbd{C-c}, @code{kill -TERM} and @code{kill -KILL} should kill it +alike. + +@node Appendices, Copying, Various, Top +@chapter Appendices + +This chapter contains some references I consider useful, like the Robots +Exclusion Standard specification, as well as a list of contributors to +GNU Wget. + +@menu +* Robots:: Wget as a WWW robot. +* Security Considerations:: Security with Wget. +* Contributors:: People who helped. +@end menu + +@node Robots, Security Considerations, Appendices, Appendices +@section Robots +@cindex robots +@cindex robots.txt +@cindex server maintenance + +Since Wget is able to traverse the web, it counts as one of the Web +@dfn{robots}. Thus Wget understands @dfn{Robots Exclusion Standard} +(@sc{res})---contents of @file{/robots.txt}, used by server +administrators to shield parts of their systems from wanderings of Wget. + +Norobots support is turned on only when retrieving recursively, and +@emph{never} for the first page. Thus, you may issue: + +@example +wget -r http://fly.cc.fer.hr/ +@end example + +First the index of fly.cc.fer.hr will be downloaded. If Wget finds +anything worth downloading on the same host, only @emph{then} will it +load the robots, and decide whether or not to load the links after all. +@file{/robots.txt} is loaded only once per host. Wget does not support +the robots @code{META} tag. + +The description of the norobots standard was written, and is maintained +by Martijn Koster @email{m.koster@@webcrawler.com}. With his +permission, I contribute a (slightly modified) texified version of the +@sc{res}. + +@menu +* Introduction to RES:: +* RES Format:: +* User-Agent Field:: +* Disallow Field:: +* Norobots Examples:: +@end menu + +@node Introduction to RES, RES Format, Robots, Robots +@subsection Introduction to RES +@cindex norobots introduction + +@dfn{WWW Robots} (also called @dfn{wanderers} or @dfn{spiders}) are +programs that traverse many pages in the World Wide Web by recursively +retrieving linked pages. For more information see the robots page. + +In 1993 and 1994 there have been occasions where robots have visited +@sc{www} servers where they weren't welcome for various +reasons. Sometimes these reasons were robot specific, e.g. certain +robots swamped servers with rapid-fire requests, or retrieved the same +files repeatedly. In other situations robots traversed parts of @sc{www} +servers that weren't suitable, e.g. very deep virtual trees, duplicated +information, temporary information, or cgi-scripts with side-effects +(such as voting). + +These incidents indicated the need for established mechanisms for +@sc{www} servers to indicate to robots which parts of their server +should not be accessed. This standard addresses this need with an +operational solution. + +This document represents a consensus on 30 June 1994 on the robots +mailing list (@code{robots@@webcrawler.com}), between the majority of +robot authors and other people with an interest in robots. It has also +been open for discussion on the Technical World Wide Web mailing list +(@code{www-talk@@info.cern.ch}). This document is based on a previous +working draft under the same title. + +It is not an official standard backed by a standards body, or owned by +any commercial organization. It is not enforced by anybody, and there +no guarantee that all current and future robots will use it. Consider +it a common facility the majority of robot authors offer the @sc{www} +community to protect @sc{www} server against unwanted accesses by their +robots. + +The latest version of this document can be found at +@url{http://info.webcrawler.com/mak/projects/robots/norobots.html}. + +@node RES Format, User-Agent Field, Introduction to RES, Robots +@subsection RES Format +@cindex norobots format + +The format and semantics of the @file{/robots.txt} file are as follows: + +The file consists of one or more records separated by one or more blank +lines (terminated by @code{CR}, @code{CR/NL}, or @code{NL}). Each +record contains lines of the form: + +@example +: +@end example + +The field name is case insensitive. + +Comments can be included in file using UNIX bourne shell conventions: +the @samp{#} character is used to indicate that preceding space (if any) +and the remainder of the line up to the line termination is discarded. +Lines containing only a comment are discarded completely, and therefore +do not indicate a record boundary. + +The record starts with one or more User-agent lines, followed by one or +more Disallow lines, as detailed below. Unrecognized headers are +ignored. + +The presence of an empty @file{/robots.txt} file has no explicit +associated semantics, it will be treated as if it was not present, +i.e. all robots will consider themselves welcome. + +@node User-Agent Field, Disallow Field, RES Format, Robots +@subsection User-Agent Field +@cindex norobots user-agent + +The value of this field is the name of the robot the record is +describing access policy for. + +If more than one User-agent field is present the record describes an +identical access policy for more than one robot. At least one field +needs to be present per record. + +The robot should be liberal in interpreting this field. A case +insensitive substring match of the name without version information is +recommended. + +If the value is @samp{*}, the record describes the default access policy +for any robot that has not matched any of the other records. It is not +allowed to have multiple such records in the @file{/robots.txt} file. + +@node Disallow Field, Norobots Examples, User-Agent Field, Robots +@subsection Disallow Field +@cindex norobots disallow + +The value of this field specifies a partial @sc{url} that is not to be +visited. This can be a full path, or a partial path; any @sc{url} that +starts with this value will not be retrieved. For example, +@w{@samp{Disallow: /help}} disallows both @samp{/help.html} and +@samp{/help/index.html}, whereas @w{@samp{Disallow: /help/}} would +disallow @samp{/help/index.html} but allow @samp{/help.html}. + +Any empty value, indicates that all @sc{url}s can be retrieved. At least +one Disallow field needs to be present in a record. + +@node Norobots Examples, , Disallow Field, Robots +@subsection Norobots Examples +@cindex norobots examples + +The following example @samp{/robots.txt} file specifies that no robots +should visit any @sc{url} starting with @samp{/cyberworld/map/} or +@samp{/tmp/}: + +@example +# robots.txt for http://www.site.com/ + +User-agent: * +Disallow: /cyberworld/map/ # This is an infinite virtual URL space +Disallow: /tmp/ # these will soon disappear +@end example + +This example @samp{/robots.txt} file specifies that no robots should +visit any @sc{url} starting with @samp{/cyberworld/map/}, except the +robot called @samp{cybermapper}: + +@example +# robots.txt for http://www.site.com/ + +User-agent: * +Disallow: /cyberworld/map/ # This is an infinite virtual URL space + +# Cybermapper knows where to go. +User-agent: cybermapper +Disallow: +@end example + +This example indicates that no robots should visit this site further: + +@example +# go away +User-agent: * +Disallow: / +@end example + +@node Security Considerations, Contributors, Robots, Appendices +@section Security Considerations +@cindex security + +When using Wget, you must be aware that it sends unencrypted passwords +through the network, which may present a security problem. Here are the +main issues, and some solutions. + +@enumerate +@item +The passwords on the command line are visible using @code{ps}. If this +is a problem, avoid putting passwords from the command line---e.g. you +can use @file{.netrc} for this. + +@item +Using the insecure @dfn{basic} authentication scheme, unencrypted +passwords are transmitted through the network routers and gateways. + +@item +The @sc{ftp} passwords are also in no way encrypted. There is no good +solution for this at the moment. + +@item +Although the ``normal'' output of Wget tries to hide the passwords, +debugging logs show them, in all forms. This problem is avoided by +being careful when you send debug logs (yes, even when you send them to +me). +@end enumerate + +@node Contributors, , Security Considerations, Appendices +@section Contributors +@cindex contributors + +@iftex +GNU Wget was written by Hrvoje Nik@v{s}i@'{c} @email{hniksic@@srce.hr}. +@end iftex +@ifinfo +GNU Wget was written by Hrvoje Niksic @email{hniksic@@srce.hr}. +@end ifinfo +However, its development could never have gone as far as it has, were it +not for the help of many people, either with bug reports, feature +proposals, patches, or letters saying ``Thanks!''. + +Special thanks goes to the following people (no particular order): + +@itemize @bullet +@item +Karsten Thygesen---donated the mailing list and the initial @sc{ftp} +space. + +@item +Shawn McHorse---bug reports and patches. + +@item +Kaveh R. Ghazi---on-the-fly @code{ansi2knr}-ization. + +@item +Gordon Matzigkeit---@file{.netrc} support. + +@item +@iftex +Zlatko @v{C}alu@v{s}i@'{c}, Tomislav Vujec and Dra@v{z}en +Ka@v{c}ar---feature suggestions and ``philosophical'' discussions. +@end iftex +@ifinfo +Zlatko Calusic, Tomislav Vujec and Drazen Kacar---feature suggestions +and ``philosophical'' discussions. +@end ifinfo + +@item +Darko Budor---initial port to Windows. + +@item +Antonio Rosella---help and suggestions, plust the Italian translation. + +@item +@iftex +Tomislav Petrovi@'{c}, Mario Miko@v{c}evi@'{c}---many bug reports and +suggestions. +@end iftex +@ifinfo +Tomislav Petrovic, Mario Mikocevic---many bug reports and suggestions. +@end ifinfo + +@item +@iftex +Fran@,{c}ois Pinard---many thorough bug reports and discussions. +@end iftex +@ifinfo +Francois Pinard---many thorough bug reports and discussions. +@end ifinfo + +@item +Karl Eichwalder---lots of help with internationalization and other +things. + +@item +Junio Hamano---donated support for Opie and @sc{http} @code{Digest} +authentication. + +@item +Brian Gough---a generous donation. +@end itemize + +The following people have provided patches, bug/build reports, useful +suggestions, beta testing services, fan mail and all the other things +that make maintenance so much fun: + +Tim Adam, +Martin Baehr, +Dieter Baron, +Roger Beeman and the Gurus at Cisco, +Mark Boyns, +John Burden, +Wanderlei Cavassin, +Gilles Cedoc, +Tim Charron, +Noel Cragg, +@iftex +Kristijan @v{C}onka@v{s}, +@end iftex +@ifinfo +Kristijan Conkas, +@end ifinfo +@iftex +Damir D@v{z}eko, +@end iftex +@ifinfo +Damir Dzeko, +@end ifinfo +Andrew Davison, +Ulrich Drepper, +Marc Duponcheel, +@iftex +Aleksandar Erkalovi@'{c}, +@end iftex +@ifinfo +Aleksandar Erkalovic, +@end ifinfo +Andy Eskilsson, +Masashi Fujita, +Howard Gayle, +Marcel Gerrits, +Hans Grobler, +Mathieu Guillaume, +Karl Heuer, +Gregor Hoffleit, +Erik Magnus Hulthen, +Richard Huveneers, +Simon Josefsson, +@iftex +Mario Juri@'{c}, +@end iftex +@ifinfo +Mario Juric, +@end ifinfo +@iftex +Goran Kezunovi@'{c}, +@end iftex +@ifinfo +Goran Kezunovic, +@end ifinfo +Robert Kleine, +Fila Kolodny, +Alexander Kourakos, +Martin Kraemer, +@tex +$\Sigma\acute{\iota}\mu o\varsigma\; +\Xi\varepsilon\nu\iota\tau\acute{\epsilon}\lambda\lambda\eta\varsigma$ +(Simos KSenitellis), +@end tex +@ifinfo +Simos KSenitellis, +@end ifinfo +Tage Stabell-Kulo, +Hrvoje Lacko, +Dave Love, +Jordan Mendelson, +Lin Zhe Min, +Charlie Negyesi, +Andrew Pollock, +Steve Pothier, +Marin Purgar, +Jan Prikryl, +Keith Refson, +Tobias Ringstrom, +@c Texinfo doesn't grok @'{@i}, so we have to use TeX itself. +@tex +Juan Jos\'{e} Rodr\'{\i}gues, +@end tex +@ifinfo +Juan Jose Rodrigues, +@end ifinfo +Heinz Salzmann, +Robert Schmidt, +Toomas Soome, +Sven Sternberger, +Markus Strasser, +Szakacsits Szabolcs, +Mike Thomas, +Russell Vincent, +Douglas E. Wegscheid, +Jasmin Zainul, +@iftex +Bojan @v{Z}drnja, +@end iftex +@ifinfo +Bojan Zdrnja, +@end ifinfo +Kristijan Zimmer. + +Apologies to all who I accidentally left out, and many thanks to all the +subscribers of the Wget mailing list. + +@node Copying, Concept Index, Appendices, Top +@unnumbered GNU GENERAL PUBLIC LICENSE +@cindex copying +@cindex GPL +@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 +@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 +@cindex no warranty + +@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. + +@node Concept Index, , Copying, Top +@unnumbered Concept Index +@printindex cp + +@contents + +@bye diff --git a/install-sh b/install-sh new file mode 100755 index 00000000..ebc66913 --- /dev/null +++ b/install-sh @@ -0,0 +1,250 @@ +#! /bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100755 index 00000000..e95a2ad7 --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs 2 1999-12-02 07:42:23Z kwget $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" 1>&2 + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 00000000..1adf9177 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,212 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = $(prefix)/@DATADIRNAME@ +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = $(prefix)/share/gettext/po +subdir = po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +CC = @CC@ +GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ +MSGMERGE = PATH=../src:$$PATH msgmerge + +DEFS = @DEFS@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ + +INCLUDES = -I.. -I$(top_srcdir)/intl + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ +$(POFILES) $(GMOFILES) $(SOURCES) + +POTFILES = \ + +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +INSTOBJEXT = @INSTOBJEXT@ + +.SUFFIXES: +.SUFFIXES: .c .o .po .pox .gmo .mo .msg + +.c.o: + $(COMPILE) $< + +.po.pox: + $(MAKE) $(PACKAGE).pot + $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox + +.po.mo: + $(MSGFMT) -o $@ $< + +.po.gmo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ + && rm -f $$file && $(GMSGFMT) -o $$file $< + + +all: all-@USE_NLS@ + +all-yes: $(CATALOGS) +all-no: + +$(srcdir)/$(PACKAGE).pot: $(POTFILES) + $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ + --add-comments --keyword=_ --keyword=N_ \ + --files-from=$(srcdir)/POTFILES.in + rm -f $(srcdir)/$(PACKAGE).pot + mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot + +install.mo: install +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ +install-data-no: all +install-data-yes: all + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + case "$$cat" in \ + *.gmo) destdir=$(gnulocaledir);; \ + *) destdir=$(localedir);; \ + esac; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + dir=$$destdir/$$lang/LC_MESSAGES; \ + $(top_srcdir)/mkinstalldirs $$dir; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + fi; \ + if test -r $$cat.m; then \ + $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + if test -r $(srcdir)/$$cat.m ; then \ + $(INSTALL_DATA) $(srcdir)/$$cat.m \ + $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + true; \ + fi; \ + fi; \ + done + if test "$(PACKAGE)" = "gettext"; then \ + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ + $(gettextsrcdir)/Makefile.in.in; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + done + rm -f $(gettextsrcdir)/po-Makefile.in.in + +check: all + +cat-id-tbl.o: ../intl/libgettext.h + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(PACKAGE).po *.old.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo *.msg + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(GMOFILES) + +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(PACKAGE).pot + PATH=`pwd`/../src:$$PATH; \ + cd $(srcdir); \ + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +POTFILES: POTFILES.in + ( if test 'x$(srcdir)' != 'x.'; then \ + posrcprefix='$(top_srcdir)/'; \ + else \ + posrcprefix="../"; \ + fi; \ + rm -f $@-t $@ \ + && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ + | sed -e '$$s/\\$$//') > $@-t \ + && chmod a-w $@-t \ + && mv $@-t $@ ) + +Makefile: Makefile.in.in ../config.status POTFILES + cd .. \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 00000000..4d1c2d14 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,26 @@ +# List of files which containing translatable strings. +# Copyright (C) 1998 Free Software Foundation, Inc. + +# Package source files +src/cmpt.c +src/connect.c +src/fnmatch.c +src/ftp-basic.c +src/ftp-ls.c +src/ftp-opie.c +src/ftp.c +src/getopt.c +src/headers.c +src/host.c +src/html.c +src/http.c +src/init.c +src/log.c +src/main.c +src/mswindows.c +src/netrc.c +src/rbuf.c +src/recur.c +src/retr.c +src/url.c +src/utils.c diff --git a/po/cs.gmo b/po/cs.gmo new file mode 100644 index 0000000000000000000000000000000000000000..9989095fbdca495f824e1556ffb76e29e7813daf GIT binary patch literal 23285 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 WpC|zFpv$q8w@X19=QyBQ@c#fP0EBM< literal 0 HcmV?d00001 diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 00000000..9aace822 --- /dev/null +++ b/po/cs.po @@ -0,0 +1,1155 @@ +# Czech translations for GNU wget +# Copyright (C) 1998 Free Software Foundation, Inc. +# Jan Prikryl , 1998 +# +msgid "" +msgstr "" +"Project-Id-Version: GNU wget 1.5.2-b1\n" +"POT-Creation-Date: 1998-09-21 19:08+0200\n" +"PO-Revision-Date: 1998-06-05 08:47\n" +"Last-Translator: Jan Prikryl \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8-bit\n" + +# , c-format +#. Login to the server: +#. First: Establish the control connection. +#: src/ftp.c:147 src/http.c:346 +#, c-format +msgid "Connecting to %s:%hu... " +msgstr "Navazuji spojení s %s:%hu... " + +# , c-format +#: src/ftp.c:169 src/ftp.c:411 src/http.c:363 +#, c-format +msgid "Connection to %s:%hu refused.\n" +msgstr "Spojení s %s:%hu odmítnuto.\n" + +#. Second: Login with proper USER/PASS sequence. +#: src/ftp.c:190 src/http.c:374 +msgid "connected!\n" +msgstr "spojeno!\n" + +# , c-format +#: src/ftp.c:191 +#, c-format +msgid "Logging in as %s ... " +msgstr "Pøihla¹uji se jako %s ... " + +#: src/ftp.c:200 src/ftp.c:253 src/ftp.c:301 src/ftp.c:353 src/ftp.c:447 +#: src/ftp.c:520 src/ftp.c:568 src/ftp.c:616 +msgid "Error in server response, closing control connection.\n" +msgstr "Server odpovìdìl chybnì, uzavírám øídicí spojení.\n" + +#: src/ftp.c:208 +msgid "Error in server greeting.\n" +msgstr "Úvodní odpovìï serveru je chybná.\n" + +#: src/ftp.c:216 src/ftp.c:262 src/ftp.c:310 src/ftp.c:362 src/ftp.c:457 +#: src/ftp.c:530 src/ftp.c:578 src/ftp.c:626 +msgid "Write failed, closing control connection.\n" +msgstr "Nemohu zapsat data, uzavírám øídicí spojení.\n" + +#: src/ftp.c:223 +msgid "The server refuses login.\n" +msgstr "Server odmítá pøihlá¹ení.\n" + +#: src/ftp.c:230 +msgid "Login incorrect.\n" +msgstr "Chyba pøi pøihlá¹ení.\n" + +#: src/ftp.c:237 +msgid "Logged in!\n" +msgstr "Pøihlá¹en!\n" + +# , c-format +#: src/ftp.c:270 +#, c-format +msgid "Unknown type `%c', closing control connection.\n" +msgstr "Neznámý typ `%c', uzavírám øídicí spojení.\n" + +#: src/ftp.c:283 +msgid "done. " +msgstr "hotovo." + +#: src/ftp.c:289 +msgid "==> CWD not needed.\n" +msgstr "==> CWD není potøeba.\n" + +# , c-format +#: src/ftp.c:317 +#, c-format +msgid "" +"No such directory `%s'.\n" +"\n" +msgstr "" +"Adresáø `%s' neexistuje.\n" +"\n" + +#: src/ftp.c:331 src/ftp.c:599 src/ftp.c:647 src/url.c:1431 +msgid "done.\n" +msgstr "hotovo.\n" + +#. do not CWD +#: src/ftp.c:335 +msgid "==> CWD not required.\n" +msgstr "==> CWD není potøeba.\n" + +#: src/ftp.c:369 +msgid "Cannot initiate PASV transfer.\n" +msgstr "Nemohu inicializovat pøenos pøíkazem PASV.\n" + +#: src/ftp.c:373 +msgid "Cannot parse PASV response.\n" +msgstr "Odpovìï na PASV není pochopitelná.\n" + +# , c-format +#: src/ftp.c:387 +#, c-format +msgid "Will try connecting to %s:%hu.\n" +msgstr "Pokusím se spojit s %s:%hu.\n" + +#: src/ftp.c:432 src/ftp.c:504 src/ftp.c:548 +msgid "done. " +msgstr "hotovo. " + +# , c-format +#: src/ftp.c:474 +#, c-format +msgid "Bind error (%s).\n" +msgstr "Chyba pøi operaci \"bind\" (%s).\n" + +#: src/ftp.c:490 +msgid "Invalid PORT.\n" +msgstr "Neplatný PORT.\n" + +#: src/ftp.c:537 +msgid "" +"\n" +"REST failed, starting from scratch.\n" +msgstr "" +"\n" +"Pøíkaz REST selhal, pøená¹ím soubor od zaèátku.\n" + +# , c-format +#: src/ftp.c:586 +#, c-format +msgid "" +"No such file `%s'.\n" +"\n" +msgstr "" +"Soubor `%s' neexistuje.\n" +"\n" + +# , c-format +#: src/ftp.c:634 +#, c-format +msgid "" +"No such file or directory `%s'.\n" +"\n" +msgstr "" +"Soubor èi adresáø `%s' neexistuje.\n" +"\n" + +# , c-format +#: src/ftp.c:692 src/ftp.c:699 +#, c-format +msgid "Length: %s" +msgstr "Délka: %s" + +# , c-format +#: src/ftp.c:694 src/ftp.c:701 +#, c-format +msgid " [%s to go]" +msgstr " [%s zbývá]" + +#: src/ftp.c:703 +msgid " (unauthoritative)\n" +msgstr " (není smìrodatné)\n" + +# , c-format +#: src/ftp.c:721 +#, c-format +msgid "%s: %s, closing control connection.\n" +msgstr "%s: %s, uzavírám øídicí spojení.\n" + +# , c-format +#: src/ftp.c:729 +#, c-format +msgid "%s (%s) - Data connection: %s; " +msgstr "%s (%s) - Datové spojení: %s; " + +#: src/ftp.c:746 +msgid "Control connection closed.\n" +msgstr "Øídicí spojení uzavøeno.\n" + +#: src/ftp.c:764 +msgid "Data transfer aborted.\n" +msgstr "Pøenos dat byl pøedèasnì ukonèen.\n" + +# , c-format +#: src/ftp.c:830 +#, c-format +msgid "File `%s' already there, not retrieving.\n" +msgstr "Soubor `%s' je ji¾ zde, nebudu jej pøená¹et.\n" + +# , c-format +#: src/ftp.c:896 src/http.c:922 +#, c-format +msgid "(try:%2d)" +msgstr "(pokus:%2d)" + +# , c-format +#: src/ftp.c:955 src/http.c:1116 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld]\n" +"\n" +msgstr "" +"%s (%s) - `%s' ulo¾en [%ld]\n" +"\n" + +# , c-format +#: src/ftp.c:1001 +#, c-format +msgid "Using `%s' as listing tmp file.\n" +msgstr "Seznam souborù bude doèasnì ulo¾en v `%s'.\n" + +# , c-format +#: src/ftp.c:1013 +#, c-format +msgid "Removed `%s'.\n" +msgstr "Vymazal jsem `%s'.\n" + +# , c-format +#: src/ftp.c:1049 +#, c-format +msgid "Recursion depth %d exceeded max. depth %d.\n" +msgstr "Hloubka rekurze %d pøekroèila maximální povolenou hloubku %d.\n" + +# , c-format +#: src/ftp.c:1096 src/http.c:1054 +#, c-format +msgid "" +"Local file `%s' is more recent, not retrieving.\n" +"\n" +msgstr "" +"Soubor `%s' nebudu pøená¹et, proto¾e lokální verze je novìj¹í.\n" +"\n" + +# , c-format +#: src/ftp.c:1102 src/http.c:1060 +#, c-format +msgid "The sizes do not match (local %ld), retrieving.\n" +msgstr "Velikosti se neshodují (lokálnì %ld), pøená¹ím.\n" + +#: src/ftp.c:1119 +msgid "Invalid name of the symlink, skipping.\n" +msgstr "Neplatný název symoblického odkazu, pøeskakuji.\n" + +# , c-format +#: src/ftp.c:1136 +#, c-format +msgid "" +"Already have correct symlink %s -> %s\n" +"\n" +msgstr "" +"Korektní symbolický odkaz %s -> %s ji¾ existuje.\n" +"\n" + +# , c-format +#: src/ftp.c:1144 +#, c-format +msgid "Creating symlink %s -> %s\n" +msgstr "Vytváøím symbolický odkaz %s -> %s\n" + +# , c-format +#: src/ftp.c:1155 +#, c-format +msgid "Symlinks not supported, skipping symlink `%s'.\n" +msgstr "" +"Pøeskakuji symbolický odkaz `%s', proto¾e tento systém symbolické odkazy\n" +"nepodporuje.\n" + +# , c-format +#: src/ftp.c:1167 +#, c-format +msgid "Skipping directory `%s'.\n" +msgstr "Pøeskakuji adresáø `%s'.\n" + +# , c-format +#: src/ftp.c:1176 +#, c-format +msgid "%s: unknown/unsupported file type.\n" +msgstr "%s: neznámý/nepodporovaný typ souboru.\n" + +# , c-format +#: src/ftp.c:1193 +#, c-format +msgid "%s: corrupt time-stamp.\n" +msgstr "%s: èasové razítko souboru je poru¹ené.\n" + +# , c-format +#: src/ftp.c:1213 +#, c-format +msgid "Will not retrieve dirs since depth is %d (max %d).\n" +msgstr "" +"Podadresáøe nebudu pøená¹et, proto¾e jsme ji¾ v hloubce %d (maximum je %d).\n" + +# , c-format +#: src/ftp.c:1252 +#, c-format +msgid "Not descending to `%s' as it is excluded/not-included.\n" +msgstr "" +"Nesestupuji do adresáøe `%s', proto¾e tento adresáø se má vynechat èi\n" +"nebyl zadán k procházení.\n" + +# , c-format +#: src/ftp.c:1297 +#, c-format +msgid "Rejecting `%s'.\n" +msgstr "Odmítám `%s'.\n" + +# , c-format +#. No luck. +#. #### This message SUCKS. We should see what was the +#. reason that nothing was retrieved. +#: src/ftp.c:1344 +#, c-format +msgid "No matches on pattern `%s'.\n" +msgstr "Vzorku `%s' nic neodpovídá.\n" + +# , c-format +#: src/ftp.c:1404 +#, c-format +msgid "Wrote HTML-ized index to `%s' [%ld].\n" +msgstr "Výpis adresáøe v HTML formátu byl zapsán do `%s' [%ld].\n" + +# , c-format +#: src/ftp.c:1409 +#, c-format +msgid "Wrote HTML-ized index to `%s'.\n" +msgstr "Výpis adresáøe v HTML formátu byl zapsán do `%s'.\n" + +# , c-format +#: src/getopt.c:454 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: pøepínaè `%s' není jednoznaèný\n" + +# , c-format +#: src/getopt.c:478 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: pøepínaè `--%s' nemá argument\n" + +# , c-format +#: src/getopt.c:483 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: pøepínaè `%c%s' nemá argument\n" + +# , c-format +#: src/getopt.c:498 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: pøepínaè `%s' vy¾aduje argument\n" + +# , c-format +#. --option +#: src/getopt.c:528 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: neznámý pøepínaè `--%s'\n" + +# , c-format +#. +option or -option +#: src/getopt.c:532 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: neznámý pøepínaè `%c%s'\n" + +# , c-format +#. 1003.2 specifies the format of this message. +#: src/getopt.c:563 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: nepøípustný pøepínaè -- %c\n" + +# , c-format +#. 1003.2 specifies the format of this message. +#: src/getopt.c:602 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: pøepínaè vy¾aduje argument -- %c\n" + +#: src/host.c:432 +#, c-format +msgid "%s: Cannot determine user-id.\n" +msgstr "%s: Nemohu identifikovat u¾ivatele.\n" + +# , c-format +#: src/host.c:444 +#, c-format +msgid "%s: Warning: uname failed: %s\n" +msgstr "%s: Varování: volání \"uname\" skonèilo chybou %s\n" + +#: src/host.c:456 +#, c-format +msgid "%s: Warning: gethostname failed\n" +msgstr "%s: Varování: volání \"gethostname\" skonèilo chybou\n" + +#: src/host.c:484 +#, c-format +msgid "%s: Warning: cannot determine local IP address.\n" +msgstr "%s: Varování: nemohu urèit lokální IP adresu.\n" + +#: src/host.c:498 +#, c-format +msgid "%s: Warning: cannot reverse-lookup local IP address.\n" +msgstr "%s: Varování: lokální IP adresa nemá reverzní DNS záznam.\n" + +#. This gets ticked pretty often. Karl Berry reports +#. that there can be valid reasons for the local host +#. name not to be an FQDN, so I've decided to remove the +#. annoying warning. +#: src/host.c:511 +#, c-format +msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n" +msgstr "" +"%s: Varování: reverzní vyhledání lokální adresy nenavrátilo plnì\n" +" kvalifikované jméno!\n" + +#: src/host.c:539 +msgid "Host not found" +msgstr "Poèítaè nebyl nalezen" + +#: src/host.c:541 +msgid "Unknown error" +msgstr "Neznámá chyba" + +# , c-format +#: src/html.c:439 src/html.c:441 +#, c-format +msgid "Index of /%s on %s:%d" +msgstr "Obsah /%s na %s:%d" + +#: src/html.c:463 +msgid "time unknown " +msgstr "èas neznámý " + +#: src/html.c:467 +msgid "File " +msgstr "Soubor " + +#: src/html.c:470 +msgid "Directory " +msgstr "Adresáø " + +#: src/html.c:473 +msgid "Link " +msgstr "Sym. odkaz " + +#: src/html.c:476 +msgid "Not sure " +msgstr "Neznámý typ " + +# , c-format +#: src/html.c:494 +#, c-format +msgid " (%s bytes)" +msgstr " (%s bajtù)" + +#: src/http.c:492 +msgid "Failed writing HTTP request.\n" +msgstr "HTTP po¾adavek nebylo mo¾né odeslat.\n" + +# , c-format +#: src/http.c:497 +#, c-format +msgid "%s request sent, awaiting response... " +msgstr "%s po¾adavek odeslán, èekám na odpovìï ... " + +#: src/http.c:536 +msgid "End of file while parsing headers.\n" +msgstr "Hlavièka není úplná.\n" + +# , c-format +#: src/http.c:547 +#, c-format +msgid "Read error (%s) in headers.\n" +msgstr "Chyba (%s) pøi ètení hlavièek.\n" + +#: src/http.c:587 +msgid "No data received" +msgstr "Nepøi¹la ¾ádná data" + +#: src/http.c:589 +msgid "Malformed status line" +msgstr "Odpovìï serveru má zkomolený stavový øádek" + +#: src/http.c:594 +msgid "(no description)" +msgstr "(¾ádný popis)" + +#. If we have tried it already, then there is not point +#. retrying it. +#: src/http.c:678 +msgid "Authorization failed.\n" +msgstr "Autorizace selhala.\n" + +#: src/http.c:685 +msgid "Unknown authentication scheme.\n" +msgstr "Server po¾aduje neznámý zpùsob autentifikace.\n" + +# , c-format +#: src/http.c:748 +#, c-format +msgid "Location: %s%s\n" +msgstr "Pøesmìrováno na: %s%s\n" + +#: src/http.c:749 src/http.c:774 +msgid "unspecified" +msgstr "neudáno" + +#: src/http.c:750 +msgid " [following]" +msgstr " [následuji]" + +#. No need to print this output if the body won't be +#. downloaded at all, or if the original server response is +#. printed. +#: src/http.c:764 +msgid "Length: " +msgstr "Délka: " + +# , c-format +#: src/http.c:769 +#, c-format +msgid " (%s to go)" +msgstr " (%s zbývá)" + +#: src/http.c:774 +msgid "ignored" +msgstr "je ignorována" + +#: src/http.c:857 +msgid "Warning: wildcards not supported in HTTP.\n" +msgstr "Varování: HTTP nepodporuje ¾olíkové znaky.\n" + +# , c-format +#. If opt.noclobber is turned on and file already exists, do not +#. retrieve the file +#: src/http.c:872 +#, c-format +msgid "File `%s' already there, will not retrieve.\n" +msgstr "Soubor `%s' nebudu pøená¹et, je ji¾ zde.\n" + +# , c-format +#: src/http.c:978 +#, c-format +msgid "Cannot write to `%s' (%s).\n" +msgstr "Nemohu zapsat do `%s' (%s).\n" + +# , c-format +#: src/http.c:988 +#, c-format +msgid "ERROR: Redirection (%d) without location.\n" +msgstr "CHYBA: Pøesmìrování (%d) bez udané nové adresy.\n" + +# , c-format +#: src/http.c:1011 +#, c-format +msgid "%s ERROR %d: %s.\n" +msgstr "%s CHYBA %d: %s.\n" + +#: src/http.c:1023 +msgid "Last-modified header missing -- time-stamps turned off.\n" +msgstr "" +"Nebudu pou¾ívat èasová razítka (`time-stamps'), proto¾e hlavièka\n" +"\"Last-modified\" v odpovìdi serveru schází.\n" + +#: src/http.c:1031 +msgid "Last-modified header invalid -- time-stamp ignored.\n" +msgstr "" +"Ignoruji èasové razítko souboru (`time-stamp'), proto¾e hlavièka \n" +"\"Last-modified\" obsahuje neplatné údaje.\n" + +#: src/http.c:1064 +msgid "Remote file is newer, retrieving.\n" +msgstr "Vzdálený soubor je novìj¹ího data, pøená¹ím.\n" + +# , c-format +#: src/http.c:1098 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld]\n" +"\n" +msgstr "" +"%s (%s) - `%s' ulo¾en [%ld/%ld]\n" +"\n" + +# , c-format +#: src/http.c:1130 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld. " +msgstr "%s (%s) - Spojení uzavøeno na bajtu %ld. " + +# , c-format +#: src/http.c:1138 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld])\n" +"\n" +msgstr "" +"%s (%s) - `%s' ulo¾eno [%ld/%ld])\n" +"\n" + +# , c-format +#: src/http.c:1150 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld/%ld. " +msgstr "%s (%s) - Spojení uzavøeno na bajtu %ld/%ld. " + +# , c-format +#: src/http.c:1161 +#, c-format +msgid "%s (%s) - Read error at byte %ld (%s)." +msgstr "%s (%s) - Chyba pøi ètení dat na bajtu %ld (%s)." + +# , c-format +#: src/http.c:1169 +#, c-format +msgid "%s (%s) - Read error at byte %ld/%ld (%s). " +msgstr "%s (%s) - Chyba pøi ètení dat na bajtu %ld/%ld (%s). " + +# , c-format +#: src/init.c:312 src/netrc.c:250 +#, c-format +msgid "%s: Cannot read %s (%s).\n" +msgstr "%s: Nemohu pøeèíst %s (%s).\n" + +# , c-format +#: src/init.c:333 src/init.c:339 +#, c-format +msgid "%s: Error in %s at line %d.\n" +msgstr "%s: Chyba v %s na øádku %d.\n" + +# , c-format +#: src/init.c:370 +#, c-format +msgid "%s: Warning: Both system and user wgetrc point to `%s'.\n" +msgstr "" +"%s: Varování: Globální i u¾ivatelské wgetrc jsou shodnì ulo¾eny v `%s'.\n" + +# , c-format +#: src/init.c:458 +#, c-format +msgid "%s: BUG: unknown command `%s', value `%s'.\n" +msgstr "%s: Chyba: Neznámý pøíkaz `%s', hodnota `%s'.\n" + +# , c-format +#: src/init.c:485 +#, c-format +msgid "%s: %s: Please specify on or off.\n" +msgstr "%s: %s: Zadejte prosím `on' nebo `off'.\n" + +# , c-format +#: src/init.c:503 src/init.c:760 src/init.c:782 src/init.c:855 +#, c-format +msgid "%s: %s: Invalid specification `%s'.\n" +msgstr "%s: %s: Neplatná specifikace `%s'\n" + +# , c-format +#: src/init.c:616 src/init.c:638 src/init.c:660 src/init.c:686 +#, c-format +msgid "%s: Invalid specification `%s'\n" +msgstr "%s: Neplatná specifikace `%s'\n" + +# , c-format +#: src/main.c:101 +#, c-format +msgid "Usage: %s [OPTION]... [URL]...\n" +msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [URL]...\n" + +# , c-format +#: src/main.c:109 +#, c-format +msgid "GNU Wget %s, a non-interactive network retriever.\n" +msgstr "GNU Wget %s, program pro neinteraktivní stahování souborù.\n" + +#. Had to split this in parts, so the #@@#%# Ultrix compiler and cpp +#. don't bitch. Also, it makes translation much easier. +#: src/main.c:114 +msgid "" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +msgstr "" +"\n" +"Argumenty, povinné u dlouhých pøepínaèù, jsou povinné i pro krátké verze\n" +"pøepínaèù.\n" +"\n" + +#: src/main.c:117 +msgid "" +"Startup:\n" +" -V, --version display the version of Wget and exit.\n" +" -h, --help print this help.\n" +" -b, --background go to background after startup.\n" +" -e, --execute=COMMAND execute a `.wgetrc' command.\n" +"\n" +msgstr "" +"Zaèátek:\n" +" -V, --version vypi¹ informaci o verzi programu Wget a skonèi\n" +" -h, --help vypi¹ tuto nápovìdu\n" +" -b, --background po spu¹tìní pokraèuj v bìhu na pozadí\n" +" -e, --execute=PØÍKAZ proveï `.wgetrc' pøíkaz\n" +"\n" + +# , fuzzy +#: src/main.c:123 +msgid "" +"Logging and input file:\n" +" -o, --output-file=FILE log messages to FILE.\n" +" -a, --append-output=FILE append messages to FILE.\n" +" -d, --debug print debug output.\n" +" -q, --quiet quiet (no output).\n" +" -v, --verbose be verbose (this is the default).\n" +" -nv, --non-verbose turn off verboseness, without being quiet.\n" +" -i, --input-file=FILE read URL-s from file.\n" +" -F, --force-html treat input file as HTML.\n" +"\n" +msgstr "" +"Protokolování a vstupní soubor:\n" +" -o, --output-file=SOUBOR do tohoto souboru ukládej protokol\n" +" -a, --append-output=SOUBOR protokol pøipoj na konec tohoto souboru\n" +" -d, --debug vypisuj ladicí informace\n" +" -q, --quiet nevypisuj vùbec nic\n" +" -v, --verbose buï upovídaný (implicitnì zapnuto)\n" +" -nv, --non-verbose vypisuj pouze nejdùle¾itìj¹í informace\n" +" -i, --input-file=SOUBOR poèíteèní URL odkazy naèti z tohoto souboru\n" +" -F, --force-html soubor s URL je v HTML formátu\n" +"\n" + +# , fuzzy +#: src/main.c:133 +msgid "" +"Download:\n" +" -t, --tries=NUMBER set number of retries to NUMBER (0 " +"unlimits).\n" +" -O --output-document=FILE write documents to FILE.\n" +" -nc, --no-clobber don't clobber existing files.\n" +" -c, --continue restart getting an existing file.\n" +" --dot-style=STYLE set retrieval display style.\n" +" -N, --timestamping don't retrieve files if older than local.\n" +" -S, --server-response print server response.\n" +" --spider don't download anything.\n" +" -T, --timeout=SECONDS set the read timeout to SECONDS.\n" +" -w, --wait=SECONDS wait SECONDS between retrievals.\n" +" -Y, --proxy=on/off turn proxy on or off.\n" +" -Q, --quota=NUMBER set retrieval quota to NUMBER.\n" +"\n" +msgstr "" +"Stahování:\n" +" -t, --tries=ÈÍSLO poèet pokusù stáhnout URL (0 donekoneèna)\n" +" -O --output-document=SOUBOR sta¾ené dokumenty ukládej do tohoto souboru\n" +" -nc, --no-clobber nepøepisuj existující soubory\n" +" -c, --continue zaèni stahovat ji¾ èásteènì pøenesená data\n" +" --dot-style=STYL nastav zpùsob zobrazení pøi stahování dat\n" +" -N, --timestamping nestahuj star¹í soubory (zapni èasová " +"razítka)\n" +" -S, --server-response vypisuj odpovìdi serveru\n" +" --spider nic nestahuj\n" +" -T, --timeout=SEKUNDY nastav timeout pøi ètení na tuto hodnotu\n" +" -w, --wait=SEKUND pøed ka¾dým stahováním poèkej SEKUND sekund\n" +" -Y, --proxy=on/off zapni pøenos pøes proxy (standardnì `off')\n" +" -Q, --quota=NUMBER nastav limit objemu ulo¾ených dat\n" +"\n" + +# , fuzzy +#: src/main.c:147 +msgid "" +"Directories:\n" +" -nd --no-directories don't create directories.\n" +" -x, --force-directories force creation of directories.\n" +" -nH, --no-host-directories don't create host directories.\n" +" -P, --directory-prefix=PREFIX save files to PREFIX/...\n" +" --cut-dirs=NUMBER ignore NUMBER remote directory " +"components.\n" +"\n" +msgstr "" +"Adresáøe:\n" +" -nd --no-directories nevytváøej adresáøe\n" +" -x, --force-directories v¾dy vytváøej adresáøe\n" +" -nH, --no-host-directories nevytváøej adresáøe s adresou serveru\n" +" -P, --directory-prefix=PREFIX ukládej data do PREFIX/...\n" +" --cut-dirs=POÈET nevytváøej prvních POÈET podadresáøù\n" +"\n" + +# , fuzzy +#: src/main.c:154 +msgid "" +"HTTP options:\n" +" --http-user=USER set http user to USER.\n" +" --http-passwd=PASS set http password to PASS.\n" +" -C, --cache=on/off (dis)allow server-cached data (normally " +"allowed).\n" +" --ignore-length ignore `Content-Length' header field.\n" +" --header=STRING insert STRING among the headers.\n" +" --proxy-user=USER set USER as proxy username.\n" +" --proxy-passwd=PASS set PASS as proxy password.\n" +" -s, --save-headers save the HTTP headers to file.\n" +" -U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION.\n" +"\n" +msgstr "" +"Pøepínaèe pro HTTP:\n" +" --http-user=U®IVATEL u¾ivatelské jméno pro autorizovaný http pøenos\n" +" --http-passwd=HESLO heslo pro autorizovaný http pøenos \n" +" -C, --cache=on/off povol èi zaka¾ pou¾ití vyrovnávací pamìti na\n" +" stranì serveru (implicitnì `on')\n" +" --ignore-length ignoruj pole `Content-Length' v hlavièce\n" +" --header=ØETÌZEC po¹li ØETÌZEC serveru jako souèást hlavièek\n" +" --proxy-user=U®IVATEL jméno u¾ivatele vy¾adované pro proxy pøenos\n" +" --proxy-passwd=HESLO heslo pro proxy pøenos\n" +" -s, --save-headers do stahovaného souboru ulo¾ i HTTP hlavièky\n" +" -U, --user-agent=AGENT místo identifikace `Wget/VERZE' posílej\n" +" v hlavièce identifikaèní øetìzec AGENT\n" + +# , fuzzy +#: src/main.c:165 +msgid "" +"FTP options:\n" +" --retr-symlinks retrieve FTP symbolic links.\n" +" -g, --glob=on/off turn file name globbing on or off.\n" +" --passive-ftp use the \"passive\" transfer mode.\n" +"\n" +msgstr "" +"Pøepínaèe pro FTP protokol:\n" +" --retr-symlinks stahuj i symbolické odkazy\n" +" -g, --glob=on/off zapni èi vypni expanzi ¾olíkù ve jménech souborù\n" +" (implicitnì `on')\n" +" --passive-ftp pou¾ij pasivní mód pøenosu dat\n" +"\n" + +#: src/main.c:170 +msgid "" +"Recursive retrieval:\n" +" -r, --recursive recursive web-suck -- use with care!.\n" +" -l, --level=NUMBER maximum recursion depth (0 to unlimit).\n" +" --delete-after delete downloaded files.\n" +" -k, --convert-links convert non-relative links to relative.\n" +" -m, --mirror turn on options suitable for mirroring.\n" +" -nr, --dont-remove-listing don't remove `.listing' files.\n" +"\n" +msgstr "" +"Rekurzivní stahování:\n" +" -r, --recursive rekurzivní stahování -- buïte opatrní!\n" +" -l, --level=NUMBER maximální hloubka rekurze (0 bez limitu)\n" +" --delete-after po pøenosu sma¾ sta¾ené soubory\n" +" -k, --convert-links absolutní URL pøeveï na relativní\n" +" -m, --mirror zapni pøepínaèe vhodné pro zrcadlení dat\n" +" -nr, --dont-remove-listing nema¾ soubory `.listing' s obsahy adresáøù\n" +"\n" + +# , fuzzy +#: src/main.c:178 +msgid "" +"Recursive accept/reject:\n" +" -A, --accept=LIST list of accepted extensions.\n" +" -R, --reject=LIST list of rejected extensions.\n" +" -D, --domains=LIST list of accepted domains.\n" +" --exclude-domains=LIST comma-separated list of rejected " +"domains.\n" +" -L, --relative follow relative links only.\n" +" --follow-ftp follow FTP links from HTML documents.\n" +" -H, --span-hosts go to foreign hosts when recursive.\n" +" -I, --include-directories=LIST list of allowed directories.\n" +" -X, --exclude-directories=LIST list of excluded directories.\n" +" -nh, --no-host-lookup don't DNS-lookup hosts.\n" +" -np, --no-parent don't ascend to the parent directory.\n" +"\n" +msgstr "" +"Omezení pøi rekurzi:\n" +" -A, --accept=SEZNAM seznam povolených extenzí souborù\n" +" -R, --reject=SEZNAM seznam nepovolených extenzí souborù\n" +" -D, --domains=SEZNAM seznam povolených domén\n" +" --exclude-domains=SEZNAM seznam nepovolených domén\n" +" -L, --relative následuj pouze relativní odkazy\n" +" --follow-ftp následuj FTP odkazy v HTML dokumentech\n" +" -H, --span-hosts naèítej dokumenty i z ostatních serverù\n" +" -I, --include-directories=SEZNAM seznam povolených adresáøù\n" +" -X, --exclude-directories=SEZNAM seznam vylouèených adresáøù\n" +" -nh, --no-host-lookup nevyhledávej adresy v DNS\n" +" -np, --no-parent nesestupuj do rodièovského adresáøe\n" +"\n" + +# , fuzzy +#: src/main.c:191 +msgid "Mail bug reports and suggestions to .\n" +msgstr "" +"Zprávy o chybách a návrhy na vylep¹ení programu zasílejte na adresu\n" +" (pouze anglicky).\n" +"Komentáøe k èeskému pøekladu zasílejte na adresu . \n" + +# , fuzzy +#: src/main.c:347 +#, c-format +msgid "%s: debug support not compiled in.\n" +msgstr "%s: program nebyl zkompilován s podporou pro ladìní.\n" + +#: src/main.c:395 +msgid "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"Tento program je ¹íøen v nadìji, ¾e bude u¾iteèný, av¹ak\n" +"BEZ JAKÉKOLI ZÁRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI \n" +"anebo VHODNOSTI PRO URÈITÝ ÚÈEL. Dal¹í podrobnosti hledejte \n" +"v Obecné veøejné licenci GNU.\n" + +#: src/main.c:401 +msgid "" +"\n" +"Written by Hrvoje Niksic .\n" +msgstr "" +"\n" +"Autorem tohto programu je Hrvoje Nik¹iæ \n" + +# , c-format +#: src/main.c:465 +#, c-format +msgid "%s: %s: invalid command\n" +msgstr "%s: %s: neplatný pøíkaz\n" + +# , c-format +#: src/main.c:515 +#, c-format +msgid "%s: illegal option -- `-n%c'\n" +msgstr "%s: nepøípustný pøepínaè -- `-n%c'\n" + +# , c-format +#. #### Something nicer should be printed here -- similar to the +#. pre-1.5 `--help' page. +#: src/main.c:518 src/main.c:560 src/main.c:591 +#, c-format +msgid "Try `%s --help' for more options.\n" +msgstr "Pøíkaz `%s --help' vypí¹e význam platných pøepínaèù.\n" + +#: src/main.c:571 +msgid "Can't be verbose and quiet at the same time.\n" +msgstr "Nedoká¾u být upovídaný a zitcha najednou.\n" + +#: src/main.c:577 +msgid "Can't timestamp and not clobber old files at the same time.\n" +msgstr "Nedoká¾u pou¾ívat èasová razítka a nemazat pøitom staré soubory.\n" + +#. No URL specified. +#: src/main.c:586 +#, c-format +msgid "%s: missing URL\n" +msgstr "%s: postrádám URL\n" + +# , c-format +#: src/main.c:674 +#, c-format +msgid "No URLs found in %s.\n" +msgstr "V souboru `%s' nebyla nalezena ¾ádná URL.\n" + +# , c-format +#: src/main.c:683 +#, c-format +msgid "" +"\n" +"FINISHED --%s--\n" +"Downloaded: %s bytes in %d files\n" +msgstr "" +"\n" +"KONEC --%s--\n" +"Celkem naèteno %s bajtù v %d souborech\n" + +# , c-format +#: src/main.c:688 +#, c-format +msgid "Download quota (%s bytes) EXCEEDED!\n" +msgstr "Pøekroèen limit objemu ulo¾ených dat (%s bajtù)!\n" + +#. Please note that the double `%' in `%%s' is intentional, because +#. redirect_output passes tmp through printf. +#: src/main.c:715 +msgid "%s received, redirecting output to `%%s'.\n" +msgstr "Zachycen signál %s , výstup pøesmìrován do `%%s'.\n" + +# , c-format +#: src/mswindows.c:118 +#, c-format +msgid "" +"\n" +"CTRL+Break received, redirecting output to `%s'.\n" +"Execution continued in background.\n" +"You may stop Wget by pressing CTRL+ALT+DELETE.\n" +msgstr "" +"\n" +"Stisknut CTRL+Break, pøesmìrovávám výstup do `%s'\n" +"Program pokraèuje v bìhu na pozadí.\n" +"Wget lze zastavit stiskem CTRL+ALT+DELETE.\n" + +#. parent, no error +#: src/mswindows.c:135 src/utils.c:268 +msgid "Continuing in background.\n" +msgstr "Pokraèuji v bìhu na pozadí.\n" + +# , c-format +#: src/mswindows.c:137 src/utils.c:270 +#, c-format +msgid "Output will be written to `%s'.\n" +msgstr "Výstup bude zapsán do `%s'.\n" + +# , c-format +#: src/mswindows.c:227 +#, c-format +msgid "Starting WinHelp %s\n" +msgstr "Spou¹tím WinHelp %s\n" + +#: src/mswindows.c:254 src/mswindows.c:262 +#, c-format +msgid "%s: Couldn't find usable socket driver.\n" +msgstr "%s: Nemohu najít pou¾itelný ovladaè socketù.\n" + +# , c-format +#: src/netrc.c:334 +#, c-format +msgid "%s: %s:%d: warning: \"%s\" token appears before any machine name\n" +msgstr "" +"%s: %s:%d varování: token \"%s\" je uveden je¹tì pøed jakýmkoliv\n" +" názvem poèítaèe\n" + +# , c-format +#: src/netrc.c:365 +#, c-format +msgid "%s: %s:%d: unknown token \"%s\"\n" +msgstr "%s: %s:%d: neznámý token \"%s\"\n" + +# , c-format +#: src/netrc.c:429 +#, c-format +msgid "Usage: %s NETRC [HOSTNAME]\n" +msgstr "Pou¾ití: %s NETRC [NÁZEV POÈÍTAÈE]\n" + +# , c-format +#: src/netrc.c:439 +#, c-format +msgid "%s: cannot stat %s: %s\n" +msgstr "%s: volání `stat %s' skonèilo chybou: %s\n" + +# , c-format +#: src/recur.c:449 src/retr.c:462 +#, c-format +msgid "Removing %s.\n" +msgstr "Ma¾u %s.\n" + +# , c-format +#: src/recur.c:450 +#, c-format +msgid "Removing %s since it should be rejected.\n" +msgstr "Ma¾u %s, proto¾e tento soubor není po¾adován.\n" + +#: src/recur.c:609 +msgid "Loading robots.txt; please ignore errors.\n" +msgstr "Naèítám `robots.txt'. Chybová hlá¹ení ignorujte, prosím.\n" + +# , c-format +#: src/retr.c:193 +#, c-format +msgid "" +"\n" +" [ skipping %dK ]" +msgstr "" +"\n" +" [ pøeskakuji %dK ]" + +#: src/retr.c:344 +msgid "Could not find proxy host.\n" +msgstr "Nemohu najít proxy server.\n" + +# , c-format +#: src/retr.c:355 +#, c-format +msgid "Proxy %s: Must be HTTP.\n" +msgstr "Proxy %s: Musí být HTTP.\n" + +# , c-format +#: src/retr.c:398 +#, c-format +msgid "%s: Redirection to itself.\n" +msgstr "%s: Pøesmìrování na sebe sama.\n" + +#: src/retr.c:483 +msgid "" +"Giving up.\n" +"\n" +msgstr "" +"Vzdávám to.\n" +"\n" + +#: src/retr.c:483 +msgid "" +"Retrying.\n" +"\n" +msgstr "" +"Zkou¹ím to znovu.\n" +"\n" + +# , c-format +#: src/url.c:940 +#, c-format +msgid "Error (%s): Link %s without a base provided.\n" +msgstr "Chyba (%s): K relativnímu odkazu %s nelze najít bázový odkaz.\n" + +# , c-format +#: src/url.c:955 +#, c-format +msgid "Error (%s): Base %s relative, without referer URL.\n" +msgstr "Chyba (%s): Bázový odkaz %s nesmí být relativní.\n" + +# , c-format +#: src/url.c:1373 +#, c-format +msgid "Converting %s... " +msgstr "Konvertuji %s... " + +# , c-format +#: src/url.c:1378 src/url.c:1389 +#, c-format +msgid "Cannot convert links in %s: %s\n" +msgstr "Nedoká¾u pøevést odkazy v %s: %s\n" + +# , c-format +#: src/utils.c:71 +#, c-format +msgid "%s: %s: Not enough memory.\n" +msgstr "%s: %s: Není dost pamìti.\n" + +#: src/utils.c:203 +msgid "Unknown/unsupported protocol" +msgstr "Neznámý/nepodporovaný protokol" + +#: src/utils.c:206 +msgid "Invalid port specification" +msgstr "Neplatná specifikace portu" + +#: src/utils.c:209 +msgid "Invalid host name" +msgstr "Neplatné jméno stroje" + +# , c-format +#: src/utils.c:430 +#, c-format +msgid "Failed to unlink symlink `%s': %s\n" +msgstr "Nebylo mo¾né odstranit symbolický odkaz `%s': %s\n" diff --git a/po/de.gmo b/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..57fdc24eb5346550caa049cb3359a5d203b28f8b GIT binary patch literal 23819 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 h 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, 1998 +# Karl Eichwalder , 1997-1998 +# +# 1998-06-15 19:31:58 MEST +# Kosmetische Änderungen für 1.5.2-b4. -ke- +# +# 1998-05-03 09:56:27 MEST +# Nachträge für wget-1.5.1. -ke- +# +# 1998-04-01 20:19:31 MEST +# Nachträge für wget-1.5-b14. +# getopt.c übersetzt. -ke- +# +# 1998-02-21 13:39:23 MET +# Nachträge für wget-1.5-b8. -ke- +# +# 1998-02-08 12:29:34 MET +# Abstimmungen auf wget-1.5-b5. +# Meldungen von getopt.c habe ich bewusst nicht übersetzt. -ke- +# +msgid "" +msgstr "" +"Project-Id-Version: wget 1.5.2-b4\n" +"POT-Creation-Date: 1998-09-21 19:08+0200\n" +"PO-Revision-Date: 1998-06-15 19:25+02:00\n" +"Last-Translator: Karl Eichwalder \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +#. Login to the server: +#. First: Establish the control connection. +#: src/ftp.c:147 src/http.c:346 +#, c-format +msgid "Connecting to %s:%hu... " +msgstr "Verbindungsaufbau zu %s:%hu... " + +#: src/ftp.c:169 src/ftp.c:411 src/http.c:363 +#, c-format +msgid "Connection to %s:%hu refused.\n" +msgstr "Verbindung nach %s:%hu zurückgewiesen.\n" + +#. Second: Login with proper USER/PASS sequence. +#: src/ftp.c:190 src/http.c:374 +msgid "connected!\n" +msgstr "verbunden!\n" + +#: src/ftp.c:191 +#, c-format +msgid "Logging in as %s ... " +msgstr "Einloggen als %s ... " + +# Ist das gemeint? +#: src/ftp.c:200 src/ftp.c:253 src/ftp.c:301 src/ftp.c:353 src/ftp.c:447 +#: src/ftp.c:520 src/ftp.c:568 src/ftp.c:616 +msgid "Error in server response, closing control connection.\n" +msgstr "Fehler bei der Antwort des Servers, schließe Kontroll-Verbindung.\n" + +#: src/ftp.c:208 +msgid "Error in server greeting.\n" +msgstr "Fehler bei der Begrüßung des Servers.\n" + +#: src/ftp.c:216 src/ftp.c:262 src/ftp.c:310 src/ftp.c:362 src/ftp.c:457 +#: src/ftp.c:530 src/ftp.c:578 src/ftp.c:626 +msgid "Write failed, closing control connection.\n" +msgstr "Schreiben schlug fehl, schließe Kontroll-Verbindung.\n" + +#: src/ftp.c:223 +msgid "The server refuses login.\n" +msgstr "Der Server weist Einloggen zurück.\n" + +#: src/ftp.c:230 +msgid "Login incorrect.\n" +msgstr "Einloggen nicht richtig.\n" + +#: src/ftp.c:237 +msgid "Logged in!\n" +msgstr "Eingeloggt!\n" + +#: src/ftp.c:270 +#, c-format +msgid "Unknown type `%c', closing control connection.\n" +msgstr "Unbekannte Art »%c«, schließe Kontroll-Verbindung.\n" + +#: src/ftp.c:283 +msgid "done. " +msgstr "fertig. " + +#: src/ftp.c:289 +msgid "==> CWD not needed.\n" +msgstr "==> CWD nicht notwendig.\n" + +#: src/ftp.c:317 +#, c-format +msgid "" +"No such directory `%s'.\n" +"\n" +msgstr "" +"Kein solches Verzeichnis »%s«.\n" +"\n" + +#: src/ftp.c:331 src/ftp.c:599 src/ftp.c:647 src/url.c:1431 +msgid "done.\n" +msgstr "fertig.\n" + +#. do not CWD +#: src/ftp.c:335 +msgid "==> CWD not required.\n" +msgstr "==> CWD nicht erforderlich.\n" + +#: src/ftp.c:369 +msgid "Cannot initiate PASV transfer.\n" +msgstr "Kann PASV-Übertragung nicht beginnen.\n" + +#: src/ftp.c:373 +msgid "Cannot parse PASV response.\n" +msgstr "Kann PASV-Antwort nicht auswerten.\n" + +#: src/ftp.c:387 +#, c-format +msgid "Will try connecting to %s:%hu.\n" +msgstr "Versuche Verbindung zu %s:%hu herzustellen.\n" + +#: src/ftp.c:432 src/ftp.c:504 src/ftp.c:548 +msgid "done. " +msgstr "fertig. " + +#: src/ftp.c:474 +#, c-format +msgid "Bind error (%s).\n" +msgstr "Verbindungsfehler (%s).\n" + +#: src/ftp.c:490 +msgid "Invalid PORT.\n" +msgstr "Ungültiger PORT.\n" + +#: src/ftp.c:537 +msgid "" +"\n" +"REST failed, starting from scratch.\n" +msgstr "" +"\n" +"REST schlug fehl, starte von Null.\n" + +#: src/ftp.c:586 +#, c-format +msgid "" +"No such file `%s'.\n" +"\n" +msgstr "" +"Keine solche Datei »%s«.\n" +"\n" + +#: src/ftp.c:634 +#, c-format +msgid "" +"No such file or directory `%s'.\n" +"\n" +msgstr "" +"Keine solche Datei oder kein solches Verzeichnis »%s«.\n" +"\n" + +#: src/ftp.c:692 src/ftp.c:699 +#, c-format +msgid "Length: %s" +msgstr "Länge: %s" + +#: src/ftp.c:694 src/ftp.c:701 +#, c-format +msgid " [%s to go]" +msgstr " [noch %s]" + +# wohl "unmaßgeblich", nicht "ohne Berechtigung" +#: src/ftp.c:703 +msgid " (unauthoritative)\n" +msgstr " (unmaßgeblich)\n" + +#: src/ftp.c:721 +#, c-format +msgid "%s: %s, closing control connection.\n" +msgstr "%s: %s, schließe Kontroll-Verbindung.\n" + +#: src/ftp.c:729 +#, c-format +msgid "%s (%s) - Data connection: %s; " +msgstr "%s (%s) - Daten-Verbindung: %s; " + +#: src/ftp.c:746 +msgid "Control connection closed.\n" +msgstr "Kontroll-Verbindung geschlossen.\n" + +#: src/ftp.c:764 +msgid "Data transfer aborted.\n" +msgstr "Daten-Übertragung abgeschlossen.\n" + +#: src/ftp.c:830 +#, c-format +msgid "File `%s' already there, not retrieving.\n" +msgstr "Datei »%s« ist schon vorhanden, kein Hol-Versuch.\n" + +#: src/ftp.c:896 src/http.c:922 +#, c-format +msgid "(try:%2d)" +msgstr "(versuche:%2d)" + +# oder "gesichert"? +#: src/ftp.c:955 src/http.c:1116 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld]\n" +"\n" +msgstr "" +"%s (%s) - »%s« gespeichert [%ld]\n" +"\n" + +#: src/ftp.c:1001 +#, c-format +msgid "Using `%s' as listing tmp file.\n" +msgstr "Benutze »%s« als temporäre Auflistungsdatei.\n" + +#: src/ftp.c:1013 +#, c-format +msgid "Removed `%s'.\n" +msgstr "Entfernt »%s«.\n" + +#: src/ftp.c:1049 +#, c-format +msgid "Recursion depth %d exceeded max. depth %d.\n" +msgstr "Die Rekursionstiefe %d übersteigt die max. Tiefe %d.\n" + +#: src/ftp.c:1096 src/http.c:1054 +#, c-format +msgid "" +"Local file `%s' is more recent, not retrieving.\n" +"\n" +msgstr "" +"Lokale Datei »%s« ist neuer, kein Hol-Versuch.\n" +"\n" + +#: src/ftp.c:1102 src/http.c:1060 +#, c-format +msgid "The sizes do not match (local %ld), retrieving.\n" +msgstr "Größen stimmen nicht überein (lokal %ld), Hol-Versuch.\n" + +#: src/ftp.c:1119 +msgid "Invalid name of the symlink, skipping.\n" +msgstr "Ungültiger Name für einen symbolischen Verweis, überspringe.\n" + +#: src/ftp.c:1136 +#, c-format +msgid "" +"Already have correct symlink %s -> %s\n" +"\n" +msgstr "Der richtige symbolische Verweis %s -> %s ist schon vorhanden\n" + +#: src/ftp.c:1144 +#, c-format +msgid "Creating symlink %s -> %s\n" +msgstr "Lege symbolischen Verweis %s -> %s an\n" + +#: src/ftp.c:1155 +#, c-format +msgid "Symlinks not supported, skipping symlink `%s'.\n" +msgstr "" +"Symbolische Verweise nicht unterstützt, überspringe symbolischen Verweis " +"»%s«.\n" + +#: src/ftp.c:1167 +#, c-format +msgid "Skipping directory `%s'.\n" +msgstr "Überspringe Verzeichnis »%s«.\n" + +#: src/ftp.c:1176 +#, c-format +msgid "%s: unknown/unsupported file type.\n" +msgstr "%s: unbekannter/nicht unterstüzter Dateityp.\n" + +#: src/ftp.c:1193 +#, c-format +msgid "%s: corrupt time-stamp.\n" +msgstr "%s: beschädigter Zeitstempel.\n" + +#: src/ftp.c:1213 +#, c-format +msgid "Will not retrieve dirs since depth is %d (max %d).\n" +msgstr "Hole Verzeichnisse nicht, da die Tiefe %d ist (max %d).\n" + +#: src/ftp.c:1252 +#, c-format +msgid "Not descending to `%s' as it is excluded/not-included.\n" +msgstr "" +"Steige nicht zu »%s« hinab, da es ausgeschlossen/nicht eingeschlossen ist.\n" + +#: src/ftp.c:1297 +#, c-format +msgid "Rejecting `%s'.\n" +msgstr "Weise zurück »%s«.\n" + +#. No luck. +#. #### This message SUCKS. We should see what was the +#. reason that nothing was retrieved. +#: src/ftp.c:1344 +#, c-format +msgid "No matches on pattern `%s'.\n" +msgstr "Keine Übereinstimmungen bei dem Muster »%s«.\n" + +#: src/ftp.c:1404 +#, c-format +msgid "Wrote HTML-ized index to `%s' [%ld].\n" +msgstr "Schreibe HTML-artigen Index nach »%s« [%ld].\n" + +#: src/ftp.c:1409 +#, c-format +msgid "Wrote HTML-ized index to `%s'.\n" +msgstr "HTML-artiger Index nach »%s« geschrieben.\n" + +#: src/getopt.c:454 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: Option `%s' ist zweideutig\n" + +#: src/getopt.c:478 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: Option `--%s' erlaubt kein Argument\n" + +#: src/getopt.c:483 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: Option `%c%s' erlaubt kein Argument\n" + +#: src/getopt.c:498 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: Option `%s' benötigt kein Argument\n" + +#. --option +#: src/getopt.c:528 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: nicht erkannte Option `--%s'\n" + +#. +option or -option +#: src/getopt.c:532 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: nicht erkannte Option `%c%s'\n" + +#. 1003.2 specifies the format of this message. +#: src/getopt.c:563 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ungültige Option -- %c\n" + +#. 1003.2 specifies the format of this message. +#: src/getopt.c:602 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: Option verlangt ein Argument -- %c\n" + +#: src/host.c:432 +#, c-format +msgid "%s: Cannot determine user-id.\n" +msgstr "%s: Kann Benutzer-Kennung (User-ID) nicht bestimmen.\n" + +#: src/host.c:444 +#, c-format +msgid "%s: Warning: uname failed: %s\n" +msgstr "%s: Warnung: uname fehlgeschlagen: %s\n" + +#: src/host.c:456 +#, c-format +msgid "%s: Warning: gethostname failed\n" +msgstr "%s: Warnung: gethostname fehlgeschlagen\n" + +#: src/host.c:484 +#, c-format +msgid "%s: Warning: cannot determine local IP address.\n" +msgstr "%s: Warnung: lokale IP-Adresse nicht bestimmbar.\n" + +#: src/host.c:498 +#, c-format +msgid "%s: Warning: cannot reverse-lookup local IP address.\n" +msgstr "%s: Warnung: kein \"reverse-lookup\" für lokale IP-Adresse möglich.\n" + +#. This gets ticked pretty often. Karl Berry reports +#. that there can be valid reasons for the local host +#. name not to be an FQDN, so I've decided to remove the +#. annoying warning. +#: src/host.c:511 +#, c-format +msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n" +msgstr "" +"%s: Warnung: \"reverse-lookup\" für lokale Adresse ergibt keinen FQDN!\n" + +#: src/host.c:539 +msgid "Host not found" +msgstr "Host nicht gefunden" + +#: src/host.c:541 +msgid "Unknown error" +msgstr "Unbekannter Fehler" + +#: src/html.c:439 src/html.c:441 +#, c-format +msgid "Index of /%s on %s:%d" +msgstr "Index von /%s auf %s:%d" + +#: src/html.c:463 +msgid "time unknown " +msgstr "Zeit unbekannt " + +#: src/html.c:467 +msgid "File " +msgstr "Datei " + +#: src/html.c:470 +msgid "Directory " +msgstr "Verzeichnis " + +#: src/html.c:473 +msgid "Link " +msgstr "Verweis " + +#: src/html.c:476 +msgid "Not sure " +msgstr "Nicht sicher" + +#: src/html.c:494 +#, c-format +msgid " (%s bytes)" +msgstr " (%s Bytes)" + +#: src/http.c:492 +msgid "Failed writing HTTP request.\n" +msgstr "HTTP-Anforderung zu schreiben schlug fehl.\n" + +#: src/http.c:497 +#, c-format +msgid "%s request sent, awaiting response... " +msgstr "%s Anforderung gesendet, warte auf Antwort... " + +#: src/http.c:536 +msgid "End of file while parsing headers.\n" +msgstr "Dateiende beim auswerten der Kopfzeilen.\n" + +#: src/http.c:547 +#, c-format +msgid "Read error (%s) in headers.\n" +msgstr "Lesefehler (%s) bei den Kopfzeilen.\n" + +#: src/http.c:587 +msgid "No data received" +msgstr "Keine Daten empfangen" + +#: src/http.c:589 +msgid "Malformed status line" +msgstr "Nicht korrekte Statuszeile" + +#: src/http.c:594 +msgid "(no description)" +msgstr "(keine Beschreibung)" + +#. If we have tried it already, then there is not point +#. retrying it. +#: src/http.c:678 +msgid "Authorization failed.\n" +msgstr "Authorisierung fehlgeschlagen.\n" + +#: src/http.c:685 +msgid "Unknown authentication scheme.\n" +msgstr "Unbekannten Authentifizierungsablauf.\n" + +#: src/http.c:748 +#, c-format +msgid "Location: %s%s\n" +msgstr "Platz: %s%s\n" + +#: src/http.c:749 src/http.c:774 +msgid "unspecified" +msgstr "nicht spezifiziert" + +#: src/http.c:750 +msgid " [following]" +msgstr "[folge]" + +# Header +#. No need to print this output if the body won't be +#. downloaded at all, or if the original server response is +#. printed. +#: src/http.c:764 +msgid "Length: " +msgstr "Länge: " + +#: src/http.c:769 +#, c-format +msgid " (%s to go)" +msgstr " (noch %s)" + +#: src/http.c:774 +msgid "ignored" +msgstr "übergangen" + +#: src/http.c:857 +msgid "Warning: wildcards not supported in HTTP.\n" +msgstr "Warnung: Joker-Zeichen werden bei HTTP nicht unterstützt.\n" + +#. If opt.noclobber is turned on and file already exists, do not +#. retrieve the file +#: src/http.c:872 +#, c-format +msgid "File `%s' already there, will not retrieve.\n" +msgstr "Datei »%s« schon vorhanden, kein Hol-Versuch.\n" + +#: src/http.c:978 +#, c-format +msgid "Cannot write to `%s' (%s).\n" +msgstr "Kann nicht nach »%s« schreiben (%s).\n" + +# Was meint hier location? +#: src/http.c:988 +#, c-format +msgid "ERROR: Redirection (%d) without location.\n" +msgstr "FEHLER: Redirektion (%d) ohne Ziel(?).\n" + +#: src/http.c:1011 +#, c-format +msgid "%s ERROR %d: %s.\n" +msgstr "%s FEHLER %d: %s.\n" + +#: src/http.c:1023 +msgid "Last-modified header missing -- time-stamps turned off.\n" +msgstr "»Last-modified«-Kopfzeile fehlt -- Zeitstempel abgeschaltet.\n" + +#: src/http.c:1031 +msgid "Last-modified header invalid -- time-stamp ignored.\n" +msgstr "»Last-modified«-Kopfzeile ungültig -- Zeitstempeln übergangen.\n" + +#: src/http.c:1064 +msgid "Remote file is newer, retrieving.\n" +msgstr "Entfernte Datei ist neuer, Hol-Versuch.\n" + +#: src/http.c:1098 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld]\n" +"\n" +msgstr "" +"%s (%s) - »%s« gesichert [%ld/%ld]\n" +"\n" + +#: src/http.c:1130 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld. " +msgstr "%s (%s) - Verbindung bei Byte %ld geschlossen. " + +#: src/http.c:1138 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld])\n" +"\n" +msgstr "" +"%s (%s) - »%s« gesichert [%ld/%ld])\n" +"\n" + +#: src/http.c:1150 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld/%ld. " +msgstr "%s (%s) - Verbindung bei Byte %ld/%ld geschlossen. " + +#: src/http.c:1161 +#, c-format +msgid "%s (%s) - Read error at byte %ld (%s)." +msgstr "%s (%s) - Lesefehler bei Byte %ld (%s)." + +#: src/http.c:1169 +#, c-format +msgid "%s (%s) - Read error at byte %ld/%ld (%s). " +msgstr "%s (%s) - Lesefehler bei Byte %ld/%ld (%s). " + +#: src/init.c:312 src/netrc.c:250 +#, c-format +msgid "%s: Cannot read %s (%s).\n" +msgstr "%s: Kann »%s« nicht lesen (%s).\n" + +#: src/init.c:333 src/init.c:339 +#, c-format +msgid "%s: Error in %s at line %d.\n" +msgstr "%s: Fehler in »%s« bei Zeile %d.\n" + +#: src/init.c:370 +#, c-format +msgid "%s: Warning: Both system and user wgetrc point to `%s'.\n" +msgstr "%s: Warnung: wgetrc des Systems und des Benutzers zeigen nach »%s«.\n" + +#: src/init.c:458 +#, c-format +msgid "%s: BUG: unknown command `%s', value `%s'.\n" +msgstr "%s: Unbekannter Befehl »%s«, Wert »%s«.\n" + +#: src/init.c:485 +#, c-format +msgid "%s: %s: Please specify on or off.\n" +msgstr "%s: %s: Bitte »on« oder »off« angeben.\n" + +#: src/init.c:503 src/init.c:760 src/init.c:782 src/init.c:855 +#, c-format +msgid "%s: %s: Invalid specification `%s'.\n" +msgstr "%s: %s: Ungültige Angabe »%s«\n" + +#: src/init.c:616 src/init.c:638 src/init.c:660 src/init.c:686 +#, c-format +msgid "%s: Invalid specification `%s'\n" +msgstr "%s: Ungültige Angabe »%s«\n" + +#: src/main.c:101 +#, c-format +msgid "Usage: %s [OPTION]... [URL]...\n" +msgstr "Syntax: %s [OPTION]... [URL]...\n" + +#: src/main.c:109 +#, c-format +msgid "GNU Wget %s, a non-interactive network retriever.\n" +msgstr "GNU Wget %s, ein nicht-interaktives Netzwerk-Tool zum Holen.\n" + +#. Had to split this in parts, so the #@@#%# Ultrix compiler and cpp +#. don't bitch. Also, it makes translation much easier. +#: src/main.c:114 +msgid "" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +msgstr "" +"\n" +"Zwingende Argumente zu langen Optionen sind auch zwingend bei kurzen " +"Optionen.\n" +"\n" + +#: src/main.c:117 +msgid "" +"Startup:\n" +" -V, --version display the version of Wget and exit.\n" +" -h, --help print this help.\n" +" -b, --background go to background after startup.\n" +" -e, --execute=COMMAND execute a `.wgetrc' command.\n" +"\n" +msgstr "" +"Beim Start:\n" +" -V, --version Programmversion anzeigen\n" +" -h, --help diese Hilfe anzeigen\n" +" -b, --background nach dem Starten in den Hintergrund gehen\n" +" -e, --execute=BEFEHL einen ».wgetrc«-Befehl ausführen\n" +"\n" + +#: src/main.c:123 +msgid "" +"Logging and input file:\n" +" -o, --output-file=FILE log messages to FILE.\n" +" -a, --append-output=FILE append messages to FILE.\n" +" -d, --debug print debug output.\n" +" -q, --quiet quiet (no output).\n" +" -v, --verbose be verbose (this is the default).\n" +" -nv, --non-verbose turn off verboseness, without being quiet.\n" +" -i, --input-file=FILE read URL-s from file.\n" +" -F, --force-html treat input file as HTML.\n" +"\n" +msgstr "" +"Log-Datei schreiben und Eingabe-Datei:\n" +" -o, --output-file=DATEI Log-Meldungen in DATEI schreiben\n" +" -a, --append-output=DATEI Meldungen der DATEI anhängen\n" +" -d, --debug Debug-Ausgabe anzeigen\n" +" -q, --quiet still (keine Ausgabe von Meldungen)\n" +" -v, --verbose mitteilsam (dies ist Standard)\n" +" -nv, --non-verbose Mitteilsamkeit reduzieren; nicht ganz still\n" +" -i, --input-file=DATEI URLs aus DATEI lesen\n" +" -F, --force-html Eingabe-Datei als HTML behandeln\n" +"\n" + +#: src/main.c:133 +msgid "" +"Download:\n" +" -t, --tries=NUMBER set number of retries to NUMBER (0 " +"unlimits).\n" +" -O --output-document=FILE write documents to FILE.\n" +" -nc, --no-clobber don't clobber existing files.\n" +" -c, --continue restart getting an existing file.\n" +" --dot-style=STYLE set retrieval display style.\n" +" -N, --timestamping don't retrieve files if older than local.\n" +" -S, --server-response print server response.\n" +" --spider don't download anything.\n" +" -T, --timeout=SECONDS set the read timeout to SECONDS.\n" +" -w, --wait=SECONDS wait SECONDS between retrievals.\n" +" -Y, --proxy=on/off turn proxy on or off.\n" +" -Q, --quota=NUMBER set retrieval quota to NUMBER.\n" +"\n" +msgstr "" +"Holen (download):\n" +" -t, --tries=ZAHL setze Anzahl der Wiederholversuch auf ZAHL\n" +" (0 ohne Beschränkung)\n" +" -O --output-document=DATEI schreibe Dokumente in DATEI\n" +" -nc, --no-clobber bestehende Dateien nicht überschreiben\n" +" -c, --continue beginne erneut, eine existierende Datei\n" +" zu holen\n" +" --dot-style=STYLE Hol-Anzeige auf STYLE setzen\n" +" -N, --timestamping hole keine Dateien, die älter als die " +"lokalen\n" +" sind\n" +" -S, --server-response Antwort des Servers anzeigen\n" +" --spider nichts holen (don't download anything)\n" +" -T, --timeout=SEKUNDEN den Lese-Timeout auf SEKUNDEN setzen\n" +" -w, --wait=SEKUNDEN SEKUNDEN zwischen den Hol-Versuchen warten\n" +" -Y, --proxy=on/off Proxy ein (»on«) oder aus (»off«) stellen\n" +" -Q, --quota=ZAHL setze die Hol-Vorgänge auf ZAHL\n" +"\n" + +#: src/main.c:147 +msgid "" +"Directories:\n" +" -nd --no-directories don't create directories.\n" +" -x, --force-directories force creation of directories.\n" +" -nH, --no-host-directories don't create host directories.\n" +" -P, --directory-prefix=PREFIX save files to PREFIX/...\n" +" --cut-dirs=NUMBER ignore NUMBER remote directory " +"components.\n" +"\n" +msgstr "" +"Verzeichnisse:\n" +" -nd --no-directories keine Verzeichnisse anlegen\n" +" -x, --force-directories Anlegen von Verzeichnissen erwingen\n" +" -nH, --no-host-directories keine Host-Verzeichnisse anlegen\n" +" -P, --directory-prefix=PREFIX Dateien nach PREFIX/... sichern\n" +" --cut-dirs=ZAHL ignoriere die ZAHL der entfernten\n" +" Verzeichnisbestandteile\n" +"\n" + +#: src/main.c:154 +msgid "" +"HTTP options:\n" +" --http-user=USER set http user to USER.\n" +" --http-passwd=PASS set http password to PASS.\n" +" -C, --cache=on/off (dis)allow server-cached data (normally " +"allowed).\n" +" --ignore-length ignore `Content-Length' header field.\n" +" --header=STRING insert STRING among the headers.\n" +" --proxy-user=USER set USER as proxy username.\n" +" --proxy-passwd=PASS set PASS as proxy password.\n" +" -s, --save-headers save the HTTP headers to file.\n" +" -U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION.\n" +"\n" +msgstr "" +"HTTP-Optionen:\n" +" --http-user=USER setze http-Benutzer auf USER\n" +" --http-passwd=PASS setse http-Passwort auf PASS\n" +" -C, --cache=on/off erlaube/verbiete server-gepufferte Daten\n" +" (server-cached data) (normalerweise " +"erlaubt)\n" +" --ignore-length ignoriere das »Content-Length«-Kopffeld\n" +" --header=ZEICHENKETTE ZEICHENKETTE zwischen die Kopfzeilen einfügen\n" +" --proxy-user=USER setze USER als Proxy-Benutzername\n" +" --proxy-passwd=PASS setze PASS als Proxy-Passwort\n" +" -s, --save-headers sichere die HTTP-Kopfzeilen in Datei\n" +" -U, --user-agent=AGENT als AGENT anstelle of Wget/VERSION " +"identifizieren\n" +"\n" + +#: src/main.c:165 +msgid "" +"FTP options:\n" +" --retr-symlinks retrieve FTP symbolic links.\n" +" -g, --glob=on/off turn file name globbing on or off.\n" +" --passive-ftp use the \"passive\" transfer mode.\n" +"\n" +msgstr "" +"FTP-Optionen:\n" +" --retr-symlinks hole symbolische Verweise (FTP)\n" +" -g, --glob=on/off Dateinamen-»Globbing« ein (»on«) oder aus (»off«)\n" +" stellen\n" +" --passive-ftp den \"passiven\" Übertragungsmodus verwenden\n" +"\n" + +#: src/main.c:170 +msgid "" +"Recursive retrieval:\n" +" -r, --recursive recursive web-suck -- use with care!.\n" +" -l, --level=NUMBER maximum recursion depth (0 to unlimit).\n" +" --delete-after delete downloaded files.\n" +" -k, --convert-links convert non-relative links to relative.\n" +" -m, --mirror turn on options suitable for mirroring.\n" +" -nr, --dont-remove-listing don't remove `.listing' files.\n" +"\n" +msgstr "" +"Rekursives Holen:\n" +" -r, --recursive rekursives Web-Saugen -- mit Umsicht " +"verwenden!\n" +" -l, --level=Zahl maximale Rekursionstiefe (0 ohne Begrenzung)\n" +" --delete-after geholte Dateien löschen\n" +" -k, --convert-links nicht-relative Verweise in relative " +"umwandeln\n" +" -m, --mirror geeignete Optionen fürs Spiegeln (mirroring)\n" +" einschalten\n" +" -nr, --dont-remove-listing ».listing«-Dateien nicht entfernen\n" +"\n" + +#: src/main.c:178 +msgid "" +"Recursive accept/reject:\n" +" -A, --accept=LIST list of accepted extensions.\n" +" -R, --reject=LIST list of rejected extensions.\n" +" -D, --domains=LIST list of accepted domains.\n" +" --exclude-domains=LIST comma-separated list of rejected " +"domains.\n" +" -L, --relative follow relative links only.\n" +" --follow-ftp follow FTP links from HTML documents.\n" +" -H, --span-hosts go to foreign hosts when recursive.\n" +" -I, --include-directories=LIST list of allowed directories.\n" +" -X, --exclude-directories=LIST list of excluded directories.\n" +" -nh, --no-host-lookup don't DNS-lookup hosts.\n" +" -np, --no-parent don't ascend to the parent directory.\n" +"\n" +msgstr "" +"Recursiv erlauben/zurückweisen:\n" +" -A, --accept=LISTE Liste der erlaubten Erweiterungen\n" +" -R, --reject=LISTE Liste der zurückzuweisenden " +"Erweiterungen\n" +" -D, --domains=LISTE Liste der erlaubten Domains\n" +" --exclude-domains=LISTE komma-unterteilte Liste der\n" +" zurückzuweisen Domains\n" +" -L, --relative nur relativen Verweisen folgen\n" +" --follow-ftp FTP-Verweisen von HTML-Dokumenten aus\n" +" folgen\n" +" -H, --span-hosts wenn »--recursive«, auch zu fremden " +"Hosts\n" +" gehen\n" +" -I, --include-directories=LISTE Liste der erlaubten Verzeichnisse\n" +" -X, --exclude-directories=LISTE Liste der auszuschließenden " +"Verzeichnisse\n" +" -nh, --no-host-lookup kein DNS-lookup für Hosts durchführen\n" +" -np, --no-parent nicht zum übergeordneten Verzeichnis\n" +" hinaufsteigen\n" +"\n" + +#: src/main.c:191 +msgid "Mail bug reports and suggestions to .\n" +msgstr "" +"Fehlerberichte und Verbesserungsvorschläge bitte an \n" +"schicken.\n" +"\n" +"Für die deutsche Übersetzung ist die Mailingliste zuständig.\n" + +#: src/main.c:347 +#, c-format +msgid "%s: debug support not compiled in.\n" +msgstr "%s: Debug-Unterstützung nicht hineinkompiliert.\n" + +#: src/main.c:395 +msgid "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Copyright © 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"Es gibt KEINERLEI Garantie, nicht einmal für die TAUGLICHKEIT oder die,\n" +"VERWENDBARKEIT ZU EINEM ANGEGEBENEN ZWECK. In den Quellen befindet sich " +"die\n" +"Lizenz- und Kopierbedingung; die Einzelheiten sind in der Datei COPYING\n" +"(GNU General Public License) beschrieben.\n" + +#: src/main.c:401 +msgid "" +"\n" +"Written by Hrvoje Niksic .\n" +msgstr "" +"\n" +"Geschrieben von Hrvoje Niksic .\n" + +#: src/main.c:465 +#, c-format +msgid "%s: %s: invalid command\n" +msgstr "%s: %s: ungültiger Befehl\n" + +#: src/main.c:515 +#, c-format +msgid "%s: illegal option -- `-n%c'\n" +msgstr "%s: ungültige Option -- »-n%c«\n" + +#. #### Something nicer should be printed here -- similar to the +#. pre-1.5 `--help' page. +#: src/main.c:518 src/main.c:560 src/main.c:591 +#, c-format +msgid "Try `%s --help' for more options.\n" +msgstr "»%s --help« gibt weitere Informationen.\n" + +#: src/main.c:571 +msgid "Can't be verbose and quiet at the same time.\n" +msgstr "\"Mitteilsam\" und \"still\" ist gleichzeitig unmöglich.\n" + +#: src/main.c:577 +msgid "Can't timestamp and not clobber old files at the same time.\n" +msgstr "" +"Zeitstempeln und nicht Überschreiben alter Dateien ist gleichzeitig " +"unmöglich.\n" + +#. No URL specified. +#: src/main.c:586 +#, c-format +msgid "%s: missing URL\n" +msgstr "%s: URL fehlt\n" + +#: src/main.c:674 +#, c-format +msgid "No URLs found in %s.\n" +msgstr "Keine URLs in %s gefunden.\n" + +#: src/main.c:683 +#, c-format +msgid "" +"\n" +"FINISHED --%s--\n" +"Downloaded: %s bytes in %d files\n" +msgstr "" +"\n" +"BEENDET --%s--\n" +"Geholt: %s Bytes in %d Dateien\n" + +#: src/main.c:688 +#, c-format +msgid "Download quota (%s bytes) EXCEEDED!\n" +msgstr "Hol-Kontingent (%s Bytes) ERSCHÖPFT!\n" + +#. Please note that the double `%' in `%%s' is intentional, because +#. redirect_output passes tmp through printf. +#: src/main.c:715 +msgid "%s received, redirecting output to `%%s'.\n" +msgstr "%s erhalten, weise Ausgabe nach »%%s« zurück.\n" + +#: src/mswindows.c:118 +#, c-format +msgid "" +"\n" +"CTRL+Break received, redirecting output to `%s'.\n" +"Execution continued in background.\n" +"You may stop Wget by pressing CTRL+ALT+DELETE.\n" +msgstr "" +"\n" +"CTRL+Break (= Strg+Abbruch) empfangen, Ausgabe wird nach »%s« umgeleitet.\n" +"Ausführung wird im Hintergrund fortgeführt.\n" +"Wget kann durch das Drücken von CTRL+ALT+DELETE (= Strg+Alt+Entf)\n" +"gestopt werden.\n" + +#. parent, no error +#: src/mswindows.c:135 src/utils.c:268 +msgid "Continuing in background.\n" +msgstr "Im Hintergrund geht's weiter.\n" + +#: src/mswindows.c:137 src/utils.c:270 +#, c-format +msgid "Output will be written to `%s'.\n" +msgstr "Ausgabe wird nach »%s« geschrieben.\n" + +#: src/mswindows.c:227 +#, c-format +msgid "Starting WinHelp %s\n" +msgstr "WinHelp %s wird gestartet\n" + +#: src/mswindows.c:254 src/mswindows.c:262 +#, c-format +msgid "%s: Couldn't find usable socket driver.\n" +msgstr "%s: Kann keinen benutzbaren \"socket driver\" finden.\n" + +#: src/netrc.c:334 +#, c-format +msgid "%s: %s:%d: warning: \"%s\" token appears before any machine name\n" +msgstr "%s: %s:%d: Warnung: »%s«-Wortteil erscheint vor einem Maschinennamen\n" + +#: src/netrc.c:365 +#, c-format +msgid "%s: %s:%d: unknown token \"%s\"\n" +msgstr "%s: %s:%d: unbekannter Wortteil »%s«\n" + +#: src/netrc.c:429 +#, c-format +msgid "Usage: %s NETRC [HOSTNAME]\n" +msgstr "Syntax: %s NETRC [HOSTNAME]\n" + +# stat +#: src/netrc.c:439 +#, c-format +msgid "%s: cannot stat %s: %s\n" +msgstr "%s: kann nicht finden %s: %s\n" + +#: src/recur.c:449 src/retr.c:462 +#, c-format +msgid "Removing %s.\n" +msgstr "Entferne »%s«.\n" + +#: src/recur.c:450 +#, c-format +msgid "Removing %s since it should be rejected.\n" +msgstr "Entferne »%s«, da dies zurückgewiesen werden soll.\n" + +#: src/recur.c:609 +msgid "Loading robots.txt; please ignore errors.\n" +msgstr "Lade »robots.txt«; bitte Fehler ignorieren.\n" + +#: src/retr.c:193 +#, c-format +msgid "" +"\n" +" [ skipping %dK ]" +msgstr "" +"\n" +" [ überspringe %dK ]" + +#: src/retr.c:344 +msgid "Could not find proxy host.\n" +msgstr "Kann Proxy-Host nicht finden.\n" + +#: src/retr.c:355 +#, c-format +msgid "Proxy %s: Must be HTTP.\n" +msgstr "Proxy %s: Muss HTTP sein.\n" + +#: src/retr.c:398 +#, c-format +msgid "%s: Redirection to itself.\n" +msgstr "%s: Redirektion auf sich selber.\n" + +#: src/retr.c:483 +msgid "" +"Giving up.\n" +"\n" +msgstr "" +"Gebe auf.\n" +"\n" + +#: src/retr.c:483 +msgid "" +"Retrying.\n" +"\n" +msgstr "" +"Versuche erneut.\n" +"\n" + +# ??? +#: src/url.c:940 +#, c-format +msgid "Error (%s): Link %s without a base provided.\n" +msgstr "Fehler (%s): Verweis »%s« ohne »base« versucht.\n" + +#: src/url.c:955 +#, c-format +msgid "Error (%s): Base %s relative, without referer URL.\n" +msgstr "Fehler (%s): »Base« %s relativ, ohne Bezugs-URL.\n" + +#: src/url.c:1373 +#, c-format +msgid "Converting %s... " +msgstr "Wandle um %s... " + +#: src/url.c:1378 src/url.c:1389 +#, c-format +msgid "Cannot convert links in %s: %s\n" +msgstr "Kann Verweise nicht umwandeln zu %s: %s\n" + +#: src/utils.c:71 +#, c-format +msgid "%s: %s: Not enough memory.\n" +msgstr "%s: %s: Nicht genügend Speicher.\n" + +#: src/utils.c:203 +msgid "Unknown/unsupported protocol" +msgstr "Unbekanntes/nicht unterstütztes Protokoll" + +#: src/utils.c:206 +msgid "Invalid port specification" +msgstr "Ungültige Port-Angabe" + +#: src/utils.c:209 +msgid "Invalid host name" +msgstr "Ungültiger Hostname" + +#: src/utils.c:430 +#, c-format +msgid "Failed to unlink symlink `%s': %s\n" +msgstr "Entfernen des symbolischen Verweises »%s« schlug fehlt: %s\n" diff --git a/po/hr.gmo b/po/hr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..9106a1a7308a84c055034b934bfbd3a7d44c2ab9 GIT binary patch literal 22566 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, 1998. +# +msgid "" +msgstr "" +"Project-Id-Version: wget 1.5.2-b2\n" +"POT-Creation-Date: 1998-09-21 19:08+0200\n" +"PO-Revision-Date: 1998-02-29 21:05+01:00\n" +"Last-Translator: Hrvoje Niksic \n" +"Language-Team: Croatian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Login to the server: +#. First: Establish the control connection. +#: src/ftp.c:147 src/http.c:346 +#, c-format +msgid "Connecting to %s:%hu... " +msgstr "Spajam se na %s:%hu... " + +#: src/ftp.c:169 src/ftp.c:411 src/http.c:363 +#, c-format +msgid "Connection to %s:%hu refused.\n" +msgstr "%s:%hu odbija vezu.\n" + +#. Second: Login with proper USER/PASS sequence. +#: src/ftp.c:190 src/http.c:374 +msgid "connected!\n" +msgstr "spojen!\n" + +#: src/ftp.c:191 +#, c-format +msgid "Logging in as %s ... " +msgstr "Logiram se kao %s ... " + +#: src/ftp.c:200 src/ftp.c:253 src/ftp.c:301 src/ftp.c:353 src/ftp.c:447 +#: src/ftp.c:520 src/ftp.c:568 src/ftp.c:616 +msgid "Error in server response, closing control connection.\n" +msgstr "Gre¹ka u odgovoru, zatvaram kontrolnu vezu.\n" + +#: src/ftp.c:208 +msgid "Error in server greeting.\n" +msgstr "Gre¹ka u poslu¾iteljevom pozdravu.\n" + +#: src/ftp.c:216 src/ftp.c:262 src/ftp.c:310 src/ftp.c:362 src/ftp.c:457 +#: src/ftp.c:530 src/ftp.c:578 src/ftp.c:626 +msgid "Write failed, closing control connection.\n" +msgstr "Write nije uspio, zatvaram kontrolnu vezu.\n" + +#: src/ftp.c:223 +msgid "The server refuses login.\n" +msgstr "Poslu¾itelj odbija prijavu.\n" + +#: src/ftp.c:230 +msgid "Login incorrect.\n" +msgstr "Pogre¹na prijava.\n" + +#: src/ftp.c:237 +msgid "Logged in!\n" +msgstr "Ulogiran!\n" + +#: src/ftp.c:270 +#, c-format +msgid "Unknown type `%c', closing control connection.\n" +msgstr "Nepoznat tip `%c', zatvaram kontrolnu vezu.\n" + +#: src/ftp.c:283 +msgid "done. " +msgstr "gotovo." + +#: src/ftp.c:289 +msgid "==> CWD not needed.\n" +msgstr "==> CWD ne treba.\n" + +#: src/ftp.c:317 +#, c-format +msgid "" +"No such directory `%s'.\n" +"\n" +msgstr "Nema direktorija `%s'.\n" + +#: src/ftp.c:331 src/ftp.c:599 src/ftp.c:647 src/url.c:1431 +msgid "done.\n" +msgstr "gotovo.\n" + +#. do not CWD +#: src/ftp.c:335 +msgid "==> CWD not required.\n" +msgstr "==> CWD se ne tra¾i.\n" + +#: src/ftp.c:369 +msgid "Cannot initiate PASV transfer.\n" +msgstr "Ne mogu otpoèeti PASV prijenos.\n" + +#: src/ftp.c:373 +msgid "Cannot parse PASV response.\n" +msgstr "Ne mogu raspoznati PASV odgovor.\n" + +#: src/ftp.c:387 +#, c-format +msgid "Will try connecting to %s:%hu.\n" +msgstr "Poku¹at æu se spojiti na %s:%hu.\n" + +#: src/ftp.c:432 src/ftp.c:504 src/ftp.c:548 +msgid "done. " +msgstr "gotovo. " + +#: src/ftp.c:474 +#, c-format +msgid "Bind error (%s).\n" +msgstr "Gre¹ka u bindu (%s).\n" + +#: src/ftp.c:490 +msgid "Invalid PORT.\n" +msgstr "Pogre¹an PORT.\n" + +#: src/ftp.c:537 +msgid "" +"\n" +"REST failed, starting from scratch.\n" +msgstr "" +"\n" +"REST nije uspio, poèinjem ispoèetka.\n" + +#: src/ftp.c:586 +#, c-format +msgid "" +"No such file `%s'.\n" +"\n" +msgstr "" +"Nema datoteke `%s'.\n" +"\n" + +#: src/ftp.c:634 +#, c-format +msgid "" +"No such file or directory `%s'.\n" +"\n" +msgstr "" +"Nema datoteke ili direktorija `%s'.\n" +"\n" + +#: src/ftp.c:692 src/ftp.c:699 +#, c-format +msgid "Length: %s" +msgstr "Duljina: %s" + +#: src/ftp.c:694 src/ftp.c:701 +#, c-format +msgid " [%s to go]" +msgstr " [jo¹ %s]" + +#: src/ftp.c:703 +msgid " (unauthoritative)\n" +msgstr " (neautorizirana)\n" + +#: src/ftp.c:721 +#, c-format +msgid "%s: %s, closing control connection.\n" +msgstr "%s: %s, zatvaram kontrolnu vezu.\n" + +#: src/ftp.c:729 +#, c-format +msgid "%s (%s) - Data connection: %s; " +msgstr "%s (%s) - Podatkovna veza: %s; " + +#: src/ftp.c:746 +msgid "Control connection closed.\n" +msgstr "Kontrolna veza prekinuta.\n" + +#: src/ftp.c:764 +msgid "Data transfer aborted.\n" +msgstr "Prijenos podataka prekinut.\n" + +#: src/ftp.c:830 +#, c-format +msgid "File `%s' already there, not retrieving.\n" +msgstr "Datoteka `%s' veæ postoji, ne skidam.\n" + +#: src/ftp.c:896 src/http.c:922 +#, c-format +msgid "(try:%2d)" +msgstr "(pok:%2d)" + +#: src/ftp.c:955 src/http.c:1116 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld]\n" +"\n" +msgstr "" +"%s (%s) - `%s' snimljen [%ld]\n" +"\n" + +#: src/ftp.c:1001 +#, c-format +msgid "Using `%s' as listing tmp file.\n" +msgstr "Koristim `%s' kao privremenu datoteku za listing.\n" + +#: src/ftp.c:1013 +#, c-format +msgid "Removed `%s'.\n" +msgstr "Izbrisao `%s'.\n" + +#: src/ftp.c:1049 +#, c-format +msgid "Recursion depth %d exceeded max. depth %d.\n" +msgstr "Dubina rekurzije %d prelazi najveæu dozvoljenu %d.\n" + +#: src/ftp.c:1096 src/http.c:1054 +#, c-format +msgid "" +"Local file `%s' is more recent, not retrieving.\n" +"\n" +msgstr "" +"Lokalna datoteka `%s' je novija, ne skidam.\n" +"\n" + +#: src/ftp.c:1102 src/http.c:1060 +#, c-format +msgid "The sizes do not match (local %ld), retrieving.\n" +msgstr "Velièine se ne sla¾u (lokalno %ld), skidam.\n" + +#: src/ftp.c:1119 +msgid "Invalid name of the symlink, skipping.\n" +msgstr "Pogre¹no ime simbolièkog linka, preskaèem.\n" + +#: src/ftp.c:1136 +#, c-format +msgid "" +"Already have correct symlink %s -> %s\n" +"\n" +msgstr "" +"Veæ postoji ispravan link %s -> %s\n" +"\n" + +#: src/ftp.c:1144 +#, c-format +msgid "Creating symlink %s -> %s\n" +msgstr "Stvaram simbolièki link %s -> %s\n" + +#: src/ftp.c:1155 +#, c-format +msgid "Symlinks not supported, skipping symlink `%s'.\n" +msgstr "Linkovi nisu podr¾ani, preskaèem link `%s'.\n" + +#: src/ftp.c:1167 +#, c-format +msgid "Skipping directory `%s'.\n" +msgstr "Preskaèem direktorij `%s'.\n" + +#: src/ftp.c:1176 +#, c-format +msgid "%s: unknown/unsupported file type.\n" +msgstr "%s: nepoznata/nepodr¾ana vrsta datoteke.\n" + +#: src/ftp.c:1193 +#, c-format +msgid "%s: corrupt time-stamp.\n" +msgstr "%s: pogre¹no vrijeme.\n" + +#: src/ftp.c:1213 +#, c-format +msgid "Will not retrieve dirs since depth is %d (max %d).\n" +msgstr "Ne skidam direktorije jer je dubina %d (maksimalno %d).\n" + +#: src/ftp.c:1252 +#, c-format +msgid "Not descending to `%s' as it is excluded/not-included.\n" +msgstr "Ne idem u `%s' jer je iskljuèen ili nije ukljuèen.\n" + +#: src/ftp.c:1297 +#, c-format +msgid "Rejecting `%s'.\n" +msgstr "Odbijam `%s'.\n" + +#. No luck. +#. #### This message SUCKS. We should see what was the +#. reason that nothing was retrieved. +#: src/ftp.c:1344 +#, c-format +msgid "No matches on pattern `%s'.\n" +msgstr "Ni¹ta ne ide uz `%s'.\n" + +#: src/ftp.c:1404 +#, c-format +msgid "Wrote HTML-ized index to `%s' [%ld].\n" +msgstr "Snimio HTML-iziran indeks u `%s' [%ld].\n" + +#: src/ftp.c:1409 +#, c-format +msgid "Wrote HTML-ized index to `%s'.\n" +msgstr "Snimio HTML-iziran indeks u `%s'.\n" + +#: src/getopt.c:454 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: opcija `%s' je dvosmislena\n" + +#: src/getopt.c:478 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: uz opciju `--%s' ne ide argument\n" + +#: src/getopt.c:483 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: opcija `%c%s' ne dozvoljava argument\n" + +#: src/getopt.c:498 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: opcija `%s' tra¾i argument\n" + +#. --option +#: src/getopt.c:528 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: nepoznata opcija `--%s'\n" + +#. +option or -option +#: src/getopt.c:532 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: nepoznata opcija `%c%s'\n" + +#. 1003.2 specifies the format of this message. +#: src/getopt.c:563 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: nedozvoljena opcija -- %c\n" + +#. 1003.2 specifies the format of this message. +#: src/getopt.c:602 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opcija tra¾i argument -- %c\n" + +#: src/host.c:432 +#, c-format +msgid "%s: Cannot determine user-id.\n" +msgstr "%s: Ne mogu utvrditi user-id.\n" + +#: src/host.c:444 +#, c-format +msgid "%s: Warning: uname failed: %s\n" +msgstr "%s: Upozorenje: uname nije uspio: %s\n" + +#: src/host.c:456 +#, c-format +msgid "%s: Warning: gethostname failed\n" +msgstr "%s: Upozorenje: gethostname nije uspio\n" + +#: src/host.c:484 +#, c-format +msgid "%s: Warning: cannot determine local IP address.\n" +msgstr "%s: Upozorenje: ne mogu utvrditi lokalnu IP adresu.\n" + +#: src/host.c:498 +#, c-format +msgid "%s: Warning: cannot reverse-lookup local IP address.\n" +msgstr "%s: Upozorenje: ne mogu napraviti reverzni lookup lokalne IP adrese.\n" + +#. This gets ticked pretty often. Karl Berry reports +#. that there can be valid reasons for the local host +#. name not to be an FQDN, so I've decided to remove the +#. annoying warning. +#: src/host.c:511 +#, c-format +msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n" +msgstr "%s: Upozorenje: reverzni lookup lokalne adrese ne daje FQDN!\n" + +#: src/host.c:539 +msgid "Host not found" +msgstr "Raèunalo nije pronaðeno" + +#: src/host.c:541 +msgid "Unknown error" +msgstr "Nepoznata gre¹ka" + +#: src/html.c:439 src/html.c:441 +#, c-format +msgid "Index of /%s on %s:%d" +msgstr "Indeks direktorija /%s na %s:%d" + +#: src/html.c:463 +msgid "time unknown " +msgstr "nepoznato vrijeme " + +#: src/html.c:467 +msgid "File " +msgstr "Datoteka " + +#: src/html.c:470 +msgid "Directory " +msgstr "Direktorij " + +#: src/html.c:473 +msgid "Link " +msgstr "Link " + +#: src/html.c:476 +msgid "Not sure " +msgstr "Ne znam " + +#: src/html.c:494 +#, c-format +msgid " (%s bytes)" +msgstr " (%s bajtova)" + +#: src/http.c:492 +msgid "Failed writing HTTP request.\n" +msgstr "Nisam uspio poslati HTTP zahtjev.\n" + +#: src/http.c:497 +#, c-format +msgid "%s request sent, awaiting response... " +msgstr "%s zahtjev poslan, èekam odgovor... " + +#: src/http.c:536 +msgid "End of file while parsing headers.\n" +msgstr "Kraj datoteke za vrijeme obrade zaglavlja.\n" + +#: src/http.c:547 +#, c-format +msgid "Read error (%s) in headers.\n" +msgstr "Gre¹ka pri èitanju zaglavlja (%s).\n" + +#: src/http.c:587 +msgid "No data received" +msgstr "Podaci nisu primljeni" + +#: src/http.c:589 +msgid "Malformed status line" +msgstr "Deformirana statusna linija" + +#: src/http.c:594 +msgid "(no description)" +msgstr "(bez opisa)" + +#. If we have tried it already, then there is not point +#. retrying it. +#: src/http.c:678 +msgid "Authorization failed.\n" +msgstr "Ovjera nije uspjela.\n" + +#: src/http.c:685 +msgid "Unknown authentication scheme.\n" +msgstr "Nepoznata metoda ovjere.\n" + +#: src/http.c:748 +#, c-format +msgid "Location: %s%s\n" +msgstr "Polo¾aj: %s%s\n" + +#: src/http.c:749 src/http.c:774 +msgid "unspecified" +msgstr "neodreðen" + +#: src/http.c:750 +msgid " [following]" +msgstr " [pratim]" + +#. No need to print this output if the body won't be +#. downloaded at all, or if the original server response is +#. printed. +#: src/http.c:764 +msgid "Length: " +msgstr "Duljina: " + +#: src/http.c:769 +#, c-format +msgid " (%s to go)" +msgstr " (jo¹ %s)" + +#: src/http.c:774 +msgid "ignored" +msgstr "zanemarena" + +#: src/http.c:857 +msgid "Warning: wildcards not supported in HTTP.\n" +msgstr "Upozorenje: wildcardi nisu podr¾ani za HTTP.\n" + +#. If opt.noclobber is turned on and file already exists, do not +#. retrieve the file +#: src/http.c:872 +#, c-format +msgid "File `%s' already there, will not retrieve.\n" +msgstr "Datoteka `%s' veæ postoji, ne skidam.\n" + +#: src/http.c:978 +#, c-format +msgid "Cannot write to `%s' (%s).\n" +msgstr "Ne mogu pisati u `%s' (%s).\n" + +#: src/http.c:988 +#, c-format +msgid "ERROR: Redirection (%d) without location.\n" +msgstr "GRE©KA: Redirekcija (%d) bez novog polo¾aja (location).\n" + +#: src/http.c:1011 +#, c-format +msgid "%s ERROR %d: %s.\n" +msgstr "%s GRE©KA %d: %s.\n" + +#: src/http.c:1023 +msgid "Last-modified header missing -- time-stamps turned off.\n" +msgstr "Nedostaje Last-Modified zaglavlje -- ignoriram vremensku oznaku.\n" + +#: src/http.c:1031 +msgid "Last-modified header invalid -- time-stamp ignored.\n" +msgstr "Nevaljan Last-Modified header -- ignoriram vremensku oznaku.\n" + +#: src/http.c:1064 +msgid "Remote file is newer, retrieving.\n" +msgstr "Datoteka na poslu¾itelju je novija, skidam.\n" + +#: src/http.c:1098 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld]\n" +"\n" +msgstr "" +"%s (%s) - `%s' snimljen [%ld/%ld]\n" +"\n" + +#: src/http.c:1130 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld. " +msgstr "%s (%s) - Veza zatvorena na bajtu %ld. " + +#: src/http.c:1138 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld])\n" +"\n" +msgstr "" +"%s (%s) - `%s' snimljen [%ld/%ld])\n" +"\n" + +#: src/http.c:1150 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld/%ld. " +msgstr "%s (%s) - Veza zatvorena na bajtu %ld/%ld. " + +#: src/http.c:1161 +#, c-format +msgid "%s (%s) - Read error at byte %ld (%s)." +msgstr "%s (%s) - Gre¹ka pri èitanju na bajtu %ld (%s)." + +#: src/http.c:1169 +#, c-format +msgid "%s (%s) - Read error at byte %ld/%ld (%s). " +msgstr "%s (%s) - Gre¹ka pri èitanju na bajtu %ld/%ld (%s). " + +#: src/init.c:312 src/netrc.c:250 +#, c-format +msgid "%s: Cannot read %s (%s).\n" +msgstr "%s: Ne mogu proèitati %s (%s).\n" + +#: src/init.c:333 src/init.c:339 +#, c-format +msgid "%s: Error in %s at line %d.\n" +msgstr "%s: Gre¹ka u %s na liniji %d.\n" + +#: src/init.c:370 +#, c-format +msgid "%s: Warning: Both system and user wgetrc point to `%s'.\n" +msgstr "%s: Upozorenje: sistemski i korisnikov wgetrc su `%s'.\n" + +#: src/init.c:458 +#, c-format +msgid "%s: BUG: unknown command `%s', value `%s'.\n" +msgstr "%s: BUG: Nepoznata naredba `%s', vrijednost `%s'.\n" + +#: src/init.c:485 +#, c-format +msgid "%s: %s: Please specify on or off.\n" +msgstr "%s: %s: Molim postavite na on ili off.\n" + +#: src/init.c:503 src/init.c:760 src/init.c:782 src/init.c:855 +#, c-format +msgid "%s: %s: Invalid specification `%s'.\n" +msgstr "%s: %s: Pogre¹na specifikacija `%s'\n" + +#: src/init.c:616 src/init.c:638 src/init.c:660 src/init.c:686 +#, c-format +msgid "%s: Invalid specification `%s'\n" +msgstr "wget: %s: Pogre¹na specifikacija `%s'\n" + +#: src/main.c:101 +#, c-format +msgid "Usage: %s [OPTION]... [URL]...\n" +msgstr "Uporaba: %s [OPCIJA]... [URL]...\n" + +#: src/main.c:109 +#, c-format +msgid "GNU Wget %s, a non-interactive network retriever.\n" +msgstr "GNU Wget %s, alat za neinteraktivno skidanje preko mre¾e.\n" + +#. Had to split this in parts, so the #@@#%# Ultrix compiler and cpp +#. don't bitch. Also, it makes translation much easier. +#: src/main.c:114 +msgid "" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +msgstr "" +"\n" +"Ako duga opcija zahtijeva argument, tada to vrijedi i za kratku.\n" +"\n" + +#: src/main.c:117 +msgid "" +"Startup:\n" +" -V, --version display the version of Wget and exit.\n" +" -h, --help print this help.\n" +" -b, --background go to background after startup.\n" +" -e, --execute=COMMAND execute a `.wgetrc' command.\n" +"\n" +msgstr "" +"Pokretanje:\n" +" -V, --version prika¾i verziju Wget-a i izaði.\n" +" -h, --help ispi¹i pomoæ.\n" +" -b, --background radi u pozadini nakon pokretanja.\n" +" -e, --execute=NAREDBA izvr¹i naredbu `.wgetrc'-a.\n" +"\n" + +#: src/main.c:123 +msgid "" +"Logging and input file:\n" +" -o, --output-file=FILE log messages to FILE.\n" +" -a, --append-output=FILE append messages to FILE.\n" +" -d, --debug print debug output.\n" +" -q, --quiet quiet (no output).\n" +" -v, --verbose be verbose (this is the default).\n" +" -nv, --non-verbose turn off verboseness, without being quiet.\n" +" -i, --input-file=FILE read URL-s from file.\n" +" -F, --force-html treat input file as HTML.\n" +"\n" +msgstr "" +"Logging and input file:\n" +" -o, --output-file=DATOTEKA spremaj poruke u DATOTEKU.\n" +" -a, --append-output=DATOTEKA dodaj poruke u DATOTEKU.\n" +" -d, --debug ispisuj debug izlaz.\n" +" -q, --quiet ti¹ina (bez ispisa).\n" +" -v, --verbose ukljuèi puni ispis (podrazumijeva se).\n" +" -nv, --non-verbose iskljuèi veæinu ispisa.\n" +" -i, --input-file=DATOTEKA èitaj URL-ove iz DATOTEKE.\n" +" -F, --force-html tretiraj ulaznu datoteku kao HTML.\n" +"\n" + +#: src/main.c:133 +msgid "" +"Download:\n" +" -t, --tries=NUMBER set number of retries to NUMBER (0 " +"unlimits).\n" +" -O --output-document=FILE write documents to FILE.\n" +" -nc, --no-clobber don't clobber existing files.\n" +" -c, --continue restart getting an existing file.\n" +" --dot-style=STYLE set retrieval display style.\n" +" -N, --timestamping don't retrieve files if older than local.\n" +" -S, --server-response print server response.\n" +" --spider don't download anything.\n" +" -T, --timeout=SECONDS set the read timeout to SECONDS.\n" +" -w, --wait=SECONDS wait SECONDS between retrievals.\n" +" -Y, --proxy=on/off turn proxy on or off.\n" +" -Q, --quota=NUMBER set retrieval quota to NUMBER.\n" +"\n" +msgstr "" +"Download:\n" +" -t, --tries=BROJ broj poku¹aja na BROJ (0 je beskonaèno)\n" +" -O --output-document=DATOTEKA pi¹i dokumente u DATOTEKU.\n" +" -nc, --no-clobber nemoj prebrisati postojeæe datoteke.\n" +" -c, --continue restart getting an existing file.\n" +" --dot-style=STIL postavi stil prikaza skidanja.\n" +" -N, --timestamping ne skidaj datoteke starije od lokalnih.\n" +" -S, --server-response ispisuj poslu¾iteljev odaziv.\n" +" --spider ni¹ta ne skidaj.\n" +" -T, --timeout=SEKUNDE postavi timeout èitanja na SEKUNDE.\n" +" -w, --wait=SEKUNDE èekaj SEKUNDE izmeðu skidanja.\n" +" -Y, --proxy=on/off ukljuèi ili iskljuèi proxy.\n" +" -Q, --quota=BROJ postavi ogranièenje skidanja na BROJ.\n" +"\n" + +#: src/main.c:147 +msgid "" +"Directories:\n" +" -nd --no-directories don't create directories.\n" +" -x, --force-directories force creation of directories.\n" +" -nH, --no-host-directories don't create host directories.\n" +" -P, --directory-prefix=PREFIX save files to PREFIX/...\n" +" --cut-dirs=NUMBER ignore NUMBER remote directory " +"components.\n" +"\n" +msgstr "" +"Direktoriji:\n" +" -nd --no-directories ne stvaraj direktorije.\n" +" -x, --force-directories uvijek stvaraj direktorije.\n" +" -nH, --no-host-directories ne stvaraj direktorije po raèunalima.\n" +" -P, --directory-prefix=PREFIKS snimaj datoteke u PREFIKS/...\n" +" --cut-dirs=BROJ ignoriraj BROJ stranih direktorija.\n" +"\n" + +#: src/main.c:154 +msgid "" +"HTTP options:\n" +" --http-user=USER set http user to USER.\n" +" --http-passwd=PASS set http password to PASS.\n" +" -C, --cache=on/off (dis)allow server-cached data (normally " +"allowed).\n" +" --ignore-length ignore `Content-Length' header field.\n" +" --header=STRING insert STRING among the headers.\n" +" --proxy-user=USER set USER as proxy username.\n" +" --proxy-passwd=PASS set PASS as proxy password.\n" +" -s, --save-headers save the HTTP headers to file.\n" +" -U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION.\n" +"\n" +msgstr "" +"HTTP options:\n" +" --http-user=KORISNIK postavi HTTP korisnika na KORISNIK.\n" +" --http-passwd=ZAPORKA postavi HTTP zaporku na ZAPORKA.\n" +" -C, --cache=on/off dozvoli ili zabrani ke¹iranje na " +"poslu¾itelju\n" +" (obièno dozvoljeno).\n" +" --ignore-length ignoriraj `Content-Length' zaglavlje.\n" +" --header=STRING umetni STRING meðu zaglavlja.\n" +" --proxy-user=KORISNIK postavi KORISNIKA kao proxy korisnika\n" +" --proxy-passwd=ZAPORKA postavi proxy zaporku na ZAPORKU.\n" +" -s, --save-headers snimaj HTTP zaglavlja na disk.\n" +" -U, --user-agent=KLIJENT identificiraj se kao KLIJENT umjesto\n" +" Wget/VERZIJA.\n" +"\n" + +#: src/main.c:165 +msgid "" +"FTP options:\n" +" --retr-symlinks retrieve FTP symbolic links.\n" +" -g, --glob=on/off turn file name globbing on or off.\n" +" --passive-ftp use the \"passive\" transfer mode.\n" +"\n" +msgstr "" +"FTP options:\n" +" --retr-symlinks skidaj FTP simbolièke linkove.\n" +" -g, --glob=on/off ukljuèi ili iskljuèi globbing.\n" +" --passive-ftp koristi \"pasivni\" mod prijenosa.\n" +"\n" + +#: src/main.c:170 +msgid "" +"Recursive retrieval:\n" +" -r, --recursive recursive web-suck -- use with care!.\n" +" -l, --level=NUMBER maximum recursion depth (0 to unlimit).\n" +" --delete-after delete downloaded files.\n" +" -k, --convert-links convert non-relative links to relative.\n" +" -m, --mirror turn on options suitable for mirroring.\n" +" -nr, --dont-remove-listing don't remove `.listing' files.\n" +"\n" +msgstr "" +"Rekurzivno skidanje:\n" +" -r, --recursive rekurzivno skidanje -- koristi pa¾ljivo!\n" +" -l, --level=NUMBER maksimalna dubina rekurzije (0 za " +"beskonaènu).\n" +" --delete-after bri¹i skinute datoteke.\n" +" -k, --convert-links konvertiraj apsolutne linkove u relativne.\n" +" -m, --mirror ukljuèi opcije pogodne za \"mirror\".\n" +" -nr, --dont-remove-listing ne uklanjaj `.listing' datoteke.\n" +"\n" + +#: src/main.c:178 +msgid "" +"Recursive accept/reject:\n" +" -A, --accept=LIST list of accepted extensions.\n" +" -R, --reject=LIST list of rejected extensions.\n" +" -D, --domains=LIST list of accepted domains.\n" +" --exclude-domains=LIST comma-separated list of rejected " +"domains.\n" +" -L, --relative follow relative links only.\n" +" --follow-ftp follow FTP links from HTML documents.\n" +" -H, --span-hosts go to foreign hosts when recursive.\n" +" -I, --include-directories=LIST list of allowed directories.\n" +" -X, --exclude-directories=LIST list of excluded directories.\n" +" -nh, --no-host-lookup don't DNS-lookup hosts.\n" +" -np, --no-parent don't ascend to the parent directory.\n" +"\n" +msgstr "" +"Rekurzivno prihvaæanje/odbijanje:\n" +" -A, --accept=POPIS popis prihvaæenih nastavaka.\n" +" -R, --reject=POPIS popis odbijenih nastavaka.\n" +" -D, --domains=POPIS popis prihvaæenih domena.\n" +" --exclude-domains=POPIS zarezom odvojen popis odbijenih " +"domena.\n" +" -L, --relative prati samo relativne linkove.\n" +" --follow-ftp prati FTP linkove iz HTML dokumenata.\n" +" -H, --span-hosts idi na strana raèunala pri rekurzivnom\n" +" skidanju.\n" +" -I, --include-directories=POPIS popis dozvoljenih direktorija.\n" +" -X, --exclude-directories=POPIS popis nedozvoljenih direktorija.\n" +" -nh, --no-host-lookup nemoj pregledavati hostove DNS-om.\n" +" -np, --no-parent ne idi u direktorij vi¹e.\n" +"\n" + +#: src/main.c:191 +msgid "Mail bug reports and suggestions to .\n" +msgstr "©aljite izvje¹taje o bugovima i prijedloge na .\n" + +#: src/main.c:347 +#, c-format +msgid "%s: debug support not compiled in.\n" +msgstr "%s: podr¹ka za debugiranje nije ugraðena.\n" + +#: src/main.c:395 +msgid "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"Sva prava zadr¾ana. Ovaj program distribuira se u nadi da æe biti\n" +"koristan, ali BEZ IKAKVOG JAMSTVA; bez èak i impliciranog jamstva\n" +"PROIZVODNOSTI ili UPOTREBLJIVOSTI ZA ODREÐENU SVRHU. Pogledajte GNU\n" +"General Public License za vi¹e detalja.\n" + +#: src/main.c:401 +msgid "" +"\n" +"Written by Hrvoje Niksic .\n" +msgstr "" +"\n" +"Napisao Hrvoje Nik¹iæ .\n" + +#: src/main.c:465 +#, c-format +msgid "%s: %s: invalid command\n" +msgstr "%s: %s: nedozvoljena naredba\n" + +#: src/main.c:515 +#, c-format +msgid "%s: illegal option -- `-n%c'\n" +msgstr "%s: nedozvoljena opcija -- `-n%c'\n" + +#. #### Something nicer should be printed here -- similar to the +#. pre-1.5 `--help' page. +#: src/main.c:518 src/main.c:560 src/main.c:591 +#, c-format +msgid "Try `%s --help' for more options.\n" +msgstr "Poku¹ajte `%s --help' za vi¹e opcija.\n" + +#: src/main.c:571 +msgid "Can't be verbose and quiet at the same time.\n" +msgstr "Ne mogu istovremeno biti verbozan i tih.\n" + +#: src/main.c:577 +msgid "Can't timestamp and not clobber old files at the same time.\n" +msgstr "Ne mogu istovremeno paziti na vrijeme i ne gaziti stare datoteke.\n" + +#. No URL specified. +#: src/main.c:586 +#, c-format +msgid "%s: missing URL\n" +msgstr "%s: nedostaje URL\n" + +#: src/main.c:674 +#, c-format +msgid "No URLs found in %s.\n" +msgstr "Nijedan URL nije pronaðen u %s.\n" + +#: src/main.c:683 +#, c-format +msgid "" +"\n" +"FINISHED --%s--\n" +"Downloaded: %s bytes in %d files\n" +msgstr "" +"\n" +"ZAVR©IO --%s--\n" +"Skinuo: %s bajta u %d datoteka\n" + +#: src/main.c:688 +#, c-format +msgid "Download quota (%s bytes) EXCEEDED!\n" +msgstr "Kvota (%s bajtova) je PREKORAÈENA!\n" + +#. Please note that the double `%' in `%%s' is intentional, because +#. redirect_output passes tmp through printf. +#: src/main.c:715 +msgid "%s received, redirecting output to `%%s'.\n" +msgstr "%s primljen, usmjeravam izlaz na `%%s'.\n" + +#: src/mswindows.c:118 +#, c-format +msgid "" +"\n" +"CTRL+Break received, redirecting output to `%s'.\n" +"Execution continued in background.\n" +"You may stop Wget by pressing CTRL+ALT+DELETE.\n" +msgstr "" +"\n" +"CTRL+Break je pritisnut, usmjeravam izlaz u `%s'.\n" +"Izvr¹avanje se nastavlja u pozadini.\n" +"Mo¾ete prekinuti Wget pritiskom na CTRL+ALT+DELETE.\n" + +#. parent, no error +#: src/mswindows.c:135 src/utils.c:268 +msgid "Continuing in background.\n" +msgstr "Nastavljam u pozadini.\n" + +#: src/mswindows.c:137 src/utils.c:270 +#, c-format +msgid "Output will be written to `%s'.\n" +msgstr "Izlaz se sprema u `%s'.\n" + +#: src/mswindows.c:227 +#, c-format +msgid "Starting WinHelp %s\n" +msgstr "Pokreæem WinHelp %s\n" + +#: src/mswindows.c:254 src/mswindows.c:262 +#, c-format +msgid "%s: Couldn't find usable socket driver.\n" +msgstr "%s: Ne mogu naæi upotrebljiv driver za sockete.\n" + +#: src/netrc.c:334 +#, c-format +msgid "%s: %s:%d: warning: \"%s\" token appears before any machine name\n" +msgstr "" +"%s: %s:%d: upozorenje: \"%s\" token se pojavljuje prije naziva stroja\n" + +#: src/netrc.c:365 +#, c-format +msgid "%s: %s:%d: unknown token \"%s\"\n" +msgstr "%s: %s:%d: nepoznat token \"%s\"\n" + +#: src/netrc.c:429 +#, c-format +msgid "Usage: %s NETRC [HOSTNAME]\n" +msgstr "Uporaba: %s NETRC [RAÈUNALO]\n" + +#: src/netrc.c:439 +#, c-format +msgid "%s: cannot stat %s: %s\n" +msgstr "%s: ne mogu stat-irati %s: %s\n" + +#: src/recur.c:449 src/retr.c:462 +#, c-format +msgid "Removing %s.\n" +msgstr "Uklanjam %s.\n" + +#: src/recur.c:450 +#, c-format +msgid "Removing %s since it should be rejected.\n" +msgstr "Uklanjam %s buduæi da bi ga trebalo odbiti.\n" + +#: src/recur.c:609 +msgid "Loading robots.txt; please ignore errors.\n" +msgstr "Uèitavam robots.txt; molim ne obazirati se na gre¹ke.\n" + +#: src/retr.c:193 +#, c-format +msgid "" +"\n" +" [ skipping %dK ]" +msgstr "" +"\n" +" [ preskaèem %dK ]" + +#: src/retr.c:344 +msgid "Could not find proxy host.\n" +msgstr "Ne mogu naæi proxy raèunalo.\n" + +#: src/retr.c:355 +#, c-format +msgid "Proxy %s: Must be HTTP.\n" +msgstr "Proxy %s: Mora biti HTTP.\n" + +#: src/retr.c:398 +#, c-format +msgid "%s: Redirection to itself.\n" +msgstr "%s: Redirekcija na samog sebe.\n" + +#: src/retr.c:483 +msgid "" +"Giving up.\n" +"\n" +msgstr "" +"Odustajem.\n" +"\n" + +#: src/retr.c:483 +msgid "" +"Retrying.\n" +"\n" +msgstr "" +"Poku¹avam ponovo.\n" +"\n" + +#: src/url.c:940 +#, c-format +msgid "Error (%s): Link %s without a base provided.\n" +msgstr "Gre¹ka (%s): Zadan je link %s bez osnove.\n" + +#: src/url.c:955 +#, c-format +msgid "Error (%s): Base %s relative, without referer URL.\n" +msgstr "Gre¹ka (%s): Baza %s je relativna, bez referirajuæeg URL-a.\n" + +#: src/url.c:1373 +#, c-format +msgid "Converting %s... " +msgstr "Konvertiram %s... " + +#: src/url.c:1378 src/url.c:1389 +#, c-format +msgid "Cannot convert links in %s: %s\n" +msgstr "Ne mogu konvertirati linkove u %s: %s\n" + +#: src/utils.c:71 +#, c-format +msgid "%s: %s: Not enough memory.\n" +msgstr "%s: %s: Nema dovoljno memorije.\n" + +#: src/utils.c:203 +msgid "Unknown/unsupported protocol" +msgstr "Nepoznat/nepodr¾an protokol" + +#: src/utils.c:206 +msgid "Invalid port specification" +msgstr "Pogre¹na specifikacija porta" + +#: src/utils.c:209 +msgid "Invalid host name" +msgstr "Pogre¹an naziv raèunala" + +#: src/utils.c:430 +#, c-format +msgid "Failed to unlink symlink `%s': %s\n" +msgstr "Ne mogu izbrisati link `%s': %s\n" diff --git a/po/it.gmo b/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..81e65cf30d58a7300ff4d6e8a25858400f296572 GIT binary patch literal 23570 zcmb`P3ve9wecxAZWLHSWkz_rrq)}E62&BaWNr{w5kdOodM-mnYKzN9vXu4e7Ee>nm z?Vj%TNP?-8II$ZijT0xS>%?i@*o`}r&NNNinNI7pnNA#?_i-^uTHfFBQn_udP94)`O$SAl;II35Jwejl&~JPiC+;1v%O;QRPJ@V|c;_-*|D z4DcZEi$IP0HQ;vxe-HRf5ZwPAz-NIoz!2C0J^}nOAp5-kmw*od|2gmjK=!P04~zky z1|IeBbs+nH;Cp~i0zV6UKk&=I$AMo3z6|^Zko6wqY27>R0Iiub`{6Qe+e)tBEc^>{eko`UU4?O%WAoD!( zE+8~|1X=_S0a+t>g#UEj3E;f{{T2|sKJrN*ba~`+z|%nOgLxkn{RP>B@bPFJ2p%5Y z0CJv3zZb|k9~Hi!;iG@cw|@o5ypR5F5Zp5f{6qKtF}|zcV>$-=f_Fi`@UQawy-e}nfe!=!!2Ny-Ty|{?IMtU)EYqcQ4@XHW9=t_hl5~Jzrow2@N@(yIx+9$H-XG`n7wGe!>57tKm0); z?+)Jr!heT93sk?q2@HW>1%3edzku+^5$%WP$f|pPqz@eD_viile*|QoN8qyn89VYn zfY9W~{{h|y{6qKqDBq>ejzRuU3iC>O=7m#xtL&kOPW6Y)V9s3v%**W$_AnP3a3J`o9 z(>~$F<9wGK9zP3Y-s3UwAn+!T{>L>Aen0*%f$Zz}?*qZl3!F#eU#J7Y>kEnh{R!Ya zzkdP9d0+USK<0b#Y2XvUMc_-oE-(cCHK5uxKl^x5=ei2Z!UNK`Cxo9jfL{hO$4PJ+ zdY^J@2A9n>~~7|xF7fy5I&vy0U$V=`bFRY;IH}j z{~HJ%Pq9~>|I`AIbx&y@ocGjU1U?M>hd}6h>NkP!2mWUd{{Tq8)6iJ&PoDzP|MVJg z3iuJ=67Wkv&V5?zJs$+q>{0ugUInt=^!EY5$MnwwL!j1UzUkivvbSl`0s6nhxO_HfXKqDzXC*lUlpEMZvh@P$eA_Y!cE{9@Z&(%U-(Jj zQK0B_4EPlwc)IXzAnRQ~f4__UU4WOxH%se4)?3m!W`KVh2%eXI6$lNN{*!P2Ch*xH zSbi@MoG(L5>7nH}ft-I?cz+3~b=lAI*MREx4v_u7b{}vY_zdu6-~#yn0`N!K&%1(P zeUkUgeUZJ39v5HnzpnwA|Kcqm=esC8GylcE4rKj{e;4=w@Hc?0by4ea?l-;)WZg^X z2I=ohtgU%2T>&!xr5^%<%S(R)2;DFJV<3Irya)IgQ22Qq2u{SGZ(ao+2mV>$H1MAS z!yve<`Qew#%q_ih+4I+B(Sdzl*8biD{3k&AUjB99eZYU?fBzN`nq2-JAawc=xCpd| zI?v~LgkR`oAMmR+gYUCnK@bClZ+*VNBiiW$U4wHx%RJCrevf!2_;Wnp&!dm(e)?7s^@7ty=?fNSA1(D^f-Pw?pTJ_p3Z!H@9#7|#~ZEuNp?xy~b=(FcAAuJVBA z;KMvqJYVEF!vhV12G6(hK^*PM*1P{Cw~8U0r=v8iC-(q~S)?xYp`rgS0t0b}1W#ooGAk=UF$r*oyOTV>|5j;(lKf z+KMv^YtPQr7wT*E$+2MU?EK>V>iPOySgVcqYqhbt>_*zoqGsHj3dj45&f~ro8E=N0 zNjvT{*B;xMw%pbJ`n1ICqv*Gp^}_yE*2~NGJj*7>m}{lJ zx)yFm%*@&QdDOFmZ}zfI*l+Zrys@QCUhE}#9&^&|@O>54!K{t(EEfAdLn&+eq>#2iphfdzrr0eueLwS-YLx08v*0UNg+P%$$|E5)kHhhHb27Z!o`-k#o{REGbo7%8+o!6tt;A6?jC(y$S6R?@ zHCb77?`~Snb*)Z$6)p<<5q!qE+f8-40uhF1-K)dF{d)M}^_7*S6<9=vfC5Z-XNES8 zc3s~Z#Qi+%!$^n1=th(n55TisI4Pc-G$d>4Lq-8HviQH3wJZ3uWz}gaoKLSu?W7s@ zyKy7gOd1dy;$1Bkbe$HnJdD$9(Ao++aR+9uOt9RJqkiniZ-)$q2-)UlrAy-1Xk;C+ zxz23!3I~JqT8b3GSJ&X#C&&9wjx^thdMRg^vKHSd>UQI(hq%RvN*qS%Hqz7BO42w? zqfYF`pIJXQoZK&L$2t^p;6YqH;%tyz&~o4w@k{c4 z+%C|2vB1xnEZ++I+xYJ23^pSbmAJVovuG!Cv)wj1792=3gcB2&n87?49LRgyQ{&Gy4+hiIFNL!g z=Zs8g9Ak-DulmyOU9V@_65;J|3#ATCd-5C*nGVu;O@di_NlZgOXZLP7Rp{(3!_P>@ zosE&T;|+=dVr|4BlCXibGraqjw|*G6S!d&}cDAvBux7Bec@4K2 z>^L!HEmI)ZoTuSA+Uuw!#U4bM+vS*7$*^;1@*CKCcIzCd zLd_Kx9Xmn`0yMrgFe_6uIHlwo;JZx}kC08XoG#g)9bT6;joKscEVyAhpoU=`WzA-@ z?shL}ZRO#C*@NNHlP8ZK(!Vd*zc1RqC&IJ6I1X2{&HRRZsk3tLjCzN#Z;i>ZwJpS@ z+sj(Ls3XZ~CjGpZYz%UfX`|Fu*5&M5&@BNINU`Y3SvCjlLu2#|FV3%>Us_)aXBIDo z7iU&hW){~jouVgdjaHN)${C6$oo+i}S~ddqa}46<*oFGa?0NdnoS9#kU%Mm&d3Jtn zvA((*p2ZcIfm$nT^Rw#sC(atlc# z#@dH+6*0%LOc!pURQ0S(l8J-aBo2KOjz{yV4gNRO?qd4D9IS$0!e|54XJni+{~9ka z?oZ*L*AM|DKh0{+@wSH2Yv)TdlSnkQ5W5-8J2Ai#k|`!-2Khu=JfJP{p|c396%nQ7en~ny*>;h7QsoaMpU7d z`_qf-7tYjIDyL6csfgj<_wbY|NZ2+rlBJ3Om34*(CTC9SOf*E{Ed=sgYV4IS&(F|r;`KOA{ zszdpXf>MYR;yKtbOxeg36_PZw9236Xj;B}GF4>-KE}_949+yu--)&p8M@L(J(c!Sr z$lBZR<5ag;js}zGpf#w=h%UV4joT&wQ9-^gS&^fH$A9a^TPepzN&3=s)gB@WuP<{tpRNTGOSnZ=0wZO{s%(?pFn#Q9IuyC88 zw;#HfNlKtjIsp|WZae&XePwliY0)@HUW>SLQ(kN^pEl#0>US9Jge1z*)?1ggSzcOM zg9VG9=J5y%}{if|)jIi!Y^I9SM9EsG6syYyWPE31;E$}wwZ zbHXwsxp$lNws4t3e1jIbvVI>{811Xn+Vmb*G0MH%dl(sCIMd}O3ZC@P`4_Iq z?Zx=ybwZ94h2g! zgy8YbMtgu`a~S!-D!L!G5xm<0fe)Wx$z8(~5wuLXE+hP8^jPg+X4tg@ z-&bsIpIXgRf=F%GESBo7^<&&!LhxpJo^m^t*=h^^FwW<#qQQT6mpm}N?_n+^yx8Uj zz;{tVFR!6=1*_Be@p41mP!n1SAHkuEG96lp>t%SmQCgD`lM_4oX=UOeL@7qwTSB8B z-q^CZ#8cbUz`V`lnX{T8C@@`O*Lgan7!XI>1aH^`C4z?;jGYq{(y(iWbgP=9@aggD zVO(H0x42s5&h5mudfN44As?oyI?8=_Vd+sBQe;^As;6 zq`CrXM>58k8}UXB4RQ^V$g#3mC~UB$Cv2B(o1~5Z+ujw$A&g09&|z7dtQ1&M4s6$F z9jg9iGj4P5Qj0dxZNuHTw=hX@!D>d=k?5K&Pu2iqlGhwx6(jvybKG}uEz1{g>=YfF zrju9{Sd913*(*{|{)Vy)LLe2RtRCX?GR(ZYH`_K@=!7RYH`baF-gzI?Ji^Ku9t(ZG1TjZMJQp)d5Fd$ z+ad-nTD`Yxwv$v2F&+3rTEO3y<{tStug07WHCo>d>pQ%{F9tZ}Pk3W%p?mo8kGS)60Me?zQyb<$mzO(;>PdrHaCs=FS55_sh0?Z(iBE}ZHDUu*KS zEe!F3O*Gt(X(a5raMFCW}N=rxK4AhO2}TvKFwJy$a4y1zZu zRlQ;ie|_7>Ww1MkqTS4D*<05#%-oo`L$bk-9=X>csLHcO)(+O?+R9%J7wc;)v*G3Q zORH;(GZ*St*jCwgd1-l#z~+kFs>`@M`l9xN<>g%z@{)JDKAH;3TS5GYCW@!Ig8*_4 zyxVY5x%!GnZ)xX36r8hwAdPdwk7@#|VyPUPNTesvO>-#IsIGG%zNw+zf}#YC+0j^*wZ#d$ijFJ`)F2hj@sQI5O_`u}+7m8&CymrzOX_Byup~aMCUF|Um+k>=))@o-|E)Wq$Dayn8 zkay#ndyF6`7ef~1N9}gvP=K1m-XscI+U*Ih9+^-5R=KFnIZHG8qZAo9(>c_1CU(iF<8YHrlhX1XEstnRv`xGJV-BkrkyULJY zJ4LQGHIZ5()Q{95S;AKu2n6Ri5hF{xE7fX^(VpG?!n=E$Mu9)Ci&6HiNm7?&*k#YE zq~SExx}-WBq*FmhFbadk*D0d&m3F%s-bJFW=N2wB$wV?l+(47%h|ox418CLb>IJVp zvfx^wpOq&;8yKBt(|!e76B8QlhudN%*Lf;jEy|OeT!}9%5rx@i55s;JaE^M3cF`Yf zQqGjX{bJr-^B{A~k#)NYTt~~5;A^bEY_wk_E5{2tDEFdNiLyIHrr$_l(UCri)KlB) zR7m2WGJ+frel&8PbRzM|AY~o&IbSJaQWaC=X0igNVkmx%1`z{HjcU}bLa}D zyWRLrBaMkh*7nu{(P4YA1$uWlrQhLx6N6F3ke2M-1m6TJj)|(PJ2||=Vt(_+`&*G; z8lR6FRzw*Ns1#mRCogKRY;953t&hyhZ5A8&eGS_x`D5kTw7>{=cyHTiCc3%=r&$Cp zgiQ&;V4J#fgVsn2HCmA|iYJ{jaKuBdSS!YImStLdwT%>NVFuya30zip5)8fBOLLqh zjkb|a2Ng%2sj#!V`_l7mU#aD3Qk{ubbnF%v1j21Gjn^fWj;>nku9md0+A`bG55Fg|uE;gg9839Y|CoQy1z^GBPaQDp0et)77$o3z3CIprNX`j7U^*!B^L_ zopoI3L(=pl&Qas+VOYzxqv1S-$_Z{&+cHbYy1V6+7hkR9!Wy8coc{1E$gD%d%MGV5 z{#D+TBr6i06kRIiwDh_)f>~( zi&O$e$dDqyTz$RncUz1x$syUqr8rw2+Uh;~ih68?nOz#%IVohhQMOEPhFlsM>xs56 zip5m%Rr*cEdycn>-NaR3Lv$buGN8D%>Lt5|a->PQl`?~WaD`{*dI&k9ySW$tKkCI^ z(~Yy7ajO`^g1n8uxRNn^Ul>#-4fh6m-g4$eY!el1Bl8#^8e`mQeeuniaAsk4eQ_o{ zH$&0boAWcLypK%{H=~)UMXnZa0qdpWu?E_k<;Ikwpm1#7RgKMD4NYoi=IZCxXV&U( zYTmhUeGxjTcx;K{v3j^VyR^JC8LpZW)#qj=8Dsu^D#&EKI}sOL3JmZX@~B1BHOf_` z0{}aLl975cD0X`R3J=RBCVyI<#Eyc87Y1!&3C06FUBf>7bm%8dQT5exo zR$ozNR{60EK%^=zHOS;yJ((z{NUiL*&zJJhAqGG>#w9$=wohV+REG_OCC!;2ieu^hh74AfLJOD}LX(qACHHIE! zKyBaBHK(seqV&5fU6Up2XV>9h(|85ZWN~71E74a*^!-cN65@F@D<^cAlv2jf8v|75 zf()K!N+l1A*<1mhH5E8C+haaHHY4c|oU$MC^{|zCm~gp<0t<4& zl`7~a-z>})`f7BM-M`EO$A0N@-r;WFs<{qgMf{AM`sh(nP1`3|E9kmS^;~t^sgDBT zmc0t+=8L@+D3;muWpmh^GLlD|tIlrTaJH*}uAGJ0T<9zHZv$k6!5u*qX3|i(I|eTJ!aFoO_3mgXGob)dR7#{?;iGb5XVQy2 zMWqMn-@D0EEcs*_H=VL(_Ss#R=OqtbFfXp~S(A`qM$4AnQtT|uE2uBES+W95YB;x` zuc+0l$c5^fMl19zI>zU8+IPe>`?9_4N%6vn?}_I);JV2MU{TZ$*pnBWpfD*ht3^3bDG!{^-029 zeCa8}F&!gY(t>L@anlN(sq&n{O+ja!rb6gSecu{IUv(X@&?d;NOdX|dD)x)Qb?Z@~ zlnov&Qw!&nYH%V}6sQ&BRla7-a{F>WthWnHT@tJO2|=vx5B^3p<&NRO6zp11Wfc0$ zEMFq%Vi%hafA?VJ5bknfk1|2yx(0t<1;5D62Ng9}!1@ zCMhYibB5Y}b%Z2d!{NS7E<^@nJfrLF3kgxEzLt>8zuQAmPe}MkoJpcf$J?Kzx_c-p z4(np-^RSwUn`Qd)jOszBG%d~r=kLdE*bvPqjc%v$?G(*#UFIc=~$` z7hqoS`5a%yI6Bnzmyzf@qibTnVD};f(ke5C+!YEBISTnh zs?9;E1y}nND)!=*LR&c~u3oVvt-v2B`M>bkuU@f%bsZTP4aep`U3GAOS4QSxNmr4XzmV%KPRAkW~XSuALoI|THpWPgLziOD#EaH`_aV_$6 zU<6Uv1Z_$FbrFO6;==U>rS4{vM5OY^!l!)54&lH0!S;dJ27Wl~a(6}+jUtPS_|$e4 zS9;s+Ei(X#fHhecA#_!hu#3$}qST~eSAFH}=crCnBoo~vyK5|W&QflKa!7=_+ywgB z@3yvQm1QxH8}G|3IZ;F`&Lx0lm8kF0oW(@L)9>}I*tojixgL{HhudyM1t#}Fgs*9< zZhW7DOh17itGdi)gdF=?%*1=?Y~_vxnG#bACS?AM2h4gvUj@EljU-x-@ktIHZwTUbQ9dMeAB#}cykj$7+4I9A}VjysOofH?cGto z%pKmb@Y7ahC0$)wa57Xg{IN*_rul!mpwm`;#;&A_N#=fKpJlOUIYbT=nhI0ZkP)B& zgZkemM4ug%pCh@3iehnk!vx(=N}lpg7#U6OjRY4YJocy&ZNO>fp_X@9a>a;hOp#o( zP?`hic3|%+Q7q%APntL^yJ~0I%{%S6Dtxv53QCI*9_qQvGE@$Rji}Ja4tHNvDnsR? za`x{GSXo*s7Fe;1mC_0pR?hOh@_a@-&5;P(%o}s-4h(I-VzIy7sPVrLkriuJ3{RoC zMtj;Y#Z?wA&&v(o!-mR~T)$4~P_?Yo-Wa>yuBfzd9MQI}u+0)XR!bFAsgD^p(%-J6 z)DQPAV8rbcn}n-xS5``(HgX?@o+OGTxuvb!$X!*X6qPC=ZGO3>dU3F|vd~3w>4GqU-zf|3xVXXp^rewdJ&5`Ck%p@= z9ijNTi8(7E^D48QFn;9X2yaeTLY`Tn*Q#ntO{7(jB?{aBF36<{D|Ik*^}a~uWw548 zXO*1d*RUm5GIN)?HT)hcIkkcE|wW#%-#i*{B#mS3v zh)t;MYF9V5E<+?_|Tt{7WoEGi)9hC+W4 zid$-bs=;sZU|G$2m;K=c+bPO~_;eF(CspAf?r!lVbcL;~7Fg6iWRS=?Oo7QqQ2<7_ F{|A<)(=`A9 literal 0 HcmV?d00001 diff --git a/po/it.po b/po/it.po new file mode 100644 index 00000000..bfd0c8ec --- /dev/null +++ b/po/it.po @@ -0,0 +1,1059 @@ +# Italian messages for GNU Wget +# Copyright (C) 1998 Free Software Foundation, Inc. +# Giovanni Bortolozzo , 1998 +# +msgid "" +msgstr "" +"Project-Id-Version: wget 1.5.2-b1\n" +"POT-Creation-Date: 1998-09-21 19:08+0200\n" +"PO-Revision-Date: 1998-06-13 15:22+02:00\n" +"Last-Translator: Giovanni Bortolozzo \n" +"Language-Team: Italian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Login to the server: +#. First: Establish the control connection. +#: src/ftp.c:147 src/http.c:346 +#, c-format +msgid "Connecting to %s:%hu... " +msgstr "Mi sto connettendo a %s:%hu..." + +#: src/ftp.c:169 src/ftp.c:411 src/http.c:363 +#, c-format +msgid "Connection to %s:%hu refused.\n" +msgstr "Connessione a %s:%hu rifiutata.\n" + +#. Second: Login with proper USER/PASS sequence. +#: src/ftp.c:190 src/http.c:374 +msgid "connected!\n" +msgstr "connesso!\n" + +#: src/ftp.c:191 +#, c-format +msgid "Logging in as %s ... " +msgstr "Accesso come utente %s ... " + +#: src/ftp.c:200 src/ftp.c:253 src/ftp.c:301 src/ftp.c:353 src/ftp.c:447 +#: src/ftp.c:520 src/ftp.c:568 src/ftp.c:616 +msgid "Error in server response, closing control connection.\n" +msgstr "" +"Errore nella risposta del server, chiudo la connessione di controllo.\n" + +#: src/ftp.c:208 +msgid "Error in server greeting.\n" +msgstr "Errore nel codice di benvenuto del server\n" + +#: src/ftp.c:216 src/ftp.c:262 src/ftp.c:310 src/ftp.c:362 src/ftp.c:457 +#: src/ftp.c:530 src/ftp.c:578 src/ftp.c:626 +msgid "Write failed, closing control connection.\n" +msgstr "Errore in scrittura, chiudo la connessione di controllo\n" + +#: src/ftp.c:223 +msgid "The server refuses login.\n" +msgstr "Il server rifiuta il login.\n" + +#: src/ftp.c:230 +msgid "Login incorrect.\n" +msgstr "Login non corretto.\n" + +#: src/ftp.c:237 +msgid "Logged in!\n" +msgstr "Login eseguito!\n" + +#: src/ftp.c:270 +#, c-format +msgid "Unknown type `%c', closing control connection.\n" +msgstr "Tipo `%c' sconosciuto, chiudo la connessione di controllo.\n" + +#: src/ftp.c:283 +msgid "done. " +msgstr "fatto. " + +#: src/ftp.c:289 +msgid "==> CWD not needed.\n" +msgstr "==> CWD non necessaria.\n" + +#: src/ftp.c:317 +#, c-format +msgid "" +"No such directory `%s'.\n" +"\n" +msgstr "" +"La directory `%s' non esiste.\n" +"\n" + +#: src/ftp.c:331 src/ftp.c:599 src/ftp.c:647 src/url.c:1431 +msgid "done.\n" +msgstr "fatto.\n" + +#. do not CWD +#: src/ftp.c:335 +msgid "==> CWD not required.\n" +msgstr "==> CWD non necessaria.\n" + +#: src/ftp.c:369 +msgid "Cannot initiate PASV transfer.\n" +msgstr "Non riesco ad inizializzare il trasferimento PASV.\n" + +#: src/ftp.c:373 +msgid "Cannot parse PASV response.\n" +msgstr "Non riesco a comprendere la risposta PASV.\n" + +#: src/ftp.c:387 +#, c-format +msgid "Will try connecting to %s:%hu.\n" +msgstr "Proverò a connettermi a %s:%hu.\n" + +#: src/ftp.c:432 src/ftp.c:504 src/ftp.c:548 +msgid "done. " +msgstr "fatto. " + +#: src/ftp.c:474 +#, c-format +msgid "Bind error (%s).\n" +msgstr "Errore di bind (%s).\n" + +#: src/ftp.c:490 +msgid "Invalid PORT.\n" +msgstr "PORT non valido.\n" + +#: src/ftp.c:537 +msgid "" +"\n" +"REST failed, starting from scratch.\n" +msgstr "" +"\n" +"REST fallito, ricomincio dall'inizio.\n" + +#: src/ftp.c:586 +#, c-format +msgid "" +"No such file `%s'.\n" +"\n" +msgstr "" +"Il file `%s' non esiste.\n" +"\n" + +#: src/ftp.c:634 +#, c-format +msgid "" +"No such file or directory `%s'.\n" +"\n" +msgstr "" +"Il file o la directory `%s' non esiste.\n" +"\n" + +#: src/ftp.c:692 src/ftp.c:699 +#, c-format +msgid "Length: %s" +msgstr "Lunghezza: %s" + +#: src/ftp.c:694 src/ftp.c:701 +#, c-format +msgid " [%s to go]" +msgstr " [%s alla fine]" + +#: src/ftp.c:703 +msgid " (unauthoritative)\n" +msgstr " (non autorevole)\n" + +#: src/ftp.c:721 +#, c-format +msgid "%s: %s, closing control connection.\n" +msgstr "%s: %s, chiudo la connessione di controllo.\n" + +#: src/ftp.c:729 +#, c-format +msgid "%s (%s) - Data connection: %s; " +msgstr "%s (%s) - Connessione dati: %s; " + +#: src/ftp.c:746 +msgid "Control connection closed.\n" +msgstr "Connessione di controllo chiusa.\n" + +#: src/ftp.c:764 +msgid "Data transfer aborted.\n" +msgstr "Trasferimento dati abortito.\n" + +#: src/ftp.c:830 +#, c-format +msgid "File `%s' already there, not retrieving.\n" +msgstr "Il file `%s' è già presente, non lo scarico.\n" + +#: src/ftp.c:896 src/http.c:922 +#, c-format +msgid "(try:%2d)" +msgstr "(provo:%2d)" + +#: src/ftp.c:955 src/http.c:1116 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld]\n" +"\n" +msgstr "" +"%s (%s) - `%s' salvato [%ld]\n" +"\n" + +#: src/ftp.c:1001 +#, c-format +msgid "Using `%s' as listing tmp file.\n" +msgstr "Utilizzo `%s' come file temporaneo per il listing.\n" + +#: src/ftp.c:1013 +#, c-format +msgid "Removed `%s'.\n" +msgstr "`%s' rimosso.\n" + +#: src/ftp.c:1049 +#, c-format +msgid "Recursion depth %d exceeded max. depth %d.\n" +msgstr "La profondità di %d nella ricorsione eccede il massimo ( %d ).\n" + +#: src/ftp.c:1096 src/http.c:1054 +#, c-format +msgid "" +"Local file `%s' is more recent, not retrieving.\n" +"\n" +msgstr "" +"Il file locale `%s' è più recente, non lo scarico.\n" +"\n" + +#: src/ftp.c:1102 src/http.c:1060 +#, c-format +msgid "The sizes do not match (local %ld), retrieving.\n" +msgstr "Le dimensioni non coincidono (locale %ld), lo scarico.\n" + +#: src/ftp.c:1119 +msgid "Invalid name of the symlink, skipping.\n" +msgstr "Il nome del link simbolico non è valido, passo oltre.\n" + +#: src/ftp.c:1136 +#, c-format +msgid "" +"Already have correct symlink %s -> %s\n" +"\n" +msgstr "" +"Ho già il link simbolico %s -> %s\n" +"\n" + +#: src/ftp.c:1144 +#, c-format +msgid "Creating symlink %s -> %s\n" +msgstr "Creo il link simbolico %s -> %s\n" + +#: src/ftp.c:1155 +#, c-format +msgid "Symlinks not supported, skipping symlink `%s'.\n" +msgstr "Link simbolici non supportati, ignoro il link `%s'.\n" + +#: src/ftp.c:1167 +#, c-format +msgid "Skipping directory `%s'.\n" +msgstr "Ignoro la directory `%s'.\n" + +#: src/ftp.c:1176 +#, c-format +msgid "%s: unknown/unsupported file type.\n" +msgstr "%s: tipo di file sconosciuto/non supportato.\n" + +#: src/ftp.c:1193 +#, c-format +msgid "%s: corrupt time-stamp.\n" +msgstr "%s: time-stamp corrotto.\n" + +#: src/ftp.c:1213 +#, c-format +msgid "Will not retrieve dirs since depth is %d (max %d).\n" +msgstr "Non scarico le directory perché la profondità é %d (max %d).\n" + +#: src/ftp.c:1252 +#, c-format +msgid "Not descending to `%s' as it is excluded/not-included.\n" +msgstr "Non scendo nella directory `%s' perché è esclusa/non inclusa.\n" + +#: src/ftp.c:1297 +#, c-format +msgid "Rejecting `%s'.\n" +msgstr "Rifiuto `%s'.\n" + +#. No luck. +#. #### This message SUCKS. We should see what was the +#. reason that nothing was retrieved. +#: src/ftp.c:1344 +#, c-format +msgid "No matches on pattern `%s'.\n" +msgstr "Nessun corrispondenza con il modello `%s'.\n" + +#: src/ftp.c:1404 +#, c-format +msgid "Wrote HTML-ized index to `%s' [%ld].\n" +msgstr "Scrivo l'indice in formato HTML in `%s' [%ld].\n" + +#: src/ftp.c:1409 +#, c-format +msgid "Wrote HTML-ized index to `%s'.\n" +msgstr "Scrivo l'indice in formato HTML in `%s'.\n" + +#: src/getopt.c:454 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: l'opzione `%s' è ambigua\n" + +#: src/getopt.c:478 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: l'opzione `--%s' non ammette argomenti\n" + +#: src/getopt.c:483 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: l'opzione `%c%s' non ammette argomenti\n" + +#: src/getopt.c:498 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: l'opzione `%s' richide un argomento\n" + +#. --option +#: src/getopt.c:528 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: opzione non riconosciuta`--%s'\n" + +#. +option or -option +#: src/getopt.c:532 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: opzione non riconosciuta `%c%s'\n" + +#. 1003.2 specifies the format of this message. +#: src/getopt.c:563 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opzione illegale -- %c\n" + +#. 1003.2 specifies the format of this message. +#: src/getopt.c:602 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'opzione richiede un argomento -- %c\n" + +#: src/host.c:432 +#, c-format +msgid "%s: Cannot determine user-id.\n" +msgstr "%s: Impossibile determinare lo user-id .\n" + +#: src/host.c:444 +#, c-format +msgid "%s: Warning: uname failed: %s\n" +msgstr "%s: Attenzione: uname fallita: %s\n" + +#: src/host.c:456 +#, c-format +msgid "%s: Warning: gethostname failed\n" +msgstr "%s: Attenzione: gethostname fallita\n" + +#: src/host.c:484 +#, c-format +msgid "%s: Warning: cannot determine local IP address.\n" +msgstr "%s: Attenzione: impossibile determinare l'indirizzo IP locale.\n" + +#: src/host.c:498 +#, c-format +msgid "%s: Warning: cannot reverse-lookup local IP address.\n" +msgstr "" +"%s: Attenzione: impossibile fare la risoluzione inversa dell'indirizzo\n" +" IP locale.\n" + +#. This gets ticked pretty often. Karl Berry reports +#. that there can be valid reasons for the local host +#. name not to be an FQDN, so I've decided to remove the +#. annoying warning. +#: src/host.c:511 +#, c-format +msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n" +msgstr "" +"%s: Attenzione: la risoluzione inversa dell'indirizzo locale non ha\n" +" prodotto un FQDN!\n" + +#: src/host.c:539 +msgid "Host not found" +msgstr "Host non trovato" + +#: src/host.c:541 +msgid "Unknown error" +msgstr "Errore sconosciuto" + +#: src/html.c:439 src/html.c:441 +#, c-format +msgid "Index of /%s on %s:%d" +msgstr "Indice della directory /%s su %s:%d" + +#: src/html.c:463 +msgid "time unknown " +msgstr "data sconosciuta " + +#: src/html.c:467 +msgid "File " +msgstr "File " + +#: src/html.c:470 +msgid "Directory " +msgstr "Directory " + +#: src/html.c:473 +msgid "Link " +msgstr "Link " + +#: src/html.c:476 +msgid "Not sure " +msgstr "Incerto " + +#: src/html.c:494 +#, c-format +msgid " (%s bytes)" +msgstr " (%s byte)" + +#: src/http.c:492 +msgid "Failed writing HTTP request.\n" +msgstr "Non riesco a scrivere la richiesta HTTP.\n" + +#: src/http.c:497 +#, c-format +msgid "%s request sent, awaiting response... " +msgstr "%s richiesta inviata, aspetto la risposta... " + +#: src/http.c:536 +msgid "End of file while parsing headers.\n" +msgstr "Raggiunta la fine del file durante l'analisi degli header.\n" + +#: src/http.c:547 +#, c-format +msgid "Read error (%s) in headers.\n" +msgstr "Errore di lettura degli header (%s).\n" + +#: src/http.c:587 +msgid "No data received" +msgstr "Nessun dato ricevuto" + +#: src/http.c:589 +msgid "Malformed status line" +msgstr "Riga di stato malformata" + +#: src/http.c:594 +msgid "(no description)" +msgstr "(nessuna descrizione)" + +#. If we have tried it already, then there is not point +#. retrying it. +#: src/http.c:678 +msgid "Authorization failed.\n" +msgstr "Autorizzazione fallita.\n" + +#: src/http.c:685 +msgid "Unknown authentication scheme.\n" +msgstr "Schema di autotentificazione sconosciuto.\n" + +#: src/http.c:748 +#, c-format +msgid "Location: %s%s\n" +msgstr "Location: %s%s\n" + +#: src/http.c:749 src/http.c:774 +msgid "unspecified" +msgstr "non specificato" + +#: src/http.c:750 +msgid " [following]" +msgstr " [segue]" + +#. No need to print this output if the body won't be +#. downloaded at all, or if the original server response is +#. printed. +#: src/http.c:764 +msgid "Length: " +msgstr "Lunghezza: " + +#: src/http.c:769 +#, c-format +msgid " (%s to go)" +msgstr " (%s per finire)" + +#: src/http.c:774 +msgid "ignored" +msgstr "ignorato" + +#: src/http.c:857 +msgid "Warning: wildcards not supported in HTTP.\n" +msgstr "Attenzione: le wildcard non sono supportate in HTTP.\n" + +#. If opt.noclobber is turned on and file already exists, do not +#. retrieve the file +#: src/http.c:872 +#, c-format +msgid "File `%s' already there, will not retrieve.\n" +msgstr "Il file `%s' è già presente, non lo scarico.\n" + +#: src/http.c:978 +#, c-format +msgid "Cannot write to `%s' (%s).\n" +msgstr "Non riesco a scrivere in `%s' (%s).\n" + +#: src/http.c:988 +#, c-format +msgid "ERROR: Redirection (%d) without location.\n" +msgstr "ERRORE: Redirezione (%d) senza posizione.\n" + +#: src/http.c:1011 +#, c-format +msgid "%s ERROR %d: %s.\n" +msgstr "%s ERRORE %d: %s.\n" + +#: src/http.c:1023 +msgid "Last-modified header missing -- time-stamps turned off.\n" +msgstr "Manca l'header last-modified -- date disattivate.\n" + +#: src/http.c:1031 +msgid "Last-modified header invalid -- time-stamp ignored.\n" +msgstr "Header last-modified non valido -- data ignorata.\n" + +#: src/http.c:1064 +msgid "Remote file is newer, retrieving.\n" +msgstr "Il file remoto è più recente, lo scarico.\n" + +#: src/http.c:1098 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld]\n" +"\n" +msgstr "" +"%s (%s) - `%s' salvato [%ld/%ld]\n" +"\n" + +#: src/http.c:1130 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld. " +msgstr "%s (%s) - Connessione chiusa al byte %ld. " + +#: src/http.c:1138 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld])\n" +"\n" +msgstr "" +"%s (%s) - `%s' salvati [%ld/%ld])\n" +"\n" + +#: src/http.c:1150 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld/%ld. " +msgstr "%s (%s) - Connessione chiusa al byte %ld/%ld. " + +#: src/http.c:1161 +#, c-format +msgid "%s (%s) - Read error at byte %ld (%s)." +msgstr "%s (%s) - Errore di lettura al byte %ld (%s). " + +#: src/http.c:1169 +#, c-format +msgid "%s (%s) - Read error at byte %ld/%ld (%s). " +msgstr "%s (%s) - Errore di lettura al %ld/%ld (%s). " + +#: src/init.c:312 src/netrc.c:250 +#, c-format +msgid "%s: Cannot read %s (%s).\n" +msgstr "%s: Impossibile leggere %s (%s).\n" + +#: src/init.c:333 src/init.c:339 +#, c-format +msgid "%s: Error in %s at line %d.\n" +msgstr "%s: Errore in %s alla linea %d.\n" + +#: src/init.c:370 +#, c-format +msgid "%s: Warning: Both system and user wgetrc point to `%s'.\n" +msgstr "" +"%s: Attenzione: Sia il wgetrc di sistema che quello personale puntano\n" +" a `%s'.\n" + +#: src/init.c:458 +#, c-format +msgid "%s: BUG: unknown command `%s', value `%s'.\n" +msgstr "%s: BUG: comando `%s' sconosciuto, valore `%s'.\n" + +#: src/init.c:485 +#, c-format +msgid "%s: %s: Please specify on or off.\n" +msgstr "%s: %s: Specificare on oppure off.\n" + +#: src/init.c:503 src/init.c:760 src/init.c:782 src/init.c:855 +#, c-format +msgid "%s: %s: Invalid specification `%s'.\n" +msgstr "%s: %s: Specificazione non valida `%s'\n" + +#: src/init.c:616 src/init.c:638 src/init.c:660 src/init.c:686 +#, c-format +msgid "%s: Invalid specification `%s'\n" +msgstr "wget: %s: Specificazione non valida `%s'\n" + +#: src/main.c:101 +#, c-format +msgid "Usage: %s [OPTION]... [URL]...\n" +msgstr "Uso: %s [OPZIONE]... [URL]...\n" + +#: src/main.c:109 +#, c-format +msgid "GNU Wget %s, a non-interactive network retriever.\n" +msgstr "" +"GNU Wget %s, un programma non interattivo per scaricare file dalla rete.\n" + +#. Had to split this in parts, so the #@@#%# Ultrix compiler and cpp +#. don't bitch. Also, it makes translation much easier. +#: src/main.c:114 +msgid "" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +msgstr "" +"\n" +"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle\n" +"corte.\n" + +#: src/main.c:117 +msgid "" +"Startup:\n" +" -V, --version display the version of Wget and exit.\n" +" -h, --help print this help.\n" +" -b, --background go to background after startup.\n" +" -e, --execute=COMMAND execute a `.wgetrc' command.\n" +"\n" +msgstr "" +"Avvio:\n" +" -V, --version mostra la versione di Wget ed esce.\n" +" -h, --help mostra questo aiuto.\n" +" -b, --background va in background dopo l'avvio.\n" +" -e, --execute=COMANDO esegue un comando `.wgetrc'.\n" +"\n" + +#: src/main.c:123 +msgid "" +"Logging and input file:\n" +" -o, --output-file=FILE log messages to FILE.\n" +" -a, --append-output=FILE append messages to FILE.\n" +" -d, --debug print debug output.\n" +" -q, --quiet quiet (no output).\n" +" -v, --verbose be verbose (this is the default).\n" +" -nv, --non-verbose turn off verboseness, without being quiet.\n" +" -i, --input-file=FILE read URL-s from file.\n" +" -F, --force-html treat input file as HTML.\n" +"\n" +msgstr "" +"File di log e d'ingresso:\n" +" -o, --output-file=FILE registra i messaggi su FILE.\n" +" -a, --append-output=FILE accoda i messaggi a FILE.\n" +" -d, --debug mostra l'output di debug.\n" +" -q, --quiet silenzioso (nessun output).\n" +" -v, --verbose prolisso (questo è il comportamento\n" +" predefinito).\n" +" -nv, --non-verbose meno prolisso, senza diventare silenzioso.\n" +" -i, --input-file=FILE legge gli URL da FILE.\n" +" -F, --force-html tratta il file di input come HTML.\n" +"\n" + +#: src/main.c:133 +msgid "" +"Download:\n" +" -t, --tries=NUMBER set number of retries to NUMBER (0 " +"unlimits).\n" +" -O --output-document=FILE write documents to FILE.\n" +" -nc, --no-clobber don't clobber existing files.\n" +" -c, --continue restart getting an existing file.\n" +" --dot-style=STYLE set retrieval display style.\n" +" -N, --timestamping don't retrieve files if older than local.\n" +" -S, --server-response print server response.\n" +" --spider don't download anything.\n" +" -T, --timeout=SECONDS set the read timeout to SECONDS.\n" +" -w, --wait=SECONDS wait SECONDS between retrievals.\n" +" -Y, --proxy=on/off turn proxy on or off.\n" +" -Q, --quota=NUMBER set retrieval quota to NUMBER.\n" +"\n" +msgstr "" +"Download:\n" +" -t, --tries=NUMERO imposta il numero di tentativi a NUMERO\n" +" (0 = illimitati)\n" +" -O --output-document=FILE scrive l'output su FILE.\n" +" -nc, --no-clobber non sovrascrive i file già esistenti.\n" +" -c, --continue riprende a scaricare un file già esistente.\n" +" --dot-style=STILE imposta lo stile di visualizzazione dello\n" +" scaricamento.\n" +" -N, --timestamping non scarica i file se sono più vecchi di\n" +" quelli locali.\n" +" -S, --server-response mostra le risposte del server.\n" +" --spider non scarica niente.\n" +" -T, --timeout=SECONDI imposta il timeout di lettura a SECONDI.\n" +" -w, --wait=SECONDI aspetta SECONDI tra i vari scarichi.\n" +" -Y, --proxy=on/off attiva o disabilita l'uso del proxy.\n" +" -Q, --quota=NUMERO imposta la quota di scarico a NUMERO.\n" +"\n" + +#: src/main.c:147 +msgid "" +"Directories:\n" +" -nd --no-directories don't create directories.\n" +" -x, --force-directories force creation of directories.\n" +" -nH, --no-host-directories don't create host directories.\n" +" -P, --directory-prefix=PREFIX save files to PREFIX/...\n" +" --cut-dirs=NUMBER ignore NUMBER remote directory " +"components.\n" +"\n" +msgstr "" +"Directory:\n" +" -nd --no-directories non crea directory.\n" +" -x, --force-directories forza la creazione delle directory.\n" +" -nH, --no-host-directories non crea directory sull'host.\n" +" -P, --directory-prefix=PREFISSO salva i file in PREFISSO/...\n" +" --cut-dirs=NUMERO ignora NUMERO componenti delle\n" +" directory remote.\n" +"\n" + +#: src/main.c:154 +msgid "" +"HTTP options:\n" +" --http-user=USER set http user to USER.\n" +" --http-passwd=PASS set http password to PASS.\n" +" -C, --cache=on/off (dis)allow server-cached data (normally " +"allowed).\n" +" --ignore-length ignore `Content-Length' header field.\n" +" --header=STRING insert STRING among the headers.\n" +" --proxy-user=USER set USER as proxy username.\n" +" --proxy-passwd=PASS set PASS as proxy password.\n" +" -s, --save-headers save the HTTP headers to file.\n" +" -U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION.\n" +"\n" +msgstr "" +"Opzioni HTTP:\n" +" --http-user=UTENTE imposta l'utente http a UTENTE.\n" +" --http-passwd=PASS Imposta la password http a PASS.\n" +" -C, --cache=on/off permette o non permette la cache dei dati sul\n" +" server (normalmente permessa).\n" +" --ignore-length ignora il campo `Content-Length' degli header.\n" +" --header=STRINGA inserisce STRINGA tra gli header.\n" +" --proxy-user=UTENTE usa UTENTE come nome utente per il proxy.\n" +" --proxy-passwd=PASS usa PASS come password per il proxy.\n" +" -s, --save-headers salva gli header HTTP sul file.\n" +" -U, --user-agent=AGENT si identifica come AGENT invece che come\n" +" Wget/VERSIONE.\n" +"\n" + +#: src/main.c:165 +msgid "" +"FTP options:\n" +" --retr-symlinks retrieve FTP symbolic links.\n" +" -g, --glob=on/off turn file name globbing on or off.\n" +" --passive-ftp use the \"passive\" transfer mode.\n" +"\n" +msgstr "" +"Opzioni FTP:\n" +" --retr-symlinks scarica i link simbolici FTP.\n" +" -g, --glob=on/off abilita o disabilita il file name globbing.\n" +" --passive-ftp usa il modo di trasferimento \"passivo\".\n" +"\n" + +#: src/main.c:170 +msgid "" +"Recursive retrieval:\n" +" -r, --recursive recursive web-suck -- use with care!.\n" +" -l, --level=NUMBER maximum recursion depth (0 to unlimit).\n" +" --delete-after delete downloaded files.\n" +" -k, --convert-links convert non-relative links to relative.\n" +" -m, --mirror turn on options suitable for mirroring.\n" +" -nr, --dont-remove-listing don't remove `.listing' files.\n" +"\n" +msgstr "" +"Scarico ricorsivo:\n" +" -r, --recursive web-suck ricorsivo -- usare con cautela!\n" +" -l, --level=NUMERO profondità massima di ricorsione\n" +" (0 = illimitata).\n" +" --delete-after cancella i file scaricati.\n" +" -k, --convert-links converti i link simbolici non relativi in\n" +" relativi.\n" +" -m, --mirror abilita le opzioni adatte per il mirroring.\n" +" -nr, --dont-remove-listing non rimuove i file `.listing'.\n" +"\n" + +#: src/main.c:178 +msgid "" +"Recursive accept/reject:\n" +" -A, --accept=LIST list of accepted extensions.\n" +" -R, --reject=LIST list of rejected extensions.\n" +" -D, --domains=LIST list of accepted domains.\n" +" --exclude-domains=LIST comma-separated list of rejected " +"domains.\n" +" -L, --relative follow relative links only.\n" +" --follow-ftp follow FTP links from HTML documents.\n" +" -H, --span-hosts go to foreign hosts when recursive.\n" +" -I, --include-directories=LIST list of allowed directories.\n" +" -X, --exclude-directories=LIST list of excluded directories.\n" +" -nh, --no-host-lookup don't DNS-lookup hosts.\n" +" -np, --no-parent don't ascend to the parent directory.\n" +"\n" +msgstr "" +"Accetto/rifiuto ricorsivo:\n" +" -A, --accept=LISTA lista di estensioni accettate.\n" +" -R, --reject=LISTA lista di estensioni rifiutate.\n" +" -D, --domains=LISTA lista di domini accettati.\n" +" --exclude-domains=LISTA lista separata da virgole di domini\n" +" rifiutati\n" +" -L, --relative segue solo i link relativi.\n" +" --follow-ftp segue i link FTP dai documenti HTTP.\n" +" -H, --span-hosts in modo ricorsivo passa anche ad altri\n" +" host\n" +" -I, --include-directories=LISTA lista di directory permesse.\n" +" -X, --exclude-directories=LISTA lista di directory escluse.\n" +" -nh, --no-host-lookup non effettua la risoluzione DNS degli\n" +" host.\n" +" -np, --no-parent non risale alla directory genitrice.\n" +"\n" + +#: src/main.c:191 +msgid "Mail bug reports and suggestions to .\n" +msgstr "Inviare segnalazioni di bug e suggerimenti a .\n" + +#: src/main.c:347 +#, c-format +msgid "%s: debug support not compiled in.\n" +msgstr "" +"wget: %s: supporto per il debug non attivato in fase di compilazione.\n" + +#: src/main.c:395 +msgid "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"Questo programma è distribuito nella speranza che possa essere utile,\n" +"ma SENZA ALCUNA GARANZIA; anche senza la garanzia implicita di\n" +"COMMERCIABILITA` o di ADEGUATEZZA AD UN PARTICOLARE SCOPO. Si consulti\n" +"la GNU General Public License per maggiori dettagli.\n" + +#: src/main.c:401 +msgid "" +"\n" +"Written by Hrvoje Niksic .\n" +msgstr "" +"\n" +"Scritto da Hrvoje Niksic .\n" + +#: src/main.c:465 +#, c-format +msgid "%s: %s: invalid command\n" +msgstr "%s: %s: comando non valido\n" + +#: src/main.c:515 +#, c-format +msgid "%s: illegal option -- `-n%c'\n" +msgstr "%s: opzione illegale -- `-n%c'\n" + +#. #### Something nicer should be printed here -- similar to the +#. pre-1.5 `--help' page. +#: src/main.c:518 src/main.c:560 src/main.c:591 +#, c-format +msgid "Try `%s --help' for more options.\n" +msgstr "Usare `%s --help' per ulteriori opzioni.\n" + +#: src/main.c:571 +msgid "Can't be verbose and quiet at the same time.\n" +msgstr "Non posso essere prolisso e silenzioso allo stesso tempo.\n" + +#: src/main.c:577 +msgid "Can't timestamp and not clobber old files at the same time.\n" +msgstr "" +"Non posso impostare le date e contemporaneamente non modificare\n" +"i vecchi file.\n" + +#. No URL specified. +#: src/main.c:586 +#, c-format +msgid "%s: missing URL\n" +msgstr "%s: manca l'URL\n" + +#: src/main.c:674 +#, c-format +msgid "No URLs found in %s.\n" +msgstr "Non ci sono URL in %s.\n" + +#: src/main.c:683 +#, c-format +msgid "" +"\n" +"FINISHED --%s--\n" +"Downloaded: %s bytes in %d files\n" +msgstr "" +"\n" +"FINITO --%s--\n" +"Scaricati: %s byte in %d file\n" + +#: src/main.c:688 +#, c-format +msgid "Download quota (%s bytes) EXCEEDED!\n" +msgstr "Quota per lo scarico (%s byte) SUPERATA!\n" + +#. Please note that the double `%' in `%%s' is intentional, because +#. redirect_output passes tmp through printf. +#: src/main.c:715 +msgid "%s received, redirecting output to `%%s'.\n" +msgstr "%s ricevuti, redirigo l'output su `%%s'.\n" + +#: src/mswindows.c:118 +#, c-format +msgid "" +"\n" +"CTRL+Break received, redirecting output to `%s'.\n" +"Execution continued in background.\n" +"You may stop Wget by pressing CTRL+ALT+DELETE.\n" +msgstr "" +"\n" +"CTRL+Break intercettato, ridirigo l'output su `%s'.\n" +"L'esecuzione continuerà in background\n" +"Wget può essere fermato premendo CTRL+ALT+DELETE.\n" + +#. parent, no error +#: src/mswindows.c:135 src/utils.c:268 +msgid "Continuing in background.\n" +msgstr "Continuo in background.\n" + +#: src/mswindows.c:137 src/utils.c:270 +#, c-format +msgid "Output will be written to `%s'.\n" +msgstr "L'output sarà scritto su `%s'.\n" + +#: src/mswindows.c:227 +#, c-format +msgid "Starting WinHelp %s\n" +msgstr "Avvio WinHelp %s\n" + +#: src/mswindows.c:254 src/mswindows.c:262 +#, c-format +msgid "%s: Couldn't find usable socket driver.\n" +msgstr "%s: Non riesco a trovare un driver utilizzabile per i socket.\n" + +#: src/netrc.c:334 +#, c-format +msgid "%s: %s:%d: warning: \"%s\" token appears before any machine name\n" +msgstr "" +"%s: %s:%d: attenzione: il token \"%s\" appare prima di un nome di macchina\n" + +#: src/netrc.c:365 +#, c-format +msgid "%s: %s:%d: unknown token \"%s\"\n" +msgstr "%s: %s:%d: token \"%s\" sconosciuto\n" + +#: src/netrc.c:429 +#, c-format +msgid "Usage: %s NETRC [HOSTNAME]\n" +msgstr "Uso: %s NETRC [HOSTNAME]\n" + +#: src/netrc.c:439 +#, c-format +msgid "%s: cannot stat %s: %s\n" +msgstr "%s: stat su %s fallita: %s\n" + +#: src/recur.c:449 src/retr.c:462 +#, c-format +msgid "Removing %s.\n" +msgstr "Rimuovo %s.\n" + +#: src/recur.c:450 +#, c-format +msgid "Removing %s since it should be rejected.\n" +msgstr "Rimuovo %s poiché deve essere rifiutato.\n" + +#: src/recur.c:609 +msgid "Loading robots.txt; please ignore errors.\n" +msgstr "Carico robots.txt; si ignorino eventuali errori.\n" + +#: src/retr.c:193 +#, c-format +msgid "" +"\n" +" [ skipping %dK ]" +msgstr "" +"\n" +" [ salto %dK ]" + +#: src/retr.c:344 +msgid "Could not find proxy host.\n" +msgstr "Non riesco a trovare il proxy host.\n" + +#: src/retr.c:355 +#, c-format +msgid "Proxy %s: Must be HTTP.\n" +msgstr "Proxy %s: Deve essere HTTP.\n" + +#: src/retr.c:398 +#, c-format +msgid "%s: Redirection to itself.\n" +msgstr "%s: Redirezione su se stesso.\n" + +#: src/retr.c:483 +msgid "" +"Giving up.\n" +"\n" +msgstr "" +"Rinuncio.\n" +"\n" + +#: src/retr.c:483 +msgid "" +"Retrying.\n" +"\n" +msgstr "" +"Ritento.\n" +"\n" + +#: src/url.c:940 +#, c-format +msgid "Error (%s): Link %s without a base provided.\n" +msgstr "Errore (%s): Link %s fornito senza una base.\n" + +#: src/url.c:955 +#, c-format +msgid "Error (%s): Base %s relative, without referer URL.\n" +msgstr "Errore (%s): Base %s relativa, senza URL di riferimento\n" + +#: src/url.c:1373 +#, c-format +msgid "Converting %s... " +msgstr "Converto %s... " + +#: src/url.c:1378 src/url.c:1389 +#, c-format +msgid "Cannot convert links in %s: %s\n" +msgstr "Non riesco a convertire i link in %s: %s\n" + +#: src/utils.c:71 +#, c-format +msgid "%s: %s: Not enough memory.\n" +msgstr "%s: %s: Memoria insufficiente.\n" + +#: src/utils.c:203 +msgid "Unknown/unsupported protocol" +msgstr "Protocollo sconosciuto/non supportato" + +#: src/utils.c:206 +msgid "Invalid port specification" +msgstr "Porta specificata non valida" + +#: src/utils.c:209 +msgid "Invalid host name" +msgstr "Nome host non valido" + +#: src/utils.c:430 +#, c-format +msgid "Failed to unlink symlink `%s': %s\n" +msgstr "Non riesco a rimuovere il link simbolico `%s': %s\n" diff --git a/po/no.gmo b/po/no.gmo new file mode 100644 index 0000000000000000000000000000000000000000..43a26e4ad5a7ed3f7d50b168498126a8cc3fbc3e GIT binary patch literal 22385 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, 1998. +# +msgid "" +msgstr "" +"Project-Id-Version: wget 1.5.2-b1\n" +"POT-Creation-Date: 1998-09-21 19:08+0200\n" +"PO-Revision-Date: 1998-05-22 09:00+0100\n" +"Last-Translator: Robert Schmidt \n" +"Language-Team: Norwegian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Login to the server: +#. First: Establish the control connection. +#: src/ftp.c:147 src/http.c:346 +#, c-format +msgid "Connecting to %s:%hu... " +msgstr "Kontakter %s:%hu... " + +#: src/ftp.c:169 src/ftp.c:411 src/http.c:363 +#, c-format +msgid "Connection to %s:%hu refused.\n" +msgstr "Kontakt med %s:%hu nektet.\n" + +#. Second: Login with proper USER/PASS sequence. +#: src/ftp.c:190 src/http.c:374 +msgid "connected!\n" +msgstr "kontakt!\n" + +#: src/ftp.c:191 +#, c-format +msgid "Logging in as %s ... " +msgstr "Logger inn som %s ... " + +#: src/ftp.c:200 src/ftp.c:253 src/ftp.c:301 src/ftp.c:353 src/ftp.c:447 +#: src/ftp.c:520 src/ftp.c:568 src/ftp.c:616 +msgid "Error in server response, closing control connection.\n" +msgstr "Feil i svar fra tjener, lukker kontrollforbindelsen.\n" + +#: src/ftp.c:208 +msgid "Error in server greeting.\n" +msgstr "Feil i melding fra tjener.\n" + +#: src/ftp.c:216 src/ftp.c:262 src/ftp.c:310 src/ftp.c:362 src/ftp.c:457 +#: src/ftp.c:530 src/ftp.c:578 src/ftp.c:626 +msgid "Write failed, closing control connection.\n" +msgstr "Feil ved skriving, lukker kontrollforbindelsen.\n" + +#: src/ftp.c:223 +msgid "The server refuses login.\n" +msgstr "Tjeneren tillater ikke innlogging.\n" + +#: src/ftp.c:230 +msgid "Login incorrect.\n" +msgstr "Feil ved innlogging.\n" + +#: src/ftp.c:237 +msgid "Logged in!\n" +msgstr "Logget inn!\n" + +#: src/ftp.c:270 +#, c-format +msgid "Unknown type `%c', closing control connection.\n" +msgstr "Ukjent type «%c», lukker kontrollforbindelsen.\n" + +#: src/ftp.c:283 +msgid "done. " +msgstr "OK. " + +#: src/ftp.c:289 +msgid "==> CWD not needed.\n" +msgstr "==> CWD ikke nødvendig.\n" + +#: src/ftp.c:317 +#, c-format +msgid "" +"No such directory `%s'.\n" +"\n" +msgstr "" +"Ingen katalog ved navn «%s».\n" +"\n" + +#: src/ftp.c:331 src/ftp.c:599 src/ftp.c:647 src/url.c:1431 +msgid "done.\n" +msgstr "OK.\n" + +#. do not CWD +#: src/ftp.c:335 +msgid "==> CWD not required.\n" +msgstr "==> CWD ikke nødvendig.\n" + +#: src/ftp.c:369 +msgid "Cannot initiate PASV transfer.\n" +msgstr "Kan ikke sette opp PASV-overføring.\n" + +#: src/ftp.c:373 +msgid "Cannot parse PASV response.\n" +msgstr "Kan ikke tolke PASV-tilbakemelding.\n" + +#: src/ftp.c:387 +#, c-format +msgid "Will try connecting to %s:%hu.\n" +msgstr "Vil prøve å kontakte %s:%hu.\n" + +#: src/ftp.c:432 src/ftp.c:504 src/ftp.c:548 +msgid "done. " +msgstr "OK. " + +#: src/ftp.c:474 +#, c-format +msgid "Bind error (%s).\n" +msgstr "Bind-feil (%s).\n" + +#: src/ftp.c:490 +msgid "Invalid PORT.\n" +msgstr "Ugyldig PORT.\n" + +#: src/ftp.c:537 +msgid "" +"\n" +"REST failed, starting from scratch.\n" +msgstr "" +"\n" +"Feil ved REST, starter fra begynnelsen.\n" + +#: src/ftp.c:586 +#, c-format +msgid "" +"No such file `%s'.\n" +"\n" +msgstr "" +"Ingen fil ved navn «%s».\n" +"\n" + +#: src/ftp.c:634 +#, c-format +msgid "" +"No such file or directory `%s'.\n" +"\n" +msgstr "" +"Ingen fil eller katalog ved navn «%s».\n" +"\n" + +#: src/ftp.c:692 src/ftp.c:699 +#, c-format +msgid "Length: %s" +msgstr "Lengde: %s" + +#: src/ftp.c:694 src/ftp.c:701 +#, c-format +msgid " [%s to go]" +msgstr " [%s igjen]" + +#: src/ftp.c:703 +msgid " (unauthoritative)\n" +msgstr " (ubekreftet)\n" + +#: src/ftp.c:721 +#, c-format +msgid "%s: %s, closing control connection.\n" +msgstr "%s: %s, lukker kontrollforbindelsen.\n" + +#: src/ftp.c:729 +#, c-format +msgid "%s (%s) - Data connection: %s; " +msgstr "%s (%s) - dataforbindelse: %s; " + +#: src/ftp.c:746 +msgid "Control connection closed.\n" +msgstr "Forbindelsen brutt.\n" + +#: src/ftp.c:764 +msgid "Data transfer aborted.\n" +msgstr "Dataoverføring brutt.\n" + +#: src/ftp.c:830 +#, c-format +msgid "File `%s' already there, not retrieving.\n" +msgstr "File «%s» eksisterer allerede, ignoreres.\n" + +#: src/ftp.c:896 src/http.c:922 +#, c-format +msgid "(try:%2d)" +msgstr "(forsøk:%2d)" + +#: src/ftp.c:955 src/http.c:1116 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld]\n" +"\n" +msgstr "" +"%s (%s) - «%s» lagret [%ld]\n" +"\n" + +#: src/ftp.c:1001 +#, c-format +msgid "Using `%s' as listing tmp file.\n" +msgstr "Bruker «%s» som temporær katalogliste.\n" + +#: src/ftp.c:1013 +#, c-format +msgid "Removed `%s'.\n" +msgstr "Slettet «%s».\n" + +#: src/ftp.c:1049 +#, c-format +msgid "Recursion depth %d exceeded max. depth %d.\n" +msgstr "Rekursjonsdybde %d overskred maksimal dybde %d.\n" + +#: src/ftp.c:1096 src/http.c:1054 +#, c-format +msgid "" +"Local file `%s' is more recent, not retrieving.\n" +"\n" +msgstr "" +"Lokal fil «%s» er samme/nyere, ignoreres.\n" +"\n" + +#: src/ftp.c:1102 src/http.c:1060 +#, c-format +msgid "The sizes do not match (local %ld), retrieving.\n" +msgstr "Filstørrelsene er forskjellige (local %ld), hentes.\n" + +#: src/ftp.c:1119 +msgid "Invalid name of the symlink, skipping.\n" +msgstr "Ugyldig navn for symbolsk link, ignoreres.\n" + +#: src/ftp.c:1136 +#, c-format +msgid "" +"Already have correct symlink %s -> %s\n" +"\n" +msgstr "" +"Har allerede gyldig symbolsk link %s -> %s\n" +"\n" + +#: src/ftp.c:1144 +#, c-format +msgid "Creating symlink %s -> %s\n" +msgstr "Lager symbolsk link %s -> %s\n" + +#: src/ftp.c:1155 +#, c-format +msgid "Symlinks not supported, skipping symlink `%s'.\n" +msgstr "Symbolske linker ikke støttet, ignorerer «%s».\n" + +#: src/ftp.c:1167 +#, c-format +msgid "Skipping directory `%s'.\n" +msgstr "Ignorerer katalog «%s».\n" + +#: src/ftp.c:1176 +#, c-format +msgid "%s: unknown/unsupported file type.\n" +msgstr "%s: filtypen er ukjent/ikke støttet.\n" + +#: src/ftp.c:1193 +#, c-format +msgid "%s: corrupt time-stamp.\n" +msgstr "%s: ugyldig tidsstempel.\n" + +#: src/ftp.c:1213 +#, c-format +msgid "Will not retrieve dirs since depth is %d (max %d).\n" +msgstr "Henter ikke kataloger på dybde %d (max %d).\n" + +#: src/ftp.c:1252 +#, c-format +msgid "Not descending to `%s' as it is excluded/not-included.\n" +msgstr "Behandler ikke «%s» da det er ekskludert/ikke inkludert.\n" + +#: src/ftp.c:1297 +#, c-format +msgid "Rejecting `%s'.\n" +msgstr "Ignorerer «%s».\n" + +#. No luck. +#. #### This message SUCKS. We should see what was the +#. reason that nothing was retrieved. +#: src/ftp.c:1344 +#, c-format +msgid "No matches on pattern `%s'.\n" +msgstr "Ingenting passer med mønsteret «%s».\n" + +#: src/ftp.c:1404 +#, c-format +msgid "Wrote HTML-ized index to `%s' [%ld].\n" +msgstr "Skrev HTML-formattert indeks til «%s» [%ld].\n" + +#: src/ftp.c:1409 +#, c-format +msgid "Wrote HTML-ized index to `%s'.\n" +msgstr "Skrev HTML-formattert indeks til «%s».\n" + +#: src/getopt.c:454 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: flagget «%s» er tvetydig\n" + +#: src/getopt.c:478 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: flagget «--%s» tillater ikke argumenter\n" + +#: src/getopt.c:483 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: flagget «%c%s» tillater ikke argumenter\n" + +#: src/getopt.c:498 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: flagget «%s» krever et argument\n" + +#. --option +#: src/getopt.c:528 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: ukjent flagg «--%s»\n" + +#. +option or -option +#: src/getopt.c:532 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: ukjent flagg «%c%s»\n" + +#. 1003.2 specifies the format of this message. +#: src/getopt.c:563 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ugyldig flagg -- %c\n" + +#. 1003.2 specifies the format of this message. +#: src/getopt.c:602 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: flagget krever et argument -- %c\n" + +#: src/host.c:432 +#, c-format +msgid "%s: Cannot determine user-id.\n" +msgstr "%s: Fant ikke bruker-ID.\n" + +#: src/host.c:444 +#, c-format +msgid "%s: Warning: uname failed: %s\n" +msgstr "%s: Advarsel: feil fra «uname»: %s\n" + +#: src/host.c:456 +#, c-format +msgid "%s: Warning: gethostname failed\n" +msgstr "%s: Advarsel: feil fra «gethostname»\n" + +#: src/host.c:484 +#, c-format +msgid "%s: Warning: cannot determine local IP address.\n" +msgstr "%s: Advarsel: fant ikke lokal IP-adresse.\n" + +#: src/host.c:498 +#, c-format +msgid "%s: Warning: cannot reverse-lookup local IP address.\n" +msgstr "%s: Advarsel: feil fra tilbake-oppslag for lokal IP-adresse.\n" + +#. This gets ticked pretty often. Karl Berry reports +#. that there can be valid reasons for the local host +#. name not to be an FQDN, so I've decided to remove the +#. annoying warning. +#: src/host.c:511 +#, c-format +msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n" +msgstr "" +"%s: Advarsel: fikk ikke FQDN fra tilbake-oppslag for lokal IP-adresse!\n" + +#: src/host.c:539 +msgid "Host not found" +msgstr "Tjener ikke funnet" + +#: src/host.c:541 +msgid "Unknown error" +msgstr "Ukjent feil" + +#: src/html.c:439 src/html.c:441 +#, c-format +msgid "Index of /%s on %s:%d" +msgstr "Indeks for /%s på %s:%d" + +#: src/html.c:463 +msgid "time unknown " +msgstr "ukjent tid " + +#: src/html.c:467 +msgid "File " +msgstr "Fil " + +#: src/html.c:470 +msgid "Directory " +msgstr "Katalog " + +#: src/html.c:473 +msgid "Link " +msgstr "Link " + +#: src/html.c:476 +msgid "Not sure " +msgstr "Usikker " + +#: src/html.c:494 +#, c-format +msgid " (%s bytes)" +msgstr " (%s bytes)" + +#: src/http.c:492 +msgid "Failed writing HTTP request.\n" +msgstr "Feil ved sending av HTTP-forespørsel.\n" + +#: src/http.c:497 +#, c-format +msgid "%s request sent, awaiting response... " +msgstr "%s forespørsel sendt, mottar topptekster... " + +#: src/http.c:536 +msgid "End of file while parsing headers.\n" +msgstr "Filslutt funnet ved lesing av topptekster.\n" + +#: src/http.c:547 +#, c-format +msgid "Read error (%s) in headers.\n" +msgstr "Lesefeil (%s) i topptekster.\n" + +#: src/http.c:587 +msgid "No data received" +msgstr "Ingen data mottatt" + +#: src/http.c:589 +msgid "Malformed status line" +msgstr "Feil i statuslinje" + +#: src/http.c:594 +msgid "(no description)" +msgstr "(ingen beskrivelse)" + +#. If we have tried it already, then there is not point +#. retrying it. +#: src/http.c:678 +msgid "Authorization failed.\n" +msgstr "Autorisasjon mislyktes\n" + +#: src/http.c:685 +msgid "Unknown authentication scheme.\n" +msgstr "Ukjent autorisasjons-protokoll.\n" + +#: src/http.c:748 +#, c-format +msgid "Location: %s%s\n" +msgstr "Sted: %s%s\n" + +#: src/http.c:749 src/http.c:774 +msgid "unspecified" +msgstr "uspesifisert" + +#: src/http.c:750 +msgid " [following]" +msgstr " [omdirigert]" + +#. No need to print this output if the body won't be +#. downloaded at all, or if the original server response is +#. printed. +#: src/http.c:764 +msgid "Length: " +msgstr "Lengde: " + +#: src/http.c:769 +#, c-format +msgid " (%s to go)" +msgstr " (%s igjen)" + +#: src/http.c:774 +msgid "ignored" +msgstr "ignoreres" + +#: src/http.c:857 +msgid "Warning: wildcards not supported in HTTP.\n" +msgstr "Advarsel: jokertegn ikke støttet i HTTP.\n" + +#. If opt.noclobber is turned on and file already exists, do not +#. retrieve the file +#: src/http.c:872 +#, c-format +msgid "File `%s' already there, will not retrieve.\n" +msgstr "Filen «%s» hentes ikke, fordi den allerede eksisterer.\n" + +#: src/http.c:978 +#, c-format +msgid "Cannot write to `%s' (%s).\n" +msgstr "Kan ikke skrive til «%s» (%s).\n" + +#: src/http.c:988 +#, c-format +msgid "ERROR: Redirection (%d) without location.\n" +msgstr "FEIL: Omdirigering (%d) uten nytt sted.\n" + +#: src/http.c:1011 +#, c-format +msgid "%s ERROR %d: %s.\n" +msgstr "%s FEIL %d: %s.\n" + +#: src/http.c:1023 +msgid "Last-modified header missing -- time-stamps turned off.\n" +msgstr "Last-modified topptekst mangler -- tidsstempling slås av.\n" + +#: src/http.c:1031 +msgid "Last-modified header invalid -- time-stamp ignored.\n" +msgstr "Last-modified topptekst ugyldig -- tidsstempel ignoreres.\n" + +#: src/http.c:1064 +msgid "Remote file is newer, retrieving.\n" +msgstr "Fil på tjener er nyere - hentes.\n" + +#: src/http.c:1098 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld]\n" +"\n" +msgstr "" +"%s (%s) - «%s» lagret [%ld/%ld]\n" +"\n" + +#: src/http.c:1130 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld. " +msgstr "%s (%s) - Forbindelse brutt ved byte %ld. " + +#: src/http.c:1138 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld])\n" +"\n" +msgstr "" +"%s (%s) - «%s» lagret [%ld/%ld]\n" +"\n" + +#: src/http.c:1150 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld/%ld. " +msgstr "%s (%s) - Forbindelse brutt ved byte %ld/%ld. " + +#: src/http.c:1161 +#, c-format +msgid "%s (%s) - Read error at byte %ld (%s)." +msgstr "%s (%s) - Lesefeil ved byte %ld (%s)." + +#: src/http.c:1169 +#, c-format +msgid "%s (%s) - Read error at byte %ld/%ld (%s). " +msgstr "%s (%s) - Lesefeil ved byte %ld/%ld (%s)." + +#: src/init.c:312 src/netrc.c:250 +#, c-format +msgid "%s: Cannot read %s (%s).\n" +msgstr "%s: Kan ikke lese %s (%s).\n" + +#: src/init.c:333 src/init.c:339 +#, c-format +msgid "%s: Error in %s at line %d.\n" +msgstr "%s: Feil i %s på linje %d.\n" + +#: src/init.c:370 +#, c-format +msgid "%s: Warning: Both system and user wgetrc point to `%s'.\n" +msgstr "%s: Advarsel: Både systemets og brukerens wgetrc peker til «%s».\n" + +#: src/init.c:458 +#, c-format +msgid "%s: BUG: unknown command `%s', value `%s'.\n" +msgstr "%s: Ukjent kommando «%s», verdi «%s».\n" + +#: src/init.c:485 +#, c-format +msgid "%s: %s: Please specify on or off.\n" +msgstr "%s: %s: Vennligst spesifiser «on» eller «off».\n" + +#: src/init.c:503 src/init.c:760 src/init.c:782 src/init.c:855 +#, c-format +msgid "%s: %s: Invalid specification `%s'.\n" +msgstr "%s: %s: Ugyldig spesifikasjon «%s»\n" + +#: src/init.c:616 src/init.c:638 src/init.c:660 src/init.c:686 +#, c-format +msgid "%s: Invalid specification `%s'\n" +msgstr "%s: Ugyldig spesifikasjon «%s»\n" + +#: src/main.c:101 +#, c-format +msgid "Usage: %s [OPTION]... [URL]...\n" +msgstr "Bruk: %s [FLAGG]... [URL]...\n" + +#: src/main.c:109 +#, c-format +msgid "GNU Wget %s, a non-interactive network retriever.\n" +msgstr "GNU Wget %s, en ikke-interaktiv informasjonsagent.\n" + +#. Had to split this in parts, so the #@@#%# Ultrix compiler and cpp +#. don't bitch. Also, it makes translation much easier. +#: src/main.c:114 +msgid "" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +msgstr "" +"\n" +"Obligatoriske argumenter til lange flagg er obligatoriske også \n" +"for korte.\n" +"\n" + +#: src/main.c:117 +msgid "" +"Startup:\n" +" -V, --version display the version of Wget and exit.\n" +" -h, --help print this help.\n" +" -b, --background go to background after startup.\n" +" -e, --execute=COMMAND execute a `.wgetrc' command.\n" +"\n" +msgstr "" +"Oppstart:\n" +" -V, --version viser Wget's versjonsnummer og avslutter.\n" +" -h, --help skriver ut denne hjelpeteksten.\n" +" -b, --background kjører i bakgrunnen etter oppstart.\n" +" -e, --execute=KOMMANDO utfør en «.wgetrc»-kommando.\n" +"\n" + +#: src/main.c:123 +msgid "" +"Logging and input file:\n" +" -o, --output-file=FILE log messages to FILE.\n" +" -a, --append-output=FILE append messages to FILE.\n" +" -d, --debug print debug output.\n" +" -q, --quiet quiet (no output).\n" +" -v, --verbose be verbose (this is the default).\n" +" -nv, --non-verbose turn off verboseness, without being quiet.\n" +" -i, --input-file=FILE read URL-s from file.\n" +" -F, --force-html treat input file as HTML.\n" +"\n" +msgstr "" +"Utskrifter og innlesing:\n" +" -o, --output-file=FIL skriv meldinger til ny FIL.\n" +" -a, --append-output=FIL skriv meldinger på slutten av FIL.\n" +" -d, --debug skriv avlusingsinformasjon.\n" +" -q, --quiet stille (ingen utskrifter).\n" +" -v, --verbose vær utførlig (standard).\n" +" -nv, --non-verbose mindre utførlig, men ikke stille.\n" +" -i, --input-file=FIL les URLer fra FIL.\n" +" -F, --force-html les inn filer som HTML.\n" +"\n" + +#: src/main.c:133 +msgid "" +"Download:\n" +" -t, --tries=NUMBER set number of retries to NUMBER (0 " +"unlimits).\n" +" -O --output-document=FILE write documents to FILE.\n" +" -nc, --no-clobber don't clobber existing files.\n" +" -c, --continue restart getting an existing file.\n" +" --dot-style=STYLE set retrieval display style.\n" +" -N, --timestamping don't retrieve files if older than local.\n" +" -S, --server-response print server response.\n" +" --spider don't download anything.\n" +" -T, --timeout=SECONDS set the read timeout to SECONDS.\n" +" -w, --wait=SECONDS wait SECONDS between retrievals.\n" +" -Y, --proxy=on/off turn proxy on or off.\n" +" -Q, --quota=NUMBER set retrieval quota to NUMBER.\n" +"\n" +msgstr "" +"Nedlasting:\n" +" -t, --tries=ANTALL maksimalt antall forsøk (0 for uendelig).\n" +" -O --output-document=FIL skriv nedlastede filer til FIL.\n" +" -nc, --no-clobber ikke berør eksisterende filer.\n" +" -c, --continue fortsett nedlasting av en eksisterende fil.\n" +" --dot-style=TYPE velg format for nedlastings-status.\n" +" -N, --timestamping ikke hent filer som er eldre enn " +"eksisterende.\n" +" -S, --server-response vis svar fra tjeneren.\n" +" --spider ikke hent filer.\n" +" -T, --timeout=SEKUNDER sett ventetid ved lesing til SEKUNDER.\n" +" -w, --wait=SEKUNDER sett ventetid mellom filer til SEKUNDER.\n" +" -Y, --proxy=on/off sett bruk av proxy på eller av.\n" +" -Q, --quota=ANTALL sett nedlastingskvote til ANTALL.\n" +"\n" + +#: src/main.c:147 +msgid "" +"Directories:\n" +" -nd --no-directories don't create directories.\n" +" -x, --force-directories force creation of directories.\n" +" -nH, --no-host-directories don't create host directories.\n" +" -P, --directory-prefix=PREFIX save files to PREFIX/...\n" +" --cut-dirs=NUMBER ignore NUMBER remote directory " +"components.\n" +"\n" +msgstr "" +"Kataloger:\n" +" -nd --no-directories ikke lag kataloger.\n" +" -x, --force-directories lag kataloger.\n" +" -nH, --no-host-directories ikke lag ovenstående kataloger.\n" +" -P, --directory-prefix=PREFIKS skriv filer til PREFIKS/...\n" +" --cut-dirs=ANTALL ignorer ANTALL komponenter av tjenerens\n" +" katalognavn.\n" +"\n" + +#: src/main.c:154 +msgid "" +"HTTP options:\n" +" --http-user=USER set http user to USER.\n" +" --http-passwd=PASS set http password to PASS.\n" +" -C, --cache=on/off (dis)allow server-cached data (normally " +"allowed).\n" +" --ignore-length ignore `Content-Length' header field.\n" +" --header=STRING insert STRING among the headers.\n" +" --proxy-user=USER set USER as proxy username.\n" +" --proxy-passwd=PASS set PASS as proxy password.\n" +" -s, --save-headers save the HTTP headers to file.\n" +" -U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION.\n" +"\n" +msgstr "" +"HTTP-flagg:\n" +" --http-user=BRUKER sett HTTP-bruker til BRUKER.\n" +" --http-passwd=PASSORD sett HTTP-passord til PASSORD.\n" +" -C, --cache=on/off (ikke) tillat bruk av hurtiglager på tjener.\n" +" --ignore-length ignorer «Content-Length» felt i topptekst.\n" +" --header=TEKST sett TEKST inn som en topptekst.\n" +" --proxy-user=BRUKER sett proxy-bruker til BRUKER.\n" +" --proxy-passwd=PASSORD sett proxy-passord til PASSORD.\n" +" -s, --save-headers skriv HTTP-topptekster til fil.\n" +" -U, --user-agent=AGENT identifiser som AGENT i stedet for \n" +" «Wget/VERSJON».\n" +"\n" + +#: src/main.c:165 +msgid "" +"FTP options:\n" +" --retr-symlinks retrieve FTP symbolic links.\n" +" -g, --glob=on/off turn file name globbing on or off.\n" +" --passive-ftp use the \"passive\" transfer mode.\n" +"\n" +msgstr "" +"FTP-flagg:\n" +" --retr-symlinks hent symbolske linker via FTP.\n" +" -g, --glob=on/off (ikke) tolk bruk av jokertegn i filnavn.\n" +" --passive-ftp bruk passiv overføringsmodus.\n" +"\n" + +#: src/main.c:170 +msgid "" +"Recursive retrieval:\n" +" -r, --recursive recursive web-suck -- use with care!.\n" +" -l, --level=NUMBER maximum recursion depth (0 to unlimit).\n" +" --delete-after delete downloaded files.\n" +" -k, --convert-links convert non-relative links to relative.\n" +" -m, --mirror turn on options suitable for mirroring.\n" +" -nr, --dont-remove-listing don't remove `.listing' files.\n" +"\n" +msgstr "" +"Rekursiv nedlasting:\n" +" -r, --recursive tillat rekursiv nedlasting -- bruk med " +"omtanke!\n" +" -l, --level=ANTALL maksimalt antall rekursjonsnivåer " +"(0=uendelig).\n" +" --delete-after slett nedlastede filer.\n" +" -k, --convert-links konverter absolutte linker til relative.\n" +" -m, --mirror sett passende flagg for speiling av tjenere.\n" +" -nr, --dont-remove-listing ikke slett «.listing»-filer.\n" +"\n" + +#: src/main.c:178 +msgid "" +"Recursive accept/reject:\n" +" -A, --accept=LIST list of accepted extensions.\n" +" -R, --reject=LIST list of rejected extensions.\n" +" -D, --domains=LIST list of accepted domains.\n" +" --exclude-domains=LIST comma-separated list of rejected " +"domains.\n" +" -L, --relative follow relative links only.\n" +" --follow-ftp follow FTP links from HTML documents.\n" +" -H, --span-hosts go to foreign hosts when recursive.\n" +" -I, --include-directories=LIST list of allowed directories.\n" +" -X, --exclude-directories=LIST list of excluded directories.\n" +" -nh, --no-host-lookup don't DNS-lookup hosts.\n" +" -np, --no-parent don't ascend to the parent directory.\n" +"\n" +msgstr "" +"Hva er tillatt ved rekursjon:\n" +" -A, --accept=LISTE liste med tillatte filtyper.\n" +" -R, --reject=LISTE liste med ikke tillatte filtyper.\n" +" -D, --domains=LISTE liste med tillatte domener.\n" +" --exclude-domains=LISTE liste med ikke tillatte domener.\n" +" -L, --relative følg kun relative linker.\n" +" --follow-ftp følg FTP-linker fra HTML-dokumenter.\n" +" -H, --span-hosts følg linker til andre tjenere.\n" +" -I, --include-directories=LISTE liste med tillatte katalognavn.\n" +" -X, --exclude-directories=LISTE liste med ikke tillatte katalognavn.\n" +" -nh, --no-host-lookup ikke let etter tjenernavn via DNS.\n" +" -np, --no-parent ikke følg linker til ovenstående " +"katalog.\n" +"\n" + +#: src/main.c:191 +msgid "Mail bug reports and suggestions to .\n" +msgstr "Rapportér feil og send forslag til .\n" + +#: src/main.c:347 +#, c-format +msgid "%s: debug support not compiled in.\n" +msgstr "%s: støtte for avlusing ikke inkludert ved kompilering.\n" + +#: src/main.c:395 +msgid "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"Dette programmet distribueres i håp om at det blir funnet nyttig,\n" +"men UTEN NOEN GARANTIER; ikke en gang for SALGBARHET eller\n" +"EGNETHET TIL NOEN SPESIELL OPPGAVE.\n" +"Se «GNU General Public License» for detaljer.\n" + +#: src/main.c:401 +msgid "" +"\n" +"Written by Hrvoje Niksic .\n" +msgstr "" +"\n" +"Skrevet av Hrvoje Niksic .\n" + +#: src/main.c:465 +#, c-format +msgid "%s: %s: invalid command\n" +msgstr "%s: %s: ugyldig kommando\n" + +#: src/main.c:515 +#, c-format +msgid "%s: illegal option -- `-n%c'\n" +msgstr "%s: ugyldig flagg -- «-n%c»\n" + +#. #### Something nicer should be printed here -- similar to the +#. pre-1.5 `--help' page. +#: src/main.c:518 src/main.c:560 src/main.c:591 +#, c-format +msgid "Try `%s --help' for more options.\n" +msgstr "Prøv «%s --help» for flere flagg.\n" + +#: src/main.c:571 +msgid "Can't be verbose and quiet at the same time.\n" +msgstr "Kan ikke være utførlig og stille på samme tid.\n" + +#: src/main.c:577 +msgid "Can't timestamp and not clobber old files at the same time.\n" +msgstr "" +"Kan ikke tidsstemple og la være å berøre eksisterende filer på samme tid.\n" + +#. No URL specified. +#: src/main.c:586 +#, c-format +msgid "%s: missing URL\n" +msgstr "%s: URL mangler.\n" + +#: src/main.c:674 +#, c-format +msgid "No URLs found in %s.\n" +msgstr "Fant ingen URLer i %s.\n" + +#: src/main.c:683 +#, c-format +msgid "" +"\n" +"FINISHED --%s--\n" +"Downloaded: %s bytes in %d files\n" +msgstr "" +"\n" +"FERDIG --%s--\n" +"Lastet ned %s bytes i %d filer\n" + +#: src/main.c:688 +#, c-format +msgid "Download quota (%s bytes) EXCEEDED!\n" +msgstr "Nedlastingskvote (%s bytes) overskredet!\n" + +#. Please note that the double `%' in `%%s' is intentional, because +#. redirect_output passes tmp through printf. +#: src/main.c:715 +msgid "%s received, redirecting output to `%%s'.\n" +msgstr "%s mottatt, omdirigerer utskrifter til «%%s».\n" + +#: src/mswindows.c:118 +#, c-format +msgid "" +"\n" +"CTRL+Break received, redirecting output to `%s'.\n" +"Execution continued in background.\n" +"You may stop Wget by pressing CTRL+ALT+DELETE.\n" +msgstr "" +"\n" +"CTRL+Break mottatt, omdirigerer utskrifter til `%s'.\n" +"Kjøring fortsetter i bakgrunnen.\n" +"Du kan stoppe Wget ved å trykke CTRL+ALT+DELETE.\n" +"\n" + +#. parent, no error +#: src/mswindows.c:135 src/utils.c:268 +msgid "Continuing in background.\n" +msgstr "Fortsetter i bakgrunnen.\n" + +#: src/mswindows.c:137 src/utils.c:270 +#, c-format +msgid "Output will be written to `%s'.\n" +msgstr "Utskrifter vil bli skrevet til «%s».\n" + +#: src/mswindows.c:227 +#, c-format +msgid "Starting WinHelp %s\n" +msgstr "Starter WinHelp %s\n" + +#: src/mswindows.c:254 src/mswindows.c:262 +#, c-format +msgid "%s: Couldn't find usable socket driver.\n" +msgstr "%s: Fant ingen brukbar socket-driver.\n" + +#: src/netrc.c:334 +#, c-format +msgid "%s: %s:%d: warning: \"%s\" token appears before any machine name\n" +msgstr "%s: %s:%d: Advarsel: symbolet «%s» funnet før tjener-navn\n" + +#: src/netrc.c:365 +#, c-format +msgid "%s: %s:%d: unknown token \"%s\"\n" +msgstr "%s: %s:%d: ukjent symbol «%s»\n" + +#: src/netrc.c:429 +#, c-format +msgid "Usage: %s NETRC [HOSTNAME]\n" +msgstr "Bruk: %s NETRC [TJENERNAVN]\n" + +#: src/netrc.c:439 +#, c-format +msgid "%s: cannot stat %s: %s\n" +msgstr "%s: «stat» feilet for %s: %s\n" + +#: src/recur.c:449 src/retr.c:462 +#, c-format +msgid "Removing %s.\n" +msgstr "Fjerner %s.\n" + +#: src/recur.c:450 +#, c-format +msgid "Removing %s since it should be rejected.\n" +msgstr "Fjerner %s fordi den skal forkastes.\n" + +#: src/recur.c:609 +msgid "Loading robots.txt; please ignore errors.\n" +msgstr "Henter robots.txt; ignorer eventuelle feilmeldinger.\n" + +#: src/retr.c:193 +#, c-format +msgid "" +"\n" +" [ skipping %dK ]" +msgstr "" +"\n" +" [ hopper over %dK ]" + +#: src/retr.c:344 +msgid "Could not find proxy host.\n" +msgstr "Fant ikke proxy-tjener.\n" + +#: src/retr.c:355 +#, c-format +msgid "Proxy %s: Must be HTTP.\n" +msgstr "Proxy %s: Må støtte HTTP.\n" + +#: src/retr.c:398 +#, c-format +msgid "%s: Redirection to itself.\n" +msgstr "%s: Omdirigerer til seg selv.\n" + +#: src/retr.c:483 +msgid "" +"Giving up.\n" +"\n" +msgstr "" +"Gir opp.\n" +"\n" + +#: src/retr.c:483 +msgid "" +"Retrying.\n" +"\n" +msgstr "" +"Prøver igjen.\n" +"\n" + +#: src/url.c:940 +#, c-format +msgid "Error (%s): Link %s without a base provided.\n" +msgstr "Feil (%s): Link %s gitt uten utgangspunkt.\n" + +#: src/url.c:955 +#, c-format +msgid "Error (%s): Base %s relative, without referer URL.\n" +msgstr "Feil (%s): Utgangspunktet %s er relativt, ukjent URL som referent.\n" + +#: src/url.c:1373 +#, c-format +msgid "Converting %s... " +msgstr "Konverterer %s... " + +#: src/url.c:1378 src/url.c:1389 +#, c-format +msgid "Cannot convert links in %s: %s\n" +msgstr "Kan ikke konvertere linker i %s: %s\n" + +#: src/utils.c:71 +#, c-format +msgid "%s: %s: Not enough memory.\n" +msgstr "%s: %s: Ikke nok minne.\n" + +#: src/utils.c:203 +msgid "Unknown/unsupported protocol" +msgstr "Protokollen er ukjent/ikke støttet" + +#: src/utils.c:206 +msgid "Invalid port specification" +msgstr "Port-spesifikasjonen er ugyldig" + +#: src/utils.c:209 +msgid "Invalid host name" +msgstr "Tjenernavnet er ugyldig" + +#: src/utils.c:430 +#, c-format +msgid "Failed to unlink symlink `%s': %s\n" +msgstr "Kan ikke slette den symbolske linken «%s»: %s\n" diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo new file mode 100644 index 0000000000000000000000000000000000000000..13949dbec44cea4a2291e2bd7819464b010b6296 GIT binary patch literal 22072 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 literal 0 HcmV?d00001 diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 00000000..ec9cb93f --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,1168 @@ +# Brazilian Portuguese translation of the "wget" messages +# Copyright (C) 1998 Free Software Foundation, Inc. +# Wanderlei Antonio Cavassin , 1998. +# +msgid "" +msgstr "" +"Project-Id-Version: wget 1.5-b9\n" +"POT-Creation-Date: 1998-09-21 19:08+0200\n" +"PO-Revision-Date: 1998-04-06 22:09-0300\n" +"Last-Translator: Wanderlei Antonio Cavasin \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +# , c-format +#. Login to the server: +#. First: Establish the control connection. +#: src/ftp.c:147 src/http.c:346 +#, c-format +msgid "Connecting to %s:%hu... " +msgstr "Conectando-se a %s:%hu... " + +# , c-format +#: src/ftp.c:169 src/ftp.c:411 src/http.c:363 +#, c-format +msgid "Connection to %s:%hu refused.\n" +msgstr "Conexão para %s:%hu recusada.\n" + +#. Second: Login with proper USER/PASS sequence. +#: src/ftp.c:190 src/http.c:374 +msgid "connected!\n" +msgstr "conectado!\n" + +# , c-format +#: src/ftp.c:191 +#, c-format +msgid "Logging in as %s ... " +msgstr "Logando como %s ... " + +#: src/ftp.c:200 src/ftp.c:253 src/ftp.c:301 src/ftp.c:353 src/ftp.c:447 +#: src/ftp.c:520 src/ftp.c:568 src/ftp.c:616 +msgid "Error in server response, closing control connection.\n" +msgstr "Erro na resposta do servidor, fechando a conexão de controle.\n" + +#: src/ftp.c:208 +msgid "Error in server greeting.\n" +msgstr "Erro na saudação do servidor.\n" + +#: src/ftp.c:216 src/ftp.c:262 src/ftp.c:310 src/ftp.c:362 src/ftp.c:457 +#: src/ftp.c:530 src/ftp.c:578 src/ftp.c:626 +msgid "Write failed, closing control connection.\n" +msgstr "Falha de escrita, fechando a conexão de controle.\n" + +#: src/ftp.c:223 +msgid "The server refuses login.\n" +msgstr "O servidor recusou o login.\n" + +#: src/ftp.c:230 +msgid "Login incorrect.\n" +msgstr "Login incorreto.\n" + +#: src/ftp.c:237 +msgid "Logged in!\n" +msgstr "Logado!\n" + +# , c-format +#: src/ftp.c:270 +#, c-format +msgid "Unknown type `%c', closing control connection.\n" +msgstr "Tipo `%c' desconhecido, fechando a conexão de controle.\n" + +#: src/ftp.c:283 +msgid "done. " +msgstr "feito. " + +#: src/ftp.c:289 +msgid "==> CWD not needed.\n" +msgstr "==> CWD não necessário.\n" + +# , c-format +#: src/ftp.c:317 +#, c-format +msgid "" +"No such directory `%s'.\n" +"\n" +msgstr "" +"Diretório `%s' não encontrado.\n" +"\n" + +#: src/ftp.c:331 src/ftp.c:599 src/ftp.c:647 src/url.c:1431 +msgid "done.\n" +msgstr "feito.\n" + +#. do not CWD +#: src/ftp.c:335 +msgid "==> CWD not required.\n" +msgstr "==> CWD não requerido.\n" + +#: src/ftp.c:369 +msgid "Cannot initiate PASV transfer.\n" +msgstr "Não foi possível iniciar transferência PASV.\n" + +#: src/ftp.c:373 +msgid "Cannot parse PASV response.\n" +msgstr "Não foi possível entender resposta do comando PASV.\n" + +# , c-format +#: src/ftp.c:387 +#, c-format +msgid "Will try connecting to %s:%hu.\n" +msgstr "Tentando conectar-se a %s:%hu.\n" + +#: src/ftp.c:432 src/ftp.c:504 src/ftp.c:548 +msgid "done. " +msgstr "feito. " + +# , c-format +#: src/ftp.c:474 +#, c-format +msgid "Bind error (%s).\n" +msgstr "Erro no bind (%s).\n" + +#: src/ftp.c:490 +msgid "Invalid PORT.\n" +msgstr "PORT inválido.\n" + +#: src/ftp.c:537 +msgid "" +"\n" +"REST failed, starting from scratch.\n" +msgstr "" +"\n" +"REST falhou, recomeçando do zero.\n" + +# , c-format +#: src/ftp.c:586 +#, c-format +msgid "" +"No such file `%s'.\n" +"\n" +msgstr "" +"Arquivo `%s' não encontrado.\n" +"\n" + +# , c-format +#: src/ftp.c:634 +#, c-format +msgid "" +"No such file or directory `%s'.\n" +"\n" +msgstr "" +"Arquivo ou diretório `%s' não encontrado.\n" +"\n" + +# , c-format +#: src/ftp.c:692 src/ftp.c:699 +#, c-format +msgid "Length: %s" +msgstr "Tamanho: %s" + +# , c-format +#: src/ftp.c:694 src/ftp.c:701 +#, c-format +msgid " [%s to go]" +msgstr " [%s para terminar]" + +#: src/ftp.c:703 +msgid " (unauthoritative)\n" +msgstr " (sem autorização)\n" + +# , c-format +#: src/ftp.c:721 +#, c-format +msgid "%s: %s, closing control connection.\n" +msgstr "%s: %s, fechando conexão de controle.\n" + +# , c-format +#: src/ftp.c:729 +#, c-format +msgid "%s (%s) - Data connection: %s; " +msgstr "%s (%s) - Conexão de dados: %s; " + +#: src/ftp.c:746 +msgid "Control connection closed.\n" +msgstr "Conexão de controle fechada.\n" + +#: src/ftp.c:764 +msgid "Data transfer aborted.\n" +msgstr "Transferência dos dados abortada.\n" + +# , c-format +#: src/ftp.c:830 +#, c-format +msgid "File `%s' already there, not retrieving.\n" +msgstr "Arquivo `%s' já existente, não será baixado.\n" + +# , c-format +#: src/ftp.c:896 src/http.c:922 +#, c-format +msgid "(try:%2d)" +msgstr "(tentativa:%2d)" + +# , c-format +#: src/ftp.c:955 src/http.c:1116 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld]\n" +"\n" +msgstr "" +"%s (%s) - `%s' recebido [%ld]\n" +"\n" + +# , c-format +#: src/ftp.c:1001 +#, c-format +msgid "Using `%s' as listing tmp file.\n" +msgstr "Usando `%s' como arquivo temporário de listagem.\n" + +# , c-format +#: src/ftp.c:1013 +#, c-format +msgid "Removed `%s'.\n" +msgstr "Removido `%s'.\n" + +# , c-format +#: src/ftp.c:1049 +#, c-format +msgid "Recursion depth %d exceeded max. depth %d.\n" +msgstr "Nível de recursão %d excede nível máximo %d.\n" + +# , c-format +#: src/ftp.c:1096 src/http.c:1054 +#, c-format +msgid "" +"Local file `%s' is more recent, not retrieving.\n" +"\n" +msgstr "" +"Arquivo local `%s' é mais novo, não será baixado.\n" +"\n" + +# , c-format +#: src/ftp.c:1102 src/http.c:1060 +#, c-format +msgid "The sizes do not match (local %ld), retrieving.\n" +msgstr "Os tamanhos não são iguais (local %ld), baixando.\n" + +#: src/ftp.c:1119 +msgid "Invalid name of the symlink, skipping.\n" +msgstr "Nome inválido do link simbólico, ignorando.\n" + +# , c-format +#: src/ftp.c:1136 +#, c-format +msgid "" +"Already have correct symlink %s -> %s\n" +"\n" +msgstr "" +"Link simbólico já está correto %s -> %s\n" +"\n" + +# , c-format +#: src/ftp.c:1144 +#, c-format +msgid "Creating symlink %s -> %s\n" +msgstr "Criando link simbólico %s -> %s\n" + +# , c-format +#: src/ftp.c:1155 +#, c-format +msgid "Symlinks not supported, skipping symlink `%s'.\n" +msgstr "Links simbólicos não suportados, %s será ignorado.\n" + +# , c-format +#: src/ftp.c:1167 +#, c-format +msgid "Skipping directory `%s'.\n" +msgstr "Ignorando diretório `%s'.\n" + +# , c-format +#: src/ftp.c:1176 +#, c-format +msgid "%s: unknown/unsupported file type.\n" +msgstr "%s: tipo de arquivo desconhecido/não suportado.\n" + +# , c-format +#: src/ftp.c:1193 +#, c-format +msgid "%s: corrupt time-stamp.\n" +msgstr "%s: horário (timestamp) inválido.\n" + +# , c-format +#: src/ftp.c:1213 +#, c-format +msgid "Will not retrieve dirs since depth is %d (max %d).\n" +msgstr "" +"Não serão buscados diretórios, pois o nível de recursão é %d (max %d).\n" + +# , c-format +#: src/ftp.c:1252 +#, c-format +msgid "Not descending to `%s' as it is excluded/not-included.\n" +msgstr "Não descendo para `%s', pois está excluído/não incluído.\n" + +# , c-format +#: src/ftp.c:1297 +#, c-format +msgid "Rejecting `%s'.\n" +msgstr "Rejeitando `%s'.\n" + +# , c-format +#. No luck. +#. #### This message SUCKS. We should see what was the +#. reason that nothing was retrieved. +#: src/ftp.c:1344 +#, c-format +msgid "No matches on pattern `%s'.\n" +msgstr "Nada encontrado com o padrão `%s'.\n" + +# , c-format +#: src/ftp.c:1404 +#, c-format +msgid "Wrote HTML-ized index to `%s' [%ld].\n" +msgstr "Escrito index em formato HTML para `%s' [%ld].\n" + +# , c-format +#: src/ftp.c:1409 +#, c-format +msgid "Wrote HTML-ized index to `%s'.\n" +msgstr "Escrito índice em formato HTML para `%s'.\n" + +# , c-format +#: src/getopt.c:454 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: opção `%s' é ambígua\n" + +# , c-format +#: src/getopt.c:478 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: opção `--%s' não permite argumento\n" + +# , c-format +#: src/getopt.c:483 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: opção `%c%s' não permite argumento\n" + +# , c-format +#: src/getopt.c:498 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: opção `%s' requer um argumento\n" + +# , c-format +#. --option +#: src/getopt.c:528 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: opção não reconhecida `--%s'\n" + +# , c-format +#. +option or -option +#: src/getopt.c:532 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: opção não reconhecida `%c%s'\n" + +# , c-format +#. 1003.2 specifies the format of this message. +#: src/getopt.c:563 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opção ilegal -- %c\n" + +# , c-format +#. 1003.2 specifies the format of this message. +#: src/getopt.c:602 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opção requer um argumento -- %c\n" + +#: src/host.c:432 +#, c-format +msgid "%s: Cannot determine user-id.\n" +msgstr "%s: Não foi possível determinar user-id.\n" + +# , c-format +#: src/host.c:444 +#, c-format +msgid "%s: Warning: uname failed: %s\n" +msgstr "%s: Aviso: falha em uname: %s\n" + +#: src/host.c:456 +#, c-format +msgid "%s: Warning: gethostname failed\n" +msgstr "%s: Aviso: falha em gethostname\n" + +#: src/host.c:484 +#, c-format +msgid "%s: Warning: cannot determine local IP address.\n" +msgstr "%s: Aviso: não foi possível determinar endereço IP local.\n" + +#: src/host.c:498 +#, c-format +msgid "%s: Warning: cannot reverse-lookup local IP address.\n" +msgstr "%s: Aviso: não foi possível resolver endereço IP local.\n" + +#. This gets ticked pretty often. Karl Berry reports +#. that there can be valid reasons for the local host +#. name not to be an FQDN, so I've decided to remove the +#. annoying warning. +#: src/host.c:511 +#, c-format +msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n" +msgstr "%s: Aviso: resolução do endereço local não resultou em FQDN!\n" + +#: src/host.c:539 +msgid "Host not found" +msgstr "Host não encontrado" + +#: src/host.c:541 +msgid "Unknown error" +msgstr "Erro desconhecido" + +# , c-format +#: src/html.c:439 src/html.c:441 +#, c-format +msgid "Index of /%s on %s:%d" +msgstr "Índice de /%s em %s:%d" + +#: src/html.c:463 +msgid "time unknown " +msgstr "horário desconhecido " + +#: src/html.c:467 +msgid "File " +msgstr "Arquivo " + +#: src/html.c:470 +msgid "Directory " +msgstr "Diretório " + +#: src/html.c:473 +msgid "Link " +msgstr "Link " + +#: src/html.c:476 +msgid "Not sure " +msgstr "Sem certeza " + +# , c-format +#: src/html.c:494 +#, c-format +msgid " (%s bytes)" +msgstr " (%s bytes)" + +#: src/http.c:492 +msgid "Failed writing HTTP request.\n" +msgstr "Falha na requisição HTTP.\n" + +# , c-format +#: src/http.c:497 +#, fuzzy, c-format +msgid "%s request sent, awaiting response... " +msgstr "%s requisição enviada, buscando headers... " + +#: src/http.c:536 +msgid "End of file while parsing headers.\n" +msgstr "Fim de arquivo durante a leitura dos headers.\n" + +# , c-format +#: src/http.c:547 +#, c-format +msgid "Read error (%s) in headers.\n" +msgstr "Erro de leitura (%s) nos headers.\n" + +#: src/http.c:587 +msgid "No data received" +msgstr "" + +#: src/http.c:589 +msgid "Malformed status line" +msgstr "" + +#: src/http.c:594 +msgid "(no description)" +msgstr "(sem descrição)" + +#. If we have tried it already, then there is not point +#. retrying it. +#: src/http.c:678 +msgid "Authorization failed.\n" +msgstr "" + +#: src/http.c:685 +msgid "Unknown authentication scheme.\n" +msgstr "" + +# , c-format +#: src/http.c:748 +#, c-format +msgid "Location: %s%s\n" +msgstr "Localização: %s%s\n" + +#: src/http.c:749 src/http.c:774 +msgid "unspecified" +msgstr "nao especificado" + +#: src/http.c:750 +msgid " [following]" +msgstr " [seguinte]" + +#. No need to print this output if the body won't be +#. downloaded at all, or if the original server response is +#. printed. +#: src/http.c:764 +msgid "Length: " +msgstr "Tamanho: " + +# , c-format +#: src/http.c:769 +#, c-format +msgid " (%s to go)" +msgstr " (%s para o fim)" + +#: src/http.c:774 +msgid "ignored" +msgstr "ignorado" + +#: src/http.c:857 +msgid "Warning: wildcards not supported in HTTP.\n" +msgstr "Aviso: wildcards não suportados para HTTP.\n" + +# , c-format +#. If opt.noclobber is turned on and file already exists, do not +#. retrieve the file +#: src/http.c:872 +#, c-format +msgid "File `%s' already there, will not retrieve.\n" +msgstr "Arquivo `%s' já presente, não será baixado.\n" + +# , c-format +#: src/http.c:978 +#, c-format +msgid "Cannot write to `%s' (%s).\n" +msgstr "Não foi possível escrever em `%s' (%s).\n" + +# , c-format +#: src/http.c:988 +#, c-format +msgid "ERROR: Redirection (%d) without location.\n" +msgstr "ERRO: Redireção (%d) sem Location.\n" + +# , c-format +#: src/http.c:1011 +#, c-format +msgid "%s ERROR %d: %s.\n" +msgstr "%s ERRO %d: %s.\n" + +#: src/http.c:1023 +msgid "Last-modified header missing -- time-stamps turned off.\n" +msgstr "Header Last-modified não recebido -- time-stamps desligados.\n" + +#: src/http.c:1031 +msgid "Last-modified header invalid -- time-stamp ignored.\n" +msgstr "Header Last-modified inválido -- time-stamp ignorado.\n" + +#: src/http.c:1064 +msgid "Remote file is newer, retrieving.\n" +msgstr "Arquivo remoto é mais novo, buscando.\n" + +# , c-format +#: src/http.c:1098 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld]\n" +"\n" +msgstr "" +"%s (%s) - `%s' recebido [%ld/%ld]\n" +"\n" + +# , c-format +#: src/http.c:1130 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld. " +msgstr "%s (%s) - Conexão fechada no byte %ld. " + +# , c-format +#: src/http.c:1138 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld])\n" +"\n" +msgstr "" +"%s (%s) - `%s' recebido [%ld/%ld])\n" +"\n" + +# , c-format +#: src/http.c:1150 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld/%ld. " +msgstr "%s (%s) - Conexão fechada no byte %ld/%ld. " + +# , c-format +#: src/http.c:1161 +#, c-format +msgid "%s (%s) - Read error at byte %ld (%s)." +msgstr "%s (%s) - Erro de leitura no byte %ld (%s)." + +# , c-format +#: src/http.c:1169 +#, c-format +msgid "%s (%s) - Read error at byte %ld/%ld (%s). " +msgstr "%s (%s) - Erro de leitura no byte %ld/%ld (%s)." + +# , c-format +#: src/init.c:312 src/netrc.c:250 +#, c-format +msgid "%s: Cannot read %s (%s).\n" +msgstr "%s: Não foi possível ler %s (%s).\n" + +# , c-format +#: src/init.c:333 src/init.c:339 +#, c-format +msgid "%s: Error in %s at line %d.\n" +msgstr "%s: Erro em %s na linha %d.\n" + +# , c-format +#: src/init.c:370 +#, c-format +msgid "%s: Warning: Both system and user wgetrc point to `%s'.\n" +msgstr "" +"%s: Aviso: os arquivos wgetrc do sistema e do usuário apontam para `%s'.\n" + +# , c-format +#: src/init.c:458 +#, fuzzy, c-format +msgid "%s: BUG: unknown command `%s', value `%s'.\n" +msgstr "%s: Comando desconhecido `%s', valor `%s'.\n" + +# , c-format +#: src/init.c:485 +#, c-format +msgid "%s: %s: Please specify on or off.\n" +msgstr "%s: %s: Por favor especifique on ou off.\n" + +# , c-format +#: src/init.c:503 src/init.c:760 src/init.c:782 src/init.c:855 +#, c-format +msgid "%s: %s: Invalid specification `%s'.\n" +msgstr "%s: %s: Especificação inválida `%s'\n" + +# , c-format +#: src/init.c:616 src/init.c:638 src/init.c:660 src/init.c:686 +#, c-format +msgid "%s: Invalid specification `%s'\n" +msgstr "%s: Especificação inválida `%s'\n" + +# , c-format +#: src/main.c:101 +#, c-format +msgid "Usage: %s [OPTION]... [URL]...\n" +msgstr "Uso: %s [OPÇÃO]... [URL]...\n" + +# , c-format +#: src/main.c:109 +#, c-format +msgid "GNU Wget %s, a non-interactive network retriever.\n" +msgstr "" +"GNU Wget %s, um programa não interativo para buscar arquivos da rede.\n" + +#. Had to split this in parts, so the #@@#%# Ultrix compiler and cpp +#. don't bitch. Also, it makes translation much easier. +#: src/main.c:114 +msgid "" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +msgstr "" +"\n" +"Argumentos obrigatórios para opções longas são também\n" +"obrigatórios para opções curtas.\n" +"\n" + +#: src/main.c:117 +msgid "" +"Startup:\n" +" -V, --version display the version of Wget and exit.\n" +" -h, --help print this help.\n" +" -b, --background go to background after startup.\n" +" -e, --execute=COMMAND execute a `.wgetrc' command.\n" +"\n" +msgstr "" +"Início:\n" +" -V, --version mostra a versão do Wget e sai.\n" +" -h, --help mostra esta ajuda.\n" +" -b, --background executa em background.\n" +" -e, --execute=COMANDO executa um comando `.wgetrc'.\n" +"\n" + +# , fuzzy +#: src/main.c:123 +msgid "" +"Logging and input file:\n" +" -o, --output-file=FILE log messages to FILE.\n" +" -a, --append-output=FILE append messages to FILE.\n" +" -d, --debug print debug output.\n" +" -q, --quiet quiet (no output).\n" +" -v, --verbose be verbose (this is the default).\n" +" -nv, --non-verbose turn off verboseness, without being quiet.\n" +" -i, --input-file=FILE read URL-s from file.\n" +" -F, --force-html treat input file as HTML.\n" +"\n" +msgstr "" +"Geração de log e arquivo de entrada:\n" +" -o, --output-file=ARQUIVO mensagens de log para ARQUIVO.\n" +" -a, --append-output=ARQUIVO apenda mensagens em ARQUIVO.\n" +" -d, --debug mostra saídas de debug.\n" +" -q, --quiet quieto (sem saídas).\n" +" -nv, --non-verbose desliga modo verboso, sem ser quieto.\n" +" -i, --input-file=ARQUIVO lê URL-s de ARQUIVO.\n" +" -F, --force-html trata arquivo de entrada como HTML.\n" +"\n" + +# , fuzzy +#: src/main.c:133 +msgid "" +"Download:\n" +" -t, --tries=NUMBER set number of retries to NUMBER (0 " +"unlimits).\n" +" -O --output-document=FILE write documents to FILE.\n" +" -nc, --no-clobber don't clobber existing files.\n" +" -c, --continue restart getting an existing file.\n" +" --dot-style=STYLE set retrieval display style.\n" +" -N, --timestamping don't retrieve files if older than local.\n" +" -S, --server-response print server response.\n" +" --spider don't download anything.\n" +" -T, --timeout=SECONDS set the read timeout to SECONDS.\n" +" -w, --wait=SECONDS wait SECONDS between retrievals.\n" +" -Y, --proxy=on/off turn proxy on or off.\n" +" -Q, --quota=NUMBER set retrieval quota to NUMBER.\n" +"\n" +msgstr "" +"Download:\n" +" -t, --tries=NÚMERO configura número de tentativas " +"(0=infinitas).\n" +" -O --output-document=ARQUIVO escreve os documentos no ARQUIVO.\n" +" -nc, --no-clobber não sobrescreve arquivos existentes.\n" +" --dot-style=ESTILO configura estilo do display de download.\n" +" -N, --timestamping não busca arquivos mais antigos que os " +"locais.\n" +" -S, --server-response mostra respostas do servidor.\n" +" --spider não baixa nenhum arquivo.\n" +" -T, --timeout=SEGUNDOS configura o timeout de leitura.\n" +" -w, --wait=SEGUNDOS espera SEGUNDOS entre buscas de arquivos.\n" +" -Y, --proxy=on/off liga ou desliga proxy.\n" +" -Q, --quota=NÚMERO configura quota de recepção.\n" +"\n" + +# , fuzzy +#: src/main.c:147 +msgid "" +"Directories:\n" +" -nd --no-directories don't create directories.\n" +" -x, --force-directories force creation of directories.\n" +" -nH, --no-host-directories don't create host directories.\n" +" -P, --directory-prefix=PREFIX save files to PREFIX/...\n" +" --cut-dirs=NUMBER ignore NUMBER remote directory " +"components.\n" +"\n" +msgstr "" +"Diretórios:\n" +" -nd --no-directories não cria diretórios.\n" +" -x, --force-directories força a criação de diretórios.\n" +" -nH, --no-host-directories não cria diretórios com nome do host.\n" +" -P, --directory-prefix=PREFIXO salva arquivos em PREFIXO/...\n" +"\n" + +# , fuzzy +#: src/main.c:154 +msgid "" +"HTTP options:\n" +" --http-user=USER set http user to USER.\n" +" --http-passwd=PASS set http password to PASS.\n" +" -C, --cache=on/off (dis)allow server-cached data (normally " +"allowed).\n" +" --ignore-length ignore `Content-Length' header field.\n" +" --header=STRING insert STRING among the headers.\n" +" --proxy-user=USER set USER as proxy username.\n" +" --proxy-passwd=PASS set PASS as proxy password.\n" +" -s, --save-headers save the HTTP headers to file.\n" +" -U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION.\n" +"\n" +msgstr "" +"Opções HTTP:\n" +" --http-user=USUÁRIO configura usuário http.\n" +" --http-passwd=SENHA configura senha http.\n" +" -C, --cache=on/off liga/desliga busca de dados do cache\n" +" (normalmente ligada).\n" +" --ignore-length ignora o header `Content-Length'.\n" +" --header=STRING insere STRING entre os headers.\n" +" --proxy-user=USUÁRIO configura nome do usuário do proxy.\n" +" --proxy-passwd=SENHA configura a senha do usuário do proxy.\n" +" -s, --save-headers salva os headers HTTP no arquivo.\n" +"\n" + +# , fuzzy +#: src/main.c:165 +msgid "" +"FTP options:\n" +" --retr-symlinks retrieve FTP symbolic links.\n" +" -g, --glob=on/off turn file name globbing on or off.\n" +" --passive-ftp use the \"passive\" transfer mode.\n" +"\n" +msgstr "" +"Opções FTP:\n" +" --retr-symlinks busca links simbólicos FTP.\n" +" -c, --continue-ftp recomeça a busca ftp aproveitando arquivos.\n" +" existentes e já recebidos em parte.\n" +" -g, --glob=on/off liga/desliga expansão de nomes de arquivos.\n" +" --passive-ftp usa modo de transferência \"passivo\".\n" +"\n" + +#: src/main.c:170 +msgid "" +"Recursive retrieval:\n" +" -r, --recursive recursive web-suck -- use with care!.\n" +" -l, --level=NUMBER maximum recursion depth (0 to unlimit).\n" +" --delete-after delete downloaded files.\n" +" -k, --convert-links convert non-relative links to relative.\n" +" -m, --mirror turn on options suitable for mirroring.\n" +" -nr, --dont-remove-listing don't remove `.listing' files.\n" +"\n" +msgstr "" +"Busca recursiva:\n" +" -r, --recursive busca recursiva -- use com cuidado!.\n" +" -l, --level=NÚMERO nível máximo de recursão (0 para ilimitado).\n" +" --delete-after deleta arquivos baixados.\n" +" -k, --convert-links converte links não relativos para relativos.\n" +" -m, --mirror liga opções para espelhamento (mirror).\n" +" -nr, --dont-remove-listing não remove arquivos `.listing'.\n" +"\n" + +# , fuzzy +#: src/main.c:178 +msgid "" +"Recursive accept/reject:\n" +" -A, --accept=LIST list of accepted extensions.\n" +" -R, --reject=LIST list of rejected extensions.\n" +" -D, --domains=LIST list of accepted domains.\n" +" --exclude-domains=LIST comma-separated list of rejected " +"domains.\n" +" -L, --relative follow relative links only.\n" +" --follow-ftp follow FTP links from HTML documents.\n" +" -H, --span-hosts go to foreign hosts when recursive.\n" +" -I, --include-directories=LIST list of allowed directories.\n" +" -X, --exclude-directories=LIST list of excluded directories.\n" +" -nh, --no-host-lookup don't DNS-lookup hosts.\n" +" -np, --no-parent don't ascend to the parent directory.\n" +"\n" +msgstr "" +"Aceitação/rejeição recursiva:\n" +" -A, --accept=LISTA lista de extensões aceitas.\n" +" -D, --domains=LISTA lista de domínios aceitos.\n" +" -R, --reject=LISTA lista de extensões rejeitadas.\n" +" -L, --relative segue somente links relativos.\n" +" --exclude-domains=LISTA lista de domínios rejeitados.\n" +" --follow-ftp segue links FTP em documentos HTML.\n" +" -H, --span-hosts segue hosts externos quando recursivo.\n" +" -I, --include-directories=LISTA lista de diretórios permitidos.\n" +" -X, --exclude-directories=LISTA lista de diretórios excluídos.\n" +" -nh, --no-host-lookup não faz DNS-lookup dos hosts.\n" +" -np, --no-parent não sobe para o diretório pai.\n" +"\n" + +# , fuzzy +#: src/main.c:191 +msgid "Mail bug reports and suggestions to .\n" +msgstr "Relatos de bugs e sugestões para .\n" + +# , fuzzy +#: src/main.c:347 +#, c-format +msgid "%s: debug support not compiled in.\n" +msgstr "%s: compilado sem debug.\n" + +#: src/main.c:395 +msgid "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"Este programa é distribuído com o objetivo de que seja útil,\n" +"mas SEM QUALQUER GARANTIA; nem mesmo a garantia ímplicita de\n" +"COMERCIABILIDADE ou de UTILIDADE PARA UM PROPÓSITO PARTICULAR.\n" +"Veja a Licença Pública Geral GNU (GNU GPL) para mais detalhes.\n" + +#: src/main.c:401 +msgid "" +"\n" +"Written by Hrvoje Niksic .\n" +msgstr "" +"\n" +"Escrito por Hrvoje Niksic .\n" + +# , c-format +#: src/main.c:465 +#, c-format +msgid "%s: %s: invalid command\n" +msgstr "%s: %s: comando inválido\n" + +# , c-format +#: src/main.c:515 +#, c-format +msgid "%s: illegal option -- `-n%c'\n" +msgstr "%s: opção ilegal -- `-n%c'\n" + +# , c-format +#. #### Something nicer should be printed here -- similar to the +#. pre-1.5 `--help' page. +#: src/main.c:518 src/main.c:560 src/main.c:591 +#, c-format +msgid "Try `%s --help' for more options.\n" +msgstr "Tente `%s --help' para mais opções.\n" + +#: src/main.c:571 +msgid "Can't be verbose and quiet at the same time.\n" +msgstr "Não pode ser verboso e quieto ao mesmo tempo.\n" + +#: src/main.c:577 +msgid "Can't timestamp and not clobber old files at the same time.\n" +msgstr "" +"Não é possível usar as opções \"timestamp\" e \"no clobber\" ao mesmo " +"tempo.\n" + +#. No URL specified. +#: src/main.c:586 +#, c-format +msgid "%s: missing URL\n" +msgstr "%s: URL faltando\n" + +# , c-format +#: src/main.c:674 +#, c-format +msgid "No URLs found in %s.\n" +msgstr "Nenhuma URL encontrada em %s.\n" + +# , c-format +#: src/main.c:683 +#, c-format +msgid "" +"\n" +"FINISHED --%s--\n" +"Downloaded: %s bytes in %d files\n" +msgstr "" +"\n" +"FINALIZADO --%s--\n" +"Baixados: %s bytes em %d arquivos\n" + +# , c-format +#: src/main.c:688 +#, c-format +msgid "Download quota (%s bytes) EXCEEDED!\n" +msgstr "EXCEDIDA a quota (%s bytes) de recepção!\n" + +#. Please note that the double `%' in `%%s' is intentional, because +#. redirect_output passes tmp through printf. +#: src/main.c:715 +msgid "%s received, redirecting output to `%%s'.\n" +msgstr "%s recebido, redirecionando saída para `%%s'.\n" + +# , c-format +#: src/mswindows.c:118 +#, c-format +msgid "" +"\n" +"CTRL+Break received, redirecting output to `%s'.\n" +"Execution continued in background.\n" +"You may stop Wget by pressing CTRL+ALT+DELETE.\n" +msgstr "" +"\n" +"CTRL+Break recebido, redirecionando saída para `%s'.\n" +"Execução continuará em background.\n" +"Você pode parar o Wget pressionando CTRL+ALT+DELETE.\n" + +#. parent, no error +#: src/mswindows.c:135 src/utils.c:268 +msgid "Continuing in background.\n" +msgstr "Continuando em background.\n" + +# , c-format +#: src/mswindows.c:137 src/utils.c:270 +#, c-format +msgid "Output will be written to `%s'.\n" +msgstr "Saída será escrita em `%s'.\n" + +# , c-format +#: src/mswindows.c:227 +#, c-format +msgid "Starting WinHelp %s\n" +msgstr "Disparando WinHelp %s\n" + +#: src/mswindows.c:254 src/mswindows.c:262 +#, c-format +msgid "%s: Couldn't find usable socket driver.\n" +msgstr "%s: Não foi possivel encontrar um driver de sockets usável.\n" + +# , c-format +#: src/netrc.c:334 +#, c-format +msgid "%s: %s:%d: warning: \"%s\" token appears before any machine name\n" +msgstr "" +"%s: %s:%d: aviso: token \"%s\" aparece antes de qualquer nome de máquina\n" + +# , c-format +#: src/netrc.c:365 +#, c-format +msgid "%s: %s:%d: unknown token \"%s\"\n" +msgstr "%s: %s:%d: token desconhecido \"%s\"\n" + +# , c-format +#: src/netrc.c:429 +#, c-format +msgid "Usage: %s NETRC [HOSTNAME]\n" +msgstr "Uso: %s NETRC [NOME DO HOST]\n" + +# , c-format +#: src/netrc.c:439 +#, c-format +msgid "%s: cannot stat %s: %s\n" +msgstr "%s: não foi possível acessar %s: %s\n" + +# , c-format +#: src/recur.c:449 src/retr.c:462 +#, c-format +msgid "Removing %s.\n" +msgstr "Removendo %s.\n" + +# , c-format +#: src/recur.c:450 +#, c-format +msgid "Removing %s since it should be rejected.\n" +msgstr "Removendo %s pois ele deve ser rejeitado.\n" + +#: src/recur.c:609 +msgid "Loading robots.txt; please ignore errors.\n" +msgstr "Buscando robots.txt; por favor ignore qualquer erro.\n" + +# , c-format +#: src/retr.c:193 +#, c-format +msgid "" +"\n" +" [ skipping %dK ]" +msgstr "" +"\n" +" [ ignorando %dK ]" + +#: src/retr.c:344 +msgid "Could not find proxy host.\n" +msgstr "Não foi possível encontrar o proxy.\n" + +# , c-format +#: src/retr.c:355 +#, c-format +msgid "Proxy %s: Must be HTTP.\n" +msgstr "Proxy %s: Deve ser HTTP.\n" + +# , c-format +#: src/retr.c:398 +#, c-format +msgid "%s: Redirection to itself.\n" +msgstr "%s: Redireção para si mesmo.\n" + +#: src/retr.c:483 +msgid "" +"Giving up.\n" +"\n" +msgstr "" +"Desistindo.\n" +"\n" + +#: src/retr.c:483 +msgid "" +"Retrying.\n" +"\n" +msgstr "" +"Tentando novamente.\n" +"\n" + +# , c-format +#: src/url.c:940 +#, c-format +msgid "Error (%s): Link %s without a base provided.\n" +msgstr "Erro (%s): Link %s sem uma base fornecida.\n" + +# , c-format +#: src/url.c:955 +#, c-format +msgid "Error (%s): Base %s relative, without referer URL.\n" +msgstr "Erro (%s): Base %s relativa, sem URL referenciadora.\n" + +# , c-format +#: src/url.c:1373 +#, c-format +msgid "Converting %s... " +msgstr "Convertendo %s... " + +# , c-format +#: src/url.c:1378 src/url.c:1389 +#, c-format +msgid "Cannot convert links in %s: %s\n" +msgstr "Não foi possível converter links em %s: %s\n" + +# , c-format +#: src/utils.c:71 +#, c-format +msgid "%s: %s: Not enough memory.\n" +msgstr "%s: %s: Memória insuficiente.\n" + +#: src/utils.c:203 +msgid "Unknown/unsupported protocol" +msgstr "Protocolo desconhecido/não suportado" + +#: src/utils.c:206 +msgid "Invalid port specification" +msgstr "Especificação de porta inválida" + +#: src/utils.c:209 +msgid "Invalid host name" +msgstr "Nome do host inválido" + +# , c-format +#: src/utils.c:430 +#, c-format +msgid "Failed to unlink symlink `%s': %s\n" +msgstr "Falha na remoção do link simbólico `%s': %s\n" + +# , c-format +#~ msgid "%s: unrecognized option, character code 0%o\n" +#~ msgstr "%s: opção não reconhecida, caractere código 0%o\n" + +# , c-format +#~ msgid "%s: unrecognized option `-%c'\n" +#~ msgstr "%s: opção não reconhecida `-%c'\n" + +# , c-format +#~ msgid "%s: option `-%c' requires an argument\n" +#~ msgstr "%s: opção `-%c' requer um argumento\n" + +# , c-format +#~ msgid "wget: %s: Invalid specification `%s'.\n" +#~ msgstr "wget: %s: Especificação inválida `%s'.\n" + +# , c-format +#~ msgid "wget: illegal option -- `-n%c'\n" +#~ msgstr "wget: opção ilegal -- `-n%c'\n" + +#~ msgid "done." +#~ msgstr "feito." + +#~ msgid "UNKNOWN" +#~ msgstr "DESCONHECIDO" diff --git a/po/wget.pot b/po/wget.pot new file mode 100644 index 00000000..4a7a337f --- /dev/null +++ b/po/wget.pot @@ -0,0 +1,921 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 1998-09-21 19:08+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" + +#. Login to the server: +#. First: Establish the control connection. +#: src/ftp.c:147 src/http.c:346 +#, c-format +msgid "Connecting to %s:%hu... " +msgstr "" + +#: src/ftp.c:169 src/ftp.c:411 src/http.c:363 +#, c-format +msgid "Connection to %s:%hu refused.\n" +msgstr "" + +#. Second: Login with proper USER/PASS sequence. +#: src/ftp.c:190 src/http.c:374 +msgid "connected!\n" +msgstr "" + +#: src/ftp.c:191 +#, c-format +msgid "Logging in as %s ... " +msgstr "" + +#: src/ftp.c:200 src/ftp.c:253 src/ftp.c:301 src/ftp.c:353 src/ftp.c:447 +#: src/ftp.c:520 src/ftp.c:568 src/ftp.c:616 +msgid "Error in server response, closing control connection.\n" +msgstr "" + +#: src/ftp.c:208 +msgid "Error in server greeting.\n" +msgstr "" + +#: src/ftp.c:216 src/ftp.c:262 src/ftp.c:310 src/ftp.c:362 src/ftp.c:457 +#: src/ftp.c:530 src/ftp.c:578 src/ftp.c:626 +msgid "Write failed, closing control connection.\n" +msgstr "" + +#: src/ftp.c:223 +msgid "The server refuses login.\n" +msgstr "" + +#: src/ftp.c:230 +msgid "Login incorrect.\n" +msgstr "" + +#: src/ftp.c:237 +msgid "Logged in!\n" +msgstr "" + +#: src/ftp.c:270 +#, c-format +msgid "Unknown type `%c', closing control connection.\n" +msgstr "" + +#: src/ftp.c:283 +msgid "done. " +msgstr "" + +#: src/ftp.c:289 +msgid "==> CWD not needed.\n" +msgstr "" + +#: src/ftp.c:317 +#, c-format +msgid "" +"No such directory `%s'.\n" +"\n" +msgstr "" + +#: src/ftp.c:331 src/ftp.c:599 src/ftp.c:647 src/url.c:1431 +msgid "done.\n" +msgstr "" + +#. do not CWD +#: src/ftp.c:335 +msgid "==> CWD not required.\n" +msgstr "" + +#: src/ftp.c:369 +msgid "Cannot initiate PASV transfer.\n" +msgstr "" + +#: src/ftp.c:373 +msgid "Cannot parse PASV response.\n" +msgstr "" + +#: src/ftp.c:387 +#, c-format +msgid "Will try connecting to %s:%hu.\n" +msgstr "" + +#: src/ftp.c:432 src/ftp.c:504 src/ftp.c:548 +msgid "done. " +msgstr "" + +#: src/ftp.c:474 +#, c-format +msgid "Bind error (%s).\n" +msgstr "" + +#: src/ftp.c:490 +msgid "Invalid PORT.\n" +msgstr "" + +#: src/ftp.c:537 +msgid "" +"\n" +"REST failed, starting from scratch.\n" +msgstr "" + +#: src/ftp.c:586 +#, c-format +msgid "" +"No such file `%s'.\n" +"\n" +msgstr "" + +#: src/ftp.c:634 +#, c-format +msgid "" +"No such file or directory `%s'.\n" +"\n" +msgstr "" + +#: src/ftp.c:692 src/ftp.c:699 +#, c-format +msgid "Length: %s" +msgstr "" + +#: src/ftp.c:694 src/ftp.c:701 +#, c-format +msgid " [%s to go]" +msgstr "" + +#: src/ftp.c:703 +msgid " (unauthoritative)\n" +msgstr "" + +#: src/ftp.c:721 +#, c-format +msgid "%s: %s, closing control connection.\n" +msgstr "" + +#: src/ftp.c:729 +#, c-format +msgid "%s (%s) - Data connection: %s; " +msgstr "" + +#: src/ftp.c:746 +msgid "Control connection closed.\n" +msgstr "" + +#: src/ftp.c:764 +msgid "Data transfer aborted.\n" +msgstr "" + +#: src/ftp.c:830 +#, c-format +msgid "File `%s' already there, not retrieving.\n" +msgstr "" + +#: src/ftp.c:896 src/http.c:922 +#, c-format +msgid "(try:%2d)" +msgstr "" + +#: src/ftp.c:955 src/http.c:1116 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld]\n" +"\n" +msgstr "" + +#: src/ftp.c:1001 +#, c-format +msgid "Using `%s' as listing tmp file.\n" +msgstr "" + +#: src/ftp.c:1013 +#, c-format +msgid "Removed `%s'.\n" +msgstr "" + +#: src/ftp.c:1049 +#, c-format +msgid "Recursion depth %d exceeded max. depth %d.\n" +msgstr "" + +#: src/ftp.c:1096 src/http.c:1054 +#, c-format +msgid "" +"Local file `%s' is more recent, not retrieving.\n" +"\n" +msgstr "" + +#: src/ftp.c:1102 src/http.c:1060 +#, c-format +msgid "The sizes do not match (local %ld), retrieving.\n" +msgstr "" + +#: src/ftp.c:1119 +msgid "Invalid name of the symlink, skipping.\n" +msgstr "" + +#: src/ftp.c:1136 +#, c-format +msgid "" +"Already have correct symlink %s -> %s\n" +"\n" +msgstr "" + +#: src/ftp.c:1144 +#, c-format +msgid "Creating symlink %s -> %s\n" +msgstr "" + +#: src/ftp.c:1155 +#, c-format +msgid "Symlinks not supported, skipping symlink `%s'.\n" +msgstr "" + +#: src/ftp.c:1167 +#, c-format +msgid "Skipping directory `%s'.\n" +msgstr "" + +#: src/ftp.c:1176 +#, c-format +msgid "%s: unknown/unsupported file type.\n" +msgstr "" + +#: src/ftp.c:1193 +#, c-format +msgid "%s: corrupt time-stamp.\n" +msgstr "" + +#: src/ftp.c:1213 +#, c-format +msgid "Will not retrieve dirs since depth is %d (max %d).\n" +msgstr "" + +#: src/ftp.c:1252 +#, c-format +msgid "Not descending to `%s' as it is excluded/not-included.\n" +msgstr "" + +#: src/ftp.c:1297 +#, c-format +msgid "Rejecting `%s'.\n" +msgstr "" + +#. No luck. +#. #### This message SUCKS. We should see what was the +#. reason that nothing was retrieved. +#: src/ftp.c:1344 +#, c-format +msgid "No matches on pattern `%s'.\n" +msgstr "" + +#: src/ftp.c:1404 +#, c-format +msgid "Wrote HTML-ized index to `%s' [%ld].\n" +msgstr "" + +#: src/ftp.c:1409 +#, c-format +msgid "Wrote HTML-ized index to `%s'.\n" +msgstr "" + +#: src/getopt.c:454 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "" + +#: src/getopt.c:478 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:483 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:498 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "" + +#. --option +#: src/getopt.c:528 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "" + +#. +option or -option +#: src/getopt.c:532 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "" + +#. 1003.2 specifies the format of this message. +#: src/getopt.c:563 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#. 1003.2 specifies the format of this message. +#: src/getopt.c:602 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: src/host.c:432 +#, c-format +msgid "%s: Cannot determine user-id.\n" +msgstr "" + +#: src/host.c:444 +#, c-format +msgid "%s: Warning: uname failed: %s\n" +msgstr "" + +#: src/host.c:456 +#, c-format +msgid "%s: Warning: gethostname failed\n" +msgstr "" + +#: src/host.c:484 +#, c-format +msgid "%s: Warning: cannot determine local IP address.\n" +msgstr "" + +#: src/host.c:498 +#, c-format +msgid "%s: Warning: cannot reverse-lookup local IP address.\n" +msgstr "" + +#. This gets ticked pretty often. Karl Berry reports +#. that there can be valid reasons for the local host +#. name not to be an FQDN, so I've decided to remove the +#. annoying warning. +#: src/host.c:511 +#, c-format +msgid "%s: Warning: reverse-lookup of local address did not yield FQDN!\n" +msgstr "" + +#: src/host.c:539 +msgid "Host not found" +msgstr "" + +#: src/host.c:541 +msgid "Unknown error" +msgstr "" + +#: src/html.c:439 src/html.c:441 +#, c-format +msgid "Index of /%s on %s:%d" +msgstr "" + +#: src/html.c:463 +msgid "time unknown " +msgstr "" + +#: src/html.c:467 +msgid "File " +msgstr "" + +#: src/html.c:470 +msgid "Directory " +msgstr "" + +#: src/html.c:473 +msgid "Link " +msgstr "" + +#: src/html.c:476 +msgid "Not sure " +msgstr "" + +#: src/html.c:494 +#, c-format +msgid " (%s bytes)" +msgstr "" + +#: src/http.c:492 +msgid "Failed writing HTTP request.\n" +msgstr "" + +#: src/http.c:497 +#, c-format +msgid "%s request sent, awaiting response... " +msgstr "" + +#: src/http.c:536 +msgid "End of file while parsing headers.\n" +msgstr "" + +#: src/http.c:547 +#, c-format +msgid "Read error (%s) in headers.\n" +msgstr "" + +#: src/http.c:587 +msgid "No data received" +msgstr "" + +#: src/http.c:589 +msgid "Malformed status line" +msgstr "" + +#: src/http.c:594 +msgid "(no description)" +msgstr "" + +#. If we have tried it already, then there is not point +#. retrying it. +#: src/http.c:678 +msgid "Authorization failed.\n" +msgstr "" + +#: src/http.c:685 +msgid "Unknown authentication scheme.\n" +msgstr "" + +#: src/http.c:748 +#, c-format +msgid "Location: %s%s\n" +msgstr "" + +#: src/http.c:749 src/http.c:774 +msgid "unspecified" +msgstr "" + +#: src/http.c:750 +msgid " [following]" +msgstr "" + +#. No need to print this output if the body won't be +#. downloaded at all, or if the original server response is +#. printed. +#: src/http.c:764 +msgid "Length: " +msgstr "" + +#: src/http.c:769 +#, c-format +msgid " (%s to go)" +msgstr "" + +#: src/http.c:774 +msgid "ignored" +msgstr "" + +#: src/http.c:857 +msgid "Warning: wildcards not supported in HTTP.\n" +msgstr "" + +#. If opt.noclobber is turned on and file already exists, do not +#. retrieve the file +#: src/http.c:872 +#, c-format +msgid "File `%s' already there, will not retrieve.\n" +msgstr "" + +#: src/http.c:978 +#, c-format +msgid "Cannot write to `%s' (%s).\n" +msgstr "" + +#: src/http.c:988 +#, c-format +msgid "ERROR: Redirection (%d) without location.\n" +msgstr "" + +#: src/http.c:1011 +#, c-format +msgid "%s ERROR %d: %s.\n" +msgstr "" + +#: src/http.c:1023 +msgid "Last-modified header missing -- time-stamps turned off.\n" +msgstr "" + +#: src/http.c:1031 +msgid "Last-modified header invalid -- time-stamp ignored.\n" +msgstr "" + +#: src/http.c:1064 +msgid "Remote file is newer, retrieving.\n" +msgstr "" + +#: src/http.c:1098 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld]\n" +"\n" +msgstr "" + +#: src/http.c:1130 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld. " +msgstr "" + +#: src/http.c:1138 +#, c-format +msgid "" +"%s (%s) - `%s' saved [%ld/%ld])\n" +"\n" +msgstr "" + +#: src/http.c:1150 +#, c-format +msgid "%s (%s) - Connection closed at byte %ld/%ld. " +msgstr "" + +#: src/http.c:1161 +#, c-format +msgid "%s (%s) - Read error at byte %ld (%s)." +msgstr "" + +#: src/http.c:1169 +#, c-format +msgid "%s (%s) - Read error at byte %ld/%ld (%s). " +msgstr "" + +#: src/init.c:312 src/netrc.c:250 +#, c-format +msgid "%s: Cannot read %s (%s).\n" +msgstr "" + +#: src/init.c:333 src/init.c:339 +#, c-format +msgid "%s: Error in %s at line %d.\n" +msgstr "" + +#: src/init.c:370 +#, c-format +msgid "%s: Warning: Both system and user wgetrc point to `%s'.\n" +msgstr "" + +#: src/init.c:458 +#, c-format +msgid "%s: BUG: unknown command `%s', value `%s'.\n" +msgstr "" + +#: src/init.c:485 +#, c-format +msgid "%s: %s: Please specify on or off.\n" +msgstr "" + +#: src/init.c:503 src/init.c:760 src/init.c:782 src/init.c:855 +#, c-format +msgid "%s: %s: Invalid specification `%s'.\n" +msgstr "" + +#: src/init.c:616 src/init.c:638 src/init.c:660 src/init.c:686 +#, c-format +msgid "%s: Invalid specification `%s'\n" +msgstr "" + +#: src/main.c:101 +#, c-format +msgid "Usage: %s [OPTION]... [URL]...\n" +msgstr "" + +#: src/main.c:109 +#, c-format +msgid "GNU Wget %s, a non-interactive network retriever.\n" +msgstr "" + +#. Had to split this in parts, so the #@@#%# Ultrix compiler and cpp +#. don't bitch. Also, it makes translation much easier. +#: src/main.c:114 +msgid "" +"\n" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +msgstr "" + +#: src/main.c:117 +msgid "" +"Startup:\n" +" -V, --version display the version of Wget and exit.\n" +" -h, --help print this help.\n" +" -b, --background go to background after startup.\n" +" -e, --execute=COMMAND execute a `.wgetrc' command.\n" +"\n" +msgstr "" + +#: src/main.c:123 +msgid "" +"Logging and input file:\n" +" -o, --output-file=FILE log messages to FILE.\n" +" -a, --append-output=FILE append messages to FILE.\n" +" -d, --debug print debug output.\n" +" -q, --quiet quiet (no output).\n" +" -v, --verbose be verbose (this is the default).\n" +" -nv, --non-verbose turn off verboseness, without being quiet.\n" +" -i, --input-file=FILE read URL-s from file.\n" +" -F, --force-html treat input file as HTML.\n" +"\n" +msgstr "" + +#: src/main.c:133 +msgid "" +"Download:\n" +" -t, --tries=NUMBER set number of retries to NUMBER (0 " +"unlimits).\n" +" -O --output-document=FILE write documents to FILE.\n" +" -nc, --no-clobber don't clobber existing files.\n" +" -c, --continue restart getting an existing file.\n" +" --dot-style=STYLE set retrieval display style.\n" +" -N, --timestamping don't retrieve files if older than local.\n" +" -S, --server-response print server response.\n" +" --spider don't download anything.\n" +" -T, --timeout=SECONDS set the read timeout to SECONDS.\n" +" -w, --wait=SECONDS wait SECONDS between retrievals.\n" +" -Y, --proxy=on/off turn proxy on or off.\n" +" -Q, --quota=NUMBER set retrieval quota to NUMBER.\n" +"\n" +msgstr "" + +#: src/main.c:147 +msgid "" +"Directories:\n" +" -nd --no-directories don't create directories.\n" +" -x, --force-directories force creation of directories.\n" +" -nH, --no-host-directories don't create host directories.\n" +" -P, --directory-prefix=PREFIX save files to PREFIX/...\n" +" --cut-dirs=NUMBER ignore NUMBER remote directory " +"components.\n" +"\n" +msgstr "" + +#: src/main.c:154 +msgid "" +"HTTP options:\n" +" --http-user=USER set http user to USER.\n" +" --http-passwd=PASS set http password to PASS.\n" +" -C, --cache=on/off (dis)allow server-cached data (normally " +"allowed).\n" +" --ignore-length ignore `Content-Length' header field.\n" +" --header=STRING insert STRING among the headers.\n" +" --proxy-user=USER set USER as proxy username.\n" +" --proxy-passwd=PASS set PASS as proxy password.\n" +" -s, --save-headers save the HTTP headers to file.\n" +" -U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION.\n" +"\n" +msgstr "" + +#: src/main.c:165 +msgid "" +"FTP options:\n" +" --retr-symlinks retrieve FTP symbolic links.\n" +" -g, --glob=on/off turn file name globbing on or off.\n" +" --passive-ftp use the \"passive\" transfer mode.\n" +"\n" +msgstr "" + +#: src/main.c:170 +msgid "" +"Recursive retrieval:\n" +" -r, --recursive recursive web-suck -- use with care!.\n" +" -l, --level=NUMBER maximum recursion depth (0 to unlimit).\n" +" --delete-after delete downloaded files.\n" +" -k, --convert-links convert non-relative links to relative.\n" +" -m, --mirror turn on options suitable for mirroring.\n" +" -nr, --dont-remove-listing don't remove `.listing' files.\n" +"\n" +msgstr "" + +#: src/main.c:178 +msgid "" +"Recursive accept/reject:\n" +" -A, --accept=LIST list of accepted extensions.\n" +" -R, --reject=LIST list of rejected extensions.\n" +" -D, --domains=LIST list of accepted domains.\n" +" --exclude-domains=LIST comma-separated list of rejected " +"domains.\n" +" -L, --relative follow relative links only.\n" +" --follow-ftp follow FTP links from HTML documents.\n" +" -H, --span-hosts go to foreign hosts when recursive.\n" +" -I, --include-directories=LIST list of allowed directories.\n" +" -X, --exclude-directories=LIST list of excluded directories.\n" +" -nh, --no-host-lookup don't DNS-lookup hosts.\n" +" -np, --no-parent don't ascend to the parent directory.\n" +"\n" +msgstr "" + +#: src/main.c:191 +msgid "Mail bug reports and suggestions to .\n" +msgstr "" + +#: src/main.c:347 +#, c-format +msgid "%s: debug support not compiled in.\n" +msgstr "" + +#: src/main.c:395 +msgid "" +"Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.\n" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" + +#: src/main.c:401 +msgid "" +"\n" +"Written by Hrvoje Niksic .\n" +msgstr "" + +#: src/main.c:465 +#, c-format +msgid "%s: %s: invalid command\n" +msgstr "" + +#: src/main.c:515 +#, c-format +msgid "%s: illegal option -- `-n%c'\n" +msgstr "" + +#. #### Something nicer should be printed here -- similar to the +#. pre-1.5 `--help' page. +#: src/main.c:518 src/main.c:560 src/main.c:591 +#, c-format +msgid "Try `%s --help' for more options.\n" +msgstr "" + +#: src/main.c:571 +msgid "Can't be verbose and quiet at the same time.\n" +msgstr "" + +#: src/main.c:577 +msgid "Can't timestamp and not clobber old files at the same time.\n" +msgstr "" + +#. No URL specified. +#: src/main.c:586 +#, c-format +msgid "%s: missing URL\n" +msgstr "" + +#: src/main.c:674 +#, c-format +msgid "No URLs found in %s.\n" +msgstr "" + +#: src/main.c:683 +#, c-format +msgid "" +"\n" +"FINISHED --%s--\n" +"Downloaded: %s bytes in %d files\n" +msgstr "" + +#: src/main.c:688 +#, c-format +msgid "Download quota (%s bytes) EXCEEDED!\n" +msgstr "" + +#. Please note that the double `%' in `%%s' is intentional, because +#. redirect_output passes tmp through printf. +#: src/main.c:715 +msgid "%s received, redirecting output to `%%s'.\n" +msgstr "" + +#: src/mswindows.c:118 +#, c-format +msgid "" +"\n" +"CTRL+Break received, redirecting output to `%s'.\n" +"Execution continued in background.\n" +"You may stop Wget by pressing CTRL+ALT+DELETE.\n" +msgstr "" + +#. parent, no error +#: src/mswindows.c:135 src/utils.c:268 +msgid "Continuing in background.\n" +msgstr "" + +#: src/mswindows.c:137 src/utils.c:270 +#, c-format +msgid "Output will be written to `%s'.\n" +msgstr "" + +#: src/mswindows.c:227 +#, c-format +msgid "Starting WinHelp %s\n" +msgstr "" + +#: src/mswindows.c:254 src/mswindows.c:262 +#, c-format +msgid "%s: Couldn't find usable socket driver.\n" +msgstr "" + +#: src/netrc.c:334 +#, c-format +msgid "%s: %s:%d: warning: \"%s\" token appears before any machine name\n" +msgstr "" + +#: src/netrc.c:365 +#, c-format +msgid "%s: %s:%d: unknown token \"%s\"\n" +msgstr "" + +#: src/netrc.c:429 +#, c-format +msgid "Usage: %s NETRC [HOSTNAME]\n" +msgstr "" + +#: src/netrc.c:439 +#, c-format +msgid "%s: cannot stat %s: %s\n" +msgstr "" + +#: src/recur.c:449 src/retr.c:462 +#, c-format +msgid "Removing %s.\n" +msgstr "" + +#: src/recur.c:450 +#, c-format +msgid "Removing %s since it should be rejected.\n" +msgstr "" + +#: src/recur.c:609 +msgid "Loading robots.txt; please ignore errors.\n" +msgstr "" + +#: src/retr.c:193 +#, c-format +msgid "" +"\n" +" [ skipping %dK ]" +msgstr "" + +#: src/retr.c:344 +msgid "Could not find proxy host.\n" +msgstr "" + +#: src/retr.c:355 +#, c-format +msgid "Proxy %s: Must be HTTP.\n" +msgstr "" + +#: src/retr.c:398 +#, c-format +msgid "%s: Redirection to itself.\n" +msgstr "" + +#: src/retr.c:483 +msgid "" +"Giving up.\n" +"\n" +msgstr "" + +#: src/retr.c:483 +msgid "" +"Retrying.\n" +"\n" +msgstr "" + +#: src/url.c:940 +#, c-format +msgid "Error (%s): Link %s without a base provided.\n" +msgstr "" + +#: src/url.c:955 +#, c-format +msgid "Error (%s): Base %s relative, without referer URL.\n" +msgstr "" + +#: src/url.c:1373 +#, c-format +msgid "Converting %s... " +msgstr "" + +#: src/url.c:1378 src/url.c:1389 +#, c-format +msgid "Cannot convert links in %s: %s\n" +msgstr "" + +#: src/utils.c:71 +#, c-format +msgid "%s: %s: Not enough memory.\n" +msgstr "" + +#: src/utils.c:203 +msgid "Unknown/unsupported protocol" +msgstr "" + +#: src/utils.c:206 +msgid "Invalid port specification" +msgstr "" + +#: src/utils.c:209 +msgid "Invalid host name" +msgstr "" + +#: src/utils.c:430 +#, c-format +msgid "Failed to unlink symlink `%s': %s\n" +msgstr "" diff --git a/src/ChangeLog b/src/ChangeLog new file mode 100644 index 00000000..52e16376 --- /dev/null +++ b/src/ChangeLog @@ -0,0 +1,3206 @@ +1998-09-21 Hrvoje Niksic + + * version.c: Wget 1.5.3 is released. + +1998-09-21 Hrvoje Niksic + + * host.c (ftp_getaddress): Don't warn when reverse-lookup of local + address doesn't yield FQDN. + +1998-09-21 Andreas Schwab + + * cmpt.c (strerror): Fix declaration of sys_errlist. + +1998-09-11 Hrvoje Niksic + + * main.c (main): Don't use an array subscript as the first + argument to STRDUP_ALLOCA. + From Kaveh R. Ghazi. + +1998-09-11 Szakacsits Szabolcs + + * html.c (htmlfindurl): Download table background. + +1998-09-11 Hans Grobler + + * init.c (parse_line): Would free *com before allocating it. + (parse_line): Would free com instead of *com. + +1998-09-10 Howard Gayle + + * url.c (get_urls_html): Would drop the last character of the + link. + +1998-09-10 Hrvoje Niksic + + * http.c (http_loop): Don't print status code if quiet. + +1998-09-10 Kaveh R. Ghazi + + * log.c: Use only when __STDC__. + +1998-09-10 Adam D. Moss + + * html.c (htmlfindurl): Download . + +1998-09-10 Howard Gayle + + * ftp.c (ftp_retrieve_list): Don't update the time stamp of a file + not retrieved. + +1998-06-27 Hrvoje Niksic + + * utils.c: Include on NeXT. + +1998-06-26 Heinz Salzmann + + * url.c (get_urls_html): Fix calculation of URL position. + +1998-06-23 Hrvoje Niksic + + * version.c: Wget 1.5.2 is released. + +1998-06-23 Dave Love + + * ftp.c, init.c, netrc.c: Include errno.h. + + * http.c: Include errno.h and time header. + + * Makefile.in (exext): Define. + (install.bin, uninstall.bin): Use it. + +1998-06-21 Hrvoje Niksic + + * http.c (http_loop): Don't attempt to compare local and remote + sizes if the remote size is unknown. + +1998-06-16 Hrvoje Niksic + + * url.c (get_urls_html): Use malloc() instead of alloca in the + loop. + +1998-06-13 Hrvoje Niksic + + * version.c: Wget 1.5.2-b4 is released. + +1998-06-13 Hrvoje Niksic + + * url.c (get_urls_html): Ignore spaces before and after the URI. + +1998-06-08 Wanderlei Antonio Cavassin + + * ftp.c (getftp): Translate `done'. + +1998-06-06 Hrvoje Niksic + + * version.c: Wget 1.5.2-b3 is released. + +1998-06-06 Alexander Kourakos + + * init.c (cleanup): Close dfp, don't free it. + +1998-06-06 Hrvoje Niksic + + * utils.c (make_directory): Twiddle. + + * config.h.in: Added template for access(). + +1998-06-05 Mathieu Guillaume + + * html.c (htmlfindurl): Download + +1998-06-03 Hrvoje Niksic + + * utils.c (file_exists_p): Use access() with two arguments. + +1998-05-27 Martin Kraemer + + * netrc.c (parse_netrc): Correct logic. + +1998-05-27 Hrvoje Niksic + + * ftp.c (getftp): Added `break'; suggested by Lin Zhe Min + . + +1998-05-24 Hrvoje Niksic + + * version.c: Wget 1.5.2-b2 is released. + +1998-05-18 Juan Jose Rodriguez + + * mswindows.h: Don't translate mkdir to _mkdir under Borland. + +1998-05-17 Hrvoje Niksic + + * retr.c (elapsed_time): Return correct value when + HAVE_GETTIMEOFDAY is undefined. + +1998-05-13 Hrvoje Niksic + + * version.c: Wget 1.5.2-b1 is released. + +1998-05-08 Hrvoje Niksic + + * getopt.c (_getopt_internal): Use exec_name instead of argv[0]. + (_getopt_internal): Don't translate `#if 0'-ed strings. + +1998-05-06 Douglas E. Wegscheid + + * mswindows.c (ws_handler): Use fork_to_background(). + +1998-05-05 Hrvoje Niksic + + * version.c: Wget 1.5.1 is released. + +1998-05-05 Hrvoje Niksic + + * http.c (parse_http_status_line): Avoid `minor' and `major' + names. + +1998-05-02 Hrvoje Niksic + + * utils.c (mkdirhier): Renamed to make_directory. + +1998-05-01 Hrvoje Niksic + + * mswindows.c (fork_to_background): Define under Windows. + + * utils.c (fork_to_background): New function. + + * html.c (htmlfindurl): Removed rerdundant casts. + +1998-05-01 Douglas E. Wegscheid + + * mswindows.c (ws_mypath): Cache the path. + +1998-04-30 Douglas E. Wegscheid + + * ftp.h: Prefix enum ftype members with FT_. + + * ftp-ls.c, ftp.c, html.h: Adjust accordingly. + + * mswindows.h: Use stat under Borland, _stat under MSVC. + +1998-04-28 Hrvoje Niksic + + * http.c (known_authentication_scheme_p): New function. + (gethttp): Handle authorization more correctly. + + * ftp-basic.h: Removed. + + * cmpt.h: Removed. + + * utils.c: Include before ; needed under SunOS + with gcc 2.8. + (numdigit): Use `while' loop. + + * http.c (create_authorization_line): Detect authentication + schemes case-insensitively. + + * http.c (extract_header_attr): Use strdupdelim(). + (digest_authentication_encode): Move declaration of local + variables to smaller scope. + (digest_authentication_encode): Reset REALM, OPAQUE and NONCE. + (create_authorization_line): Detect authentication schemes + case-insensitively. + + * utils.c (touch): Constify. + + * http.c (gethttp): Report a nicer error when no data is received. + + * rbuf.h (RBUF_READCHAR): Ditto. + + * ftp-basic.c (ftp_response): Use sizeof. + +1998-04-27 Hrvoje Niksic + + * retr.c (print_percentage): EXPECTED is long, not int. + (print_percentage): Use floating-point arithmetic to avoid + overflow with large files' sizes multiplied with 100. + +1998-04-27 Gregor Hoffleit + + * config.h.in: Added pid_t stub. + + * sysdep.h (S_ISREG): Moved here from mswindows.h (NeXT doesn't + define it). + +1998-04-20 Hrvoje Niksic + + * version.c: Wget 1.5.0 is released. + +1998-04-18 Hrvoje Niksic + + * url.c (str_url): Ditto. + + * ftp-basic.c (ftp_rest): Use new name. + + * utils.c (long_to_string): Renamed from prnum(). + +1998-04-16 Hrvoje Niksic + + * version.c: Wget 1.5-b17 is released. + +1998-04-08 Hrvoje Niksic + + * headers.c (header_get): New argument FLAGS. + + * http.c (gethttp): If request is malformed, bail out of the + header loop. + (gethttp): Check for empty header *after* the status line checks. + (gethttp): Disallow continuations for status line. + +1998-04-08 Hrvoje Niksic + + * version.c: Wget 1.5-b16 is released. + +1998-04-08 Hrvoje Niksic + + * init.c (commands): Renamed `always_rest' to `continue'. + +1998-04-05 Hrvoje Niksic + + * all: Use it. + + * log.c (logputs): New argument. + (logvprintf): Ditto. + (logprintf): Ditto. + +1998-04-04 Hrvoje Niksic + + * http.c (http_atotm): Update comment. + + * main.c (i18n_initialize): Set LC_MESSAGES, not LC_ALL. + + * wget.h: Renamed ENABLED_NLS to HAVE_NLS. + + * main.c (i18n_initialize): New function. + (main): Use it. + + * log.c: Include . + + * retr.c (show_progress): Cast alloca to char *. + +1998-04-04 Hrvoje Niksic + + * version.c: Wget 1.5-b15 is released. + +1998-04-04 Hrvoje Niksic + + * utils.h: Declare file_non_directory_p(). + +1998-04-03 Hrvoje Niksic + + * main.c (main): It's `tries', not `numtries' now. + +1998-04-01 Hrvoje Niksic + + * init.c (getperms): Removed. + +1998-04-01 Tim Charron + + * log.c (logvprintf): Don't use ARGS twice. + +1998-04-01 John + + * mswindows.c: Cleaned up. + +1998-04-01 Hrvoje Niksic + + * version.c: Wget 1.5-b14 is released. + +1998-04-01 Hrvoje Niksic + + * ftp-opie.c (STRLEN4): New macro. + (btoe): Use it. + +1998-04-01 Junio Hamano + + * http.c: Document all the Digest functions. + +1998-04-01 Hrvoje Niksic + + * utils.c (file_non_directory_p): Renamed from isfile(). + + * mswindows.h (S_ISREG): New macro, suggested by Tim Adam. + +1998-03-31 Hrvoje Niksic + + * utils.c (mkdirhier): Use 0777 instead of opt.dirmode. + + * init.c (cmd_spec_dotstyle): Use 48 dots per line for binary + style. + (cmd_permissions): Removed. + + * config.h.in: Add template for WORDS_BIGENDIAN. + +1998-03-31 Junio Hamano + + * http.c (HEXD2asc): New macro. + (dump_hash): Use it. + +1998-03-31 Hrvoje Niksic + + * version.c: Wget 1.5-b13 is released. + +1998-03-31 Hrvoje Niksic + + * main.c (main): Don't try to use `com'. + +1998-03-30 Hrvoje Niksic + + * init.c (cmd_permissions): New function. + +1998-03-30 Hrvoje Niksic + + * version.c: Wget 1.5-b12 is released. + +1998-03-30 Hrvoje Niksic + + * init.c (commands): Renamed `numtries' to `tries'. + (cmd_spec_debug): Removed. + (home_dir): Under Windows, return `C:\' if HOME is undefined. + +1998-03-29 Hrvoje Niksic + + * config.h.in: Define _XOPEN_SOURCE. + + * init.c (check_user_specified_header): New function. + (cmd_spec_header): Use it. + (cmd_spec_useragent): New function. + +1998-03-29 Hrvoje Niksic + + * version.c: Wget 1.5-b11 is released. + +1998-03-28 Hrvoje Niksic + + * wget.h: Include only if NLS is enabled. + +1998-03-26 Hrvoje Niksic + + * options.h (struct options): Made `wait' a long. + (struct options): Ditto for `timeout'. + +1998-03-19 Hrvoje Niksic + + * utils.c (exists): Renamed to file_exists_p. + (file_exists_p): Use access() if available. + +1998-03-17 Hrvoje Niksic + + * utils.c (memfatal): Set save_log_p to 0 to avoid potential + infloop. + + * log.c: do_logging -> save_log_p. + + * config.h.in: Added template for HAVE_VSNPRINTF. + +1998-03-16 Hrvoje Niksic + + * init.c: Ditto. + + * http.c: Protect declaration against non-ANSI compiler. + + * log.c (logvprintf): Use vsnprintf() if available. + + * getopt.c (main): Don't translate test stuff. + +1998-03-16 Hrvoje Niksic + + * version.c: Wget 1.5-b10 is released. + +1998-03-11 Hrvoje Niksic + + * ftp.c (getftp): Don't translate "CWD %s". + + * wget.h (GCC_FORMAT_ATTR): Renamed from FORMAT_ATTR. + +1998-03-07 Hrvoje Niksic + + * ftp-opie.c (btoe): Use memcpy() instead of strncat(). + + * log.c (logputs): New function. + (logvprintf): Renamed from vlogmsg; use logputs(). + + * retr.c (show_progress): Print `[100%]' when the retrieval is + finished. + + * init.c (run_wgetrc): Use FILE, not PATH. + (wgetrc_file_name): Ditto. + +1998-03-07 Tim Adam + + * recur.c (parse_robots): Correctly reset `entries' on empty + disallow. + +1998-03-07 Hrvoje Niksic + + * init.c (cmd_spec_debug): Use cmd_boolean(). + +1998-02-23 Hrvoje Niksic + + * http.c (gethttp): Create proxy-authorization correctly. + +1998-02-22 Hrvoje Niksic + + * md5.c: Ditto. + + * getopt.c: Use ANSI function definitions. + + * ftp-opie.c: New file. + + * options.h: Don't redefine EXTERN. + + * init.c: Sort it correctly. + +1998-02-22 Hrvoje Niksic + + * version.c: Wget 1.5-b9 is released. + +1998-02-22 Hrvoje Niksic + + * recur.c (recursive_retrieve): Reset `first_time'. + + * ftp.c (getftp): Added `default' clause to switches of uerr_t. + + * rbuf.c (rbuf_peek): Simplified. + (rbuf_flush): Use MINVAL. + + * wget.h (MINVAL): Moved from url.h. + + * rbuf.h (RBUF_FD): New macro. + + * url.c (add_url): Add to the head of the list. + + * ftp.c (ftp_retrieve_list): Set the permissions to downloaded + file. + (getftp): Set the default permissions to 0600. + +1998-02-21 Hrvoje Niksic + + * url.c (get_urls_html): Ditto. + (convert_links): Ditto. + + * recur.c (parse_robots): Ditto. + + * html.c (ftp_index): Ditto. + + * ftp-ls.c (ftp_parse_unix_ls): Open file as binary. + + * init.c (defaults): Initialize `opt' to zero via memset. + + * http.c (digest_authentication_encode): goto considered harmful. + +1998-02-19 Hrvoje Niksic + + * ftp.c (delelement): Simplify and fix leak. + +1998-02-18 Hrvoje Niksic + + * http.c (dump_hash): Use HEXD2ASC instead of home-grown stuff. + + * url.h (HEXD2ASC): Removed warning. + + * init.c (comind): Use binary search. + (commands): Reorganized. + (setval): Ditto. + (cmd_boolean): New function. + (cmd_number): Ditto. + (cmd_number_inf): Ditto. + (cmd_string): Ditto. + (cmd_vector): Ditto. + (cmd_directory_vector): Ditto. + (cmd_bytes): Ditto. + (cmd_time): Ditto. + (cmd_spec_debug): Ditto. + (cmd_spec_dirmode): Ditto. + (cmd_spec_dirstruct): Ditto. + (cmd_spec_dotstyle): Ditto. + (cmd_spec_header): Ditto. + (cmd_spec_htmlify): Ditto. + (cmd_spec_mirror): Ditto. + (cmd_spec_outputdocument): Ditto. + (cmd_spec_recursive): Ditto. + (settime): Merged with cmd_time(). + (setbytes): Merged with cmd_bytes(). + (setonoff): Merged with cmd_boolean(). + (onoff): Ditto. + +1998-02-17 Hrvoje Niksic + + * Makefile.in (distclean): Remove `config.h'. + +1998-02-17 Hrvoje Niksic + + * version.c: Wget 1.5-b8 is released. + +1998-02-17 Hrvoje Niksic + + * http.c (digest_authentication_encode): New function. + (create_authorization_line): Use it. + (dump_hash): New function. + (digest_authentication_encode): Use it. + + * fnmatch.c: Renamed from `mtch.c'. + +1998-02-15 Karl Eichwalder + + * main.c (main): Tag "Written by..." string as translatable. + +1998-02-15 Hrvoje Niksic + + * wget.h (FREE_MAYBE): New macro. + + * http.c (create_authorization_line): Don't use ANSI C string + concatenation feature. + (basic_authentication_encode): Use alloca() for temporary + variables. + + * recur.h: Ditto. + + * http.c: Ditto. + + * headers.h: Ditto. + + * ftp-basic.c: Protect declaration against non-ANSI compiler. + + * http.c (create_authorization_line): Cast `unsigned char *' to + `char *' for sprintf, to shut up the noisy Digital Unix cc. + +1998-02-15 Hrvoje Niksic + + * version.c: Wget 1.5-b7 is released. + +1998-02-15 Hrvoje Niksic + + * cmpt.c (strstr): Synched with glibc-2.0.6. + + * ftp-basic.c (calculate_skey_response): Ditto. + (calculate_skey_response): Use alloca(). + + * http.c (create_authorization_line): Work with FSF's version of + md5.c. + + * md5.c: New file, from GNU libc. + +1998-02-14 Hrvoje Niksic + + * url.h (URL_CLEANSE): Name the temporary variable more carefully. + +1998-02-13 Hrvoje Niksic + + * http.c (basic_authentication_encode): New function, instead of + the macro. + +1998-02-13 Junio Hamano + + * http.c: Add HTTP-DA support. + * ftp-basic.c: Add Opie/S-key support. + * config.h.in, Makefile.in: Add HTTP-DA and Opie/S-key support. + * md5.c, md5.h: New files. + +1998-02-13 Hrvoje Niksic + + * http.c (http_process_range): Renamed from hprocrange(). + (http_process_range): Parse the whole header. + + * headers.c: New file. + (header_process): New function. + (header_get): Renamed from fetch_next_header. + + * all: Include utils.h only where necessary. + + * wget.h: Declare xmalloc(), xrealloc() and xstrdup() here. + + * wget.h: Add provisions for dmalloc. + +1998-02-12 Hrvoje Niksic + + * version.c: Wget 1.5-b6 is released. + +1998-02-12 Hrvoje Niksic + + * ftp.c (ftp_loop): Determine `filename' more precisely. + + * init.c (setval): Don't set `opt.quiet' if output-document is + `-'. + + * log.c (log_init): Print to STDERR instead of STDOUT. + (vlogmsg): Use STDERR by default. + (logflush): Ditto. + +1998-02-11 Simon Josefsson + + * host.c: Use addr_in again. + +1998-02-08 Karl Eichwalder + + * http.c (gethttp): Fixed typo. + +1998-02-08 Hrvoje Niksic + + * version.c: Wget 1.5-b5 is released. + +1998-02-08 Hrvoje Niksic + + * retr.c (show_progress): Use it. + + * log.c (logflush): New function. + + * wget.h: Utilize __attribute__ if on gcc. + +1998-02-07 Hrvoje Niksic + + * http.c (base64_encode_line): New argument LENGTH. + (BASIC_AUTHENTICATION_ENCODE): Use it. + (BASIC_AUTHENTICATION_ENCODE): Take length of HEADER into account. + + * main.c (main): Fixed fprintf() format mismatch. + +1998-02-06 Hrvoje Niksic + + * version.c: Wget 1.5-b4 is released. + +1998-02-03 Simon Josefsson + + * host.c: use sockaddr_in instead of addr_in. + +1998-02-04 Hrvoje Niksic + + * init.c (cleanup): Use it. + + * recur.c (recursive_cleanup): New function. + + * retr.c (retrieve_from_file): Ditto. + + * main.c (main): Use it. + + * recur.c (recursive_reset): New function. + + * retr.c (retrieve_from_file): Ditto. + + * main.c (main): Simplify call to recursive_retrieve(). + + * recur.c (recursive_retrieve): Removed FLAGS argument. + + * http.c (gethttp): Changed call to iwrite(). + +1998-02-03 Hrvoje Niksic + + * url.c (get_urls_html): Ditto. + (free_urlpos): Ditto. + (mkstruct): Ditto. + (construct): Ditto. + + * retr.c (retrieve_url): Move declaration of local variables to + smaller scope. + + * url.c (urlproto): Use it. + (parseurl): Ditto. + (str_url): Ditto. + (get_urls_html): Ditto. + + * utils.h (ARRAY_SIZE): New macro. + + * url.c (proto): Moved from url.h. + + * url.h (URL_CLEANSE): Reformatted. + (USE_PROXY_P): Renamed from USE_PROXY. + + * ftp-basic.c: Adjust to the new interface of iwrite(). + + * ftp-basic.c (ftp_port): Use alloca(). + +1998-02-03 Hrvoje Niksic + + * version.c: Wget 1.5-b3 is released. + + * host.c (ftp_getaddress): Don't print to stderr directly. + + * init.c (setbytes): Support `g' for gigabytes. + (cmdtype): New specification CTIME. + (setval): Use it with settime(). + (commands): Use it for WAIT and TIMEOUT. + +1998-02-02 Hrvoje Niksic + + * http.c (BASIC_AUTHENTICATION_ENCODE): New macro. + (gethttp): Use it. + + * utils.c (unique_name_1): Moved from url.c. + (unique_name): Ditto. + + * url.c (url_filename): Ditto. + + * log.c (redirect_output): Changed call to unique_name(). + + * url.c (unique_name_1): Renamed from unique_name(). + (unique_name): Changed interface. + + * init.c (enum cmdid): Moved from init.h. + (cmdtype): Ditto. + (struct cmd): Ditto. + + * main.c (main): Use it. + (main): Moved `--backups' to not have a short option. + + * options.h (struct options): New member BACKGROUND. + + * main.c (print_help): Rearranged. + (main): New long options for -n* short options: --no-directories, + --no-host-directories, --non-verbose, --no-host-lookup and + --dont-remove-listing. + +1998-02-01 Hrvoje Niksic + + * main.c (main): Use log_close(). + + * log.c: New variable LOGFP. + (vlogmsg): Use it. + (redirect_output): Don't open /dev/null; set LOGFP to stdin + instead. + (log_close): New function. + + * options.h (struct options): Removed LFILE. + + * log.c (log_enable): Removed. + + * main.c (main): Use it. + + * log.c (log_init): New function. + + * url.c (get_urls_html): Removed needless assignment to BASE. + + * host.c (add_hlist): Don't set CMP needlessly. + + * utils.c (match_backwards): Ditto. + (in_acclist): Ditto. + + * url.c (findurl): Ditto. + + * netrc.c (parse_netrc): Ditto. + + * log.c (log_dump): Ditto. + + * html.c (html_quote_string): Ditto. + + * ftp-basic.c (ftp_request): Made static. + + * connect.c: Made global variables static. + + * url.c (construct): Ditto. + + * init.c (init_path): Avoid assignment inside `if'-condition. + + * ftp.c: Don't include in.h or winsock.h. + + * ftp.c (ftp_loop): Use SZ. + + * connect.c (bindport): Cast &addrlen to int *. + (conaddr): Ditto. + + * init.c (initialize): Don't use SYSTEM_WGETRC unconditionally. + +1998-01-31 Hrvoje Niksic + + * ftp.c (getftp): Initialize opt.ftp_pass here. + (ftp_retrieve_dirs): Use alloca(). + + * init.c (defaults): Don't initialize opt.ftp_pass. + + * sysdep.h (S_ISLNK): Declare for OS/2; ditto for lstat. + From Ivan F. Martinez . + +1998-01-31 Hrvoje Niksic + + * recur.c (parse_robots): Check for comments more correctly. + + * host.c (ftp_getaddress): Use STRDUP_ALLOCA. + (ftp_getaddress): Add diagnostics when reverse-lookup yields only + hostname. + +1998-01-31 Hrvoje Niksic + + * version.c: Wget 1.5-b2 is released. + + * netrc.c (NETRC_FILE_NAME): Moved from netrc.h. + + * utils.c (proclist): Pass FNM_PATHNAME to fnmatch(). + + * ftp-basic.c (ftp_pasv): Avoid unnecessary casting to unsigned + char. + + * log.c: Don't attempt to hide arguments from ansi2knr. + + * cmpt.c: Synched strptime() and mktime() with glibc-2.0.6. + + * ansi2knr.c: Use a later version, from fileutils-3.16l alpha. + + * ftp.c (getftp): Ditto. + + * http.c (gethttp): Use it. + + * retr.c (get_contents): New argument EXPECTED; pass it to + show_progress(). + (show_progress): New argument EXPECTED; use it to display + percentages. + + * init.c (setval): Ditto. + + * http.c (gethttp): Ditto. + (http_loop): Ditto. + + * ftp.c (getftp): Ditto. + (ftp_loop_internal): Ditto. + + * ftp-ls.c (ftp_parse_unix_ls): Use abort() instead of assert(0). + + * sysdep.h (CLOSE): Simplify; use DEBUGP. + + * netrc.c (search_netrc): Use alloca(). + + * init.c (defaults): Initialize no_flush. + + * log.c (vlogmsg): Don't flush if no_flush. + + * options.h (struct options): New variable no_flush. + + * main.c (main): Don't play games with buffering. + + * log.c (vlogmsg): Flush the output after every message. + +1998-01-31 Hrvoje Niksic + + * init.c (parse_line): Ditto. + + * url.c (get_urls_html): Ditto. + + * main.c (main): Don't cast to unsigned char. + + * init.c (run_wgetrc): Don't cast to unsigned char. + (parse_line): Accept char instead of unsigned char. + + * html.c (htmlfindurl): Use char instead of unsigned char. + + * all: Use them. + + * sysdep.h: Add wrappers to ctype macros to make them + eight-bit-clean: + +1998-01-30 Hrvoje Niksic + + * html.c (htmlfindurl): Download + + * main.c (main): Ignore SIGPIPE. + + * connect.c (select_fd): New argument WRITEP. + (iwrite): Call select_fd(). + +1997-02-27 Fila Kolodny + + * ftp.c (ftp_retrieve_list): If retrieving symlink and the proper + one already exists, just skip it. + +1998-01-30 Hrvoje Niksic + + * http.c (gethttp): Cosmetic changes. + + * http.c (check_end): Allow `+D...' instead of `GMT'. + From Fabrizio Pollastri . + + * url.c (process_ftp_type): New function. + (parseurl): Use it. + + * connect.c (iwrite): Allow writing in a few chunks. + (bindport): Made SRV static, so addr can point to it. + (select_fd): Removed HPUX kludge. + + * host.c (free_hlist): Incorporated into clean_hosts(). + +1998-01-29 Hrvoje Niksic + + * host.c (hlist): Made static. + (search_address): Cosmetic change. + +1998-01-29 Hrvoje Niksic + + * version.c: Wget v1.5-b1 is released. + + * http.c (hgetlen): Use sizeof() to get the header length. + (hgetrange): Ditto. + (hgettype): Ditto. + (hgetlocation): Ditto. + (hgetmodified): Ditto. + (haccepts_none): Ditto. + + * main.c (main): Updated `--version' and `--help' output, as per + Francois Pinard's suggestions. + + * main.c: Include locale.h; call setlocale(), bindtextdomain() and + textdomain(). + + * config.h.in: Define stubs for I18N3. + + * wget.h: Include libintl.h. + +1998-01-28 Hrvoje Niksic + + * url.c (mkstruct): Check for opt.cut_dirs. + (mkstruct): alloca()-te more, xmalloc() less. + + * utils.c (load_file): Check for ferror(). + + * url.c (get_urls_file): Close only the files we opened. + (get_urls_html): Ditto. + (count_slashes): New function. + + * http.h: Removed. + + * http.c (gethttp): Respect username and password provided by + proxy URL. + (base64_encode_line): Write into an existing buffer instead of + malloc-ing a new one. + (struct http_stat): Moved from http.h + + * retr.c (retrieve_url): Free SUF. + + * all: Removed lots of unnecessary .h dependencies. + + * html.c (global_state): Made static. + + * utils.h (ALLOCA_ARRAY): New macro. + + * main.c (main): New option `--cut-dirs'. + + * url.c (construct): Use alloca() for T. + + * utils.c (mkdirhier): Use STRDUP_ALLOCA. + + * host.c (_host_t): Moved from host.h. + (struct host): Renamed from _host_t. + (store_hostaddress): Use STRDUP_ALLOCA for INET_S. + (realhost): Ditto. + + * host.h: Don't include url.h. + + * ftp.c (LIST_FILENAME): Moved from ftp.h. + + * init.c (DEFAULT_FTP_ACCT): Moved from ftp.h. + + * main.c (main): Enable log if the output goes to a TTY. + + * connect.h: Removed unused constant `BACKLOG'. + + * config.h.in: Check for isatty(). + + * Makefile.in (LINK): Use CFLAGS when linking. + +1998-01-27 Hrvoje Niksic + + * mswindows.c (ws_hangup): Use redirect_output(). + + * main.c (redirect_output_signal): New function; use + redirect_output(). + + * log.c (redirect_output): New function, based on hangup(), which + is deleted. + + * log.c (vlogmsg): New function. + + * wget.h (DEBUGP): Use debug_logmsg(). + + * main.c (hangup): Use it. + + * log.c (log_dump): New function. + + * utils.h (DO_REALLOC): Use `long' for various sizes. + + * http.c (hskip_lws): Use `while', for clarity. + (HTTP_DYNAMIC_LINE_BUFFER): New constant. + (fetch_next_header): Use it instead of DYNAMIC_LINE_BUFFER. + + * ftp-basic.c (FTP_DYNAMIC_LINE_BUFFER): New constant. + (ftp_response): Use it instead of DYNAMIC_LINE_BUFFER. + + * utils.c (DYNAMIC_LINE_BUFFER): Moved from utils.c. + (LEGIBLE_SEPARATOR): Ditto. + (FILE_BUFFER_SIZE): Ditto. + + * retr.c (BUFFER_SIZE): Moved from retr.h. + + * log.c: New file. + (logmsg): Moved from utils.c. + (debug_logmsg): New function. + + * mswindows.h: Include it here. + + * init.c: Ditto. + + * utils.c: Don't include . + +1998-01-25 Hrvoje Niksic + + * host.c (ftp_getaddress): Ditto. + + * main.c (main): Use it. + + * utils.h (STRDUP_ALLOCA): New macro. + + * init.c: Prepend `wget: ' to error messages printed on stderr. + + * utils.c (mkdirhier): Renamed from mymkdir. + (touch): Renamed from my_touch. + (pwd_cuserid): Renamed from my_cuserid(). + +1998-01-24 Andy Eskilsson + + * utils.c (accdir): Process wildcards. + (proclist): New function. + (accdir): Use it to avoid code repetition. + +1998-01-24 Hrvoje Niksic + + * recur.c (parse_robots): Respect opt.useragent; use alloca(). + + * http.c (gethttp): Construct useragent accordingly. + + * version.c: Changed version string to numbers-only. + + * main.c (print_help): List all the options. + + * mswindows.c (windows_main_junk): Initialize argv0 here. + +1998-01-24 Karl Heuer + + * netrc.c (search_netrc): Initialize `l' only after processing + netrc. + + * main.c (main): Don't trap SIGHUP if it's being ignored. + +1998-01-24 Hrvoje Niksic + + * all: Use logmsg(). + + * utils.c (time_str): Moved from retr.c. + (logmsg): New function. + (logmsg_noflush): Ditto. + + * rbuf.c: New file, moved buf_* functions here. + + * ftp.c (ftp_expected_bytes): Moved from ftp-basic.c. + + * ftp-basic.c (ftp_rest): Use prnum(). + + * ftp-basic.c: Ditto. + + * ftp.c: Use the new reading functions and macros. + + * retr.c (buf_initialize): New function. + (buf_initialized_p): Ditto. + (buf_uninitialize): Ditto. + (buf_fd): Ditto. + + * http.c (fetch_next_header): Use the BUF_READCHAR macro for + efficiency. + (gethttp): Use alloca() where appropriate. + + * retr.c (buf_readchar): Use it. + (buf_peek): Use rstreams. + + * retr.h (BUF_READCHAR): New macro. + + * init.c (home_dir): Rewritten for clarity. + (init_path): Ditto. + + * mswindows.c (ws_backgnd): Made static. + (read_registry): Ditto. + (ws_cleanup): Ditto. + (ws_handler): Ditto. + +1998-01-23 Hrvoje Niksic + + * alloca.c: New file. + + * Makefile.in (ALLOCA): Define. + + * mswindows.c (ws_help): Constify. + (ws_help): Use alloca. + + * mswindows.c: Reformat. + + * all: Added _(...) annotations for I18N snarfing and translation. + + * host.c (ftp_getaddress): Nuke SYSINFO. + (ftp_getaddress): Don't use getdomainname(). + (ftp_getaddress): Use uname(), where available. + + * http.c (gethttp): Protect a stray fprintf(). + + * init.c (settime): New function. + (setval): Treat WAIT specially, allowing suffixes like `m' for + minutes, etc. + +1998-01-21 Hrvoje Niksic + + * url.c (get_urls_html): Use alloca() for TEMP. + +1998-01-21 Jordan Mendelson + + * url.c (rotate_backups): New function. + + * http.c (gethttp): Ditto. + + * ftp.c (getftp): Rotate backups. + +1997-12-18 Hrvoje Niksic + + * all: Renamed nmalloc(), nrealloc() and nstrdup() to xmalloc(), + xrealloc() and xstrdup(). Use the new functions. + + * url.c (decode_string): Made static. + (has_proto): Ditto. + (parse_dir): Ditto. + (parse_uname): Ditto. + (mkstruct): Ditto. + (construct): Ditto. + (construct_relative): Ditto. + + * retr.c (show_progress): Made static. + + * recur.c (robots_url): Made static. + (retrieve_robots): Ditto. + (parse_robots): Ditto. + (robots_match): Ditto. + + * main.h: Removed. + + * main.c (printhelp): Made static. + (hangup): Ditto. + + * init.c (comind): Made static. + (defaults): Ditto. + (init_path): Ditto. + (run_wgetrc): Ditto. + (onoff): Ditto. + (setonoff): Ditto. + (setnum): Ditto. + (myatoi): Ditto. + (getperms): Ditto. + (setbytes): Ditto. + + * http.c (fetch_next_header): Made static. + (hparsestatline): Ditto. + (hskip_lws): Ditto. + (hgetlen): Ditto. + (hgetrange): Ditto. + (hgettype): Ditto. + (hgetlocation): Ditto. + (hgetmodified): Ditto. + (haccepts_none): Ditto. + (gethttp): Ditto. + (base64_encode_line): Ditto. + (mktime_from_utc): Ditto. + (http_atotm): Ditto. + + * html.c (idmatch): Made static. + + * host.c (search_host): Made static. + (search_address): Ditto. + (free_hlist): Ditto. + + * ftp.c (getftp): Made static. + (ftp_loop_internal): Ditto. + (ftp_get_listing): Ditto. + (ftp_retrieve_list): Ditto. + (ftp_retrieve_dirs): Ditto. + (ftp_retrieve_glob): Ditto. + (freefileinfo): Ditto. + (delelement): Ditto. + + * ftp-ls.c (symperms): Made static. + (ftp_parse_unix_ls): Ditto. + + * connect.c (select_fd): Made static. + + * utils.c (xmalloc): Renamed from nmalloc. + (xrealloc): Renamed from nrealloc. + (xstrdup): Renamed from nstrdup. + + * getopt.c (exchange): Use alloca. + + * mswindows.c (mycuserid): Use strncpy. + + * New files mswindows.c, mswindows.h, sysdep.h. winjunk.c, + systhings.h, windecl.h and winjunk.h removed. + + * mswindows.c (sleep): New function. + + * utils.c: Include under Windows. + +1997-06-12 Darko Budor + + * url.h (URL_UNSAFE): Change default under Windows. + + * retr.c (retrieve_from_file): Respect opt.delete_after. + + * main.c (main): Call ws_help on Windows. + + * winjunk.c (windows_main_junk): New function. + + * main.c (main): Junk-process argv[0]. + + * http.c (mktime_from_utc): Return -1 if mktime failed. + + * http.c (http_loop): Ditto. + + * ftp.c (ftp_loop_internal): Change title on Windows when using a + new URL. + + * winjunk.c (getdomainname): Lots of functions. + +1997-06-12 Hrvoje Niksic + + * cmpt.c (strptime_internal): Handle years more correctly for + `%y'. + +1997-06-09 Mike Thomas + + * http.c (gethttp): Allocate enough space for + `Proxy-Authorization' header. + +1997-05-10 Hrvoje Niksic + + * version.c: Wget/1.4.5 is released. + +1997-05-10 Hrvoje Niksic + + * retr.c (get_contents): Check return value of fwrite more + carefully. + +1997-03-30 Andreas Schwab + + * cmpt.c (strptime_internal) [case 'Y']: Always subtract 1900 from + year, regardless of century. + +1997-03-30 Hrvoje Niksic + + * utils.c (isfile): Use `lstat' instead of `stat'. + +1997-03-29 Hrvoje Niksic + + * utils.c (numdigit): Use explicit test. + +1997-03-21 Hrvoje Niksic + + * http.c (http_loop): Always use `url_filename' to get u->local. + +1997-03-20 Hrvoje Niksic + + * url.c: Recognize https. + +1997-03-13 Hrvoje Niksic + + * recur.c (recursive_retrieve): Lowercase just the host name. + +1997-03-09 Hrvoje Niksic + + * url.c (get_urls_file): Use the correct test. + (get_urls_html): Ditto. + +1997-03-07 Hrvoje Niksic + + * connect.c: Reverted addrlen to int. + + * init.c (parse_line): Check for -1 instead of NONE. + + * version.c: Changed version to 1.4.5. + +1997-02-17 Hrvoje Niksic + + * init.c: New option netrc. + (initialize): Don't parse .netrc. + + * cmpt.c (recursive): Return rp. + (strptime_internal): Match the long strings first, the abbreviated + second. + +1997-02-16 Hrvoje Niksic + + * http.c (check_end): New function. + (http_atotm): Use it. + +1997-02-13 gilles Cedoc + + * http.c (gethttp): Use them. + + * init.c: New options proxy_user and proxy_passwd. + +1997-02-14 Hrvoje Niksic + + * ftp.c (ftp_retrieve_list): Create links even if not relative. + +1997-02-10 Hrvoje Niksic + + * recur.c (recursive_retrieve): Lowercase the host name, if the + URL is not "optimized". + + * host.c (realhost): Return l->hostname, even if it matches with + host. + +1997-02-10 Marin Purgar + + * connect.c: Make addrlen size_t instead of int. + (conaddr): Ditto. + +1997-02-09 Gregor Hoffleit + + * systhings.h: Define S_ISLNK on NeXT too. + +1997-02-09 Hrvoje Niksic + + * version.c: Released 1.4.3. + + * url.c: Futher update to list of protostrings. + (skip_proto): Skip `//' correctly for FTP and HTTP. + + * url.c (get_urls_html): Handle bogus `http:' things a little + different. + + * main.c (main): Removed `follow-ftp' from `f'. + (main): Dumped the `prefix-files' and `file-prefix' options and + features; old and bogus. + (main): Exit on failed setval() in `-e'. + + * http.c (fetch_next_header): Use it to detect header continuation + correctly. + + * retr.c (buf_peek): New function. + +1997-02-08 Hrvoje Niksic + + * wget.h: Include time.h and stuff. + +1997-02-08 Roger Beeman + + * ftp.c: Include + +1997-02-07 Hrvoje Niksic + + * url.c (findurl): Would read over buffer limits. + +1997-02-06 Hrvoje Niksic + + * ftp-ls.c (ftp_parse_unix_ls): Allow spaces in file names. + +1997-02-05 Hrvoje Niksic + + * http.c (http_atotm): Initialize tm.is_dst. + +1997-02-02 Hrvoje Niksic + + * http.c (gethttp): Don't print the number of retrieved headers. + + * main.c (main): New option `--no-clobber', alias for `-nc'. + + * url.c: Recognize `https://'. + +1997-02-01 Hrvoje Niksic + + * host.c (herrmsg): Don't use h_errno. + +1997-01-30 Hrvoje Niksic + + * host.c (accept_domain): Use it. + + * main.c (main): New option `--exclude-domains'. + + * retr.c (retrieve_url): Use it. + (retrieve_url): Bail out when an URL is redirecting to itself. + + * url.c (url_equal): New function. + +1997-01-29 Hrvoje Niksic + + * connect.c: Include arpa/inet.h instead of arpa/nameser.h. + + * http.c (mk_utc_time): New function. + (http_atotm): Use it; handle time zones correctly. + +1997-01-28 Hrvoje Niksic + + * http.c: Ditto. + + * ftp-basic.c: Use it instead of WRITE. + + * connect.c (iwrite): New function. + +1997-01-27 Hrvoje Niksic + + * cmpt.c (mktime): New function. + + * netrc.c: Include . + + * main.c (main): Wouldn't recognize --spider. + + * retr.c (rate): Use `B', `KB' and `MB'. + (reset_timer,elapsed_time): Moved from utils.c. + + * ftp.c (ftp_retrieve_list): Ditto. + + * http.c (http_loop): Don't touch the file if opt.dfp. + +1997-01-24 Hrvoje Niksic + + * cmpt.c: New file. + + * ftp.c (ftp_retrieve_glob): New argument semantics. + (ftp_retrieve_dirs): Use it. + (ftp_loop): Ditto. + + * html.c (htmlfindurl): Recognize `'' as the quote char. + +1997-01-23 Hrvoje Niksic + + * ftp.c (ftp_loop_internal): Use it. + + * utils.c (remove_link): New function. + +1997-01-22 Hrvoje Niksic + + * retr.c (retrieve_url): Require STRICT redirection URL. + + * url.c (parseurl): New argument STRICT. + + * http.c (hparsestatline): Be a little-bit less strict about + status line format. + +1997-01-21 Hrvoje Niksic + + * http.c (gethttp): Use it. + + * main.c (main): Don't use '' as options. + + * init.c: New option ignore_length. + + * http.c (gethttp): Ditto. + (http_loop): Check for redirection without Location:. + (gethttp): Don't print Length unless RETROKF. + + * ftp.c (getftp): Use it. + + * url.c (mkalldirs): New function. + + * utils.c (mymkdir): Don't check for existing non-directory. + + * url.c (mkstruct): Don't create the directory. + +1997-01-20 Hrvoje Niksic + + * init.c (setval): Removed NO_RECURSION checks. + +1997-01-19 Hrvoje Niksic + + * version.c: "Released" 1.4.3-pre2. + + * recur.c (recursive_retrieve): Bypass host checking only if URL + is ftp AND parent URL is not ftp. + + * ftp-basic.c (ftp_request): Print out Turtle Power. + + * ftp.c (ftp_loop): Call ftp_retrieve_glob with 0 if there's no + wildcard. + (ftp_retrieve_glob): Call ftp_loop_internal even on empty list, if + not glob. + + * http.c (gethttp): Be a little bit smarter about status codes. + + * recur.c (recursive_retrieve): Always reset opt.recursive when + dealing with FTP. + +1997-01-18 Hrvoje Niksic + + * retr.c (retrieve_url): New variable location_changed; use it for + tests instead of mynewloc. + (retrieve_url): Allow heuristic adding of html. + + * url.c (url_filename): Don't use the `%' in Windows file names. + + * http.c (http_loop): Always time-stamp the local file. + + * http.c (http_loop): Ditto. + + * ftp.c (ftp_retrieve_list): Use it. + + * utils.c (my_touch): New function. + + * ftp.c (ftp_retrieve_list): Use #ifdef HAVE_STRUCT_UTIMBUF + instead of #ifndef NeXT. + + * utils.c (strptime): New version, by Ulrich Drepper. + +1997-01-17 Hrvoje Niksic + + * http.c (haccepts_none): Renamed from `haccepts_bytes'. + (gethttp): If haccepts_none(), disable ACCEPTRANGES. + (http_loop): Would remove ACCEPTRANGES. + + * ftp.c (getftp): Call ftp_list with NULL. + +1997-01-15 Hrvoje Niksic + + * html.c (ftp_index): Don't print minutes and seconds if we don't + know them; beautify the output. + + * ftp.c (getftp): Don't close the socket on FTPNSFOD. + +1997-01-14 Hrvoje Niksic + + * utils.c (strptime): New function. + (strptime): Don't use get_alt_number. + (strptime): Don't use locale. + (match_string): Made it a function. + +1997-01-12 Hrvoje Niksic + + * http.c (http_atotm): New function. + (http_loop): Use it. + + * atotm.c: Removed from the distribution. + + * http.c (base64_encode_line): Rewrite. + +1997-01-09 Hrvoje Niksic + + * ftp.c (getftp): Use ftp_expected_bytes; print size. + + * ftp-basic.c (ftp_response): Use ftp_last_respline. + (ftp_expected_bytes): New function. + + * ftp.c (getftp): Print the unauthoritative file length. + + * ftp-ls.c: Renamed from ftp-unix.c. + (ftp_parse_ls): Moved from ftp.c. + (ftp_parse_unix_ls): Recognize seconds in time spec. + (ftp_parse_unix_ls): Recognize year-less dates of the previous + year. + +1997-01-08 Hrvoje Niksic + + * ftp-basic.c: Don't declare errno if #defined. + + * host.c (ftp_getaddress): Check for sysinfo legally. + +1997-01-08 Darko Budor + + * connect.c (iread): Use READ. + +1996-12-23 Hrvoje Niksic + + * url.c: Recognize finger, rlogin, tn3270, mid and cid as valid + schemes. + +1996-12-22 Hrvoje Niksic + + * host.c (ftp_getaddress): Allow `.' in hostname. + +1996-12-26 Darko Budor + + * wget.h: READ and WRITE macros for use instead of read and write + on sockets, grep READ *.c, grep WRITE *.c + + * wsstartup.c: new file - startup for winsock + + * wsstartup.h: new file + + * win32decl.h: new file - fixup for and winsock trouble + + * configure.bat: Configure utility for MSVC + + * src/Makefile.ms,config.h.ms: new files for use with MSVC 4.x + +1996-12-22 Hrvoje Niksic + + * version.c: Released 1.4.3-pre. + + * utils.c (prnum): Accept long. + (legible): Use prnum(). + + * connect.c (make_connection): Accept port as short. + (bindport): Ditto. + + * http.c (gethttp): Use search_netrc. + +1996-12-21 Hrvoje Niksic + + * ftp.c (getftp): Use search_netrc. + + * netrc.c (free_netrc): New function. + + * init.c (home_dir): New function. + + * url.c (convert_links): Allow REL2ABS changes. + +1996-12-21 Gordon Matzigkeit + + * netrc.c: New file. + (parse_netrc, maybe_add_to_list): New functions. + +1996-12-17 Hrvoje Niksic + + * retr.c (retrieve_url): Reset opt.recursion before calling + ftp_loop if it is reached through newloc. + + * init.c (run_wgetrc): Print the wgetrc path too, when reporting + error; don't use "Syntax error", since we don't know if it is + really a syntax error. + +1996-12-16 Hrvoje Niksic + + * utils.c (acceptable): Extract the filename part of the path. + + * recur.c (recursive_retrieve): Call acceptable() with the right + argument; would bug out on wildcards. + + * init.c (parse_line): Likewise. + + * html.c (htmlfindurl): Cast to char * when calling stuff. + +1996-12-15 Hrvoje Niksic + + * ftp.c (getftp): Use ftp_pasv. + + * ftp-basic.c (ftp_request): Accept NULL value. + (ftp_pasv): New function. + + * options.h (struct options): Add passive FTP option. + +1996-12-15 Hrvoje Niksic + + * url.c (parseurl): Debug output. + + * utils.c (path_simplify): New one, adapted from bash's + canonicalize_pathname(). + +1996-12-14 Hrvoje Niksic + + * ftp.c (getftp): Don't discard the buffer. + + * retr.c (get_contents): New parameter nobuf. + +1996-12-13 Shawn McHorse + + * html.c (htmlfindurl): Recognize + + * init.c: Make excludes and includes under CVECDIR instead of + CVEC. + +1996-12-13 Shawn McHorse + + * url.c (get_urls_html): Skip "http:". + +1996-12-13 Hrvoje Niksic + + * utils.c (strcasecmp): From glibc. + (strncasecmp): Also. + (strstr): Also. + + * url.c: Added javascript: to the list of URLs prefixes. + +1996-12-12 Shawn McHorse + + * recur.c (retrieve_robots): Print the warning message only if + verbose. + +1996-12-12 Gregor Hoffleit + + * ftp.c (ftp_retrieve_list): Use NeXT old utime interface. + +1996-12-12 Hrvoje Niksic + + * systhings.h: New file. + + * ../configure.in: Check for utime.h + + * ftp.c: Check whether we have unistd.h. + +1996-11-27 Hrvoje Niksic + + * recur.c (recursive_retrieve): Send the canonical URL as referer. + (recursive_retrieve): Call get_urls_html with the canonical URL. + +1996-12-13 Kaveh R. Ghazi + + * (configure.in, config.h.in, src/Makefile.in, src/*.[ch]): Add + ansi2knr support for compilers which don't support ANSI style + function prototypes and signatures. + + * (aclocal.m4, src/ansi2knr.c, src/ansi2knr.1): New files. + +1996-11-26 Hrvoje Niksic + + * url.c: Use it; Recognize paths ending with "." and ".." as + directories. + (url_filename): Append .n whenever file exists and could be a + directory. + + * url.h (ISDDOT): New macro. + + * init.c (parse_line): Use unsigned char. + + * url.c (get_urls_html): Cast to unsigned char * when calling + htmlfindurl. + + * html.c (htmlfindurl): Use unsigned char. + + * version.c: Changed version to 1.4.3. + +1996-11-25 Hrvoje Niksic + + * version.c: Released 1.4.2. + + * ftp.c (getftp): Simplified assertion. + (ftp_loop_internal): Remove symlink before downloading. + (ftp_retrieve_list): Unlink the symlink name before attempting to + create a symlink! + + * options.h (struct options): Renamed print_server_response to + server_response. + + * ftp.c (rel_constr): Removed. + (ftp_retrieve_list): Don't use it. + (ftp_retrieve_list): Use opt.retr_symlinks. + +1996-11-24 Hrvoje Niksic + + * main.c (main): New option retr_symlinks. + + * url.c (convert_links): Print verbose message. + +1996-11-24 Hrvoje Niksic + + * http.c (http_loop): Reset newloc in the beginning of function; + would cause FMR in retrieve_url. + +1996-11-23 Hrvoje Niksic + + * recur.c (convert_all_links): Find the URL of each HTML document, + and feed it to get_urls_html; would bug out. + (convert_all_links): Check for l2 instead of dl; removed dl. + + * url.c (convert_links): Don't refer to freed newname. + + * recur.c (recursive_retrieve): Add this_url to urls_downloaded. + + * main.c (main): Print the OS_TYPE in the debug output, too. + + * recur.c (recursive_retrieve): Check for opt.delete_after. + + * main.c (main): New option delete-after. + + * init.c (setval): Cleaned up. + +1996-11-21 Hrvoje Niksic + + * Makefile.in (wget): Make `wget' the default target. + + * ftp.c (ftp_loop_internal): Move noclobber checking out of the + loop. + (ftp_retrieve_list): Warn about non-matching sizes. + + * http.c (http_loop): Made -nc non-dependent on opt.recursive. + + * init.c (setnum): Renamed from setnuminf; New argument flags. + (setval): Use it. + + * main.c (main): Sorted the options. + (main): New option --wait. + +1996-11-21 Shawn McHorse + + * html.c (htmlfindurl): Reset s->in_quote after getting out of + quotes. + +1996-11-20 Hrvoje Niksic + + * version.c: Changed version to 1.4.2. + +1996-11-20 Hrvoje Niksic + + * version.c: Released 1.4.1. + + * html.c (html_quote_string): New function. + (ftp_index): Use it. + (htmlfindurl): A more gentle ending debug message. + + * ftp.c (ftp_loop): Check for opt.htmlify. + + * init.c: New command htmlify. + + * ftp.c (getftp): Nicer error messages, with `'-encapsulated + strings. + (ftp_loop): Print size of index.html. + + * init.c (setval): Implement "styles". + + * main.c (main): New option dotstyle. + +1996-11-19 Hrvoje Niksic + + * ftp.c (getftp): Close the master socket in case of errors, after + bindport(). + + * connect.c (bindport): Initialize msock to -1. + + * ftp.c (getftp): Initialize dtsock to -1. + + * connect.c (closeport): Don't close sock if sock == -1. + +1996-11-18 Hrvoje Niksic + + * init.c (setnuminf): Nuked default value -- just leave unchanged. + (setval): Don't send default values. + (defaults): Use DEFAULT_TIMEOUT -- aaargh. + + * options.h (struct options): Use long for dot_bytes. + + * init.c (setquota): Renamed to setbytes. + (setval): Use setbytes on DOTBYTES. + +1996-11-17 Hrvoje Niksic + + * ftp.c (getftp): Initialize con->dltime. + + * recur.c (recursive_retrieve): Use same_host instead of + try_robots; simply load robots_txt whenever the host is changed. + (recursive_retrieve): Free forbidden before calling parse_robots. + +1996-11-16 Hrvoje Niksic + + * retr.c (show_progress): Use them. + + * options.h (struct options): New options dot_bytes, dots_on_line + and dot_spacing. + +1996-11-16 Mark Boyns + + * recur.c (recursive_retrieve): Retrieve directories regardless of + acc/rej rules; check for empty u->file. + +1996-11-14 Hrvoje Niksic + + * init.c (setval): Use it. + + * utils.c (merge_vecs): New function. + + * init.c (setval): Reset the list-type functions when encountering + "". + +1996-11-14 Shawn McHorse + + * recur.c (recursive_retrieve): Use base_url instead of this_url + for no_parent. + +1996-11-14 Shawn McHorse + + * html.c (htmlfindurl): Reset s->in_quote after exiting the quote. + +1996-11-13 Hrvoje Niksic + + * utils.c (sepstring): Rewrote; don't use strtok. + + * recur.c (recursive_retrieve): Enter assorted this_url to slist + when running the first time. + (retrieve_robots): Warn to ignore errors when robots are loaded. + + * utils.c (load_file): Moved from url.c. + + * http.c: Made static variables const too in h* functions. + + * main.c (main): Renamed --continue-ftp to --continue. + + * recur.c (recursive_retrieve): Use it. + + * utils.c (frontcmp): New function. + + * url.c (accdir): New function. + + * html.c (htmlfindurl): Recognize . + + * ftp.c (ftp_retrieve_dirs): Implemented opt.includes. + + * init.c (setval): Free the existing opt.excludes and + opt.includes, if available. + + * main.c (main): New option -I. + +1996-11-12 Hrvoje Niksic + + * ftp.c (ftp_retrieve_glob): Do not weed out directories. + + * version.c: Changed version to 1.4.1. + +1996-11-11 Hrvoje Niksic + + * version.c: Released 1.4.0. + +1996-11-10 Hrvoje Niksic + + * main.c (main): Free com and val after parse_line. + (printhelp): Reorder the listing. + + * http.c: More robust header parsing. + + * http.c: Allow any number of spaces, or no spaces, precede ':'. + (hskip_lws): New function. + (haccepts_bytes): New function. + (gethttp): Use it. + + * init.c (setval): Check header sanity. + (setval): Allow resetting of headers. + +1996-11-10 Hrvoje Niksic + + * http.c (http_loop): Don't use has_wildcards. + + * http.c (gethttp): Free all_headers -- would leak. + + * recur.c (recursive_retrieve): Initialize depth to 1 instead of + 0 -- this fixes a long-standing bug in -rl. + +1996-11-09 Hrvoje Niksic + + * ftp.c: Use -1 as "impossible" value for con->fd. + + * url.h (URL_SEPARATOR): Don't treat `*' and `+' as separators. + + * init.c (parse_line): Use isalpha. + + * ftp-unix.c: Use HAVE_UNISTD_H. + + * mtch.c (has_wildcards): Don't match \. + + * http.c (http_loop): Warn on HTTP wildcard usage. + +1996-11-08 Hrvoje Niksic + + * url.c (url_filename): Do not create numbered suffixes if + opt.noclobber -- would bug out on -nc. + +1996-11-07 Hrvoje Niksic + + * recur.c (parse_robots): Don't chuck out the commands without + arguments (`Disallow:' didn't work). + (parse_robots): Compare versions lowercase. + (parse_robots): Match on base_version, not version_string! + (parse_robots): Handle comments properly. + (parse_robots): Match versions in a sane way. + + * init.c: Print nicer error messages. + + * version.c: Changed version to 1.4.0. + +1996-11-06 Hrvoje Niksic + + * version.c: Released 1.4.0-test2. + + * init.c (run_wgetrc): Close fp. + + * ftp.c (ftp_retrieve_dirs): Allocate the correct length for + u->dir. + +1996-11-06 Hrvoje Niksic + + * init.c (setquota): Allow inf as quota specification. + +1996-11-05 Hrvoje Niksic + + * ftp.c (ftp_retrieve_dirs): Return QUOTEXC if quota exceeded. + (ftp_retrieve_glob): Return QUOTEXC on quota exceeded. + + * main.c (main): Check for quota by comparison with downloaded + stuff, not from status. + + * connect.c (select_fd): Should compile on HPUX without warnings now. + + * ftp.c (ftp_get_listing): Check whether ftp_loop_internal + returned RETROK. + +1996-11-04 Hrvoje Niksic + + * ftp.c (ftp_retrieve_glob): Print the pattern nicely. + (getftp): Return FTPRETRINT on control connection error. + + * html.c (htmlfindurl): Recognize and + . + (ftp_index): Handle username and password correctly. + + * main.c (main): Made `-np' a synonim for --no-parent. + +1996-11-02 Hrvoje Niksic + + * ftp.c (ftp_loop): Check for opt.ftp_glob too before calling + ftp_retrieve_glob. + + * version.c: Changed version to 1.4.0-test2. + +1996-11-02 Hrvoje Niksic + + * version.c: Released 1.4.0-test1. + + * url.c (str_url): Don't use sprintf when creating %2F-prefixed + directory. + (convert_links): Removed definition of make_backup. + + * http.h: Removed definition of MAX_ERROR_LENGTH. + + * host.c (ftp_getaddress): Check for "(none)" domains. + + * ftp.c (ftp_retrieve_dirs): Docfix. + + * http.c (gethttp): Use ou->referer instead of u->referer. + + * retr.c (retrieve_url): Reset u to avoid freeing pointers twice; + this was known to cause coredumps on Linux. + + * html.c (ftp_index): Cast the argument to local_time to time_t *. + +1996-11-01 Hrvoje Niksic + + * connect.c (select_fd): Use exceptfds -- once and for all. + + * retr.c (retrieve_from_file): Free filename after + recursive_retrieve. + (retrieve_from_file): Send RFIRST_TIME to recursive_retrieve on + first-time retrieval. + (retrieve_from_file): Return uerr_t; new argument, count. + (retrieve_from_file): Break on QUOTEXC. + + * init.c (setquota): Fixed a bug that caused rejection of + non-postfixed values.. + +1996-10-30 Hrvoje Niksic + + * version.c: Changed name to wget. + + * connect.c (iread): Smarter use of select. + (select_fd): Set errno on timeout. If not timeout, return 1 + instead of 0. + +1996-10-29 Hrvoje Niksic + + * ftp.c (ftp_loop_internal): Don't use con->cmd before + establishing it. + +1996-10-26 Hrvoje Niksic + + * http.c (gethttp): Send correct referer when using proxy. + (gethttp): Use struct urlinfo ou to access the relevant data; send + correct authorization in all cases. + + * host.c (same_host): Use skip_uname to skip username and + password. + + * url.c (skip_uname): New function. + (parseurl): Use it. + + * host.c (same_host): Do not assume HTTP -- same_host should now + be totally foolproof. + + * url.c (skip_proto): New function. + (parse_uname): Use it. + + * http.c (gethttp): Create local user and passwd from what is + given. + + * url.c (parseurl): Check for HTTP username and password too. + +1996-10-25 Hrvoje Niksic + + * config.h.in: Removed #define gethostbyname R... + +1996-10-22 Hrvoje Niksic + + * version.c: Changed version to 1.4.0-test1. + +1996-10-21 Hrvoje Niksic + + * version.c: "Released" 1.4b29. + + * recur.c (recursive_retrieve): Check for no_parent. + + * init.c (setval): Option update. + + * main.c (main): New option no-parent. + + * options.h (struct options): New variable no_parent. + + * recur.c (recursive_retrieve): Only files are checked for + opt.accepts and opt.rejects. + (recursive_retrieve): Check directories for opt.excludes. + (recursive_retrieve): Make the dir absolute when checking + opt.excludes. + + * html.c (htmlfindurl): Recognize and